How to make a macro


First, how is made a macro?

1) Ingame, type “/macro” or “/m” to open up the macro menu. Now you have 2 macro tabs. “General” and “YourCharacterName” macro. You can have up to 36 general macros that are shared between all your characters on the server and up to 18 macros only for your character.
2) Select the appropriate tab and click on “New” button at bottom right of the window.
3) Now you you must enter a name for your macro and choose an icon. You can select a colorful icon that will always show up or the “?” icon that will change depending of the “active” spell.
4) Click on “Okay” button.
5) Select the new macro in the list and click in the text area at bottom of the window. Macros can be up to 255 characters long (but there is a way to bypass this, see /click command).

Now, how does a macro work?

Macros are fairly simple. They are made of 3 parts:

– Command
– Conditions
– Object (Spells/Abilities/Items)

It starst with a “/” followed by a command, then conditions (separated by a “,”) in between “[ ]”, then the name of the spell. If there is more than one spell you want to cast with the same command, you separate their conditions/spell with a “;”.
You can have more than one set of conditions for each spell, so if the first set of conditions are not true, it will check the 2nd set, then third, etc. If none are true, it will then go the next spell (if there is one) and check conditions the same way.
Do not add a “;” at the end of the macro, it would just cause bugs.

Might sound complicated, so here is a pattern and an example:
/command [condition1_1,condition1_2,condition1_3][condition2_1][condition2_2] Spell1; [condition1_1,condition1_2][condition2_1] Spell2
/cast [harm,nodead] Smite; [help,nodead][@player] Renew
(will cast Smite if your target is hostile and alive else will cast Renew if your target is friendly and alive, else will cast it on you)

Note: A macro will always read condition set in order. If the first spell condition is met, it will cast that spell, no matter what conditions are after.
Comon mistake made by people is to break down their conditions.
/cast [mod:shift][@mouseover] Power Word: Shield; [@mouseover] Renew
This is bad because now PW:S and Renew both have same condition (@mouseover), so PW:S will always be cast and Renew will never.
What he wanted to do was
/cast [mod:shift,@mouseover] Power Word: Shield; [@mouseover] Renew
Macro facts:

– Macro can’t pause.
– Macro can’t check for buff/debuff.
– Macro can’t check for rage/energy/mana/focus/runic.
– Macro can’t check for cooldowns.
– Macro can’t play the game for you.

Toggleable Abilities
You can add a “!” in front of a spell name to prevent it from toggling off.
Example: /cast !Ice Block (will prevent you from turning off Ice Block if it is already active).

Spell Rank
By default a macro will cast the last rank of a spell. But you can add “Spell(Rank X)” to cast rank X of a spell.
Exception: Spell with “()” in their name require you to add “()” after the name.
Example: “Faerie Fire(Feral)()” because “Faerie Fire(Feral)” would confuse the game and it would try to cast “Faerie Fire” of rank “Feral” /duh.

This is using some API functions used by addons as macro. This is more advanced programming and I wont talk about it in this guide. The command is either /run or /script
Example: /run if(ShowingHelm()) then ShowHelm(0) else ShowHelm(1) end
This script will hide your helm if it is displayed, else will make it to show up.

  • img
    Nov 17, 2010 @ 19:54 pm

    four partThese are, of course, suggestions; but, I’m going to phrase them as commands so that I can save on words. This is from the top down, so I’m not going to give much context information.

    Mention that /m is an alias for /macro.
    You can have up to 36 general macro>s.colorfulonscharactersActionsswithaseparatedin brackets (“[ ]”)thewithssecondCan’t Docan’tcan’tAbilitiesfrom toggling off.from turningit is already active.thetheattackingcastingbracketperform its default actiondepends on< your mouse
    You can add pet and the pet suffix to your list of UnitIds.

    Voila. I got tired of pointing out little stuff, so I missed some of them. I think I caught most of the rest. Your formatting style is not how I would do it, but I didn't make the post, you did :). Also, I agree that you should use the [pre] tag.

  • img
    Nov 17, 2010 @ 19:52 pm

    third partNote: You can add “no” before a condition to have its opposite. Example “nocombat” means when not in combat.
    Note: Every condition set must be inbetween “[ ]” and every conditions of a set must be seperated by a “,”.
    Note: Every conditions of a set must be “true” for the set to be considered true. Else it moves to next condition set.
    Note: When a condition have a “:”, you can add multiple parameters by separating them with a “/”. Example “form:1/3” will check if you are in form 1 or 3.
    If you add empty bracket, it will make the spell to perform its default action.
    If actionbar # (between 1 and 6) is active as your main bar.
    If the possess bar is active (controlling a vehicle or another player)
    If the macro is activated with the given mouse button. Button 1 is left, 2 is right, 3 is middle(scroll), 4+ depends on your mouse.
    If you are channeling
    If you are in combat
    If target is dead
    If item type is equipped

    List of item type:

    Cloth, Leather, Mail, Plate, Shields, Librams, Idols, Totems, Armor, SlotName
    Example: [equipped:Shoulder] or [equipped:Armor] or [equipped:Plate]

    Bow, Crossbow, Dagger, Gun, Fishing Pole, Fist Weapon, Miscellaneou, One-Handed Axe, One-Handed Mace, One-Handed Sword, Polearm, Stave, Thrown, Two-Handed Axe, Two-Handed Mace, Two-Handed Sword, Wand, One-Hand, Two-Hand, Weapon
    Example: [equipped:Dagger] or [equipped:Two-Hand] or [equipped:Weapon]
    If the target exists. Some conditions, like “harm” and “help” imply “exists”.
    If the zone you are in allow to fly (not that if YOU can fly). Do not check if Wintergrasp battle is going on or not.
    If you are mounted or in flight form and in the air.
    If you are in a party/raid
    If target is hostile (can cast damage spell on it)
    If target is friendly (can cast healing spell on it)
    If you are indoors
    If you are holding the specified modifier.
    If you are mounted
    If you are outdoors
    If target is in your party
    If your pet is active. Can specify the name or the type (Cat, Bear, Devilsaur, etc).
    If target is in your raid
    If you are in the specified spec (1 or 2) if you have Dual Spec.
    If you are in the specified stance number. It follow the order of your stance/form bar.
    If you are stealthed
    If you are swimming.
    Note: “@” will only be avaible in patch 3.3
    Add one of the following as :
    mouseover = target model/panel under your mouse cursor
    target = your current target.
    targettarget = target of your target (add as many target as you want to go as far in target of target of target of etc as you want)
    lasttarget = target your last target
    pet = target is your pet.
    pettarget = target is your pet’s target.
    focus = target your focus
    party/raid# = will target party/raid member number #.
    = to target a specificate target
    player = yourself

    Note: target=target is optional. Example: [target=target, help,nodead] is the same as [help,nodead].
    Note: There is no “notarget” option, but a way to go around it is to use “noexists”.
    Warning: target is not a real condition. It only serve to assign a target.

  • img
    Nov 17, 2010 @ 19:50 pm

    second partHere is the (long) list of all commands available in WoW:

    Note: It is possible to add conditions between the /command and parameters.
    Note: form/stance stand for druid forms, warrior stance, DK presence, rogue stealth, priest shadowform, etc.
    If “?” icon is selected, will show the “active” spell icon. When you mouse over the macro icon, #show will show only the name of the spell as tooltip while #showtooltip will show the whole tooltip. You can add conditions like a macro to show different spells.
    Does the same thing than “/target targettarget” (see /target). You can add a name as parameter to target the target of a specific target.
    You must add a buff name as parameter. It will cancel the buff, just like right-clicking would do it.
    You can add a form/stance name as parameter. It will make you leave the form/stance (doesnt work for warrior). If no parameter is added, will make you leave any form/stance you are into.
    The main command of macros.
    Example: /cast [conditions] Spell1; [conditions] Spell2
    Same as /cast but will cast random spell among a list (separated by “,”).
    Example: /castrandom [conditions] Spell1, Spell2, Spell3, Spell5;[conditions] Spell1, Spell3, Spell4, Spell6
    Same as /cast but will cast spell one after another in a sequence each time you use the macro. You can add reset conditions to make it restart at beginning.
    Example: /castsequence [conditions] reset=alt/ctrl/combat Spell1, Spell2, Spell3; [conditions] reset=n/shift/target Spell2, Spell4, Spell5

    You can add any of these after “reset=” separated by “/”:
    n = number of seconds macro will reset after last time macro was called (i.e. when you pressed/clicked/pushed/poked/spammed macro) and not after when last spell was cast.
    target = when you change target
    combat = when you leave combat
    shift,alt,ctrl = when you activate the macro with specified modifier pressed (not just by pressing the modifier)
    /changeactionbar #
    You must add an actionbar number as parameter. Allow you to change your main actionbar to the specified bar.
    Clear your focus (see /focus).
    Clear your target (make you target nothing).
    Simulate a click on a specific action button. Allow you to chain macros.
    Example: /click [conditions] MultiBarBottomLeftButton7

    Bar name list:

    ActionButton#: Main Bar
    BonusActionButton# : Dynamic bar that switches based on form/stance (do same thing than ActionButton#)
    MultiBarBottomLeftButton#: Bottom Left Bar
    MultiBarBottomRightButton#: Bottom Right Bar
    MultiBarRightButton#: Right Bar
    MultiBarLeftButton#: Right Bar 2 (to the left of “Right Bar”)
    PetActionButton#: Pet Bar
    ShapeshiftButton#: form/stance bar
    Dismount you.
    You must enter an equipable item as parameter. Will equip it to default slot (main hand, first ring, first trinket).
    /equipslot #
    You must enter a slot number and an equipable item as parameter. Will equip an item to the specified slot number.
    Example: /equipslot [conditions] 17 OffHandItemName

    Here is the list of slots:

    [ 1 ] . . . . . . . . . . . . . [ 10 ]
    [ 2 ] . . . . . . . . . . . . . . [ 6 ]
    [ 3 ] . . . . . . . . . . . . . . [ 7 ]
    [ 15 ] . . . . . . . . . . . . . [ 8 ]
    [ 5 ] . . . . . . . . . . . . . [ 11 ]
    [ 4 ] . . . . . . . . . . . . . [ 12 ]
    [ 19 ] . . . . . . . . . . . . [ 13 ]
    [ 9 ] . . . . . . . . . . . . . [ 14 ]
    [ 16 ] . [ 17 ] . [ 18 ] <- [ 0 ]

    0 = ammo
    1 = head
    2 = neck
    3 = shoulder
    4 = shirt
    5 = chest
    6 = belt
    7 = legs
    8 = feet
    9 = wrist
    10 = gloves
    11 = finger 1
    12 = finger 2
    13 = trinket 1
    14 = trinket 2
    15 = back
    16 = main hand
    17 = off hand
    18 = ranged
    19 = tabard
    You must enter name of an armor set as parameter. Name are the one you have set in equipement manager.
    Example: /equipset [conditions] SetName
    Set your current target as your focus if no parameter is added. You can add a name as parameter to focus a specific target.
    Set your pet to agressive, defensive or passive
    Make your pet to attack, follow or stay
    You must enter a pet spell as parameter. Will set the autocast to off, on or will toggle between on/off.
    Will make you to auto attack the nearest target or stop attacking.
    Will make you stop casting any spell you were casting
    Will make a macro to not go further if the conditions are met.
    /swapactionbar # ##
    Will make you swap between action bar # and ## (see /changeactionbar).
    You must enter a name of a target as parameter. Make you to target the closest name specified target ("Rag" would target "Rag" as well as "Raging", "Rager", "Ragwhatever"). You can add as many "target" as you want to select target of target of target of... etc.
    Example: /target targettargettarget Bob (will target the target of the target of Bob)
    You must enter a name of a target as parameter. Same as above, but if specified name do not exist or is near you, your target wont be changed ("Rag" will only target "Rag" and nothing else).
    Will cycle next enemy/friend target (equivalent of Tab/Ctrl+Tab by default). Add a "1" as parameter to cycle backward.
    Same as above, but will only target players. (Will pass on NPCs, minions, pet, etc). Add a "1" as parameter to cycle backward.
    Same as above, but will only target party/raid members. Add a "1" as parameter to cycle backward.
    Will target last target you had selected. If you had none, it will do nothing.
    Samething as /cast.
    /usetalents #
    Will active either primary (# = 1) or secondary (# = 2) talent build if you have Dual Spec.
    Same as /castrandom.

Leave a Reply

Your email address will not be published. Required fields are marked *

The reCAPTCHA verification period has expired. Please reload the page.