Need help on this guys Shaman bot

Help section from before the user variable changes that broke all macros

Moderator: MacroQuest Developers

Waxxedazz
a lesser mummy
a lesser mummy
Posts: 47
Joined: Sat May 31, 2003 7:09 pm

Need help on this guys Shaman bot

Post by Waxxedazz » Sat Jul 05, 2003 7:48 pm

I know VERY little about this stuff but im learning... if someone could tell me whats wrong and why Id be very happy. All i get is "The current macro has ended". /shrug

Code: Select all

|shaman.mac 
|Generic bot for shaman. 
|Make sure you edit this macro where I have marked. 
|/tell botname cmds 
|This command will send the master a list of commands. 
|Version 2.06 
|Grimjack 

#turbo 75 
#Event Enraged "has become ENRAGED" 
#Event Offrage "is no longer enraged" 
#event Collapse "Your gate is too unstable, and collapses." 
#event FollowOff "You are no longer auto-following" 
#event RootOff "Your Immobilize spell has worn off." 
#event NoLOS "You cannot see your target." 
#Event CastStart "You begin casting" 
#Event CastFizzle "Your spell fizzles!" 
#Event CastInterrupt "Your spell is interrupted." 
#Event CastNoMana "Insufficient Mana to cast this spell" 
#Event CastTooFar "Your target is out of range, get closer!" 
#Event Recovered "You haven't recovered yet..." 
#Event CastResist "Your target resisted " 
#Event Distracted "You are too distracted to cast a spell now!" 
#Event NoTarget "You must first select a target for this spell!" 
#Event Sitting "You must be standing to cast a spell." 
#Event NoMem "You do not seem to have that spell memorized." 
#Event Stunned "You can't cast spells while stunned!" 
#define MasterName v50 
#define CmdArrayNum v51 
#define CmdArraySize v52 
#define GroupMember v53 
#define GroupMax v54 
#define ChatInput1 v55 
#define ChatInput2 v56 
#define ChatInput3 v57 
#define SitAfterCast v58 
#define MyXLoc v59 
#define MyYLoc v60 
#define IsHealer v61 
#define countdown v62 
#define CmdList v70 
#define RangeMin v71 
#define RangeMax v72 
#define FastRange v73 
#define Combatstatus v70 
#define Fail v94 
#define DoAgain v95 
#define StartCast v96 
#define SpellSlot v97 
#define SpellName v98 
#define CastTime v99 
#define CTimer t39 
#chat tell 

Sub Main 
   /if n $strlen("$p0")<=0 { 
     /echo Usage: /macro shaman <Master Name> 
     /endmacro 
   } 
   /varset MasterName $p0 
   /varset IsHealer 0 
   /varset RangeMin 10 
   /varset RangeMax 12 
   /varset FastRange 15 
   /varset Combatstatus 0 
   /varset a(1,0) afk 
   /varset a(1,1) accept 
   /varset a(1,2) reject 
   /varset a(1,3) invite 
   /varset a(1,4) mana 
   /varset a(1,5) follow 
   /varset a(1,6) stop 
   /varset a(1,7) evac 
   /varset a(1,8) moveto 
   /varset a(1,9) sit 
   /varset a(1,10) stand 
   /varset a(1,11) sn 
   /varset a(1,12) camp 
   /varset a(1,13) duck 
   /varset a(1,14) run 
   /varset a(1,15) say 
   /varset a(1,16) tell 
   /varset a(1,17) group 
   /varset a(1,18) cmds 
   /varset a(1,19) autoheal 
   /varset a(1,20) target 
   /varset a(1,21) notarget 
   /varset a(1,22) assist 
   /varset a(1,23) saytarget 
   /varset a(1,24) attack 
   /varset a(1,25) noattack 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /varset a(1,26) focus 
   /varset a(1,27) heal 
   /varset a(1,28) ch 
   /varset a(1,29) slow 
   /varset a(1,30) malo 
   /varset a(1,31) avatar 
   /varset a(1,32) regen 
   /varset a(1,33) root 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /call CountArraySize 1 
   /varset CmdArraySize $int($return) 
   /varset CmdList "$a(1,0), $a(1,1), $a(1,2), $a(1,3), $a(1,4), $a(1,5) $a(1,6), $a(1,7), $a(1,

8), $a(1,9), $a(1,10), $a(1,11), $a(1,12), $a(1,13), $a(1,14), $a(1,15), $a(1,16), $a(1,17), $a(

1,18), $a(1,19), $a(1,20) $a(1,21), $a(1,22), $a(1,23), $a(1,24), $a(1,25), $a(1,26), $a(1,27), 

$a(1,28), $a(1,29), $a(1,30), $a(1,31), $a(1,32), $a(1,33), "$a(1,34), $a(1,35), $a(1,36), $a(1,

37), $a(1,38), $a(1,39), $a(1,40)" 
   /varset CmdArrayNum 0 
   :MainLoop 
   /call CheckGrpHealth 
   /call Combatcheck 
   /if $Combatstatus=="1" /call RangeSub 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /doevents 
   /varset CmdArrayNum 0 
   /goto :MainLoop 
/return 

sub CountArraySize 
   /varset l0 0 
   :CountArrayLoop 
    /if n $strlen("$a($p0,$l0)")<=0 { 
       /goto :CountArrayEnd 
   } 
   /varadd l0 1 
   /goto :CountArrayLoop 
   :CountArrayEnd 
/return $l0 

Sub CheckGrpHealth 
   /varset GroupMember 0 
   /varcalc GroupMax $group(count)-1 
   /if n "$IsHealer"==0 /return 
   :GroupLoop 
   /doevents 
   /if n $spawn($group($GroupMember),hp,pct)<41 { 
      /if n $spawn($group($GroupMember),hp,pct)>=1 { 
         /if "$spawn($group($GroupMember),class)"=="Warrior" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Paladin" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Shadow Knight" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Monk" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Ranger" /call Tankheal 
        
      } 
   } 
   /if n $spawn($group($GroupMember),hp,pct)>=1 { 
      /if n $spawn($group($GroupMember),hp,pct)<41 { 
         /call CasterHeal 
      } 
   } 
   /if n $GroupMember>=$GroupMax /return 
   /varadd GroupMember 1 
   /doevents 
   /goto :GroupLoop 
/return 

Sub Combatcheck 
   /if $EnrageVar=="1" { 
      /if $target()=="TRUE" { 
         /return 
      } else { 
         /varset EnrageVar 0 
         /varset Combatstatus 0 
      } 
   } 
   /if $target()=="FALSE" { 
      /varset Combatstatus 0 
      /if $combat=="TRUE" { 
         /attack off 
      } 
      /return 
   } 
   /if $target()=="TRUE" { 
      /if $combat=="TRUE" { 
         /varset Combatstatus 1 
         /return 
      } 
   } 
/varset Combatstatus 0 
/return 



Sub Rangesub 
   /face fast nopredict 
   /if n $target(distance)>=$FastRange /call Fastmove 
   /if n $target(distance)>$RangeMax { 
      /press up 
   } 
   /if n $target(distance)<$RangeMin { 
      /press down 
   } 
/return 

Sub Fastmove 
   :fastmoveloop 
   /doevents 
   /if $target()=="FALSE" { 
      /varset Combatstatus 0 
      /sendkey up up 
      /if $combat=="TRUE" { 
         /attack off 
         /return 
      } 
   } 
   /face fast nopredict 
   /if n $target(distance)>$FastRange { 
      /sendkey down up 
   } 
   /if n $target(distance)<=$FastRange { 
         /if $Combatstatus=="1" { 
            /if $EnrageVar=="0" { 
            } 
         } 
      /sendkey up up 
      /return 
   } 
   /goto :fastmoveloop 
/return 

Sub Event_Chat 
   /varset CmdArrayNum 0 
   /if "$MasterName"=="$p1" { 
      :ArrayTime 
      /if "$arg(1,"$p2")"=="$a(1,$CmdArrayNum)" { 
         /call Do-$a(1,$CmdArrayNum) $p2 
         /return 
      } 
      /varadd CmdArrayNum 1 
      /if n $CmdArrayNum>=$CmdArraySize /return 
      /goto :ArrayTime 
   } else { 
       /tell $MasterName $p1 told me: $p2 
   } 
/return 

Sub Do-target 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName my target is %t 
/return 

Sub Do-saytarget 
   /tell $MasterName my target is %t 
/return 

Sub Do-assist 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 5 
   } else /if n $strlen("$p2")<=0 { 
      /assist "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /assist "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /assist "$p1 $p2 $p3" 
   } else /assist "$p1 $p2 $p3 $p4" 
   /tell $MasterName my target is %t 
/return 

Sub Do-attack 
   /sit off 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName Attacking %t 
   /attack on 
/return 

Sub Do-noattack 
   /attack off 
/return 

Sub Do-sit 
   /sit off 
   /sit 
/return 

Sub Do-stand 
   /sit off 
/return 

Sub Do-notarget 
   /press esc 
   /press esc 
   /press esc 
/return 

Sub Do-sn 
   /assist $MasterName 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /tell "$MasterName" Casting $p1 on %T 
      /call SpellSub $p1 
   } else /if n $strlen("$p3")<=0 { 
      /tell "$MasterName" Casting $p1 $p2 on %T 
      /call SpellSub $p1 $p2 
   } else /if n $strlen("$p4)<=0 { 
      /tell "$MasterName" Casting $p1 $p2 $p3 on %T 
      /call SpellSub $p1 $p2 $p3 
   } else { 
      /tell "$MasterName" Casting $p1 $p2 $p3 $p4 on %T 
      /call SpellSub $p1 $p2 $p3 $p4 
   /stand 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-afk 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /afk 
   } else /if n $strlen("$p2")<=0 { 
      /afk $p1 
   } else /if n $strlen("$p3")<=0 { 
      /afk $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /afk $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /afk $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
   /afk 
/return 

Sub Do-say 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /say $p1 
   } else /if n $strlen("$p3")<=0 { 
      /say $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /say $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /say $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else /if n $strlen("$p10")<=0 { 
   } else { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 

Sub Do-group 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /g $p1 
   } else /if n $strlen("$p3")<=0 { 
      /g $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /g $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /g $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else /if n $strlen("$p10")<=0 { 
   } else { 
      /g "$p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 

Sub Do-tell 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /return 
   } else /if n $strlen("$p3")<=0 { 
      /tell $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /t $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /t $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 


Sub Do-accept 
   /press esc 
   /press esc 
   /invite 
/return 

Sub Do-reject 
   /press esc 
   /press esc 
   /disband 
/return 

Sub Do-invite 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName Inviting %t 
   /invite 
/return 

Sub Do-mana 
   /dismount 
   /press F1 
   /tell $MasterName $char(mana,pct)m 
   /press esc 
/return 

Sub Do-follow 
   /target $MasterName 
   /face 
   /follow 
   /tell $MasterName Autofollow on %t. 
/return 

Sub Do-stop 
   /tell $MasterName Stoping. 
   /sendkey up up 
   /varset Fail 1 
   /press d 
   /press d 
   /press esc 
   /press esc 
   /press esc 
   /press right 
/return 

Sub Do-evac 
   /tell $MasterName Moving to you and casting Evac! 
   /call Do-moveto evac $MasterName 
   /delay 2s 
   /call SpellSub "Evacuate" 
/return 

Sub Do-sit 
   /stand 
   /sit on 
/return 

Sub Do-stand 
   /stand 
/return 

Sub Do-camp 
   /tell $MasterName Camping out. 
   /stand 
   /sit 
   /camp 
/return  

Sub Do-duck 
   /press d 
   /varset Fail 1 
   /varset CTimer 0 
   /press d 
/return  

Sub Do-autoheal 
   /if n $strlen("$p1")<=0 { 
      /tell $MasterName Autoheal=$IsHealer 
      /return 
   } 
   /if $p1=="off" /varset IsHealer 0 
   /if $p1=="on" /varset IsHealer 1 
   /tell $MasterName Autoheal=$IsHealer 
/return 

Sub Do-cmds 
   /tell "$MasterName" Commands: "$CmdList" 
/return  

Sub Do-moveto 
   /sit off 
   /varset countdown 0 
   /varset MyXLoc $char(x) 
   /varset MyYLoc $char(y) 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /if $p1=="me" /target $MasterName 
   /tell $MasterName Moving to %t. 
   :gotopointloop 
   /doevents 
   /if $target()==FALSE { 
      /sendkey up up 
      /return 
   } 
   /face fast nopredict 
   /if n $target(distance)>15 /sendkey down up 
   /if n $target(distance)<=15 { 
      /sendkey up up 
      /return 
   } 
   /face fast nopredict 
   /if n $countdown>=3 { 
      /call Detectobst 
      /varset countdown 0 
   } 
   /varadd countdown 1 
   /doevents 
   /goto :gotopointloop 
   } 
   /sendkey up up 
   /face 
/return 

Sub Detectobst 
   /if n $MyXLoc==$char(x) /if $MyYLoc==$char(y) /call Hitobst 5 
   /varset MyXLoc $char(x) 
   /varset MyYLoc $char(y) 
/return 


sub Hitobst 
   /sendkey up up 
   /sendkey down down 
   /if n $rand(99)>50 { 
      /delay 2s 
      /sendkey up down 
      /sendkey down Right 
      /delay $p0 
      /sendkey up Right 
      /sendkey down up 
      /delay 2s 
      /sendkey up up 
   } else { 
      /delay 2s 
      /sendkey up down 
      /sendkey down left 
      /delay $p0 
      /sendkey up left 
      /sendkey down up 
      /delay 2s 
      /sendkey up up        
   } 
   /sendkey up down 
   /sendkey up Right 
   /sendkey up Left 
   /sendkey down up 
/return 

Sub SpellSub 
   /sendkey up up 
   /if n Combatstatus==1 /delay 3s 
   /varset Fail 0 
   /varset SpellName "$p0" 
   /varset SpellSlot "$char(gem,"$SpellName")" 
   /varset CastTime "$spell("$SpellName",casttime)" 
   :BeginCast 
   /varset DoAgain 0 
   /varset StartCast 0 
   /call WaitForStart 
   :TimerLoop 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
   /if n $Fail==1 /return 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
   /if n $Fail==1 /return 
   /if n $CTimer>0 /goto :TimerLoop 
   /delay 2 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
/return 


Sub WaitForStart 
   /cast $SpellSlot 
   :StartLoop 
   /doevents 
   /if n $Fail==1 /return 
   /if n $DoAgain==1 /return 
   /if n $StartCast==0 { 
      /goto :StartLoop 
   } 
   /varset CTimer "$CastTime"s 
/return 

Sub Event_Enraged 
   /if $target()=="TRUE" { 
      /if n $Combatstatus==1 { 
         /varset EnrageVar 1 
         /attack off 
      } 
      /varset EnrageVar 1 
   } 
/return 

Sub Event_Offrage 
   /if $target()=="TRUE" { 
      /if n $Combatstatus==1 { 
         /varset EnrageVar 0 
         /attack 
      
      } 
      /varset EnrageVar 0 
   } 
/return 

Sub Event_CastStart 
   /varset StartCast 1 
/return 

Sub Event_CastFizzle 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_CastInterrupt 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_FollowOff 
   /press esc 
   /press esc 
   /delay 5 
   /tell $MasterName Auto Follow Off. 
/return 

Sub Event_Sitting 
   /stand 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_CastTooFar 
   /varset Fail 1 
   /tell $MasterName Too far away. 
   /varset CTimer 0 
/return 

Sub Event_Distracted 
   /tell $MasterName I can't cast. I'm too distracted. 
   /varset Fail 1 
   /varset CTimer 0 
/return 

Sub Event_NoTarget 
   /varset Fail 1 
   /tell $MasterName I have no target to cast on. 
   /varset CTimer 0 
/return 

Sub Event_NoMem 
   /tell $MasterName That spell is not memed. 
   /varset Fail 1 
   /varset CTimer 0 
/return 

Sub Event_RootOff 
   /tell $MasterName Root has worn off. 
/return 

Sub Event_CastNoMana 
   /tell $MasterName OOM. Medding 16 seconds and trying again. 
   /sit off 
   /sit on 
   /delay 16s 
   /sit off 
   /varset DoAgain 1 
/return 

Sub Event_Stunned 
   /tell $MasterName Stunned waiting 3 seconds to try again. 
   /delay 3s 
   /varset DoAgain 1 
/return 

Sub Event_Recovered 
   /delay 2s 
   /varset DoAgain 1 
/return 

Sub Event_CastResist 
   /tell $MasterName Resisted. Trying again. 
   /varset DoAgain 1 
/return 

Sub Event_Collapse 
   /varset DoAgain 1 
/return 

Sub Event_NoLOS 
   /tell $MasterName I can't see my target. 
   /varset Fail 1 
   /varset CTimer 0 
/return 


Sub Tankheal 
         /if n $group($GroupMember)==$char(id) /press F1 
         /if n $group($GroupMember)!=$char(id) /target id $group($GroupMember) 
         /stand 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
||| Edit Edit heal message 
||| Edit Spell to auto cast on Melee 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /g COMPLETE HEAL on %T in 10seconds 
         /call SpellSub "kragg's mending" 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /if "$SitAfterCast"=="1" /sit on 
         /press esc 
/return 

Sub Casterheal 
         /if n $group($GroupMember)==$char(id) /press F1 
         /if n $group($GroupMember)!=$char(id) /target id $group($GroupMember) 
         /stand 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
||| Edit Edit heal message 
||| Edit Spell to auto cast on Non Melee 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /g Healing %T 
         /call SpellSub "torpor" 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /if "$SitAfterCast"=="1" /sit on 
         /press esc 
/return 


|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 


Sub Do-focus 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting focus on %T 
   /call SpellSub "focus of soul" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-heal 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting quick heal on %T 
   /call SpellSub "tnarg's mending" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-ch 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting Shaman c-heal on %T. 10 Seconds. 
   /call SpellSub "kragg's mending" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-slow 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting slow on %T 
   /call SpellSub "turgur's insects" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-malo 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting malo on %T 
   /call SpellSub "malo" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-swift like the wind 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting haste on %T 
   /call SpellSub "swift like the wind" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-regen 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting regen on %T 
   /call SpellSub "replenishment" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-root 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting root on %T 
   /call SpellSub "greater immobilize" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

macrotoon
a ghoul
a ghoul
Posts: 106
Joined: Wed Sep 18, 2002 4:38 pm

Post by macrotoon » Sun Jul 06, 2003 2:23 am

Code: Select all

Sub Main 
   /if n $strlen("$p0")<=0 { 
     /echo Usage: /macro shaman <Master Name> 
     /endmacro 
   } 
From what i see this will end the macro unless you use
/macro shaman jediknight

Jediknight being the master controller who will give commands to this bot to work with, and the bot will give tells to the master of status and such.

I havnt looked past this yet. Im looking ofr a shammy bot too. so i might use this one if i can figure out the commands.

User avatar
grimjack
Macro Author
Macro Author
Posts: 525
Joined: Thu Nov 07, 2002 6:51 am
Contact:

Must supply a name of the master.

Post by grimjack » Sun Jul 06, 2003 3:18 am

The person above already stated this but you must supply a name to the bot of who can command it. It should echo the useage line if you don't unless you have some filtering on that I don't. As to the commands it can take, you can find them here.

Code: Select all

   /varset a(1,0) afk
   /varset a(1,1) accept
   /varset a(1,2) reject
   /varset a(1,3) invite
   /varset a(1,4) mana
   /varset a(1,5) follow
   /varset a(1,6) stop
   /varset a(1,7) evac
   /varset a(1,8) moveto
   /varset a(1,9) sit
   /varset a(1,10) stand
   /varset a(1,11) sn
   /varset a(1,12) camp
   /varset a(1,13) duck
   /varset a(1,14) run
   /varset a(1,15) say
   /varset a(1,16) tell
   /varset a(1,17) group
   /varset a(1,18) cmds
   /varset a(1,19) autoheal
   /varset a(1,20) target
   /varset a(1,21) notarget
   /varset a(1,22) assist
   /varset a(1,23) saytarget
   /varset a(1,24) attack
   /varset a(1,25) noattack
|||||||||||||||||||||||Personal Commands|||||||||||||||||||||||||||||||||
   /varset a(1,26) focus
   /varset a(1,27) heal
   /varset a(1,28) ch
   /varset a(1,29) slow
   /varset a(1,30) malo
   /varset a(1,31) avatar
   /varset a(1,32) regen
   /varset a(1,33) root 
The bot will send a tell to the master with this list if you /tell botname cmds.

Thanks
GrimJack
When they come to me, they're in trouble, or they want some. I bust people out of prison, hunt down vampires, fight alien gods -- All the fun jobs people are too squeamish or too polite to do themselves.

Call me a mercenary. Call me an assassin. Call me a villain. I am all that and more.

My name's John Gaunt, but out on the streets of Cynosure, I am called...
GrimJack

Waxxedazz
a lesser mummy
a lesser mummy
Posts: 47
Joined: Sat May 31, 2003 7:09 pm

new problem

Post by Waxxedazz » Sun Jul 06, 2003 3:42 am

most of the spells work all the commands work, like follow, sit, etc... regen/stamina/agility/swift like the wind dont work. I know I need to put the name in but im not gunna for safety sake lol.

Code: Select all

|shaman.mac 
|Generic bot for shaman. 
|Make sure you edit this macro where I have marked. 
|/tell botname cmds 
|This command will send the master a list of commands. 
|Version 2.06 
|Grimjack 

#turbo 75 
#Event Enraged "has become ENRAGED" 
#Event Offrage "is no longer enraged" 
#event Collapse "Your gate is too unstable, and collapses." 
#event FollowOff "You are no longer auto-following" 
#event RootOff "Your Immobilize spell has worn off." 
#event NoLOS "You cannot see your target." 
#Event CastStart "You begin casting" 
#Event CastFizzle "Your spell fizzles!" 
#Event CastInterrupt "Your spell is interrupted." 
#Event CastNoMana "Insufficient Mana to cast this spell" 
#Event CastTooFar "Your target is out of range, get closer!" 
#Event Recovered "You haven't recovered yet..." 
#Event CastResist "Your target resisted " 
#Event Distracted "You are too distracted to cast a spell now!" 
#Event NoTarget "You must first select a target for this spell!" 
#Event Sitting "You must be standing to cast a spell." 
#Event NoMem "You do not seem to have that spell memorized." 
#Event Stunned "You can't cast spells while stunned!" 
#define MasterName v50 
#define CmdArrayNum v51 
#define CmdArraySize v52 
#define GroupMember v53 
#define GroupMax v54 
#define ChatInput1 v55 
#define ChatInput2 v56 
#define ChatInput3 v57 
#define SitAfterCast v58 
#define MyXLoc v59 
#define MyYLoc v60 
#define IsHealer v61 
#define countdown v62 
#define CmdList v70 
#define RangeMin v71 
#define RangeMax v72 
#define FastRange v73 
#define Combatstatus v70 
#define Fail v94 
#define DoAgain v95 
#define StartCast v96 
#define SpellSlot v97 
#define SpellName v98 
#define CastTime v99 
#define CTimer t39 
#chat tell 

Sub Main 
   /if n $strlen("$p0")<=0 { 
     /echo Usage: /macro shaman <Master Name> 
     /endmacro 
   } 
   /varset MasterName $p0 
   /varset IsHealer 0 
   /varset RangeMin 10 
   /varset RangeMax 12 
   /varset FastRange 15 
   /varset Combatstatus 0 
   /varset a(1,0) afk 
   /varset a(1,1) accept 
   /varset a(1,2) reject 
   /varset a(1,3) invite 
   /varset a(1,4) mana 
   /varset a(1,5) follow 
   /varset a(1,6) stop 
   /varset a(1,7) evac 
   /varset a(1,8) moveto 
   /varset a(1,9) sit 
   /varset a(1,10) stand 
   /varset a(1,11) sn 
   /varset a(1,12) camp 
   /varset a(1,13) duck 
   /varset a(1,14) run 
   /varset a(1,15) say 
   /varset a(1,16) tell 
   /varset a(1,17) group 
   /varset a(1,18) cmds 
   /varset a(1,19) autoheal 
   /varset a(1,20) target 
   /varset a(1,21) notarget 
   /varset a(1,22) assist 
   /varset a(1,23) saytarget 
   /varset a(1,24) attack 
   /varset a(1,25) noattack 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /varset a(1,26) focus 
   /varset a(1,27) heal 
   /varset a(1,28) ch 
   /varset a(1,29) slow 
   /varset a(1,30) malo 
   /varset a(1,31) avatar 
   /varset a(1,32) regen 
   /varset a(1,33) root 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /call CountArraySize 1 
   /varset CmdArraySize $int($return) 
   /varset CmdList "$a(1,0), $a(1,1), $a(1,2), $a(1,3), $a(1,4), $a(1,5) $a(1,6), $a(1,7), $a(1,

8), $a(1,9), $a(1,10), $a(1,11), $a(1,12), $a(1,13), $a(1,14), $a(1,15), $a(1,16), $a(1,17), $a(

1,18), $a(1,19), $a(1,20) $a(1,21), $a(1,22), $a(1,23), $a(1,24), $a(1,25), $a(1,26), $a(1,27), 

$a(1,28), $a(1,29), $a(1,30), $a(1,31), $a(1,32), $a(1,33), "$a(1,34), $a(1,35), $a(1,36), $a(1,

37), $a(1,38), $a(1,39), $a(1,40)" 
   /varset CmdArrayNum 0 
   :MainLoop 
   /call CheckGrpHealth 
   /call Combatcheck 
   /if $Combatstatus=="1" /call RangeSub 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /doevents 
   /varset CmdArrayNum 0 
   /goto :MainLoop 
/return 

sub CountArraySize 
   /varset l0 0 
   :CountArrayLoop 
    /if n $strlen("$a($p0,$l0)")<=0 { 
       /goto :CountArrayEnd 
   } 
   /varadd l0 1 
   /goto :CountArrayLoop 
   :CountArrayEnd 
/return $l0 

Sub CheckGrpHealth 
   /varset GroupMember 0 
   /varcalc GroupMax $group(count)-1 
   /if n "$IsHealer"==0 /return 
   :GroupLoop 
   /doevents 
   /if n $spawn($group($GroupMember),hp,pct)<41 { 
      /if n $spawn($group($GroupMember),hp,pct)>=1 { 
         /if "$spawn($group($GroupMember),class)"=="Warrior" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Paladin" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Shadow Knight" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Monk" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Ranger" /call Tankheal 
        
      } 
   } 
   /if n $spawn($group($GroupMember),hp,pct)>=1 { 
      /if n $spawn($group($GroupMember),hp,pct)<41 { 
         /call CasterHeal 
      } 
   } 
   /if n $GroupMember>=$GroupMax /return 
   /varadd GroupMember 1 
   /doevents 
   /goto :GroupLoop 
/return 

Sub Combatcheck 
   /if $EnrageVar=="1" { 
      /if $target()=="TRUE" { 
         /return 
      } else { 
         /varset EnrageVar 0 
         /varset Combatstatus 0 
      } 
   } 
   /if $target()=="FALSE" { 
      /varset Combatstatus 0 
      /if $combat=="TRUE" { 
         /attack off 
      } 
      /return 
   } 
   /if $target()=="TRUE" { 
      /if $combat=="TRUE" { 
         /varset Combatstatus 1 
         /return 
      } 
   } 
/varset Combatstatus 0 
/return 



Sub Rangesub 
   /face fast nopredict 
   /if n $target(distance)>=$FastRange /call Fastmove 
   /if n $target(distance)>$RangeMax { 
      /press up 
   } 
   /if n $target(distance)<$RangeMin { 
      /press down 
   } 
/return 

Sub Fastmove 
   :fastmoveloop 
   /doevents 
   /if $target()=="FALSE" { 
      /varset Combatstatus 0 
      /sendkey up up 
      /if $combat=="TRUE" { 
         /attack off 
         /return 
      } 
   } 
   /face fast nopredict 
   /if n $target(distance)>$FastRange { 
      /sendkey down up 
   } 
   /if n $target(distance)<=$FastRange { 
         /if $Combatstatus=="1" { 
            /if $EnrageVar=="0" { 
            } 
         } 
      /sendkey up up 
      /return 
   } 
   /goto :fastmoveloop 
/return 

Sub Event_Chat 
   /varset CmdArrayNum 0 
   /if "$MasterName"=="$p1" { 
      :ArrayTime 
      /if "$arg(1,"$p2")"=="$a(1,$CmdArrayNum)" { 
         /call Do-$a(1,$CmdArrayNum) $p2 
         /return 
      } 
      /varadd CmdArrayNum 1 
      /if n $CmdArrayNum>=$CmdArraySize /return 
      /goto :ArrayTime 
   } else { 
       /tell $MasterName $p1 told me: $p2 
   } 
/return 

Sub Do-target 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName my target is %t 
/return 

Sub Do-saytarget 
   /tell $MasterName my target is %t 
/return 

Sub Do-assist 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 5 
   } else /if n $strlen("$p2")<=0 { 
      /assist "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /assist "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /assist "$p1 $p2 $p3" 
   } else /assist "$p1 $p2 $p3 $p4" 
   /tell $MasterName my target is %t 
/return 

Sub Do-attack 
   /sit off 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName Attacking %t 
   /attack on 
/return 

Sub Do-noattack 
   /attack off 
/return 

Sub Do-sit 
   /sit off 
   /sit 
/return 

Sub Do-stand 
   /sit off 
/return 

Sub Do-notarget 
   /press esc 
   /press esc 
   /press esc 
/return 

Sub Do-sn 
   /assist $MasterName 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /tell "$MasterName" Casting $p1 on %T 
      /call SpellSub $p1 
   } else /if n $strlen("$p3")<=0 { 
      /tell "$MasterName" Casting $p1 $p2 on %T 
      /call SpellSub $p1 $p2 
   } else /if n $strlen("$p4)<=0 { 
      /tell "$MasterName" Casting $p1 $p2 $p3 on %T 
      /call SpellSub $p1 $p2 $p3 
   } else { 
      /tell "$MasterName" Casting $p1 $p2 $p3 $p4 on %T 
      /call SpellSub $p1 $p2 $p3 $p4 
   /stand 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-afk 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /afk 
   } else /if n $strlen("$p2")<=0 { 
      /afk $p1 
   } else /if n $strlen("$p3")<=0 { 
      /afk $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /afk $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /afk $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
   /afk 
/return 

Sub Do-say 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /say $p1 
   } else /if n $strlen("$p3")<=0 { 
      /say $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /say $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /say $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else /if n $strlen("$p10")<=0 { 
   } else { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 

Sub Do-group 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /g $p1 
   } else /if n $strlen("$p3")<=0 { 
      /g $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /g $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /g $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else /if n $strlen("$p10")<=0 { 
   } else { 
      /g "$p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 

Sub Do-tell 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /return 
   } else /if n $strlen("$p3")<=0 { 
      /tell $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /t $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /t $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 


Sub Do-accept 
   /press esc 
   /press esc 
   /invite 
/return 

Sub Do-reject 
   /press esc 
   /press esc 
   /disband 
/return 

Sub Do-invite 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName Inviting %t 
   /invite 
/return 

Sub Do-mana 
   /dismount 
   /press F1 
   /tell $MasterName $char(mana,pct)m 
   /press esc 
/return 

Sub Do-follow 
   /target $MasterName 
   /face 
   /follow 
   /tell $MasterName Autofollow on %t. 
/return 

Sub Do-stop 
   /tell $MasterName Stoping. 
   /sendkey up up 
   /varset Fail 1 
   /press d 
   /press d 
   /press esc 
   /press esc 
   /press esc 
   /press right 
/return 

Sub Do-evac 
   /tell $MasterName Moving to you and casting Evac! 
   /call Do-moveto evac $MasterName 
   /delay 2s 
   /call SpellSub "Evacuate" 
/return 

Sub Do-sit 
   /stand 
   /sit on 
/return 

Sub Do-stand 
   /stand 
/return 

Sub Do-camp 
   /tell $MasterName Camping out. 
   /stand 
   /sit 
   /camp 
/return  

Sub Do-duck 
   /press d 
   /varset Fail 1 
   /varset CTimer 0 
   /press d 
/return  

Sub Do-autoheal 
   /if n $strlen("$p1")<=0 { 
      /tell $MasterName Autoheal=$IsHealer 
      /return 
   } 
   /if $p1=="off" /varset IsHealer 0 
   /if $p1=="on" /varset IsHealer 1 
   /tell $MasterName Autoheal=$IsHealer 
/return 

Sub Do-cmds 
   /tell "$MasterName" Commands: "$CmdList" 
/return  

Sub Do-moveto 
   /sit off 
   /varset countdown 0 
   /varset MyXLoc $char(x) 
   /varset MyYLoc $char(y) 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /if $p1=="me" /target $MasterName 
   /tell $MasterName Moving to %t. 
   :gotopointloop 
   /doevents 
   /if $target()==FALSE { 
      /sendkey up up 
      /return 
   } 
   /face fast nopredict 
   /if n $target(distance)>15 /sendkey down up 
   /if n $target(distance)<=15 { 
      /sendkey up up 
      /return 
   } 
   /face fast nopredict 
   /if n $countdown>=3 { 
      /call Detectobst 
      /varset countdown 0 
   } 
   /varadd countdown 1 
   /doevents 
   /goto :gotopointloop 
   } 
   /sendkey up up 
   /face 
/return 

Sub Detectobst 
   /if n $MyXLoc==$char(x) /if $MyYLoc==$char(y) /call Hitobst 5 
   /varset MyXLoc $char(x) 
   /varset MyYLoc $char(y) 
/return 


sub Hitobst 
   /sendkey up up 
   /sendkey down down 
   /if n $rand(99)>50 { 
      /delay 2s 
      /sendkey up down 
      /sendkey down Right 
      /delay $p0 
      /sendkey up Right 
      /sendkey down up 
      /delay 2s 
      /sendkey up up 
   } else { 
      /delay 2s 
      /sendkey up down 
      /sendkey down left 
      /delay $p0 
      /sendkey up left 
      /sendkey down up 
      /delay 2s 
      /sendkey up up        
   } 
   /sendkey up down 
   /sendkey up Right 
   /sendkey up Left 
   /sendkey down up 
/return 

Sub SpellSub 
   /sendkey up up 
   /if n Combatstatus==1 /delay 3s 
   /varset Fail 0 
   /varset SpellName "$p0" 
   /varset SpellSlot "$char(gem,"$SpellName")" 
   /varset CastTime "$spell("$SpellName",casttime)" 
   :BeginCast 
   /varset DoAgain 0 
   /varset StartCast 0 
   /call WaitForStart 
   :TimerLoop 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
   /if n $Fail==1 /return 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
   /if n $Fail==1 /return 
   /if n $CTimer>0 /goto :TimerLoop 
   /delay 2 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
/return 


Sub WaitForStart 
   /cast $SpellSlot 
   :StartLoop 
   /doevents 
   /if n $Fail==1 /return 
   /if n $DoAgain==1 /return 
   /if n $StartCast==0 { 
      /goto :StartLoop 
   } 
   /varset CTimer "$CastTime"s 
/return 

Sub Event_Enraged 
   /if $target()=="TRUE" { 
      /if n $Combatstatus==1 { 
         /varset EnrageVar 1 
         /attack off 
      } 
      /varset EnrageVar 1 
   } 
/return 

Sub Event_Offrage 
   /if $target()=="TRUE" { 
      /if n $Combatstatus==1 { 
         /varset EnrageVar 0 
         /attack 
      
      } 
      /varset EnrageVar 0 
   } 
/return 

Sub Event_CastStart 
   /varset StartCast 1 
/return 

Sub Event_CastFizzle 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_CastInterrupt 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_FollowOff 
   /press esc 
   /press esc 
   /delay 5 
   /tell $MasterName Auto Follow Off. 
/return 

Sub Event_Sitting 
   /stand 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_CastTooFar 
   /varset Fail 1 
   /tell $MasterName Too far away. 
   /varset CTimer 0 
/return 

Sub Event_Distracted 
   /tell $MasterName I can't cast. I'm too distracted. 
   /varset Fail 1 
   /varset CTimer 0 
/return 

Sub Event_NoTarget 
   /varset Fail 1 
   /tell $MasterName I have no target to cast on. 
   /varset CTimer 0 
/return 

Sub Event_NoMem 
   /tell $MasterName That spell is not memed. 
   /varset Fail 1 
   /varset CTimer 0 
/return 

Sub Event_RootOff 
   /tell $MasterName Root has worn off. 
/return 

Sub Event_CastNoMana 
   /tell $MasterName OOM. Medding 16 seconds and trying again. 
   /sit off 
   /sit on 
   /delay 16s 
   /sit off 
   /varset DoAgain 1 
/return 

Sub Event_Stunned 
   /tell $MasterName Stunned waiting 3 seconds to try again. 
   /delay 3s 
   /varset DoAgain 1 
/return 

Sub Event_Recovered 
   /delay 2s 
   /varset DoAgain 1 
/return 

Sub Event_CastResist 
   /tell $MasterName Resisted. Trying again. 
   /varset DoAgain 1 
/return 

Sub Event_Collapse 
   /varset DoAgain 1 
/return 

Sub Event_NoLOS 
   /tell $MasterName I can't see my target. 
   /varset Fail 1 
   /varset CTimer 0 
/return 


Sub Tankheal 
         /if n $group($GroupMember)==$char(id) /press F1 
         /if n $group($GroupMember)!=$char(id) /target id $group($GroupMember) 
         /stand 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
||| Edit Edit heal message 
||| Edit Spell to auto cast on Melee 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /g COMPLETE HEAL on %T in 10seconds 
         /call SpellSub "Complete Heal" 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /if "$SitAfterCast"=="1" /sit on 
         /press esc 
/return 

Sub Casterheal 
         /if n $group($GroupMember)==$char(id) /press F1 
         /if n $group($GroupMember)!=$char(id) /target id $group($GroupMember) 
         /stand 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
||| Edit Edit heal message 
||| Edit Spell to auto cast on Non Melee 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /g Fast Healing %T 
         /call SpellSub "tnarg's mending" 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /if "$SitAfterCast"=="1" /sit on 
         /press esc 
/return 


|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 


Sub Do-ac 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting ancestral guard on %T 
   /call SpellSub "ancestral guard" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 
Sub Do-stamina 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting stamina on %T 
   /call SpellSub "talisman of the brute" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-agility
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Agility inc on %t 
   /call SpellSub "talisman of the wrulan" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-focus 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting focus on %T 
   /call SpellSub "focus of soul" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-heal 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting quick heal on %T 
   /call SpellSub "tnarg's mending" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-regen 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" regen to %t. 
   /call SpellSub "replenishment" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-ch 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" . 
   /call SpellSub "kragg's mending" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 


Sub Do-slow 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting slow on %T 
   /call SpellSub "turgur's insects" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-malo 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting malo on %T 
   /call SpellSub "malo" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-haste 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" %t will move swift like the wind 
   /call SpellSub "swift like the wind" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-root 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Rooting %t 
   /call SpellSub "greater immobilize" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Last edited by Waxxedazz on Sun Jul 06, 2003 8:43 pm, edited 1 time in total.

Valerian
a grimling bloodguard
a grimling bloodguard
Posts: 709
Joined: Sun Jul 28, 2002 3:29 am

Post by Valerian » Sun Jul 06, 2003 4:18 am

please note, when posting code, disable smileys.

Waxxedazz
a lesser mummy
a lesser mummy
Posts: 47
Joined: Sat May 31, 2003 7:09 pm

latest still no good

Post by Waxxedazz » Sun Jul 06, 2003 4:58 am

still not workin well for me for some reason torpor/tnarg's mending/swift like the wind/etc dont work... is the prob with the names? can it not recognize the spell im trying to call? also tryin to make it so I can tell the shammy to sick his pet on something. the spell casting is more important though. And is there a way to have the shammy mem diff spells, then call him to cast those?


Code: Select all

|shaman.mac 
|Generic bot for shaman. 
|Make sure you edit this macro where I have marked. 
|/tell botname cmds 
|This command will send the master a list of commands. 
|Version 2.06 
|Grimjack 

#turbo 75 
#Event Enraged "has become ENRAGED" 
#Event Offrage "is no longer enraged" 
#event Collapse "Your gate is too unstable, and collapses." 
#event FollowOff "You are no longer auto-following" 
#event RootOff "Your Immobilize spell has worn off." 
#event NoLOS "You cannot see your target." 
#Event CastStart "You begin casting" 
#Event CastFizzle "Your spell fizzles!" 
#Event CastInterrupt "Your spell is interrupted." 
#Event CastNoMana "Insufficient Mana to cast this spell" 
#Event CastTooFar "Your target is out of range, get closer!" 
#Event Recovered "You haven't recovered yet..." 
#Event CastResist "Your target resisted " 
#Event Distracted "You are too distracted to cast a spell now!" 
#Event NoTarget "You must first select a target for this spell!" 
#Event Sitting "You must be standing to cast a spell." 
#Event NoMem "You do not seem to have that spell memorized." 
#Event Stunned "You can't cast spells while stunned!" 
#define MasterName v50 
#define CmdArrayNum v51 
#define CmdArraySize v52 
#define GroupMember v53 
#define GroupMax v54 
#define ChatInput1 v55 
#define ChatInput2 v56 
#define ChatInput3 v57 
#define SitAfterCast v58 
#define MyXLoc v59 
#define MyYLoc v60 
#define IsHealer v61 
#define countdown v62 
#define CmdList v70 
#define RangeMin v71 
#define RangeMax v72 
#define FastRange v73 
#define Combatstatus v70 
#define Fail v94 
#define DoAgain v95 
#define StartCast v96 
#define SpellSlot v97 
#define SpellName v98 
#define CastTime v99 
#define CTimer t39 
#chat tell 

Sub Main 
   /if n $strlen("$p0")<=0 { 
     /echo Usage: /macro shaman <Master Name> 
     /endmacro 
   } 
   /varset MasterName $p0 
   /varset IsHealer 0 
   /varset RangeMin 10 
   /varset RangeMax 12 
   /varset FastRange 15 
   /varset Combatstatus 0 
   /varset a(1,0) afk 
   /varset a(1,1) accept 
   /varset a(1,2) reject 
   /varset a(1,3) invite 
   /varset a(1,4) mana 
   /varset a(1,5) follow 
   /varset a(1,6) stop 
   /varset a(1,7) evac 
   /varset a(1,8) moveto 
   /varset a(1,9) sit 
   /varset a(1,10) stand 
   /varset a(1,11) sn 
   /varset a(1,12) camp 
   /varset a(1,13) duck 
   /varset a(1,14) run 
   /varset a(1,15) say 
   /varset a(1,16) tell 
   /varset a(1,17) group 
   /varset a(1,18) cmds 
   /varset a(1,19) autoheal 
   /varset a(1,20) target 
   /varset a(1,21) notarget 
   /varset a(1,22) assist 
   /varset a(1,23) saytarget 
   /varset a(1,24) attack 
   /varset a(1,25) noattack 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /varset a(1,26) focus 
   /varset a(1,27) heal 
   /varset a(1,28) ch 
   /varset a(1,29) slow 
   /varset a(1,30) malo 
   /varset a(1,31) avatar 
   /varset a(1,32) regen 
   /varset a(1,33) root 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /call CountArraySize 1 
   /varset CmdArraySize $int($return) 
   /varset CmdList "$a(1,0), $a(1,1), $a(1,2), $a(1,3), $a(1,4), $a(1,5) $a(1,6), $a(1,7), $a(1,

8), $a(1,9), $a(1,10), $a(1,11), $a(1,12), $a(1,13), $a(1,14), $a(1,15), $a(1,16), $a(1,17), $a(

1,18), $a(1,19), $a(1,20) $a(1,21), $a(1,22), $a(1,23), $a(1,24), $a(1,25), $a(1,26), $a(1,27), 

$a(1,28), $a(1,29), $a(1,30), $a(1,31), $a(1,32), $a(1,33), "$a(1,34), $a(1,35), $a(1,36), $a(1,

37), $a(1,38), $a(1,39), $a(1,40)" 
   /varset CmdArrayNum 0 
   :MainLoop 
   /call CheckGrpHealth 
   /call Combatcheck 
   /if $Combatstatus=="1" /call RangeSub 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /doevents 
   /varset CmdArrayNum 0 
   /goto :MainLoop 
/return 

sub CountArraySize 
   /varset l0 0 
   :CountArrayLoop 
    /if n $strlen("$a($p0,$l0)")<=0 { 
       /goto :CountArrayEnd 
   } 
   /varadd l0 1 
   /goto :CountArrayLoop 
   :CountArrayEnd 
/return $l0 

Sub CheckGrpHealth 
   /varset GroupMember 0 
   /varcalc GroupMax $group(count)-1 
   /if n "$IsHealer"==0 /return 
   :GroupLoop 
   /doevents 
   /if n $spawn($group($GroupMember),hp,pct)<41 { 
      /if n $spawn($group($GroupMember),hp,pct)>=1 { 
         /if "$spawn($group($GroupMember),class)"=="Warrior" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Paladin" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Shadow Knight" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Monk" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Ranger" /call Tankheal 
        
      } 
   } 
   /if n $spawn($group($GroupMember),hp,pct)>=1 { 
      /if n $spawn($group($GroupMember),hp,pct)<41 { 
         /call CasterHeal 
      } 
   } 
   /if n $GroupMember>=$GroupMax /return 
   /varadd GroupMember 1 
   /doevents 
   /goto :GroupLoop 
/return 

Sub Combatcheck 
   /if $EnrageVar=="1" { 
      /if $target()=="TRUE" { 
         /return 
      } else { 
         /varset EnrageVar 0 
         /varset Combatstatus 0 
      } 
   } 
   /if $target()=="FALSE" { 
      /varset Combatstatus 0 
      /if $combat=="TRUE" { 
         /attack off 
      } 
      /return 
   } 
   /if $target()=="TRUE" { 
      /if $combat=="TRUE" { 
         /varset Combatstatus 1 
         /return 
      } 
   } 
/varset Combatstatus 0 
/return 



Sub Rangesub 
   /face fast nopredict 
   /if n $target(distance)>=$FastRange /call Fastmove 
   /if n $target(distance)>$RangeMax { 
      /press up 
   } 
   /if n $target(distance)<$RangeMin { 
      /press down 
   } 
/return 

Sub Fastmove 
   :fastmoveloop 
   /doevents 
   /if $target()=="FALSE" { 
      /varset Combatstatus 0 
      /sendkey up up 
      /if $combat=="TRUE" { 
         /attack off 
         /return 
      } 
   } 
   /face fast nopredict 
   /if n $target(distance)>$FastRange { 
      /sendkey down up 
   } 
   /if n $target(distance)<=$FastRange { 
         /if $Combatstatus=="1" { 
            /if $EnrageVar=="0" { 
            } 
         } 
      /sendkey up up 
      /return 
   } 
   /goto :fastmoveloop 
/return 

Sub Event_Chat 
   /varset CmdArrayNum 0 
   /if "$MasterName"=="$p1" { 
      :ArrayTime 
      /if "$arg(1,"$p2")"=="$a(1,$CmdArrayNum)" { 
         /call Do-$a(1,$CmdArrayNum) $p2 
         /return 
      } 
      /varadd CmdArrayNum 1 
      /if n $CmdArrayNum>=$CmdArraySize /return 
      /goto :ArrayTime 
   } else { 
       /tell $MasterName $p1 told me: $p2 
   } 
/return 

Sub Do-target 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName my target is %t 
/return 

Sub Do-saytarget 
   /tell $MasterName my target is %t 
/return 

Sub Do-assist 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 5 
   } else /if n $strlen("$p2")<=0 { 
      /assist "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /assist "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /assist "$p1 $p2 $p3" 
   } else /assist "$p1 $p2 $p3 $p4" 
   /tell $MasterName my target is %t 
/return 

Sub Do-attack 
   /sit off 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName Attacking %t 
   /attack on
/return 

Sub Do-noattack 
   /attack off 
/return 

Sub Do-sit 
   /sit off 
   /sit 
/return 

Sub Do-stand 
   /sit off 
/return 

Sub Do-notarget 
   /press esc 
   /press esc 
   /press esc 
/return 

Sub Do-sn 
   /assist $MasterName 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /tell "$MasterName" Casting $p1 on %T 
      /call SpellSub $p1 
   } else /if n $strlen("$p3")<=0 { 
      /tell "$MasterName" Casting $p1 $p2 on %T 
      /call SpellSub $p1 $p2 
   } else /if n $strlen("$p4)<=0 { 
      /tell "$MasterName" Casting $p1 $p2 $p3 on %T 
      /call SpellSub $p1 $p2 $p3 
   } else { 
      /tell "$MasterName" Casting $p1 $p2 $p3 $p4 on %T 
      /call SpellSub $p1 $p2 $p3 $p4 
   /stand 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

sub Do-type
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /$p1 
   } else /if n $strlen("$p3")<=0 { 
      /$p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /$p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /$p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /$p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /$p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /$p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /$p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else /if n $strlen("$p10")<=0 { 
   } else { 
      /$p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 

Sub Do-afk 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /afk 
   } else /if n $strlen("$p2")<=0 { 
      /afk $p1 
   } else /if n $strlen("$p3")<=0 { 
      /afk $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /afk $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /afk $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
   /afk 
/return 

Sub Do-say 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /say $p1 
   } else /if n $strlen("$p3")<=0 { 
      /say $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /say $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /say $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else /if n $strlen("$p10")<=0 { 
   } else { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 

Sub Do-group 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /g $p1 
   } else /if n $strlen("$p3")<=0 { 
      /g $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /g $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /g $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else /if n $strlen("$p10")<=0 { 
   } else { 
      /g "$p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 

Sub Do-tell 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /return 
   } else /if n $strlen("$p3")<=0 { 
      /tell $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /t $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /t $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 


Sub Do-accept 
   /press esc 
   /press esc 
   /invite 
/return 

Sub Do-reject 
   /press esc 
   /press esc 
   /disband 
/return 

Sub Do-invite 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName Inviting %t 
   /invite 
/return 

Sub Do-mana 
   /dismount 
   /press F1 
   /tell $MasterName $char(mana,pct)m 
   /press esc 
/return 

Sub Do-follow 
   /target $MasterName 
   /face 
   /follow 
   /tell $MasterName Autofollow on %t. 
/return 

Sub Do-stop 
   /tell $MasterName Stoping. 
   /sendkey up up 
   /varset Fail 1 
   /press d 
   /press d 
   /press esc 
   /press esc 
   /press esc 
   /press right 
/return 

Sub Do-evac 
   /tell $MasterName Moving to you and casting Evac! 
   /call Do-moveto evac $MasterName 
   /delay 2s 
   /call SpellSub "Evacuate" 
/return 

Sub Do-sit 
   /stand 
   /sit on 
/return 

Sub Do-stand 
   /stand 
/return 

Sub Do-camp 
   /tell $MasterName Camping out. 
   /stand 
   /sit 
   /camp 
/return  

Sub Do-duck 
   /press d 
   /varset Fail 1 
   /varset CTimer 0 
   /press d 
/return  

Sub Do-autoheal 
   /if n $strlen("$p1")<=0 { 
      /tell $MasterName Autoheal=$IsHealer 
      /return 
   } 
   /if $p1=="off" /varset IsHealer 0 
   /if $p1=="on" /varset IsHealer 1 
   /tell $MasterName Autoheal=$IsHealer 
/return 

Sub Do-cmds 
   /tell "$MasterName" Commands: "$CmdList" 
/return  

Sub Do-moveto 
   /sit off 
   /varset countdown 0 
   /varset MyXLoc $char(x) 
   /varset MyYLoc $char(y) 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /if $p1=="me" /target $MasterName 
   /tell $MasterName Moving to %t. 
   :gotopointloop 
   /doevents 
   /if $target()==FALSE { 
      /sendkey up up 
      /return 
   } 
   /face fast nopredict 
   /if n $target(distance)>15 /sendkey down up 
   /if n $target(distance)<=15 { 
      /sendkey up up 
      /return 
   } 
   /face fast nopredict 
   /if n $countdown>=3 { 
      /call Detectobst 
      /varset countdown 0 
   } 
   /varadd countdown 1 
   /doevents 
   /goto :gotopointloop 
   } 
   /sendkey up up 
   /face 
/return 

Sub Detectobst 
   /if n $MyXLoc==$char(x) /if $MyYLoc==$char(y) /call Hitobst 5 
   /varset MyXLoc $char(x) 
   /varset MyYLoc $char(y) 
/return 


sub Hitobst 
   /sendkey up up 
   /sendkey down down 
   /if n $rand(99)>50 { 
      /delay 2s 
      /sendkey up down 
      /sendkey down Right 
      /delay $p0 
      /sendkey up Right 
      /sendkey down up 
      /delay 2s 
      /sendkey up up 
   } else { 
      /delay 2s 
      /sendkey up down 
      /sendkey down left 
      /delay $p0 
      /sendkey up left 
      /sendkey down up 
      /delay 2s 
      /sendkey up up        
   } 
   /sendkey up down 
   /sendkey up Right 
   /sendkey up Left 
   /sendkey down up 
/return 

Sub SpellSub 
   /sendkey up up 
   /if n Combatstatus==1 /delay 3s 
   /varset Fail 0 
   /varset SpellName "$p0" 
   /varset SpellSlot "$char(gem,"$SpellName")" 
   /varset CastTime "$spell("$SpellName",casttime)" 
   :BeginCast 
   /varset DoAgain 0 
   /varset StartCast 0 
   /call WaitForStart 
   :TimerLoop 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
   /if n $Fail==1 /return 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
   /if n $Fail==1 /return 
   /if n $CTimer>0 /goto :TimerLoop 
   /delay 2 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
/return 


Sub WaitForStart 
   /cast $SpellSlot 
   :StartLoop 
   /doevents 
   /if n $Fail==1 /return 
   /if n $DoAgain==1 /return 
   /if n $StartCast==0 { 
      /goto :StartLoop 
   } 
   /varset CTimer "$CastTime"s 
/return 

Sub Event_Enraged 
   /if $target()=="TRUE" { 
      /if n $Combatstatus==1 { 
         /varset EnrageVar 1 
         /attack off 
      } 
      /varset EnrageVar 1 
   } 
/return 

Sub Event_Offrage 
   /if $target()=="TRUE" { 
      /if n $Combatstatus==1 { 
         /varset EnrageVar 0 
         /attack 
      
      } 
      /varset EnrageVar 0 
   } 
/return 

Sub Event_CastStart 
   /varset StartCast 1 
/return 

Sub Event_CastFizzle 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_CastInterrupt 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_FollowOff 
   /press esc 
   /press esc 
   /delay 5 
   /tell $MasterName Auto Follow Off. 
/return 

Sub Event_Sitting 
   /stand 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_CastTooFar 
   /varset Fail 1 
   /tell $MasterName Too far away. 
   /varset CTimer 0 
/return 

Sub Event_Distracted 
   /tell $MasterName I can't cast. I'm too distracted. 
   /varset Fail 1 
   /varset CTimer 0 
/return 

Sub Event_NoTarget 
   /varset Fail 1 
   /tell $MasterName I have no target to cast on. 
   /varset CTimer 0 
/return 

Sub Event_NoMem 
   /tell $MasterName That spell is not memed. 
   /varset Fail 1 
   /varset CTimer 0 
/return 

Sub Event_RootOff 
   /tell $MasterName Root has worn off. 
/return 

Sub Event_CastNoMana 
   /tell $MasterName OOM. Medding 16 seconds and trying again. 
   /sit off 
   /sit on 
   /delay 16s 
   /sit off 
   /varset DoAgain 1 
/return 

Sub Event_Stunned 
   /tell $MasterName Stunned waiting 3 seconds to try again. 
   /delay 3s 
   /varset DoAgain 1 
/return 

Sub Event_Recovered 
   /delay 2s 
   /varset DoAgain 1 
/return 

Sub Event_CastResist 
   /tell $MasterName Resisted. Trying again. 
   /varset DoAgain 1 
/return 

Sub Event_Collapse 
   /varset DoAgain 1 
/return 

Sub Event_NoLOS 
   /tell $MasterName I can't see my target. 
   /varset Fail 1 
   /varset CTimer 0 
/return 


Sub Tankheal 
         /if n $group($GroupMember)==$char(id) /press F1 
         /if n $group($GroupMember)!=$char(id) /target id $group($GroupMember) 
         /stand 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
||| Edit Edit heal message 
||| Edit Spell to auto cast on Melee 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /g COMPLETE HEAL on %T in 10seconds 
         /call SpellSub "Complete Heal" 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /if "$SitAfterCast"=="1" /sit on 
         /press esc 
/return 

Sub Casterheal 
         /if n $group($GroupMember)==$char(id) /press F1 
         /if n $group($GroupMember)!=$char(id) /target id $group($GroupMember) 
         /stand 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
||| Edit Edit heal message 
||| Edit Spell to auto cast on Non Melee 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /g Fast Healing %T 
         /call SpellSub "tnarg's mending" 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /if "$SitAfterCast"=="1" /sit on 
         /press esc 
/return 


|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 


Sub Do-ac 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting ancestral guard on %T 
   /call SpellSub "ancestral guard" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 
Sub Do-stamina 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting stamina on %T 
   /call SpellSub "talisman of the brute" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-agility
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Agility inc on %t 
   /call SpellSub "talisman of the wrulan" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-focus 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting focus on %T 
   /call SpellSub "focus of soul" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-heal 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting quick heal on %T 
   /call SpellSub "tnarg's mending" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-regen 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" regen to %t. 
   /call SpellSub "replenishment" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-ch 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" . 
   /call SpellSub "kragg's mending" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 


Sub Do-slow 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting slow on %T 
   /call SpellSub "turgur's insects" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-malo 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting malo on %T 
   /call SpellSub "malo" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

     
Sub Do-swift 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" %t will move swift like the wind 
   /call SpellSub "swift like the wind" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-root 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Rooting %t 
   /call SpellSub "greater immobilize" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

User avatar
ap50
a snow griffon
a snow griffon
Posts: 425
Joined: Sun Aug 18, 2002 2:29 pm

Post by ap50 » Sun Jul 06, 2003 9:50 am

Don't you just hate it when 8 ) automatically becomes 8) when you're trying to post code. :roll:

Disable Smilies in this post is your friend....
[color=yellow][size=92][b]Just because you're paranoid, it doesn't mean everyone isn't out to get you![/b][/size][/color]

macrotoon
a ghoul
a ghoul
Posts: 106
Joined: Wed Sep 18, 2002 4:38 pm

Post by macrotoon » Sun Jul 06, 2003 4:37 pm

I think in EQ the " ' " is really a " ` ". If memory serves me right.

tnarg's mending should be tnarg`s mending

Valerian
a grimling bloodguard
a grimling bloodguard
Posts: 709
Joined: Sun Jul 28, 2002 3:29 am

Post by Valerian » Sun Jul 06, 2003 5:04 pm

well, it depends... some of them are ', some are `... just takes trial and error sometimes

macrotoon
a ghoul
a ghoul
Posts: 106
Joined: Wed Sep 18, 2002 4:38 pm

Post by macrotoon » Sun Jul 06, 2003 6:07 pm

The reason swift like the wind isnt working is because there is no variable set for it.

you need to add

Code: Select all

/varset a(1,34) haste
To the varsets.

My shaman is only level 55, so i cant use all the spells your working with here. Im just looking at the obvious things.


Thanks for the tip Valerian. I was under the impression that only ` is used. Ive been away from MQ for 6 months or more though.

Just got a compiler that works. Cost $100 for it, and i hope its worth it. I guess i can try to learn some codeing as well. At least thats what my wife thinks i bought it for! haha

macrotoon
a ghoul
a ghoul
Posts: 106
Joined: Wed Sep 18, 2002 4:38 pm

Post by macrotoon » Sun Jul 06, 2003 6:11 pm

Oh, and when you change that you need to change

Code: Select all

Sub Do-Swift like the wind 
to

Code: Select all

Sub Do-haste

Waxxedazz
a lesser mummy
a lesser mummy
Posts: 47
Joined: Sat May 31, 2003 7:09 pm

Post by Waxxedazz » Sun Jul 06, 2003 8:51 pm

ok I made the changes and feel like a retard for not even thinkin about the varset's lol... as for a compiler I got VS 6.0 off of kazaa. works great for me and free is always good. I couldnt see paying the amount of money that they want for VS 6.0 and NET its just insane. As for this macro its AWSOME and /bow to Grimjack he = uber. Only thing im missin is to try and find a good way to get the shammy pet to attack on assist.
I would also like to know if there is a way to make the shaman load the new preset saved spell lists. or if there is a way to have the shaman load individual spells.

macrotoon
a ghoul
a ghoul
Posts: 106
Joined: Wed Sep 18, 2002 4:38 pm

Post by macrotoon » Sun Jul 06, 2003 11:00 pm

I tried to DL VS6 and .net several times, but im on dialup now. Sucks to be me. Its worth it to mess around with the macros and to learn a new skill.

I have always wanted to learn a programming language.

As for the pet attack goes. It seems like it would be easy to ad some more varsets in there. Then add the subs to match. I'll work on it. Gotta get my shammybot working too.

Loading spell sets would be great. I dont think it would be to much of a problem for the masterminds to use what EQ has put into action in order for us to mem any spell using Sony's code. Maybe im mistaken though.

macrotoon
a ghoul
a ghoul
Posts: 106
Joined: Wed Sep 18, 2002 4:38 pm

Post by macrotoon » Sun Jul 06, 2003 11:53 pm

Pet commands added. The master must send a tell like this

/tell shaman pet attack %t
/tell shaman pet guard here (this will guard where the shaman is)

I have not tested this yet. Let me know if it works. I just ripped the code for /tell from this macro and incorperted the commands to /pet

Code: Select all

|shaman.mac 
|Generic bot for shaman. 
|Make sure you edit this macro where I have marked. 
|/tell botname cmds 
|This command will send the master a list of commands. 
|Version 2.06 
|Grimjack 

#turbo 75 
#Event Enraged "has become ENRAGED" 
#Event Offrage "is no longer enraged" 
#event Collapse "Your gate is too unstable, and collapses." 
#event FollowOff "You are no longer auto-following" 
#event RootOff "Your Immobilize spell has worn off." 
#event NoLOS "You cannot see your target." 
#Event CastStart "You begin casting" 
#Event CastFizzle "Your spell fizzles!" 
#Event CastInterrupt "Your spell is interrupted." 
#Event CastNoMana "Insufficient Mana to cast this spell" 
#Event CastTooFar "Your target is out of range, get closer!" 
#Event Recovered "You haven't recovered yet..." 
#Event CastResist "Your target resisted " 
#Event Distracted "You are too distracted to cast a spell now!" 
#Event NoTarget "You must first select a target for this spell!" 
#Event Sitting "You must be standing to cast a spell." 
#Event NoMem "You do not seem to have that spell memorized." 
#Event Stunned "You can't cast spells while stunned!" 
#define MasterName v50 
#define CmdArrayNum v51 
#define CmdArraySize v52 
#define GroupMember v53 
#define GroupMax v54 
#define ChatInput1 v55 
#define ChatInput2 v56 
#define ChatInput3 v57 
#define SitAfterCast v58 
#define MyXLoc v59 
#define MyYLoc v60 
#define IsHealer v61 
#define countdown v62 
#define CmdList v70 
#define RangeMin v71 
#define RangeMax v72 
#define FastRange v73 
#define Combatstatus v70 
#define Fail v94 
#define DoAgain v95 
#define StartCast v96 
#define SpellSlot v97 
#define SpellName v98 
#define CastTime v99 
#define CTimer t39 
#chat tell 

Sub Main 
   /if n $strlen("$p0")<=0 { 
     /echo Usage: /macro shaman <Master Name> 
     /endmacro 
   } 
   /varset MasterName $p0 
   /varset IsHealer 0 
   /varset RangeMin 10 
   /varset RangeMax 12 
   /varset FastRange 15 
   /varset Combatstatus 0 
   /varset a(1,0) afk 
   /varset a(1,1) accept 
   /varset a(1,2) reject 
   /varset a(1,3) invite 
   /varset a(1,4) mana 
   /varset a(1,5) follow 
   /varset a(1,6) stop 
   /varset a(1,7) evac 
   /varset a(1,8) moveto 
   /varset a(1,9) sit 
   /varset a(1,10) stand 
   /varset a(1,11) sn 
   /varset a(1,12) camp 
   /varset a(1,13) duck 
   /varset a(1,14) run 
   /varset a(1,15) say 
   /varset a(1,16) tell 
   /varset a(1,17) group 
   /varset a(1,18) cmds 
   /varset a(1,19) autoheal 
   /varset a(1,20) target 
   /varset a(1,21) notarget 
   /varset a(1,22) assist 
   /varset a(1,23) saytarget 
   /varset a(1,24) attack 
   /varset a(1,25) noattack 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /varset a(1,26) focus 
   /varset a(1,27) heal 
   /varset a(1,28) ch 
   /varset a(1,29) slow 
   /varset a(1,30) malo 
   /varset a(1,31) avatar 
   /varset a(1,32) regen 
   /varset a(1,33) root 
   /varset a(1,34) haste
   /varset a(1,35) pet
|||||||||||||||||||||||Pet Commands||||||||||||||||||||||||||||||||||||||
|**
 ripped from everquest_manual.txt

PET COMMANDS:
 
/pet [command] - gives orders to a charmed or summoned pet.  Sample pet commands:
 
/pet guard here - tells the pet to guard its current location.
 
/pet guard me - tells the pet to attack anyone that attacks it's master, or that it's master attacks.
 
/pet follow me - tells the pet to follow you, but ends when you cross a zone line.
 
/pet attack [target] - tells the pet to attack the designated target.
 
/pet back off - tells the pet to stop its attack.
 
/pet as you were - returns the pet to neutral, belaying all prior orders.
 
/pet get lost
**|

	
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /call CountArraySize 1 
   /varset CmdArraySize $int($return) 
   /varset CmdList "$a(1,0), $a(1,1), $a(1,2), $a(1,3), $a(1,4), $a(1,5) $a(1,6), $a(1,7), $a(1,8), $a(1,9), $a(1,10), $a(1,11), $a(1,12), $a(1,13), $a(1,14), $a(1,15), $a(1,16), $a(1,17), $a(1,18), $a(1,19), $a(1,20) $a(1,21), $a(1,22), $a(1,23), $a(1,24), $a(1,25), $a(1,26), $a(1,27), $a(1,28), $a(1,29), $a(1,30), $a(1,31), $a(1,32), $a(1,33), $a(1,34), $a(1,35), $a(1,36), $a(1,37), $a(1,38), $a(1,39), $a(1,40)"
   /varset CmdArrayNum 0 
   :MainLoop 
   /call CheckGrpHealth 
   /call Combatcheck 
   /if $Combatstatus=="1" /call RangeSub 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 
   /doevents 
   /varset CmdArrayNum 0 
   /goto :MainLoop 
/return 

sub CountArraySize 
   /varset l0 0 
   :CountArrayLoop 
    /if n $strlen("$a($p0,$l0)")<=0 { 
       /goto :CountArrayEnd 
   } 
   /varadd l0 1 
   /goto :CountArrayLoop 
   :CountArrayEnd 
/return $l0 

Sub CheckGrpHealth 
   /varset GroupMember 0 
   /varcalc GroupMax $group(count)-1 
   /if n "$IsHealer"==0 /return 
   :GroupLoop 
   /doevents 
   /if n $spawn($group($GroupMember),hp,pct)<41 { 
      /if n $spawn($group($GroupMember),hp,pct)>=1 { 
         /if "$spawn($group($GroupMember),class)"=="Warrior" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Paladin" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Shadow Knight" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Monk" /call Tankheal 
         /if "$spawn($group($GroupMember),class)"=="Ranger" /call Tankheal 
        
      } 
   } 
   /if n $spawn($group($GroupMember),hp,pct)>=1 { 
      /if n $spawn($group($GroupMember),hp,pct)<41 { 
         /call CasterHeal 
      } 
   } 
   /if n $GroupMember>=$GroupMax /return 
   /varadd GroupMember 1 
   /doevents 
   /goto :GroupLoop 
/return 

Sub Combatcheck 
   /if $EnrageVar=="1" { 
      /if $target()=="TRUE" { 
         /return 
      } else { 
         /varset EnrageVar 0 
         /varset Combatstatus 0 
      } 
   } 
   /if $target()=="FALSE" { 
      /varset Combatstatus 0 
      /if $combat=="TRUE" { 
         /attack off 
      } 
      /return 
   } 
   /if $target()=="TRUE" { 
      /if $combat=="TRUE" { 
         /varset Combatstatus 1 
         /return 
      } 
   } 
/varset Combatstatus 0 
/return 



Sub Rangesub 
   /face fast nopredict 
   /if n $target(distance)>=$FastRange /call Fastmove 
   /if n $target(distance)>$RangeMax { 
      /press up 
   } 
   /if n $target(distance)<$RangeMin { 
      /press down 
   } 
/return 

Sub Fastmove 
   :fastmoveloop 
   /doevents 
   /if $target()=="FALSE" { 
      /varset Combatstatus 0 
      /sendkey up up 
      /if $combat=="TRUE" { 
         /attack off 
         /return 
      } 
   } 
   /face fast nopredict 
   /if n $target(distance)>$FastRange { 
      /sendkey down up 
   } 
   /if n $target(distance)<=$FastRange { 
         /if $Combatstatus=="1" { 
            /if $EnrageVar=="0" { 
            } 
         } 
      /sendkey up up 
      /return 
   } 
   /goto :fastmoveloop 
/return 

Sub Event_Chat 
   /varset CmdArrayNum 0 
   /if "$MasterName"=="$p1" { 
      :ArrayTime 
      /if "$arg(1,"$p2")"=="$a(1,$CmdArrayNum)" { 
         /call Do-$a(1,$CmdArrayNum) $p2 
         /return 
      } 
      /varadd CmdArrayNum 1 
      /if n $CmdArrayNum>=$CmdArraySize /return 
      /goto :ArrayTime 
   } else { 
       /tell $MasterName $p1 told me: $p2 
   } 
/return 

Sub Do-target 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName my target is %t 
/return 

Sub Do-saytarget 
   /tell $MasterName my target is %t 
/return 

Sub Do-assist 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 5 
   } else /if n $strlen("$p2")<=0 { 
      /assist "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /assist "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /assist "$p1 $p2 $p3" 
   } else /assist "$p1 $p2 $p3 $p4" 
   /tell $MasterName my target is %t 
/return 

Sub Do-attack 
   /sit off 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName Attacking %t 
   /attack on 
/return 

Sub Do-noattack 
   /attack off 
/return 

Sub Do-sit 
   /sit off 
   /sit 
/return 

Sub Do-stand 
   /sit off 
/return 

Sub Do-notarget 
   /press esc 
   /press esc 
   /press esc 
/return 

Sub Do-sn 
   /assist $MasterName 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /tell "$MasterName" Casting $p1 on %T 
      /call SpellSub $p1 
   } else /if n $strlen("$p3")<=0 { 
      /tell "$MasterName" Casting $p1 $p2 on %T 
      /call SpellSub $p1 $p2 
   } else /if n $strlen("$p4)<=0 { 
      /tell "$MasterName" Casting $p1 $p2 $p3 on %T 
      /call SpellSub $p1 $p2 $p3 
   } else { 
      /tell "$MasterName" Casting $p1 $p2 $p3 $p4 on %T 
      /call SpellSub $p1 $p2 $p3 $p4 
   /stand 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-afk 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /afk 
   } else /if n $strlen("$p2")<=0 { 
      /afk $p1 
   } else /if n $strlen("$p3")<=0 { 
      /afk $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /afk $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /afk $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else { 
      /afk $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
   /afk 
/return 

Sub Do-say 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /say $p1 
   } else /if n $strlen("$p3")<=0 { 
      /say $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /say $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /say $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else /if n $strlen("$p10")<=0 { 
   } else { 
      /say $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 

Sub Do-group 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /g $p1 
   } else /if n $strlen("$p3")<=0 { 
      /g $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /g $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /g $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /g $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else /if n $strlen("$p10")<=0 { 
   } else { 
      /g "$p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 

Sub Do-tell 
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /return 
   } else /if n $strlen("$p3")<=0 { 
      /tell $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /t $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /t $p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else { 
      /t $p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return 


Sub Do-accept 
   /press esc 
   /press esc 
   /invite 
/return 

Sub Do-reject 
   /press esc 
   /press esc 
   /disband 
/return 

Sub Do-invite 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /tell $MasterName Inviting %t 
   /invite 
/return 

Sub Do-mana 
   /dismount 
   /press F1 
   /tell $MasterName $char(mana,pct)m 
   /press esc 
/return 

Sub Do-follow 
   /target $MasterName 
   /face 
   /follow 
   /tell $MasterName Autofollow on %t. 
/return 

Sub Do-stop 
   /tell $MasterName Stoping. 
   /sendkey up up 
   /varset Fail 1 
   /press d 
   /press d 
   /press esc 
   /press esc 
   /press esc 
   /press right 
/return 

Sub Do-evac 
   /tell $MasterName Moving to you and casting Evac! 
   /call Do-moveto evac $MasterName 
   /delay 2s 
   /call SpellSub "Evacuate" 
/return 

Sub Do-sit 
   /stand 
   /sit on 
/return 

Sub Do-stand 
   /stand 
/return 

Sub Do-camp 
   /tell $MasterName Camping out. 
   /stand 
   /sit 
   /camp 
/return  

Sub Do-duck 
   /press d 
   /varset Fail 1 
   /varset CTimer 0 
   /press d 
/return  

Sub Do-autoheal 
   /if n $strlen("$p1")<=0 { 
      /tell $MasterName Autoheal=$IsHealer 
      /return 
   } 
   /if $p1=="off" /varset IsHealer 0 
   /if $p1=="on" /varset IsHealer 1 
   /tell $MasterName Autoheal=$IsHealer 
/return 

Sub Do-cmds 
   /tell "$MasterName" Commands: "$CmdList" 
/return  

Sub Do-moveto 
   /sit off 
   /varset countdown 0 
   /varset MyXLoc $char(x) 
   /varset MyYLoc $char(y) 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /if $p1=="me" /target $MasterName 
   /tell $MasterName Moving to %t. 
   :gotopointloop 
   /doevents 
   /if $target()==FALSE { 
      /sendkey up up 
      /return 
   } 
   /face fast nopredict 
   /if n $target(distance)>15 /sendkey down up 
   /if n $target(distance)<=15 { 
      /sendkey up up 
      /return 
   } 
   /face fast nopredict 
   /if n $countdown>=3 { 
      /call Detectobst 
      /varset countdown 0 
   } 
   /varadd countdown 1 
   /doevents 
   /goto :gotopointloop 
   } 
   /sendkey up up 
   /face 
/return 

Sub Do-pet
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /return 
   } else /if n $strlen("$p3")<=0 { 
      /pet $p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /pet $p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /pet $p1 $p2 $p3 $p4
   } 
/return 

Sub Detectobst 
   /if n $MyXLoc==$char(x) /if $MyYLoc==$char(y) /call Hitobst 5 
   /varset MyXLoc $char(x) 
   /varset MyYLoc $char(y) 
/return 


sub Hitobst 
   /sendkey up up 
   /sendkey down down 
   /if n $rand(99)>50 { 
      /delay 2s 
      /sendkey up down 
      /sendkey down Right 
      /delay $p0 
      /sendkey up Right 
      /sendkey down up 
      /delay 2s 
      /sendkey up up 
   } else { 
      /delay 2s 
      /sendkey up down 
      /sendkey down left 
      /delay $p0 
      /sendkey up left 
      /sendkey down up 
      /delay 2s 
      /sendkey up up        
   } 
   /sendkey up down 
   /sendkey up Right 
   /sendkey up Left 
   /sendkey down up 
/return 

Sub SpellSub 
   /sendkey up up 
   /if n Combatstatus==1 /delay 3s 
   /varset Fail 0 
   /varset SpellName "$p0" 
   /varset SpellSlot "$char(gem,"$SpellName")" 
   /varset CastTime "$spell("$SpellName",casttime)" 
   :BeginCast 
   /varset DoAgain 0 
   /varset StartCast 0 
   /call WaitForStart 
   :TimerLoop 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
   /if n $Fail==1 /return 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
   /if n $Fail==1 /return 
   /if n $CTimer>0 /goto :TimerLoop 
   /delay 2 
   /doevents 
   /if n $DoAgain==1 /goto :BeginCast 
/return 


Sub WaitForStart 
   /cast $SpellSlot 
   :StartLoop 
   /doevents 
   /if n $Fail==1 /return 
   /if n $DoAgain==1 /return 
   /if n $StartCast==0 { 
      /goto :StartLoop 
   } 
   /varset CTimer "$CastTime"s 
/return 

Sub Event_Enraged 
   /if $target()=="TRUE" { 
      /if n $Combatstatus==1 { 
         /varset EnrageVar 1 
         /attack off 
      } 
      /varset EnrageVar 1 
   } 
/return 

Sub Event_Offrage 
   /if $target()=="TRUE" { 
      /if n $Combatstatus==1 { 
         /varset EnrageVar 0 
         /attack 
      
      } 
      /varset EnrageVar 0 
   } 
/return 

Sub Event_CastStart 
   /varset StartCast 1 
/return 

Sub Event_CastFizzle 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_CastInterrupt 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_FollowOff 
   /press esc 
   /press esc 
   /delay 5 
   /tell $MasterName Auto Follow Off. 
/return 

Sub Event_Sitting 
   /stand 
   /delay 2 
   /varset DoAgain 1 
/return 

Sub Event_CastTooFar 
   /varset Fail 1 
   /tell $MasterName Too far away. 
   /varset CTimer 0 
/return 

Sub Event_Distracted 
   /tell $MasterName I can't cast. I'm too distracted. 
   /varset Fail 1 
   /varset CTimer 0 
/return 

Sub Event_NoTarget 
   /varset Fail 1 
   /tell $MasterName I have no target to cast on. 
   /varset CTimer 0 
/return 

Sub Event_NoMem 
   /tell $MasterName That spell is not memed. 
   /varset Fail 1 
   /varset CTimer 0 
/return 

Sub Event_RootOff 
   /tell $MasterName Root has worn off. 
/return 

Sub Event_CastNoMana 
   /tell $MasterName OOM. Medding 16 seconds and trying again. 
   /sit off 
   /sit on 
   /delay 16s 
   /sit off 
   /varset DoAgain 1 
/return 

Sub Event_Stunned 
   /tell $MasterName Stunned waiting 3 seconds to try again. 
   /delay 3s 
   /varset DoAgain 1 
/return 

Sub Event_Recovered 
   /delay 2s 
   /varset DoAgain 1 
/return 

Sub Event_CastResist 
   /tell $MasterName Resisted. Trying again. 
   /varset DoAgain 1 
/return 

Sub Event_Collapse 
   /varset DoAgain 1 
/return 

Sub Event_NoLOS 
   /tell $MasterName I can't see my target. 
   /varset Fail 1 
   /varset CTimer 0 
/return 


Sub Tankheal 
         /if n $group($GroupMember)==$char(id) /press F1 
         /if n $group($GroupMember)!=$char(id) /target id $group($GroupMember) 
         /stand 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
||| Edit Edit heal message 
||| Edit Spell to auto cast on Melee 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /g COMPLETE HEAL on %T in 10seconds 
         /call SpellSub "kragg's mending" 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /if "$SitAfterCast"=="1" /sit on 
         /press esc 
/return 

Sub Casterheal 
         /if n $group($GroupMember)==$char(id) /press F1 
         /if n $group($GroupMember)!=$char(id) /target id $group($GroupMember) 
         /stand 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
||| Edit Edit heal message 
||| Edit Spell to auto cast on Non Melee 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /g Healing %T 
         /call SpellSub "torpor" 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
         /if "$SitAfterCast"=="1" /sit on 
         /press esc 
/return 


|||||||||||||||||||||||Personal Commands||||||||||||||||||||||||||||||||| 


Sub Do-focus 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting focus on %T 
   /call SpellSub "focus of soul" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-heal 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting quick heal on %T 
   /call SpellSub "tnarg's mending" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-ch 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting Shaman c-heal on %T. 10 Seconds. 
   /call SpellSub "kragg's mending" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-slow 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting slow on %T 
   /call SpellSub "turgur's insects" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-malo 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting malo on %T 
   /call SpellSub "malo" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-haste 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting haste on %T 
   /call SpellSub "swift like the wind" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-regen 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting regen on %T 
   /call SpellSub "replenishment" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Sub Do-root 
   /if n $strlen("$p1")<=0 { 
      /assist $MasterName 
      /delay 3 
   } else /if n $strlen("$p2")<=0 { 
      /target "$p1" 
   } else /if n $strlen("$p3")<=0 { 
      /target "$p1 $p2" 
   } else /if n $strlen("$p4)<=0 { 
      /target "$p1 $p2 $p3" 
   } else /target "$p1 $p2 $p3 $p4" 
   /stand 
|||||||||||||||||||Begin Edit||||||||||||||||||||||||||||||||||||||||||||||| 
   /tell "$MasterName" Casting root on %T 
   /call SpellSub "greater immobilize" 
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
   /if "$SitAfterCast"=="1" /sit on 
   /press esc 
/return 

Waxxedazz
a lesser mummy
a lesser mummy
Posts: 47
Joined: Sat May 31, 2003 7:09 pm

bleh

Post by Waxxedazz » Sun Jul 06, 2003 11:56 pm

EWWW dial up... please dont use those kinda words in the forums there could be children present. As for the shammy bot let me know and Ill give ya what I got when you start it. Then maybe we can come up with the ultimate shammy bot together. All thanks to grimjack!

Thanks for the /pet command help as of now I am still working with this set to just make the shaman do /"whatever I tell him/her".

Code: Select all

sub Do-type
   /varset CmdArrayNum 0 
   /if n $strlen("$p1")<=0 { 
      /return 
   } else /if n $strlen("$p2")<=0 { 
      /$p1 
   } else /if n $strlen("$p3")<=0 { 
      /$p1 $p2 
   } else /if n $strlen("$p4")<=0 { 
      /$p1 $p2 $p3 
   } else /if n $strlen("$p5")<=0 { 
      /$p1 $p2 $p3 $p4 
   } else /if n $strlen("$p6")<=0 { 
      /$p1 $p2 $p3 $p4 $p5 
   } else /if n $strlen("$p7")<=0 { 
      /$p1 $p2 $p3 $p4 $p5 $p6 
   } else /if n $strlen("$p8")<=0 { 
      /$p1 $p2 $p3 $p4 $p5 $p6 $p7 
   } else /if n $strlen("$p9")<=0 { 
      /$p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 
   } else /if n $strlen("$p10")<=0 { 
   } else { 
      /$p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8 $p9 
   } 
/return