• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver
Button Master

Release Button Master 05/09/2026

No permission to download
Please explain this one:
- added ability to copy a local config from another char.

jurassic park GIF by IFC
1711736874407.png
 
Are you saying that just a single button has the wrong countdown timer?
Sorry yes, so far I've only seen it happening to a single button at a time, although it's a random button each time I restart the game and such. Thanks for taking a look at this! Figured I'd reply to this message, rather than the one below where you said you found the issue. Very much appreciate all the work that goes into this stuff! <3
 
Please explain this one:
- added ability to copy a local config from another char.

jurassic park GIF by IFC
View attachment 59704
You can take the local configuration of any character (hotbars/buttons/position/etc) and apply it to any other character.

It under the gear icon "Copy Local Set" Local meaning it isn't coming across dannet or anything it just looks at the toons config and overwrites yours with theirs.
 
Sorry yes, so far I've only seen it happening to a single button at a time, although it's a random button each time I restart the game and such. Thanks for taking a look at this! Figured I'd reply to this message, rather than the one below where you said you found the issue. Very much appreciate all the work that goes into this stuff! <3
Yah the bug was basically that we use os.clock() which is related to how long the client has been running to calculate the button cooldown, but we store this technically ephemeral value with the new caching code so now your config contains a countdown timer based on os.clock which if you used that button after 6 hours of playing will be some huge number then you restart your client and now os.clock is reset to 0 and you have to catch that huge number before it resets. So instead we will use os.time() which is actual epoch time not reset until the heat death of the universe or the year 2038, whichever comes first.
 
Forgive me if this is answered elsewhere, I tried to skim the pages and find it first.

Is there a way to track the timer of an item on one of my boxes?

Example: I drive from my tank and want to track the cooldown of my bard's epic on the button. (I know I could make it a 3min timer, but if the bard was stunned or something and didnt fire the epic).
 
Anybody who uses innerspace have issues with the button master window changing its location everytime you switch to a different toon, I have the lock "locked" and its still keeps moving? I had it locked at the bottom of my screen, then I switch to a toon using innerspace hotkey, and when I switch back the button master window is now in the middle of my screen instead of where I had it?
 
Anybody who uses innerspace have issues with the button master window changing its location everytime you switch to a different toon, I have the lock "locked" and its still keeps moving? I had it locked at the bottom of my screen, then I switch to a toon using innerspace hotkey, and when I switch back the button master window is now in the middle of my screen instead of where I had it?
This is a "feature" imgui. If the windows go off the screen it resets their position and when isb changes the resolution the position invalidates and moves the window. I have this compiled out of my customer build for this exact reason.
 
I was doing my normal stuff today, and buttonmaster crashed a couple of times when I was moving the imgui position around. Then when I started it up again, all the buttons and tabs had disappeared. I then found the Buttonmaster-Backup directory and looked at those files. It seemed it had over-written the full config with a default one about 5 minutes before. I then checked the redguides launcher to make sure I had not missed an update to buttonmaster, but I am on the latest published version.

1711804224118.png
 
Is there a method of having the button change color if the script it is triggering is running, so the button acts as a toggle for either running or stopping the Lua script? The use case I am thinking of is for things like boxhud, where I do a /Lua stop boxhud then a /Lua run boxhud on the next line, so it either stops it if it is running, or starts it if it is not running. I wanted to make the buttons smarter, so it would know if it was running or not to either stop it, or start it, and reflect the script state with a different color.
 
FEATURE REQUEST

  • Bind to a hotkey, ex: ctrl+alt+4 triggers a hotbutton just like you can bind hotkeys on an EQ hotbar

If hotkeys cant be done with the mq Lua integration...
  • Integrate with MQ2CustomBinds ?
  • Automagically register every button as Lua mq.bind() , then could use MQ2Custombinds or make an EQ button that basically calls the Button Master button
    • /LBM1234
 
How can I set a variable at the top of the button's Command box that I could use later in a multiline? I am using the following code but I am getting a error:

Code:
SpellName = "Feign Death"
/multiline ; /timed 1 /dgae /cast SpellName; /timed 1 /dgae /mq.cmd('/g Casting ', SpellName)
 
FEATURE REQUEST

  • Bind to a hotkey, ex: ctrl+alt+4 triggers a hotbutton just like you can bind hotkeys on an EQ hotbar

If hotkeys cant be done with the mq Lua integration...
  • Integrate with MQ2CustomBinds ?
  • Automagically register every button as Lua mq.bind() , then could use MQ2Custombinds or make an EQ button that basically calls the Button Master button
    • /LBM1234

I would add this but imgui key detection is broken. you should upvote or comment on this issue: https://github.com/macroquest/macroquest/issues/848
 
How can I set a variable at the top of the button's Command box that I could use later in a multiline? I am using the following code but I am getting a error:

Code:
SpellName = "Feign Death"
/multiline ; /timed 1 /dgae /cast SpellName; /timed 1 /dgae /mq.cmd('/g Casting ', SpellName)
EQ doesnt support this. If you wanted to do this you would have to make a Lua button.

Code:
--lua
local spellName = "Feign Death"
mq.cmdf("/multiline ; /timed 1 /dgae /cast %s; /timed 1 /dgae /echo Casting %s", spellName, spellName)
 
FEATURE REQUEST

  • Bind to a hotkey, ex: ctrl+alt+4 triggers a hotbutton just like you can bind hotkeys on an EQ hotbar

If hotkeys cant be done with the mq Lua integration...
  • Integrate with MQ2CustomBinds ?
  • Automagically register every button as Lua mq.bind() , then could use MQ2Custombinds or make an EQ button that basically calls the Button Master button
    • /LBM1234
I dont use custombinds so i have no idea how it works but I would be open to that solution until imgui button detection is fixed if someone wanted to PR it or explain to me how it works.
 
I figured it out. BM Beta now supports

Code:
/btnexec "Set" Index
ie:
/btnexec "Derp's Utils" 1

Which should allow for MQ2CustomBind integration.
 
EQ doesnt support this. If you wanted to do this you would have to make a lua button.

Code:
--lua
local spellName = "Feign Death"
mq.cmdf("/multiline ; /timed 1 /dgae /cast %s; /timed 1 /dgae /echo Casting %s", spellName, spellName)

Worked like a charm. Thanks!
 
Derple updated Button Master with a new update entry:

03/31/2024

〰️Commits​


PR # [9](https://github.com/DerpleMQ2/buttonmaster/pull/9): an update rate configurable per button
(2e7233d) ~derple
Add an update rate configurable per button, this is found in the advanced settings of each button.
unlimited is default (your FPS rate), tho for *most* buttons your dealing with things that don't need quite that high of rate...

Read the rest of this update entry...
 
Sorry, I am still having troubles inserting codes into Lua buttons. A hand please?

I got the following code into a button:

Code:
--lua
local spellName = "Necrotic Pustules"
local PetName = mq.TLO.Me.Pet.CleanName()
mq.cmdf("/multiline ;  /timed 1 /dgae /stand; /timed 2 /dgae /target PetName; /timed 3 /dgae /cast %s; /timed 3 /dgae /g Casting -> %s", spellName, spellName)

The idea is that each group member casts the spell spellName to their respective pets. However, I get the error: "There are no spawns matching (0 200) any whose name contains PetName". Where is my code wrong?

Thanks!
 
Sorry, I am still having troubles inserting codes into LUA buttons. A hand please?

I got the following code into a button:

Code:
--lua
local spellName = "Necrotic Pustules"
local PetName = mq.TLO.Me.Pet.CleanName()
mq.cmdf("/multiline ;  /timed 1 /dgae /stand; /timed 2 /dgae /target PetName; /timed 3 /dgae /cast %s; /timed 3 /dgae /g Casting -> %s", spellName, spellName)

The idea is that each group member casts the spell spellName to their respective pets. However, I get the error: "There are no spawns matching (0 200) any whose name contains PetName". Where is my code wrong?

Thanks!

You've got PetName in your command string instead of using %s to format it as a variable.

Code:
mq.cmdf("/multiline ;  /timed 1 /dgae /stand; /timed 2 /dgae /target %s; /timed 3 /dgae /cast %s; /timed 3 /dgae /g Casting -> %s", PetName, spellName, spellName)
 
You've got PetName in your command string instead of using %s to format it as a variable.

Code:
mq.cmdf("/multiline ;  /timed 1 /dgae /stand; /timed 2 /dgae /target %s; /timed 3 /dgae /cast %s; /timed 3 /dgae /g Casting -> %s", PetName, spellName, spellName)

Thank you, I appreciate it. However, there is a problem: that line of code has all members of the group target the group leader's pet instead of their own. I would need each member of the group target their own respective pets. Any suggestion please?
 
Thank you, I appreciate it. However, there is a problem: that line of code has all members of the group target the group leader's pet instead of their own. I would need each member of the group target their own respective pets. Any suggestion please?
you want to use `/target id $\{Pet.ID}` if you are sending it through dannet to that should make them target their own pets. But really you should use mq2cast that lets you put a target into the command without needing to target them first.
 
Hi, have been running this great Lua for some time, however I have run this yesterday and today and i get the following : 1712069055351.png

I then removed buttonmaster and reinstalled it and the same thing happens
 
Hi, have been running this great LUA for some time, however I have run this yesterday and today and i get the following : View attachment 59963

I then removed buttonmaster and reinstalled it and the same thing happens
I thnk your character config doesnt have a valid list of sets. I pushed a speculative fix for this this morning if it doesn't work please send me your config/buttonmaster.Lua ina PM and I will debug it.
 
Hi again, previous fix did work, i was trying to create a new Set, allowed me to name the set, but when io click on save I get :
1712141748055.png

I can then restart buttonmaster and it comes back with the original configuration
 
Out of curiosity, is it possible to save the buttonmaster hotbar locations on a per character basis? :)
Doing this would likely require we start breaking out bm configs on a per char basis. I've already been considering this, but I hesitate to make such a change as it has a lot of implications (like buttons not auto updating across toons etc).
 
Hi again, previous fix did work, i was trying to create a new Set, allowed me to name the set, but when io click on save I get :
View attachment 60016

I can then restart buttonmaster and it comes back with the original configuration
Ok Try the next build, since I don't have your config I fixed this issue but I am not sure if you will run into more down the line.
 
A temporary work around -

Make alias -
/alias /bcgnbrd /noparse /bcga //if (${Me.Class.ShortName.Equal[BRD]})
Update hotkey -
/bcgnbrd /mac kissassist assist tanky

So I want to have some generic buttons that I can share between my tank / puller classes and I found that I was getting errors trying to use /noparse (or commands with (${Me.Class.ShortName}) for example) so I used this as a work-around:

I made these aliases:
/cwtnwar=/noparse /dgga /if (${Me.Class.ShortName.Equal[WAR]})
/cwtnsk=/noparse /dgga /if (${Me.Class.ShortName.Equal[SHD]})
/cwtnpal=/noparse /dgga /if (${Me.Class.ShortName.Equal[PAL]})

Then I made a Goto Camp button I can share between characters:
['Cmd'] = '/cwtnwar /war GotoCamp\n/cwtnsk /shd GotoCamp\n/cwtnpal /pal GotoCamp',

So it works but I am wondering if there is another way of doing this?
 
Release Button Master

Users who are viewing this thread

Back
Top
Cart