Automating Custom Combat Abilities?
I'm playing on a server that uses some custom combat abilities. Just to clear up some confusion, combat abilities were formally known as disciplines and are set with the alt-c window. Combat skills are set under ctrl-c and are things like kick, mend, etc.
So, normally I let MQ2Melee handle all the combat ability stuff. The problem is that MQ2Melee is probably not going to work with a combat ability it doesn't know about. So how can I automate it?
I generally control everything from my monk. My monk and my warrior both have a combat ability that do a lot of damage and recycle every 3 seconds. I can manually spam the "1" button on my keyboard to fire off the ability on my monk, but I'm losing a lot of potential dps on my warrior unless I'm constantly switching back and forth between the windows.
I tried to find a slash command for combat abilities but couldn't find any. The ability does show on /doability list but typing /doability <Name of Ability> gives the You do not seem to have that ability available error.
My idea was to make a hotkey where on line 1 it would do /doability MonkAbility and on line 2 /bct Warrior //doability WarriorAbility. Then I could fire off both abilities by spamming 1 hotkey on my monk window, but since I don't know any actual slash command that triggers combat abilities, I haven't been able to figure this out.
Obviously I'd prefer that it all just fired off automatically like Flying Kick, Bash, Infuriate, etc., but barring that can I attach both abilities to the same hotkey somehow? Another idea is I could put the ability on Hotbar 2 Hotkey 10 and then do a slash command that triggers that hotbutton. I think MQ is capable of triggering hotbuttons with a slash command but I'm not sure what it is and I couldn't find it on /help macro.
Thanks!
Sat Sep 08, 2012 9:05 pm
Kinda solved this.
Line1: /notify hotbuttonwnd HB_Button6 leftmouseup
Line2: /bct Warrior //notify hotbuttonwnd HB_Button1 leftmouseup
This will click hotbutton 6 on the monk and hotbutton 1 on the warrior with one button. If there's a way to automate this further, please let me know, thanks :)
Line1: /notify hotbuttonwnd HB_Button6 leftmouseup
Line2: /bct Warrior //notify hotbuttonwnd HB_Button1 leftmouseup
This will click hotbutton 6 on the monk and hotbutton 1 on the warrior with one button. If there's a way to automate this further, please let me know, thanks :)
Sat Sep 08, 2012 9:54 pm
These abilities all appear on the alt-C window? It should be possible.
The way to automate further is to find some sort of /if command that detects when the alt-C button is refreshed, then issue the notify command if it is. If you get that far, you can either place that in a holyshit command in MQ2Melee or in a macro and it should be highly automated.
You have the notify command, so now all you need is the refresh detection. Try this:
edit:
Does "/disc <name of custom combat ability>" work on the custom combat ability?
The way to automate further is to find some sort of /if command that detects when the alt-C button is refreshed, then issue the notify command if it is. If you get that far, you can either place that in a holyshit command in MQ2Melee or in a macro and it should be highly automated.
You have the notify command, so now all you need is the refresh detection. Try this:
Macro
edit:
Does "/disc <name of custom combat ability>" work on the custom combat ability?
Sun Sep 09, 2012 1:22 am
Senior Project Member
Yes, they appear in the alt-c window.
I'll try to figure out what you're suggesting tomorrow morning :)
Never really delved into if commands, holyshit/downshit or any of that stuff. Just kinda let the stock plugin do its things and I've never really had problems before. I appreciate the help though and like I said when it's not 4:30 in the morning I'll take a look and let you know. Probably going to need to look into the MQ2Melee documentation on if commands and holyshit.
Edit: Forgot to answer, no /disc won't work.
I'll try to figure out what you're suggesting tomorrow morning :)
Never really delved into if commands, holyshit/downshit or any of that stuff. Just kinda let the stock plugin do its things and I've never really had problems before. I appreciate the help though and like I said when it's not 4:30 in the morning I'll take a look and let you know. Probably going to need to look into the MQ2Melee documentation on if commands and holyshit.
Edit: Forgot to answer, no /disc won't work.
Sun Sep 09, 2012 2:36 am
Try this:
/echo ${Me.CombatAbilityReady[<number of the button location for the custom combat ability in the alt-C window>]}
You should see the name of the custom combat ability.
/echo ${Me.CombatAbilityReady[<number of the button location for the custom combat ability in the alt-C window>]}
You should see the name of the custom combat ability.
Mon Sep 10, 2012 12:01 am
Senior Project Member
Hey, I'm sorry it's taken so long for me to respond. I had some things come up irl and was out of the eqemu scene for a bit.
Okay, so for this example let's say the combat ability that I want to trigger is called Ultimate Kick. I just tried /disc Ultimate Kick, and it fires off the ability so this should be easy to build into a Holyshit, I just can't figure it out because I'm kind of new to using those with MQ2Melee (unfortunately, I see how powerful they are now).
If I do:
/docommand ${If[${Me.CombatAbilityReady[Ultimate Kick]},/echo THIS MAY WORK!,/echo better luck next time]}
Then I get the "THIS MAY WORK!" response. I can replace the echo with /disc Ultimate Kick, and it fires off the combat ability.
So I'm trying to format this into a Holyshit flag. This is a direct copy/paste from the ini:
The error I get is "Failed to parse /if command. Could not find command to execute."
Notice how there's a line break between "Ultimate" and "Kick"? I'm thinking that might be why it's not working, but no matter how many times I type it in notepad, once I copy/paste it outside of notepad that weird line break is appearing. Would that be causing an issue with the flag or am I doing something wrong? When I copy the line directly into EQ, there's about 3 spaces in between "Ultimate" and "Kick".
Okay, so for this example let's say the combat ability that I want to trigger is called Ultimate Kick. I just tried /disc Ultimate Kick, and it fires off the ability so this should be easy to build into a Holyshit, I just can't figure it out because I'm kind of new to using those with MQ2Melee (unfortunately, I see how powerful they are now).
If I do:
/docommand ${If[${Me.CombatAbilityReady[Ultimate Kick]},/echo THIS MAY WORK!,/echo better luck next time]}
Then I get the "THIS MAY WORK!" response. I can replace the echo with /disc Ultimate Kick, and it fires off the combat ability.
So I'm trying to format this into a Holyshit flag. This is a direct copy/paste from the ini:
The error I get is "Failed to parse /if command. Could not find command to execute."
Notice how there's a line break between "Ultimate" and "Kick"? I'm thinking that might be why it's not working, but no matter how many times I type it in notepad, once I copy/paste it outside of notepad that weird line break is appearing. Would that be causing an issue with the flag or am I doing something wrong? When I copy the line directly into EQ, there's about 3 spaces in between "Ultimate" and "Kick".
Last edited by Tang on Sun Oct 07, 2012 4:38 pm; edited 1 time in total
Sat Oct 06, 2012 6:00 pm
You don't have the correct format for an /if statement for use in MQ2Melee:
If you are really using Notepad: turn off Wordwrap.
Then stop using Notepad and use a better text editor. I use Notepad++.
edit: Hmm, maybe it's turn on Wordwrap instead. Either way, don't use Notepad.
Macro
If you are really using Notepad: turn off Wordwrap.
Then stop using Notepad and use a better text editor. I use Notepad++.
edit: Hmm, maybe it's turn on Wordwrap instead. Either way, don't use Notepad.
Sun Oct 07, 2012 3:50 pm
Senior Project Member
Ah, I'm new to MQ2Melee formatting and I must have missed the parenthesis on some of the examples in the documentation. And yes, I really use Notepad, lol. :)
I got Notepad++ and changed the line too:
holyshit0=/if (${Me.CombatAbilityReady[Ultimate Kick]}) /disc Ultimate Kick
And it works great. Now to go through and define all the holyshit/downshit flags so I no longer have to continuously click buttons to keep buffs up, etc.
Thanks a lot for your help!
Edit:
Another question, is there something similar to Me.CombatAbilityReady for items? I tried taking stabs at stuff like Me.ItemReady but couldn't find anything that's recognized. For example, if there's an item with a 12 second cooldown with a clicky nuke, can I have MQ2Melee recognize when the cooldown on the item ends and then cast the item?
If there's better documentation than http://mqemulator.net/forum2/viewtopic.php?t=18&sid=34cac2b7589890c237f614c8db3920a6 you can send that my way and I'll figure things out from there.
I got Notepad++ and changed the line too:
holyshit0=/if (${Me.CombatAbilityReady[Ultimate Kick]}) /disc Ultimate Kick
And it works great. Now to go through and define all the holyshit/downshit flags so I no longer have to continuously click buttons to keep buffs up, etc.
Thanks a lot for your help!
Edit:
Another question, is there something similar to Me.CombatAbilityReady for items? I tried taking stabs at stuff like Me.ItemReady but couldn't find anything that's recognized. For example, if there's an item with a 12 second cooldown with a clicky nuke, can I have MQ2Melee recognize when the cooldown on the item ends and then cast the item?
If there's better documentation than http://mqemulator.net/forum2/viewtopic.php?t=18&sid=34cac2b7589890c237f614c8db3920a6 you can send that my way and I'll figure things out from there.
Sun Oct 07, 2012 4:37 pm
1. Load MQ2Cast so you can use /casting
2. This is from the AFCleric.mac checking if a modrod is ready. Couple variables in variables, but you should get the point. Use ${FindItem[name].Timer}
_________________
Sorvani
2. This is from the AFCleric.mac checking if a modrod is ready. Couple variables in variables, but you should get the point. Use ${FindItem[name].Timer}
Macro
_________________
Sorvani
Sun Oct 07, 2012 8:39 pm
Senior Project Member
Right before your reply I found (with the right Googlefu search term combination) a post by grumble that alerted me to:
/if (${Cast.Ready[ItemName]}) /casting "ItemName" |item
Seems to work great, rarely get "Spell cast time not yet met" but 95% of the time it's fine. Does yours differ at all?
/if (${Cast.Ready[ItemName]}) /casting "ItemName" |item
Seems to work great, rarely get "Spell cast time not yet met" but 95% of the time it's fine. Does yours differ at all?
Sun Oct 07, 2012 11:35 pm
Both methods work to detect when an item can be re-clicked. They differ, but the differences are pretty esoteric for your use. You'll eventually want to learn how to use both commands as they are useful on their own (and for different purposes).
Mon Oct 08, 2012 10:09 pm
Senior Project Member
where am i going wrong? this is a clickable daggerfall(rog backstab proc) and.. well it spams so much that it wont actually use backstab anymore
Tue Oct 16, 2012 6:47 am
What's the spam?
Your /casting command has issues. The "item" option and the "primary" option conflict with each other.
The "item" option tries to cast the item in one of the primary inventory slots (where bags can go). Think of clicking Jboots from inventory. Also, the item option doesn't use a hyphen in front.
The "primary" option tries to cast the item in the primary hand. Think of clicking a modrod which can only be cast while equipped.
Use one or the other. Not both.
Your /casting command has issues. The "item" option and the "primary" option conflict with each other.
The "item" option tries to cast the item in one of the primary inventory slots (where bags can go). Think of clicking Jboots from inventory. Also, the item option doesn't use a hyphen in front.
The "primary" option tries to cast the item in the primary hand. Think of clicking a modrod which can only be cast while equipped.
Use one or the other. Not both.
Tue Oct 16, 2012 4:37 pm
Senior Project Member