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