WoW:Macro FAQ

Macros
General guides

Macros

Questionmark.png How do I write a Macro?

- See the Macros page.


Questionmark.png How do I write a Macro to do XXXX?

- Check the Most Used Macros to see if someone has already done something like this. Check the question below "What can't a macro do?" to see if its going to be impossible. If neither of these help, try asking on the World of Warcraft UI & Macros Forum.


Questionmark.png What can't a macro do?

- A Macro cannot:

  • Cast a spell/ability without you pressing a button
  • Cast more than one spell/ability per button press, unless using an ability that isn't affected by global cooldown, like feign death or judgement.
  • Wait or pause before activating a spell/ability
  • Target another player's pet automatically (you can only automatically target your own pet)
  • Output anything to file other than saved variables
  • Use more than 255 characters
  • Call another macro

Questionmark.png So what can a macro do?

- You can call any script command (/script ScriptFunction), any standard WoW /command such as /say or /attack, and any additional /commands made available by the AddOns you've installed. (If you need to write a long macro, write it as an AddOn in a lua file and bind it to a slash command. See the section on Lua and XML for more details.)


Questionmark.png What's the real deal with pauses?

- You can't use a pause before a spell or ability. However... you can use certain script commands based on time, such as debug or movement commands.

For example, the following script command inserted between other /commands will temporarily freeze all game input/output for the duration specified.

Where 500 is equal to a 0.5 second delay (250=0.25sec, 1000=1sec, 10000=10sec, etc.)

/script debugprofilestart();while debugprofilestop()<500 do end;

Though this technique does effectively pause your macro for the desired interval, there is a downside. The game-freezing pause this script causes can be an unsettling and undesired side-effect for some players. The freeze can prevent the player from perceiving the visual results of the /command immediately preceding this script. So depending on the duration you specify, the greater the pause, the more background action you will miss. This effect is strictly local and does not impact the game server or other players in any way. Though you may partially or entirely miss the results, you can be assured that the preceding /command is in actuality transmitted to the server and executed before the localized freeze takes place.


See the World of Warcraft API for more on time based script commands.

See also