- Joined
- Dec 12, 2007
- Messages
- 3,956
- Reaction score
- 49
- Points
- 38
I always see people asking how to do some beyond the basics using holyshits/downshits or events. I thought I would share some things I use and other ideas of what could be done that would normally require a macro to do. The basics are that you need variables, and a method for those variables to change, and then what to do with those variables.
Short version: Almost anything you can do in a macro, you can do using a holy/downshit, mq2events, and your config file.
Configs files:
To automatically create these variables whenever you login to eq, you can use config files to make global variables. If you are loading multiple characters, it may be easiest just to make a single macro and create a config file that simply runs that macro when you log in to the game/zone.
Now you have your variables declared (maybe with a value, maybe not). This means you can use your variables. The most likely variables you would need are timers, integers, floating point numbers, boolean expressions, and strings just like in a macro. What can you do with these things?
Variables:
Timers - useful to space things out, keep track of time, calculate things over time
Integers - store numbers to the nearest whole number, amounts of items/npcs/pcs, etc
Float- decimal point numbers, sometimes needed to be more precise
Bools- TRUE/FALSE, YES/NO, 0/1. Either it is or it isnt.
strings-store names,phrases,keywords,spells,discs,npcs
Mq2events:
events are used that parse lines of text that show up in your eq/mq2 windows. for example: "You have been slain!" You can set up an event in mq2events_charname.ini that will /camp if you die, or send a tell to your cleric to rez you, or automatically return to bind, or many other things. The same idea applies to any other line of text it parses. Maybe it is a request for buffs or an emote that you need to respond to.
mq2melee:
mq2melee interacts with short term reuse abilities, mq2moveutils, and can trigger casting/disc of spells via mq2cast. you can configure these through specific /if statements or using downshits/holyshits depending on if you are in or out of combat. By using the additional global variables youve defined above, you can enhance your holy/downshits to do even more than before.
..and... Now what?
Well now you can do some really cool stuff that you couldnt do before, like only do certain flags if you are actively exping, create list of safe PCs to use things with, identify mobs to kill, set up burn modes to only fire when you say key phrases, cure/heal/request spells and items and much more. It is all the power of macros without using a macro.
Just show me an example already.
Ok, so say I want to self heal using a paladin heal that doesnt require me targeting myself if I am between 20 and 80% hitpoints and the spell is ready. But I only want to do this while I am exping.
Example: To self heal only in exp mode. We are using GBool1 to determine whether or not i am in exp mode.
I have to declare the variable i want to use. So either run the macro to set the initial variables in config file, or make them line by line in config file.
in game direct command:
optional mq2event to set up if you dont want to use direct commands:
ie. in /mq2/mq2events_PeteSampras.ini
So if i, or someone else in group says "exp mode on", then it will set that flag as TRUE and enable all the flags that go with it to now fire.
downflag to fire the heal and check my hp and only if in exp mode:
Optional hotkeys in game:
key 1
/g exp mode on
key 2
/g exp mode off
What if my heal isnt ready and i need one from another toon using /group chat?
Well we would want to put a timer delay in there, an event to reset the timer, and maybe a string to put the request phrase and/or character to request it from.
Declares:
event:
Flag:
Then you can set up an event to target and heal that individual from your healer.
It can be as simple or complicated as you make it. You can automate pretty much every aspect of a macro, but you are limited to the amount of holy/downflags you can create.
You can also add the variables to your hud. So say you want to store a tank rotation, or display a timer that counts down or counts up, display your dot counters, and many many other things.
You can make your global variables be called whatever you want. I was just using GBool1 as an example to remember "global bool 1" .. for the example that i showed, i could just have easily called that /declare ExpMode bool global and use it as /varset ExpMode. Use whatever is easiest for you.
I will add a macro that declares the basics, and as people come with ideas or i get time, I can update the post to show other examples. If anyone has ideas or needs help with more advanced things, feel free to post or contribute to this thread.
Short version: Almost anything you can do in a macro, you can do using a holy/downshit, mq2events, and your config file.
Configs files:
To automatically create these variables whenever you login to eq, you can use config files to make global variables. If you are loading multiple characters, it may be easiest just to make a single macro and create a config file that simply runs that macro when you log in to the game/zone.
Now you have your variables declared (maybe with a value, maybe not). This means you can use your variables. The most likely variables you would need are timers, integers, floating point numbers, boolean expressions, and strings just like in a macro. What can you do with these things?
Variables:
Timers - useful to space things out, keep track of time, calculate things over time
Integers - store numbers to the nearest whole number, amounts of items/npcs/pcs, etc
Float- decimal point numbers, sometimes needed to be more precise
Bools- TRUE/FALSE, YES/NO, 0/1. Either it is or it isnt.
strings-store names,phrases,keywords,spells,discs,npcs
Mq2events:
events are used that parse lines of text that show up in your eq/mq2 windows. for example: "You have been slain!" You can set up an event in mq2events_charname.ini that will /camp if you die, or send a tell to your cleric to rez you, or automatically return to bind, or many other things. The same idea applies to any other line of text it parses. Maybe it is a request for buffs or an emote that you need to respond to.
mq2melee:
mq2melee interacts with short term reuse abilities, mq2moveutils, and can trigger casting/disc of spells via mq2cast. you can configure these through specific /if statements or using downshits/holyshits depending on if you are in or out of combat. By using the additional global variables youve defined above, you can enhance your holy/downshits to do even more than before.
..and... Now what?
Well now you can do some really cool stuff that you couldnt do before, like only do certain flags if you are actively exping, create list of safe PCs to use things with, identify mobs to kill, set up burn modes to only fire when you say key phrases, cure/heal/request spells and items and much more. It is all the power of macros without using a macro.
Just show me an example already.
Ok, so say I want to self heal using a paladin heal that doesnt require me targeting myself if I am between 20 and 80% hitpoints and the spell is ready. But I only want to do this while I am exping.
Example: To self heal only in exp mode. We are using GBool1 to determine whether or not i am in exp mode.
I have to declare the variable i want to use. So either run the macro to set the initial variables in config file, or make them line by line in config file.
Code:
/declare GBool1 bool global FALSE
Code:
/varset GBool1 TRUE
/varset GBool2 FALSE
ie. in /mq2/mq2events_PeteSampras.ini
Code:
[ExpModeOn]
trigger="#*#group, 'exp mode on'"
command=/varset GBool1 TRUE
[ExpModeOff]
trigger="#*#group, 'exp mode off'"
command=/varset GBool1 FALSE
downflag to fire the heal and check my hp and only if in exp mode:
Code:
downshit1=/if (${GBool1} && ${Range.Between[2,80:${Me.PctHPs}]} && ${Me.SpellReady[SelfHeal Rk. II]}) /casting "SelfHeal Rk. II"
key 1
/g exp mode on
key 2
/g exp mode off
What if my heal isnt ready and i need one from another toon using /group chat?
Well we would want to put a timer delay in there, an event to reset the timer, and maybe a string to put the request phrase and/or character to request it from.
Declares:
Code:
/declare GTimer1 timer global 5s
/declare GString1 string global ClrHealMe
/declare GString2 string global PeteSampras
Code:
trigger="#*#You tell the group, '|${GString1}|'"
command=/varset GTimer1 ${GTimer1.OriginalValue}
Code:
downshit2=/if (${GBool1} && ${Range.Between[2,80:${Me.PctHPs}]} && !${Me.SpellReady[SelfHeal Rk. II]} && !${GTimer1} && ${SpawnCount[${GString2}]}) /g ${GString1}
It can be as simple or complicated as you make it. You can automate pretty much every aspect of a macro, but you are limited to the amount of holy/downflags you can create.
You can also add the variables to your hud. So say you want to store a tank rotation, or display a timer that counts down or counts up, display your dot counters, and many many other things.
You can make your global variables be called whatever you want. I was just using GBool1 as an example to remember "global bool 1" .. for the example that i showed, i could just have easily called that /declare ExpMode bool global and use it as /varset ExpMode. Use whatever is easiest for you.
I will add a macro that declares the basics, and as people come with ideas or i get time, I can update the post to show other examples. If anyone has ideas or needs help with more advanced things, feel free to post or contribute to this thread.
Attachments
Last edited: