Downshit and Holyshit question

Third party software discussion goes here.
User avatar
Puffda
Posts: 141
Contact:

Re: Downshit and Holyshit question

Post#11 » Tue Dec 17, 2013 12:29 am

Ok see this is what I am working with:

Code: Select all

[MQ2Melee]
aggro=1
bash=1
disarm=0
downflag0=1
downflag1=1
downflag2=1
downflag3=1
downflag4=1
downflag5=1
downflag6=1
enrage=1
facing=1
feigndeath=30
harmtouch=1
holyflag0=1
holyflag1=1
holyflag2=1
holyflag3=1
holyflag4=1
holyflag5=1
holyflag6=1
infuriate=1
melee=1
petassist=1
petmend=20
petrange=75
plugin=1
provoke1=5329
provokeend=20
provokemax=1
provokeonce=1
resume=20
slam=1
stickmode=1
stickrange=60
taunt=1
version=4.951

downshit0=/if (!${Me.Buff[Immortality].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /multiline ; /melee downflag0=0; /timed 200 /melee downflag0=1; /casting "Ares, Shield of Immortality"|ranged
holyshit0=/if (!${Me.Buff[Immortality].ID} && !${Me.Moving} && !${Me.Invis}) /multiline ; /casting "Ares, Shield of Immortality"|range

downshit1=/if (!${Me.Buff[Form of Defense VII].ID} && !${Form of Defense VII].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting "Woven Order Sash"|waist
holyshit1=/if (!${Me.Buff[Form of Defense VII].ID} && !${Form of Defense VII].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting "Woven Order Sash"|waist

downshit2=/if (!${Me.Buff[Briarcoat].ID} && !${Briarcoat].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting "Iced Necklace"|ammo
holyshit2=/if (!${Me.Buff[Briarcoat].ID} && !${Briarcoat].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting "Iced Necklace"|ammo

downshit3=/if (!${Me.Buff[Murkglider Spirit].ID} && !${Murkglider Spirit].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting "Art of the Murkglider"|ammo
holyshit3=/if (!${Me.Buff[Murkglider Spirit].ID} && !${Murkglider Spirit].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting "Art of the Murkglider"|ammo

downshit4=/if (!${Me.Buff[Strength of the Wildrunner Rk. II].ID} && !${Strength of the Wildrunner Rk. II].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting "Immaculate Flowing Black Silk Sash"|waist
holyshit4=/if (!${Me.Buff[Strength of the Wildrunner Rk. II].ID} && !${Strength of the Wildrunner Rk. II].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting "Immaculate Flowing Black Silk Sash"|waist

downshit5=/if (!${Me.Buff[Travel of the Wind].ID} && !${Travel of the Wind].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting "Aeolus, Boots of the Wind"|feet
holyshit5=/if (!${Me.Buff[Death March IV].ID} && !${Death March IV].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting "Band of the Gargoyle"|neck

downshit6=/if (!${Me.Buff[Ancestral Power I].ID} && !${Ancestral Power I].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting "Ring of Purified Chaos"|item
holyshit6=/if (!${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /casting 9422
Image
<Sanctuary>

User avatar
Nexor
Posts: 495

Re: Downshit and Holyshit question

Post#12 » Tue Dec 17, 2013 3:27 am

In all lines you start with Me.Buff{Spellname}.ID followed by the {Spellname}.ID which you can leave out it serves no purpose.

Do it like you have it for your Immortality downshit/holyshit.

In regards of the |itemslot you can leave it out if you have the item already equiped.
|itemslot is only used if a item needs to be casted while equiped.

I doubt that if you in combat that you are still Invis and if you are feigned it shoudn't allow you to cast.

As in ME.Invis in Holyshit and ME.Feigned in Holyshit/Downshit (unless you have the delay) is not necessary.
If the item is insta cast ME.Moving isnt necessary.

Also in regards of
Although this does not seem to work for holyshit. Can't seem to get the shield to cast during a fight. This is so confusing :cry: I feel like I need to go to college and major in scripting to do this lol :mrgreen:


It does work you might copy and pasted and forget to change downflag to holyflag or something.
Team Nexor

Fexor - Fexxor - Nexxor - Nexia - Nexxia - Nexis - Nexxis - Gnex

Noren
Posts: 1053

Re: Downshit and Holyshit question

Post#13 » Tue Dec 17, 2013 4:25 am

Puffda wrote:!${Form of Defense VII].ID}


There's a syntax error here, and it's repeated many times (which will lead you toward why it's not working).

Easy mistake to make (I've done it many a time).

Also, I agree with Grey's method, but just realize that ${FindItem[itemname].Timer} always evaluates to 0 if the cast time is greater than 0, i.e. not instant cast. That will create a nasty loop.

If you want to click items that are not instant cast, then I suggest creating manual timers. I heard there's a better way, but I don't know it yet. I also don't use downshit/holyshit but I think this should work. Here's an example:

Code: Select all

Clicky Not-Instant-cast Buff:
holyshit0=/if (!${Defined[ItemNameTimer]} && ${FindItem[ItemName].CastTime}>0) /declare ItemNameTimer int outer
holyshit1=/if (${FindItem[ItemName].ID} && !${Me.Buff[ItemNameBuff].ID} && (${FindItem[ItemName].Timer} && ${FindItem[ItemName].CastTime}==0)) /casting "${FindItem[ClickyNameHere]}"|item
holyshit2=/if (${FindItem[ItemName].ID} && !${Me.Buff[ItemNameBuff].ID} && (${Defined[ItemNameTimer]} && ${ItemNameTimer}==0)) /multiline ; /casting "${FindItem[ClickyNameHere]}"|item;/varset ItemNameTimer 600


Just change 600 to whatever the recast time really is.

User avatar
Nexor
Posts: 495

Re: Downshit and Holyshit question

Post#14 » Tue Dec 17, 2013 5:06 am

Also, I agree with Grey's method, but just realize that ${FindItem[itemname].Timer} always evaluates to 0 if the cast time is greater than 0, i.e. not instant cast. That will create a nasty loop.


Yes Grey's method is the ideal one if MQ2 would realize that the item wouldn't be ready yet but will need to handle it the ugly way till Vaion finds time to work on the fix.

If you want to click items that are not instant cast, then I suggest creating manual timers. I heard there's a better way, but I don't know it yet. I also don't use downshit/holyshit but I think this should work. Here's an example:


Honestly i don't use downshit/holyshit either that much to cast, but for the few times i do use it i never seen any problems where it needed to cast and the spell/item was not a insta cast.
Team Nexor

Fexor - Fexxor - Nexxor - Nexia - Nexxia - Nexis - Nexxis - Gnex

User avatar
Shin Noir
Posts: 380

Re: Downshit and Holyshit question

Post#15 » Wed Dec 18, 2013 10:12 pm

The moving flag is always going to be false if downshit is being triggered.

I have a timer system similar to solution above, when I get home if I remember I'll post it
ImageImage

User avatar
Shin Noir
Posts: 380

Re: Downshit and Holyshit question

Post#16 » Thu Dec 19, 2013 4:00 am

Here it is:

Code: Select all

downshit1=/multiline ; /if (!${Defined[oos]}) /declare oos timer outer 0 ; /if (${oos}==0 && ${Me.PctMana} < 10 && ${Cast.Ready}) /casting "Orb of Spirits"|inv ; /if (${oos}==0) /varset oos 240s


Defines a timer variable named "oos" if it hasn't been yet, if it's value is 0, and you're ready to cast, and have less than 10% mana, cast orb of spirits and wait 4 minutes to cast again.
ImageImage

User avatar
Grey
Posts: 1101

Re: Downshit and Holyshit question

Post#17 » Fri Dec 20, 2013 9:41 am

Yeah thats one strange thing about THF that I do not see on other emu servers.
Checking "!${FindItem[item name here].Timer}" works for most servers but not for most of THF's custom items based on feedback I have received.
Also timer returns in ticks or something. Never bothered to figure that part out. Just know in my macros on another server if the value is > 0 it wont try to click the item.
Nice to see others input on everything, always learn something new based on what people post.
Kind of like I never know I could detect if I had a buff on me via "${Me.Buff[${FindItem[item name here].Spell}].ID}" until I saw someone elses code.

User avatar
Rude
Posts: 454

Re: Downshit and Holyshit question

Post#18 » Sat Jan 11, 2014 10:10 pm

I've been migrating certain buffs away from my somewhat inefficient macro towards letting mq2melee handle them, and it does it in a much quicker/efficient manner. However, I've run into an issue. Following the recommendations within this thread, I'm using:

Code: Select all

holyshit0=/if (!${Me.Buff[Immortality].ID} && !${Me.Moving} && !${Me.Invis} && !${Me.Feigning}) /multiline ; /melee holyflag0=0; /timed 200 /melee holyflag0=1; /casting "Ares, Shield of Immortality"


as my shield clicky. However, I also use:

Code: Select all

holyshit1=/if (!${Me.Buff[Death March IV].ID}) /casting "Band of the Gargoyle"|neck


as my death march IV clicky. My problem arises when immortality fires off while death march is in the midst of it's casting routine. The timer will reset on shield clicky without it attempting to cast, since it's busy casting DM4 (a useful, but far less useful than immort buff :P) After which, if I'm not paying close attention to my tank, it essentially sits there for another 20 seconds without DI.

My question is this: is there a more efficient use of a timer in this command, or a way to set priority to one cast over another (say, if flag0 with a higher priority needs to be cast NOW but flag1 is in the middle of casting, /duck and proceed with flag0 then back to flag1?)

peterigz
Posts: 594

Re: Downshit and Holyshit question

Post#19 » Sun Jan 12, 2014 12:51 pm

I would put an extra test in your death march shit so that it only casts if immortality is up, eg:

holyshit1=/if (!${Me.Buff[Death March IV].ID} && ${Me.Buff[Immortality].ID) /casting "Band of the Gargoyle"|neck

That way you can assume that if immortality isn't up it won't try casting the death march until it is.

Noren
Posts: 1053

Re: Downshit and Holyshit question

Post#20 » Sun Jan 12, 2014 4:25 pm

Rude wrote:My problem arises when immortality fires off while death march is in the midst of it's casting routine. The timer will reset on shield clicky without it attempting to cast, since it's busy casting DM4 (a useful, but far less useful than immort buff :P) After which, if I'm not paying close attention to my tank, it essentially sits there for another 20 seconds without DI.


The immediate fix I would do for this one is to add a check to see if you're already casting via !${Me.Casting.ID}. That way the line won't execute if the client returns that you're casting something already and will wait until you're done casting.

To further answer your question about interrupting a low-priority spell it lieu of a higher priority one... I only know how to do it if you use a non-plugin spell casting sub-routine. I use a custom version of Spell_routines that I modified. One example that I implemented was an automatic interrupt of the casting of Call of the Hero if the target is very close by. Sounds like you're looking for something to that effect. What I have the sub do is loop through a couple checks during the casting of every spell. You could do the same if you moved away from the use of MQ2Cast - although maybe someone more knowledeable about the plugin knows of a way.

Return to “Third party software”

Who is online

Users browsing this forum: No registered users and 1 guest

cron