Give a Macro, Take a Macro!

Welcome to the forums of Runes of Magic EN & US

Rules and Guidelines: Game Rules - Community Guidelines - Terms of Use - RoM Servers Status

Customer Support: EN/EU Customer Support - US Customer Support

Get in touch with us: Join our Discord!
  • Guys how can we connect autoshoot macro and tab macro ? Can you help me to do this ?

    TAB macro;


    1. /run if not UnitCanAttack("player","target") or UnitIsDeadOrGhost("target")==true or UnitIsDeadOrGhost("target")==nil then for i=1,10 do TargetNearestEnemy() if not UnitMaster("target") then break end end else CastSpellByName("Low Blow") end



    AUTOSHOT macro;


    1. /run enemy = UnitCanAttack("player","target") and (not UnitIsDeadOrGhost("target")); a1,a2,a3,a4,a5,AS = GetActionInfo(16); if enemy and (not AS) then CastSpellByName("Autoshot") end


    Thanks. (I used them in order but there is latency here. Maybe they can connect each other. idk. I just wanted to ask.)

  • Hi guys - i also have a question

    Is there somebody who konws a macro to intercept a cast-/channel-skill without moving the char?


    What i want to achieve:

    - stop a cast/channel to use something else (seeren, laor,...)

    - moving is no choice since some chars can cast while moving


    Thanks in advance

  • Hello,

    thread seems pretty dead, but maybe I can still get an answer for my question. :3

    Some time ago I had a macro to set a costume colour to black (I mean real black), but I can't find it anywhere now. Can anyone gib it? :3

  • /run for i=0,7 do CoolSuit_SetItemColor(i,2,1,0,0,0,0) CoolSuit_SetItemColor(i,1,1,0,0,0,0) end

    Hexer/Champ - Krieger/Mage - Mage/Hexer

    nnef6as2.png

    Ritter/Krieger - Krieger/Ritter - Ritter/Priester



  • A few years back there used to be pages of macros, and not all of them devoted to switching something, like armor, or combo attacks which the majority of these marcos seem to be. I recall one which allowed you to check on the health of the NPC you had targeted and another which have you level/class information about the targeted NPC. Did GF just delete all those pages when they took over?

  • To not scare off the potentially new players w/ the Steam release, GF deleted the old forum.


    Officially, I think there was some "security" issue w/ the old forum software and it'd be a pain in the keister to try to bring that data over. Players were encouraged to remake all of the forum posts.

  • Can't find the one I was looking for, think it was in a Frogster run forum. Tried this one and can't get the second line to work. Any ideas? Would also like to string them together better. Every time I try it stops working altogether.


    /script SendChatMessage(UnitName("target").." is level "..UnitLevel("target"), "say");

    /script SendChatMessage(UnitClass).." health is, ("say");

    /script SendChatMessage(UnitHealth("target").." out of "..UnitMaxHealth("target"), "say");

  • Use this one for the mushroom collection in the Walu Villiage in Salioca. Why the mushrooms are friends is beyond me. Tried a different command that didn't work, sorry don't recall what it is. This does have the plus side of trageting the quest giver. Still have to rotate around a little to get all the mushrooms.


    /script TargetNearestFriend()

    /run UseItemByName("Batchie Grass")

    /wait .5

  • /script SendChatMessage(UnitClass).." health is, ("say")

    This line does not contain any valid command. You can try

    /script SendChatMessage(UnitClass("target"), "say")

    to get your primary class. Or

    /script local p,s = UnitClass("target");SendChatMessage("Primary class is " .. p .. ", secondary class is " .. s, "say")

    for both primary and secondary.


    You don't have to take macro as divine revelation beyond comprehension of mortal people. This is just some text a fellow player wrote. It's easy to parse them once you get the idea. Let me give you some examples. Btw /run and /script are almost equivalent so I will you use the former.

    /run SendChatMessage(123, "say")

    /run SendChatMessage("any text i want", "say")

    Here SendChatMessage is something which is called function and you pass it comma-separated parameters. As you an see, it just prints the first parameter in the white chat. String parameters can be merged into one using two dots ..

    /run SendChatMessage("first " .. "second " .. "third", "say")

    In your examples UnitName("target"), UnitLevel("target"), UnitHealth("target") are all calls of other functions (and yes, "target" is the only parameter here).

    Now try looking at your macro again and decompose it into something you already know.


    Next, few tips about Walu Village dailies. I believe ctrl+tab is the default shortcut to target the nearest friendly object or the next one if you already have selected something. This includes both players and NPCs. Of course enemy players in SW are not considered friendly. This is exactly what TargetNearestFriend() does. Btw some functions can be called without parameters like this one.

    If your macro for treating mushrooms contains only of those three lines then you can simply omit the last one. Delays are needed only when you want subsequent commands to be execute after some delay. For example, you can duplicate those lines.

    /run TargetNearestFriend()

    /run UseItemByName("Batchie Grass")

    /wait .5

    /script TargetNearestFriend()

    /run UseItemByName("Batchie Grass")

    Will treat two mushrooms with one macro call. Add more for less clicking.


    Quest taking and delivering can be automated as well but let's leave this for another time.


  • Making cooldowns more friendly.

    The remaining time for skills or bag items is displayed like "1m" which means that the cooldown is somewhere between 1 and 2 minutes. There's a way to display more information e.g. adding seconds for cases like this. You just need to override function CooldownFrame_SetTime. If you don't know how to make custom functions you can start here https://runesofmagic.gamepedia.com/Addon_Tutorial

    My implementation looks like this

    Durations over 1 hour are displayed as HH:MM, durations form 1 min to 1 hour are displayed as MM:SS, less that 1 min are displayed as SS and the last second as 0.ms.

    You can easily make your own version. For example, if you don't like flashing numbers you can rempve the "else text = string.format("%.1f", s)" part.

    Edited once, last by Utu ().

  • The first macro has an error, it didn't work for me with / run and I had to put / script.

    After putting it on it worked perfectly: D

  • I guess I am not doing something right here cause it doesn't seem to work for me.

  • Dis you replace the Vars X, Y and Z with some "values"?

    Baldr - Secretmage

    Magier/Hexer/Priester/Schurke//

    Rüstigerentner

  • I did, yes. I only want to target one specific mob, so I removed name == Y and name == Z, and only left name == X, replacing X with mob name in quotation marks.

  • Did you perhaps not change TargetNearestFriend to TargetNearestEnemy?

    In case you did that already, would you mind posting your version here?


    Also you could use something like this as an easier alternative for different mob names:

    Code
    1. /run local list, i = {"Lurking Scalok", "Rune Guardian"}, 0 repeat i = i + 1 TargetNearestEnemy() local n = UnitName("target") if n then for _, v in pairs(list) do if v == n then return nil end end end until i == 20

    Adding more names only requires to add them to the list (the part in {...})

    Edited once, last by chazz ().