Page 1 of 2
Consent Monks and Rogues in Raid.
Posted: Mon May 17, 2004 11:01 pm
by don'tdoit
Ok, this is my first post of a mac, so be gentle but enjoy. If it already exists elsewhere I apologize, but I didn't see it. This macro simply consents all the Monks and Rogues in your current Raid.
Code: Select all
Sub Main
/declare a int local
/varset a 1
:loop
/if (${String[${Raid.Member[${a}].Class}].Equal[Monk]} || ${String[${Raid.Member[${a}].Class}].Equal[Rogue]}) {
/echo Consenting ${Raid.Member[${a}]}
/consent ${Raid.Member[${a}]}
/delay 25
}
/varcalc a ${a}+1
/if (${a}>${Raid.Members}) {
/echo Done Consenting, enjoy your AFK!
/return
}
/goto :loop
/return
Posted: Tue May 18, 2004 7:19 am
by Chill
Not in a raid to test it atm, but made a couple changes:
1) used a for next loop
2) got rid of the String conversion and used ${Raid.Member[a].Class
.Name} which is already a string.
3) added clerics to the classes to consent
4) added .Name to ${Raid.Member[${a}]
.Name} in the consent command.
Should leave us with:
Code: Select all
Sub Main
/declare a int local
/for a 1 to ${Raid.Members}
/if (${Raid.Member[${a}].Class.Name}.Equal[Monk] || ${Raid.Member[${a}].Class.Name}.Equal[Rogue]} || ${Raid.Member[${a}].Class.Name}.Equal[Cleric]) {
/consent ${Raid.Member[${a}].Name}
/echo Consenting ${Raid.Member[${a}].Name}
/delay 2s
}
/next a
/return
Posted: Tue May 18, 2004 11:07 pm
by Onezero
Fixed a few bracket errors in the /if line.
Code: Select all
Sub Main
/declare a int local
/for a 1 to ${Raid.Members}
/if (${Raid.Member[${a}].Class.Name.Equal[Monk]} || ${Raid.Member[${a}].Class.Name.Equal[Rogue]} || ${Raid.Member[${a}].Class.Name.Equal[Cleric]}) {
/consent ${Raid.Member[${a}].Name}
/echo Consenting ${Raid.Member[${a}].Name}
/delay 2s
}
/next a
/return
Posted: Tue May 18, 2004 11:56 pm
by Chill
Thanks, was just lookin to see why that wasnt workin. Added one more antispam change:
Code: Select all
Sub Main
/declare a int local 1
/declare t int local 0
/declare Names string local "Consented: "
/for a 1 to ${Raid.Members}
/if (${Raid.Member[${a}].Class.Name.Equal[Monk]} || ${Raid.Member[${a}].Class.Name.Equal[Rogue]} || ${Raid.Member[${a}].Class.Name.Equal[Cleric]}) {
/consent ${Raid.Member[${a}].Name}
/varset Names ${Names}${Raid.Member[${a}].Name},
/varcalc t ${t}+1
/delay 2s
}
/next a
/varset Names ${Names}(${t} total)
/echo ${Names}
/return
Posted: Thu May 20, 2004 10:28 am
by eluminate
5 line guild rogue hotbutton works too.
Posted: Thu May 20, 2004 6:02 pm
by Pheph
yeah, but with a macro you don't have to adjust it after which roag is online...
Posted: Wed Jun 02, 2004 9:18 am
by sj_digriz
Hi, this is my first post and probably a total newb situation. If it is, just give me the finger and I'll continue to read and see if I can figure out what I'm doing wrong.
When I run this script I get the /if syntax error for each class consent. I was in a raid at the time I tried using it.
Hope this belongs here and not over in help. Anyhow, thanks for the script.
SJ
Code: Select all
Sub Main
/declare a int local 1
/declare t int local 0
/declare Names string local "Consented: "
/for a 1 to ${Raid.Members}
/if (${Raid.Member[${a}].Class.Name.Equal[Monk]} || ${Raid.Member[${a}].Class.Name.Equal[Rogue]} || ${Raid.Member[${a}].Class.Name.Equal[Cleric]}) {
/consent ${Raid.Member[${a}].Name}
/varset Names ${Names}${Raid.Member[${a}].Name},
/varcalc t ${t}+1
/delay 2s
}
/next a
/varset Names ${Names}(${t} total)
/echo ${Names}
/return
Posted: Fri Jun 04, 2004 1:22 am
by Chill
k here we go. died a few times tonight and got it working pretty well:
Code: Select all
|consent.mac
|v1.0 4-Jun-04
Sub Main
/declare a int local 1
/declare r int local 0
/declare m int local 0
/declare c int local 0
/declare rogues string local
/declare monks string local
/declare clerics string local
/varset rogues ""
/varset monks ""
/varset clerics ""
/for a 1 to ${Raid.Members}
/if (${Raid.Member[${a}].Class.Name.Equal[Rogue]}) {
/consent ${Raid.Member[${a}].Name}
/varset rogues ${rogues}${Raid.Member[${a}].Name},
/varcalc r ${r}+1
/delay 2s
} else /if (${Raid.Member[${a}].Class.Name.Equal[Monk]}) {
/consent ${Raid.Member[${a}].Name}
/varset monks ${monks}${Raid.Member[${a}].Name},
/varcalc m ${m}+1
/delay 2s
} else /if (${Raid.Member[${a}].Class.Name.Equal[Cleric]}) {
/consent ${Raid.Member[${a}].Name}
/varset clerics ${clerics}${Raid.Member[${a}].Name},
/varcalc c ${c}+1
/delay 2s
}
/next a
/echo Consented ${r} Rogues: ${rogues}
/echo Consented ${m} Monks: ${monks}
/echo Consented ${c} Clerics: ${clerics}
/return
The 1 long line of names was better than the 15 lines of spam, but still decided I didnt like it, so went with the 1 line per class you see above for the output. Also makes it a little easier to see what to remove or change if you want to tailor it.
Posted: Fri Jun 04, 2004 2:11 pm
by sj_digriz
cool, I'll give it a go tonight. We tend to consent rogues and necros. Necros/monks are pretty much all that have a shot at surviving when we wipe now. So I swapped in necros for clerics.
Thanks again,
SJ
Posted: Sun Jun 06, 2004 8:53 pm
by sj_digriz
$$$$ just wanted to say it worked awesome. Unfortunately that means we were total retards and wiped, but this was a cool util to have.
broke on 16th patch
Posted: Sun Jun 20, 2004 9:11 pm
by sj_digriz
returns 0 consents after the 16th patch and the updated 19th MQ compile.
Posted: Sun Jun 20, 2004 9:40 pm
by ieatacid
The EQRAIDMEMBER struct changed. You can either wait for it to be added to a new zip or you can refer to
here for the updated struct.
Posted: Sun Jun 20, 2004 10:08 pm
by sj_digriz
heh, thanks for the info. This is my favorite macro now. Doing Inktu'ta and Tvexu gets a little hard on the consents. Even with my old hotkeys its a pain in the rear.
Posted: Mon Jun 21, 2004 11:22 am
by raytrace
Yeah, I'm always getting yelled at because I forget to consent on a death. I die so rarely that I just don't think about it.
Now for us that forget, couldn't you do this instead?
*Edit* I made the struct changes that ieatacid linked to earlier in this thread and recompiled MQ2 and this worked out great.
Code: Select all
|consent.mac
|v1.1 21-Jun-04
#event Slain "#*#You have been slain by#*# "
|-------------------------------------------------------------------------------
|Sub: Main
|-------------------------------------------------------------------------------
Sub Main
/echo Consent Macro Started
:Loop
/doevents
/delay 5s
/goto :Loop
/return
|-------------------------------------------------------------------------------
|Sub: Slain 'Your butt just got owned'
|-------------------------------------------------------------------------------
Sub Slain
/declare a int local 1
/declare r int local 0
/declare m int local 0
/declare c int local 0
/declare rogues string local
/declare monks string local
/declare clerics string local
/varset rogues ""
/varset monks ""
/varset clerics ""
/echo Consenting...
/for a 1 to ${Raid.Members}
/if (${Raid.Member[${a}].Class.Name.Equal[Rogue]}) {
/consent ${Raid.Member[${a}].Name}
/varset rogues ${rogues}${Raid.Member[${a}].Name},
/varcalc r ${r}+1
/delay 2s
} else /if (${Raid.Member[${a}].Class.Name.Equal[Monk]}) {
/consent ${Raid.Member[${a}].Name}
/varset monks ${monks}${Raid.Member[${a}].Name},
/varcalc m ${m}+1
/delay 2s
} else /if (${Raid.Member[${a}].Class.Name.Equal[Cleric]}) {
/consent ${Raid.Member[${a}].Name}
/varset clerics ${clerics}${Raid.Member[${a}].Name},
/varcalc c ${c}+1
/delay 2s
}
/next a
/echo Consented ${r} Rogues: ${rogues}
/echo Consented ${m} Monks: ${monks}
/echo Consented ${c} Clerics: ${clerics}
/return
Posted: Tue Jun 22, 2004 2:21 am
by dok
should work, except you're going to need a "/doevents" loop in there to check if you die.
Code: Select all
Sub Main
/echo Consent Macro Started
:Loop
/doevents
/delay 5s
/goto :Loop
/return