Goto page 1, 2  Next Public Macros EQBC hotkeys
Reply
EQBC hotkeys
Hullo,

Emu player on THF server here, setting myself up for a 6box. Trying to get my feet wet with EQBC before I try and tackle actual macros. I'm sure I will have more EQBC related questions, so I left the subject a little broad. Hopefully other people will be able to get something out of this discussion!

So far I've been able to create an invite/join hotkey, stick and unstick hotkeys, receive target/stick/attack and receive target/face/ranged attack hotkey, turn attack/ranged attack off hotkey, but am having trouble with buffs, specifically clickies.

On my Bard, for example, I have the following hotkey in slot 0:

/multiline ; /itemnotify 4 rightmouseup; /timed 5 /itemnotify 29 rightmouseup

The hotkey works great and uses both clickies (4 = right ear and 29 = inventory 2nd column 3rd row). However, when I send the following command from any other character, nothing happens:

/bct Bardname //keypress 0

It's especially odd as:

1) I have the Bard's melody hotkey (/melody 1 2 3 4 5) in slot 9, and if I send /bct Bardname //keypress 9 it works.
2) On the Bard, if I manually enter /keypress 0, it works.

Anyone have an idea on why sending a /keypress doesn't seem to work to activate a hotkey containing /itemnotify?
Tue Apr 22, 2014 2:58 pm
I don't have an immediate answer as to why the /keypress isn't working. I do know of some alternatives.

1. Name the social/hotkey as something unique: /dosocial "somethingunique"

2. Use the EQ bind name instead of the key. For instance, "/keypress jump" instead of "/keypress space" (assuming the space bar makes you jump). You can find the EQ bind name under the hotkey remapping tab of the UI options window. It should be something like: /keypress Page1Button10. You may need to play around with the numbers to find the right one.
Tue Apr 22, 2014 5:29 pm
Senior Project Member
Thanks for the ideas, Grumble. Trying /dosocial resulted in the same scenario as /itemnotify. I thought to try /casting itemid to proc my clickies and it works like a charm when I send either a /keypress or /dosocial. Odd, that.

Is it possible to send a command that checks mana % of multiple characters via netbots and use a /if to trigger a gather mana ability when response is below threshold?

EDIT: I should try to come up with something and not just expect handouts! I quickly crashed myself trying to send /echo ${NetBots[ShamanName].PctMana} from my SK. Added :int to the end and huzzah! reporting the %. But from what I can tell the /if command is to be used in macros. Hopefully I'm wrong or there's another way to achieve this.
Tue Apr 22, 2014 11:45 pm
wild guess, the 0 is translating as a false or something..
try
Macro
More +
/noparse /bct bard //keypress 0

_________________
Sorvani
Wed Apr 23, 2014 6:14 pm
Senior Project Member
/noparse /bca //g I have ${Me.PctMana}% mana.

/if can't be used. Not really. ${If[]} can.

/docommand ${If[${Me.PctMana}<10,/echo I am low on mana, /echo Keep em comin!]}
Wed Apr 23, 2014 6:20 pm
Senior Project Member
@sorvani: It definitely was translating to false, as /noparse cleared that right up. Good to know!

@grumble: Ah! It's starting to make more sense now. Thanks, that's working exactly as I hoped.

My Wizard has 2 mana gather abilities, a clicky and spell. I'm trying to expand the hotkey to check which is available, then cast and inform the group accordingly. So far, I have:

; Base gather mana ability, built to work with a clicky all casters get on my server. This works.
/docommand ${If[${Me.PctMana}<30, /multiline ; /casting 2422; /gsay ${Me.PctMana} - harvesting, /gsay ${Me.PctMana}%mana]}

; Attempt to report if a harvest is available. This does not work.
/docommand ${If${Cast.Ready[5]}=, /g Harvest available. , /g Harvest down.]}

I know I'm missing something at the =, or even possibly the = is a problem with this syntax. I have tried TRUE and 1 for =. I always return /docommand NULL. I also thought of trying to report the remaining cooldown of the specific harvest, but couldn't find much on that command if it exists.

Is there some sort of way to do a false? Does that even make sense?[/syntax]
Thu Apr 24, 2014 12:23 am
Cast.Ready (and other MQ2 alternatives) for items is almost non-functional on THF. It's a custom server and has to do with how the server and/or custom items are coded. You'll probably need to use Timers.

That said, your syntax isn't correct either. You have Cast.Ready[5] but I doubt "5" is the actual spell ID of your harvest spell. It looks like a gem number rather than spell id. Cast.Ready returns TRUE/FALSE/NULL so it doesn't need an =anything.

/docommand ${If[${Cast.Ready[2422]},/echo Harvest available. ,/echo Harvest down.]}

edit:
Looks like Cast.Ready can use gem numbers. Specify gem to ensure it's not looking for a spellid, AAid or itemid instead.

/docommand ${If[${Cast.Ready[Harvest|gem5]},/echo Harvest available. ,/echo Harvest down.]}
Thu Apr 24, 2014 11:26 am
Senior Project Member
Good to know about Cast.Ready. I was indeed using the gem #, and that makes sense how I don't need the = there.

I was able to get the hotkey working. Funny but after setting up my hotkeys I decided to set up MQ2Melee and that makes some buffs and what not a lot easier to manage. Also the syntax, which seemed foreign a few days ago, makes much more sense now. Thanks for all of the help so far!

I'm having problems with a few of my downshit lines, for example:

/downshit2=1
/downshit2 /if (${Spell[Form of Defense].Stacks} && !${Me.Buff[Form of Defense].ID} && !${Me.Moving} && !${Me.Invis}) /casting 6874|rightear
/echo = /if (TRUE && !NULL && !FALSE) /casting Form of Defense|rightear

It's weird because it seems to have issues with Me.Buff although I use the same name as in ${Spell}. Is there another way to call the buff name or alternative to Me.Buff? I tried spellid but still get a NULL in the same spot as the /echo. I have the exact same situation on other characters using other spells and clickies... some work, but not all. Is this custom server stuff?
Sat Apr 26, 2014 12:07 am
Are you trying to run/add downshits from in game?

My setting in the my server_charname.ini in mq2 folder for form of defense is

downflag2=1
downshit2=/if (!${Me.Buff[Form of Defense VII].ID} && !${Me.Moving}) /casting "Woven order sash"

can just replace the proper level of the Form of Defense and item name with your own. Which appears to be Form of Defense I and Mushroom Earring.
Sat Apr 26, 2014 6:41 am
Funny but after setting up my hotkeys I decided to set up MQ2Melee and that makes some buffs and what not a lot easier to manage. Also the syntax, which seemed foreign a few days ago, makes much more sense now. Thanks for all of the help so far!


MQ2 has lots of tools that will make your life easier. EQBC is but one. IMO, there are 4 plugins everyone needs to learn how to use (at least the basics):
EQBC
NetBots
MQ2Melee
MQ2Cast

Bang for your buck, those 4 plugins are tops. Hotkeys/socials are so much easier to use/adopt/write. Macros are so much easier to use/adopt/write.

/downshit2=1
/downshit2 /if (${Spell[Form of Defense].Stacks} && !${Me.Buff[Form of Defense].ID} && !${Me.Moving} && !${Me.Invis}) /casting 6874|rightear
/echo = /if (TRUE && !NULL && !FALSE) /casting Form of Defense|rightear


You have a syntax error and gnomie shows the correct syntax.
downflag2=1
downshit2=blahblahblah

It's possible for a ${Spell[spellname]} search to find a false positive. ESPECIALLY if there are ranks involved. A ${Spell[]} search looks through the entire spell file for that string. The first one found is the one used. Thousands and thousands of spells and lots have similar names. If you have the spellID, it's best to use the spellID. If not, use the full, exact name.

A ${Me.Buff[buffname]} search requires a more exact buffname than a Spell search (because there will only be 20 buffs and many buffs with similar names don't stack). Using spellID when looking for buffs should work perfectly. If not, make sure you are using the spellID and not the itemID of the item which casts the spell. If it still doesn't work, make sure you have the correct spell file provided by your server.
Sat Apr 26, 2014 12:55 pm
Senior Project Member
Thanks guys. I'm not sure where my downflag/downshit syntax got messed up, but I'm sure that played a factor in my testing before. Buffs/clickies are all set up, using Gnomie's syntax, with the exception of Form of Defense which remains an issue (though oddly enough a hotkey for a Form of Defense I clicky works). I'm chalking it up to the custom server code and since my tank has a higher level of the buff he's unaffected.

Is it possible to have a downshit check for a buff on another player? Example, I want my Cleric to have a downshit keep Unwavering Faith I on my tank... is there an equivalent to {Me.Buff} to check a player's buff? PC.Name.Buff or Player.Name.Buff or PlayerName.Buff or ...? Is there a way to set the Player to check buffs of via a {Target.ID} or even by name (since that is static)? Same goes for an NPC... I'm wondering if it's possible to make a holyshit check for debuffs/slows/dots.

And lastly... is it possible to have a holyshit reflexively target and heal a player who falls below X%? I'm thinking this is more of a scripted macro than holyshit function, but one can hope!
Tue May 06, 2014 5:33 pm
Is it possible to have a downshit check for a buff on another player?


Time for Netbots. Netbots will let you see the buffs on any character using the same EQBCServer.

Word of Warning: You're getting into macro territory here. MQ2Melee has a 250 (255?) character limit for any ini line before MQ2 crashes with little to no feedback as to the source. A "good" downshit test for this will probably go way over that 250 character limit.

And lastly... is it possible to have a holyshit reflexively target and heal a player who falls below X%? I'm thinking this is more of a scripted macro than holyshit function, but one can hope!


Not exactly. Reflexively, no. Preemptively, yes. It's possible to cycle through each character in a group and, if low, cast a heal.

Again, while this is possible, it's not a good method. You'll want a macro.
Tue May 06, 2014 8:34 pm
Senior Project Member
Bummer, I knew my half-assery was coming to an end.

I've seen varying levels of macros, and most of them have been thousand-line monsters - is it possible to relatively easily (compared to downshit/holyshit stuff) write a "basic" macro that only controls when a player heals and leave buffs to hotkeys/downshits and manual movement via stick hotkeys, /makecamp and such? Hell, I wouldn't even want to script things like Divine Arbitration/group heal as I'd want to control when that sort of thing triggers exactly depending on the situation.

My ideal healing macros would be: Cleric to heal (single targets only) self/main tank and cast cures, Shaman to heal (single targets only) self/rest of group and cast cures. Related question, if the Cleric macro is running, and I send a BC to hotkey a Divine Arb/group heal, will that work or will the macro override the hotkey or vice versa?
Wed May 07, 2014 10:00 am
You can still send EQBC commands with a macro running.
Prime example is /bca //stick ID {Me.ID}
Wed May 07, 2014 10:52 am
Listen to This Guy
Yes

Macro
More +
Sub Main
/declare int i
:foreverloop
/for i 0 to ${Group.GroupSize} {
   /if (${Group.Member[${i}].PctHPs < 70) /casting "name of heal spell" gem1 -targetid|${Group.Member[${i}].ID} -maxtries|4
/next i
/goto :foreverloop
/return


That basic macro is as powerful as the MQ2Melee version (and a lot easier to write). The meat and potatoes part is two lines long.

Healing self is one line long. Healing a tank is one line long. Curing is no more complicated than the above loop.

Once you get that setup and running, you will quickly find yourself saying: "I wish my macro did this or that!" That's when macros grow. Meditate. Distance checks. Mana checks. Group Heals. Heal over time. Complete healing. Cannibalization. Slows. Don't heal a pulling monk unless they are feigned. Fast heal and slow heal. Divine Aura. Malo. Cripple.

Related question, if the Cleric macro is running, and I send a BC to hotkey a Divine Arb/group heal, will that work or will the macro override the hotkey or vice versa?


I use /stick and many other EQBC commands while running macros. Macros and EQBC commands are separate but each can affect the other.

Say your macro casts a heal. The character starts casting but that character also happens to be under the influence of a /stick command. And MQ2MoveUtils keeps tabs on the need to move regardless if a macro is running. So MQ2MoveUtils decides you need to move. Your character moves, fails the channeling check because you moved too much, and the cast fails. A tank dies and soon after so does everyone else because you can't get a heal off. All due to a scenario the macro wasn't designed for (/stick). A well timed "/stick off" is all that's needed. And that's how macros grow to be thousands of lines.
Wed May 07, 2014 6:45 pm
Senior Project Member
Goto page 1, 2  Next Public Macros EQBC hotkeys
Reply