Functions and slash commands found in SuperMacro addon that can be helpful in your macros are listed here in alphabetical order. Alt-click on an item to insert its item link into the macro. (For even more convenience and to shorten macros, I recommend another addon, Alias, a.k.a ASF. Read end of file for explanation.) (P.S. I may accept requests for other convenient functions and slash commands.) --Table of Contents CancelBuff(buff [,...]), unbuff cast caststop(spell [,...]) Channel(spell), /smchan, /smchannel CraftItem( skill, item, count), /craft, /smcraft DoOrder(spell | item [,...]), /order, /smorder echo /equip, /smequip, /eq, /smeq /equipoff, /smequipoff, /eqoff, /smeqoff Fail(message), /fail FindBuff(buff [ [, unit], item]), buffed FindItem(item) /in seconds[+] command, SM_IN(seconds, command, repeat) Macro Pass(message), /pass pickup(bag, slot), pickup(inventory_slot), pickup("item") /print msg, /smprint, SM_print(msg), echo PrintColor(r,g,b,msg [,...]), Printc Printd(msg [,...]), Print PrintTable(table, rowname, level), Printt RunBody(longtext) RunLine(command [,...]) RunMacro(index|macro), Macro, /macro RunSuperMacro(index|super) SayRandom(speech [,...]), /sayrandom, /smsayrandom send SetActionMacro(actionid, macro) SetActionSuperMacro(actionid, supername) /shift form -- for druids, rogues, warriors only stopcast /unequip, /smunequip, /uneq, /smuneq use(bag,slot), use(item), /use, /smuse UseItemByName(item) ## Alias --End table of contents ## CancelBuff(buff [,...]), unbuff, /unbuff, /smunbuff Cancel the player's buffs that match the given strings. Ex. /script CancelBuff("Demon Skin") Ex. /script CancelBuff("demon") -- cancel buffs with demon in it, including Demon Skin Ex. /script unbuff("demon") -- same as above Ex. /unbuff demon -- same as above Ex. /unbuff mana, frost -- cancel any buffs matching mana or frost Ex. /unbuff . -- cancel all buffs, use with care Ex. /unbuff a -- careful, cancel all buffs with 'a' in their names ## cast cast is same as CastSpellByName. Ex. cast("Heal") ## caststop(spell [,...]) Cast a spell, then stop. Will cast multiple spells in sequence. Only works properly for spells that don't cause global cooldown. (Not tested.) Ex. /script caststop("Arcane Power","Presence of Mind","Frostbolt") is equivalent to /cast Arcane Power /script SpellStopCasting(); /cast Presence of Mind /script SpellStopCasting(); /cast Frostbolt ## Channel(spell), /smchan, /smchannel Safely channel a spell, ignoring accidental multiple keypresses. Ex. SM_Channel("mind flay") Ex. /smchan mind flay -- test tooltip ## CraftItem( skill, item, count), /craft, /smcraft Create item or enchant (at least one time). If count is left out (nil) then will make one. If count is zero, then will make all available. If count is negative, then will leave that much. Ex. /craft First aid, Heavy Linen Bandage -- make one bandage Ex. /smcraft First aid, Heavy Linen Bandage, 0 -- make all available bandages Ex. CraftItem( "First aid", "Heavy Linen Bandage", -1 ) -- make all but one ## DoOrder(...), /order, /smorder Use first available item or cast spell in a list separated by commas, and ignore the rest of the list. Alt-click on item to insert item link into macro. Ex. DoOrder("healing potion", "lesser healing potion", "healing touch") Ex. /order healing potion, lesser healing potion, healing touch -- if healing potion found, will use it, and ignore the rest of the list ## echo See /print. ## /equip, /smequip, /eq, /smeq Equip or use an item. Also works with item links. Alt-click on item to insert item link into macro. Ex. /eq hatchet ## /equipoff, /smequipoff, /eqoff, /smeqoff Equip item into off-hand slot. Also works with item links. Alt-click on item to insert item link into macro. Ex. /eqoff shield ## Fail(message), /fail Run message or script if current action (spell or item) failed. See Pass for success. Ex. /script CastSpellByName("Attack") Fail("Can't attack") Ex. /script CastSpellByName("nada") Fail("not a spell") Ex. /script Fail("no action") Ex. /fail /script use('hearthstone') Ex. /cast Heal /fail /p can't heal ## FindBuff, buffed See if a unit has a specific buff or debuff, or weapon buff. Usage 1: FindBuff(buff [ [, unit], item]) Usage 2: buffed(buff [ [, unit], item]) buff is the buff's name, or part of it's name--not case sensitive unit is API 'unit' value ('player' if left empty or nil) item value is boolean. if item is not nil or false or empty, then will search for item buff instead Ex. buffed("Find Herbs") -- player's buff; returns "track", 0 Ex. buffed("herbs") -- also works Ex. FindBuff("rockbiter",nil,1) -- player's weapon buff; returns "main" or "off", time left, charges Ex. buffed("rockb") -- same as above Ex. buffed("gouge", 'target') -- target's buff; returns "debuff", id Ex. buffed("perception") -- returns "buff", id ## FindItem(item) Find an item in your container bags or inventory. If found in inventory, returns slot, nil, texture, count. If found in bags, returns bag, slot, texture, total count in all bags. Also works with item links. Alt-click on item to insert item link into macro. Ex. local bag,slot,texture,count = FindItem("Lesser Magic Essence"); ## /in seconds[+] command, /smin, SM_IN(seconds, command[, repeat]) Execute command in seconds seconds. Use + after sec to repeat. Separate multiple commands with \n. Does not cast spells or use items. Ex. /in 5 /p NOW Ex. /script SM_IN(5, "/p NOW") -- same as first, no repeat Ex. /in 1 /script PlaySound( "LOOTWINDOWCOINSOUND") Ex. /smin 600+ /print 10 mins repeating -- use + to repeat Ex. SM_IN(600, "/print 10 mins repeating", 1) -- repeats, same as above, but no +, instead include third parameter Ex. /in 1 /t ;me hi\n/t ;me hey -- multiple commands separated by \n Ex. /script SM_IN(1,"/t ;me hi\n/t ;me hey") -- same as above Ex. /in 1m /print 1 min passed -- 1m = 1 minute, 1h = 1 hour, 1s = 1 second Ex. /script SM_IN("1m","/print 1 min passed") -- same as above, note 1m in quotes Ex. /in 1h30m5s+ /print repeat every hour and 30 mins and 5 seconds ## Macro See RunMacro. ## Pass(message), /pass Run message or script if current action (spell or item) succeeded. See Fail for failure. Ex. /script CastSpellByName("Attack") Pass("Attacking") Ex. /pass /macro Cheer Ex. /cast Heal /pass /p Healing ## pickup(bag, slot), pickup(inventory_slot), pickup("item") Pickup item from inventory or bags. One argument for inventory; two arguments for bags. Argument can also be a string containing the item's name. Calling this function again puts the item into that slot, which may swap items. Also works with item links. Alt-click on item to insert item link into macro. Ex. pickup(16) --main hand weapon Ex. pickup("mainhandslot") -- also main hand weapon Ex. pickup(1,4) -- bag 1, 4th slot Ex. pickup("hearthstone") -- pickup hearthstone Ex. pickup("hearthstone") pickup("healing potion") -- consecutive pickups will swap these items Ex. pickup("hearthstone") pickup(4,7) -- put hearthstone in that slot; may swap if slot is not empty Ex. pickup("ring of iron will") pickup("finger0slot") -- put ring on first finger slot ## /print msg, /smprint, SM_print(msg), echo Print message into chat that only you can see. It's identical to DEFAULT_CHAT_MESSAGE:AddMessage. Default color is white, but you can change it in options. Ex. /print test Ex. echo("test") ## PrintColor(r,g,b,...), Printc Print message into chat that only you can see using specified color codes, in order of red, green, and blue. Color values are between 0 and 1. Also accepts any number of arguments like Printd. Ex. PrintColor(1,0,1, "test") -- purple Ex. PrintColor(1,1,0, "msg1", "msg2") -- yellow ## Printd(...), Print Print message into chat that only you can see. Unlike /print, this accepts any number of arguments and prints each onto separate lines. Also, color is always white. If Print is taken by another addon, it will not overwrite it. Ex. Printd("Test") Ex. Print("msg 1", "msg 2") -- only if another addon doesn't have Print ## PrintTable(table, row, level), Printt Print a table into chat for your view only. Ex. PrintTable(SM_VARS) ## RunBody(longtext) Execute longtext like a macro. Each line is separated by \n. Ex. RunBody("/cast Attack\n/pass /p Attack!") Ex. /in 5 /script RunBody("/print 5 secs passed\n/macro MyMacro") ## RunLine(...) Execute a line like a macro or chat message. Takes multiple lines, where each line is another argument separated by commas. Excellent for doing slash commands within 'if' blocks. Ex. RunLine("/p hi") Ex. RunLine("/p hi", "/dance", "/supermacro") Ex. if GetSpellCooldown(1,'spell')==0 then CastSpell(1,'spell') RunLine("/in 5 /print Cooldown finished") end ## RunMacro(index | name), Macro, /macro Execute a macro by name or by index. Ex. /macro Attack -- runs macro named Attack Ex. RunMacro("Attack") -- same as above Ex. Macro(1) -- run first macro in macro frame Ex. /macro 1 -- will run macro named 1; note difference from last example Ex. Macro("1") -- same as last example Ex. /macro -- opens SuperMacro frame (no argument passed) ## RunSuperMacro(index | super) Execute a SuperMacro by name or by index (in the order shown in SuperMacro frame at Super tab). Ex. RunSuperMacro(1); Ex. RunSuperMacro("MySuperMacro"); ## SayRandom(...), /sayrandom, /smsayrandom Say a random phrase from a list separated by comma. Actually, you can do more than send chat messages. There's an equal chance (1 in number of list items+1) that nothing will happen. Ex. /sayrandom hi, hello -- says hi or hello or nothing Ex. /script SayRandom("hi","hello"); -- same as last example Ex. /script SayRandom("/script Print(1)","/script Print(2)"); -- actions besides chat Ex. /sayrandom /script Print(1), /script Print(2) -- same as last example ## send send is same as SendChatMessage. Also see RunLine. Ex. send("hi") -- send "hi" to local channel Ex. send("hi", "WHISPER", "COMMON", "Aquendyn") -- send whisper ## SetActionMacro(actionid, macro) Set or replace an action button with another macro. The global variable lastActionUsed can be used to get the ID of the last action button that was pressed or clicked. Ex. Swap two macros named FindHerbs and FindMinerals. Macro FindHerbs looks like this: /cast Find Herbs /script SetActionMacro( lastActionUsed, 'FindMinerals' ) Macro FindMinerals looks like this: /cast Find Minerals /script SetActionMacro( lastActionUsed, 'FindHerbs' ) Drag either macro into an action button on your action bar. Each time you execute that action, the macros will swap, along with their appropriate icons and tooltips. ## SetActionSuperMacro(actionid, supername) Set or replace an action button with a SuperMacro. The global variable lastActionUsed can be used to get the ID of the last action button that was pressed or clicked. See SetActionMacro for an example. Ex. SetActionSuperMacro(1,"MySuperMacro"); ## /shift form Form is number or name of form, stealth, or stance. Druids: bear=1, aquatic=2, cat=3, travel=4, moonkin=5 Rogues: stealth=1 Warriors: battle=1, defend=2, berzerk=3 Ex. /shift bear Ex. /shift battle Ex. /shift stealth Ex. /shift 1 -- all four commands are equivalent, any of them will shift to battle for warriors, stealth for rogues, bear for druids ## stopcast stopcast is same as SpellStopCasting Ex. /cast Arcane Power /script stopcast() ## /unequip, /smunequip, /uneq, /smuneq Unequip an item if you have an empty bag space. Alt-click on item to insert item link into macro. Ex. /uneq shield ## use, /use, /smuse Use an item by name or link, by bag and slot, or by inventory slot. Alt-click on item to insert item link into macro. Ex. /use hearthstone Ex. /use 4,1 Ex. /script use("hearthstone"); Ex. /script use(4,1); -- bag 4, 1st slot Ex. /script use(13); -- trinket ## UseItemByName(item) Use or equip an item given its name or item link. Alt-click on item to insert item link into macro. Ex. UseItemByName("hearthstone") ############# # ## Aliases to simplify macros # ############ Aliases can simplify your macros significantly. For example, to get current mana, alias is simply ;pm--instead of UnitMana('player'). More importantly, Alias allows values from functions into chat. Instead of: /script SendChatMessage("Buffing you", "WHISPER", "COMMON", UnitName("target")) use a regular chat message: ;tt Buffing you Useful default aliases include: ;z for /script ;cn for CastSpellByName ;c for /cast ;m for /macro ;rl for /console reloadui ;pm for player mana ;pmm for player max mana ;ph for player health ;phm for player max health ;p2h for party2 health (and so on for party3, party4, party5)