Help with Mac

Wickedmonk

Lifetimer
Joined
Dec 11, 2008
Messages
41
Reaction score
0
Points
0
i got this macro off a friend and really like it but would like to add in a couple things, and ive tried and tried but cant seem to get it even close to right so here is the mac in question ( took out my changes and went back to fresh unchanged mac i was sent )

Code:
PullMac


| Pull Macro 
| Pull.mac 
| Author      : robdawg :Ripped by Jdelpheki :Ripped Again By hakcenter 
| Version     : v3 2004-12-16 5:50pm PST 
| Useage      : /macro pull 
| Description : This macro will run your character around Pulling any mobs. 
|      This is definitely a work in progress and I am sure 
|      someone can think of plenty of upgrades for this. 
| : Ripped section Jdelpheki 
|      Modified for pull to area where Macro is started.  I have been using this 
|      2 level 45's Cleric Running genbot and Warrior running Pull2.  Ran for 4 hours 
|      Max with one cleric death. Needs Throwing weapon or arch support too 
|      Needs Genbot to announce its getting hit or get a new cleric script 
| : Ripped section hakcenter 
|      Pulls Any Mobs within radius (regardless of level) 
|      No Mob Array Required 
|      Looting Added 
|      *Looting -stuck on corpse bug fixed- 
|      Loot Table Array Support 
|      *Puller runs to pull spot after mob looting is finished 
|      *Removed Target Fail Counters 
|      *Checks for mobs every 30seconds, 1second 50radius checks 
|      *Reformated 
|      *On zoning(death whatever), quits everquest 
|      *Added more checks 
| 
|      2004-12-11 
| 
|      Added some squelching, always looking for mobs within range, 5 distance intervals 
|      Jacked Item Coding from Rogue Helper 
|      Fixed UI locking up 
|      Fixed Long Buff Casts 
|      Added Disarm to the Special Combat abilities 
| 
|      2004-12-16 
|      Revamped Close mob checking to 0.1second 100radius squelched 
|      Revamped Item casting to check for local mobs during.. and interupt if mob is near 100radius 
|      Removed mass escaping.. cause its retarded 
|      Fixed cool errors when accidently pushing esc while on a mob 
|      Fixed cool errors when accidently pushing esc while pulling a mob 
|      Added 1second before first item cast, incase item is worn... you get interupted cause its too fast 
| 
|------------------------------------------------------------------------------------ 

#turbo 10 
#Event Slain "#*# slain#*#" 
#Event Zoned "LOADING, PLEASE WAIT..." 
#Event ItemSet "[MQ2] ItemSet#*#" 
#Event ItemBounce "[MQ2] ItemBounce#*#" 
#Event ItemCast "[MQ2] ItemCast#*#" 

Sub Main 

   |------------------------------------------------------------ 
   |How far would you like to target a mob? 
   |------------------------------------------------------------ 
   /declare RV_MaxRadius        int outer  270
   |------------------------------------------------------------ 
   |How far is the fast movement range? 
   |------------------------------------------------------------ 
   /declare RV_FastRange        int outer  10 
   |------------------------------------------------------------ 
   |How far is the maximum combat range? 
   |------------------------------------------------------------ 
   /declare RV_RangeMax         int outer  30 
   |------------------------------------------------------------ 
   |How far is the minimum combat range? 
   |------------------------------------------------------------ 
   /declare RV_RangeMin         int outer  2 
   |------------------------------------------------------------ 
   |What is the minimum Z Value of mobs I should target? 
   |------------------------------------------------------------ 
   /declare RV_MinZRange        int outer  -200 
   |------------------------------------------------------------ 
   |What is the maximum Z Value of mobs I should target? 
   |------------------------------------------------------------ 
   /declare RV_MaxZRange        int outer  700 
   |------------------------------------------------------------ 
   |Loot Array Information. 
   |------------------------------------------------------------ 
   /call ReadINI PullLoot.ini "${Zone.Name}" Loot 
   /if (!${Defined[RV_LootArray]}) { 
      /echo No Loot Array Created... 
   } 
   |------------------------------------------------------------ 
   |Variables that you don't need to worry about. 
   |------------------------------------------------------------ 
   /declare RV_MyTargetID       int outer  0 
   /declare RV_MyTargetName     string outer 
   /declare RV_MyTargetDead     int outer  0 
   /declare RV_InvalidTargetID  int outer  0 
   /declare RV_HasTarget        int outer  0 
   /declare RV_RandomWait       int outer  0 
   /declare RV_LootSlot         int outer  0 
   /declare RV_CheckLook        int outer  0 
   /declare RV_Fighting         int outer  0 
   /declare RV_TargetDead       int outer  0 
   /declare RV_MyXLOC           int outer  0 
   /declare RV_MyYLOC           int outer  0 
   /declare RV_ObstacleCount    int outer  0 
   /declare RV_hitcount         int outer  0 
   /declare RV_healcheck        int outer  0 
   /declare RT_MyXLOC           int outer  ${Me.X} 
   /declare RT_MyyLOC           int outer  ${Me.Y} 

   /declare lastevent string outer None 
   /declare CheckBuffs int outer 0 
   /declare i int outer 
   /declare ialias string outer None 
   /declare doIclick bool outer FALSE 
   /declare bouncenum int outer 1 
   /declare ibounce string outer None 
   /declare itemspellname string outer None 
   /declare clicktimer timer outer 0 
   /squelch /alias /iset /echo ItemSet 
   /squelch /alias /ibounce /echo ItemBounce 
   /squelch /alias /iclick /echo ItemCast 
    
   /varset CheckBuffs 1 

   :Start 
      /doevents 
      /call GMCheck 
      /call GetTarget 
      /if (${RV_HasTarget}) /call Pull 
      /if (${RV_HasTarget}) /call CombatSub 
      /call ResetSub 
      /call MoveToLoc ${RT_MyyLOC} ${RT_MyXLOC} 
      /goto :Start 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Reading from an INI File 
|-------------------------------------------------------------------------------- 
Sub ReadINI(FileName,Loot,ArrayType) 
   /echo Attempting to Read Information from ${FileName}... 
   /declare nValues     int local  1 
   /declare nArray      int local  0 
   /declare KeySet      string local  ${Ini[${FileName}]} 
   /if (${Ini[${FileName},Loot,-1,NO].Equal[NO]}) { 
      /echo "${SectionName}" is not a Valid Section for FILE:${FileName}, ending macro... 
      /delay 1s 
      /return 
   } 
   :CounterLoop 
      /if (${String[${Ini[${FileName},Loot,${ArrayType}${nValues}]}].Equal[null]}) { 
         /varcalc nValues ${nValues}-1 
         /goto :MakeArray 
      } 
      /varcalc nValues ${nValues}+1 
      /goto :CounterLoop 
   :MakeArray 
      /if (!${nValues}) /return 
      /if (${FileName.Equal["PullLoot.ini"]}&&${nValues}>0) { 
         /echo Declaring Loot Array... 
         /declare RV_LootArray[${nValues}]  string outer 
         /declare RV_LootStats[${nValues}]  string outer 
      } 
      /for nArray 1 to ${nValues} 
      /if (${FileName.Equal["PullLoot.ini"]}) { 
         /varset RV_LootArray[${nArray}] ${Ini[${FileName},Loot,${ArrayType}${nArray}]} 
         /varset RV_LootStats[${nArray}] 0 
      } 
      /next nArray 
      /echo Information Read Successfully from ${FileName}... 
      /delay 1s 
/return 

|-------------------------------------------------------------------------------- 
|SUB: GM Check 
|-------------------------------------------------------------------------------- 
Sub GMCheck 
   /if (${Spawn[gm].ID}) { 
      /beep 
      /beep 
      /beep 
      /echo GM has entered the zone! 
      /echo FUCK HIM but ending the macro... 
      /keypress forward 
      /keypress back 
      /quit 
      /keypress 0
      /endmacro 
   } 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Aquire Target 
|-------------------------------------------------------------------------------- 
Sub GetTarget 
   /keypress esc
   /delay 3s
   /keypress 8
   /doevents 
   /declare SpawnTimer         int local 
   /declare RV_CurrentRadius   int local 
   /declare RV_TargetSub       int local 
   /echo Looking for Close Range Mobs 
   :Acquire 
      /doevents 
      /for RV_CurrentRadius 100 to ${RV_MaxRadius} step 5 
      /squelch /target radius ${RV_CurrentRadius} npc 
      /varset RV_MyTargetID ${Target.ID} 
      /varset RV_MyTargetDead 0 
      /if (${Target.ID}) { 
         /if (${Int[${Target.Z}]}<${RV_MinZRange}) { 
            /echo Mob is BELOW Min Z Range, picking another... 
            /varset RV_InvalidTargetID ${Target.ID} 
            /call ResetSub 
            /goto :Acquire 
         } 
         /if (${Int[${Target.Z}]}>${RV_MaxZRange}) { 
            /echo Mob is ABOVE Max Z Range, picking another... 
            /varset RV_InvalidTargetID ${Target.ID} 
            /call ResetSub 
            /goto :Acquire 
         } 
         /varset RV_HasTarget 1 
         /varset RV_MyTargetName ${Target.Name} 
         /echo Acquired ${Target.Name} at range ${Int[${Target.Distance}]} 
         /return 
      } 
      /if (${CheckBuffs}>0) { 
         /echo Checking Buffs 
         /call ItemCast 
         /varset CheckBuffs 0 
         /echo Aquiring Long Range Mobs 
      } 
      /next RV_CurrentRadius 
      /goto :Acquire 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Pull 
|-------------------------------------------------------------------------------- 
Sub Pull 
   /doevents 
   /echo Pulling Mob 
   /declare TargDist float local 
   :PullLoop 
      /doevents 
      /if (!${Me.Combat}) /attack on 
      /call MoveToMob 
      /if (!${Target.ID}) /return 
      /face fast 
      /if (${Target.PctHPs}==100) /goto :PullLoop 
      /if (${Target.PctHPs}<21) /return 
      /call MoveToLoc ${RT_MyyLOC} ${RT_MyXLOC} 
      /if (!${Target.ID}) /return 
      /face fast 
   :Engage 
      /varset TargDist ${Math.Distance[${Target.Y},${Target.X},0:${Me.Y},${Me.X},0]} 
      /if ( ${TargDist}<30 ) /return 
      /delay 1s 
      /goto :Engage 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Move to Mob 
|-------------------------------------------------------------------------------- 
Sub MoveToMob 
   /doevents 
   /varset RV_MyXLOC ${Int[${Me.X}]} 
   /varset RV_MyYLOC ${Int[${Me.Y}]} 
   /varset RV_ObstacleCount 0    
   :MovementLoop 
      /doevents 
      /if (!${Target.ID}) /return 
      /face fast 
      /varcalc RV_ObstacleCount ${RV_ObstacleCount}+1 
      /if (${Int[${Target.Distance}]}>${RV_FastRange}) /keypress forward hold 
      /if (${Int[${Target.Distance}]}<${RV_FastRange}&&${Int[${Target.Distance}]}>${RV_RangeMax}) /keypress forward 
      /if (${Int[${Target.Distance}]}<${RV_RangeMin}) /keypress back 
      /if (${RV_ObstacleCount}>=15) { 
         /call CheckObstacle 
         /goto :Movementloop 
      } 
      /if (${Int[${Target.Distance}]}>${RV_FastRange}) /goto :MovementLoop 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Move To Location 
|-------------------------------------------------------------------------------- 
Sub MoveToLoc(MoveToY, MoveToX) 
   /doevents 
   /declare running int local 
   /declare distanceNow float local 
   /declare distanceBefore float local 
   /declare distanceModifier int local 
   /declare distanceTimer timer 15 
   /varset running 0 
   /varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
   /varset distanceModifier 1 
   /echo Moving to Location: ${MoveToY}, ${MoveToX}. 
   /echo Distance: ${distanceBefore} 
   :moveToLocation 
      /doevents 
      /face fast nolook loc ${MoveToY},${MoveToX} 
      /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<10) { 
         /keypress forward 
         /return 
      } 
      /if (${distanceTimer}==0) { 
         /if (${Me.Sneaking}) { 
            /varset distanceModifier 2 
         } else { 
            /varset distanceModifier 1 
         } 
         /varset distanceNow ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
         /if (${Math.Calc[${distanceBefore}-${distanceNow}]}<${Math.Calc[10/${distanceModifier}]}) { 
         /call HitObstacle 
         } 
         /varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
         /varset distanceTimer 15 
      } 
      /if (${running}==0) { 
         /keypress forward 
            /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}>10) { 
               /varset running 1 
               /keypress forward hold 
            } 
      } else { 
         /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<11) { 
            /varset running 0 
            /keypress forward 
         } 
      } 
      /goto :moveToLocation 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Obstacle Check 
|-------------------------------------------------------------------------------- 
Sub CheckObstacle 
   /doevents 
   /if ((${RV_MyXLOC}==${Int[${Me.X}]})&&(${RV_MyYLOC}==${Int[${Me.Y}]})) /call HitObstacle 
   /varset RV_MyXLOC ${Int[${Me.X}]} 
   /varset RV_MyYLOC ${Int[${Me.Y}]} 
   /varset RV_ObstacleCount 0 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Obstacle Avoidance 
|-------------------------------------------------------------------------------- 
Sub HitObstacle 
   /echo Obstacle hit, moving around it... 
   /keypress forward 
   /keypress back hold 
   /delay 3 
   /keypress back 
   /if (${Math.Rand[2]}) { 
      /keypress strafe_right hold 
   } else { 
      /keypress strafe_left hold 
   } 
   /delay 5 
   /keypress strafe_right 
   /keypress strafe_left 
   /keypress forward hold 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Combat 
|-------------------------------------------------------------------------------- 
Sub CombatSub 
   /doevents 
   /varset RV_Fighting 1 
   /varset RV_TargetDead 0 
   /echo Attacking Mob NOW! 
   :CombatLoop 
      /if (!${Me.Combat}) /attack on 
      /if (!${Target.ID}) /return 
      /call MoveToMob 
      /call SpecialIT 
      /if (!${RV_TargetDead}) /goto :CombatLoop 
      /doevents  
/return 

|-------------------------------------------------------------------------------- 
|SUB: Special Combat 
|-------------------------------------------------------------------------------- 
Sub SpecialIt 
   /doevents 
   /declare TempID    int inner  0 
   /if (${Target.Distance}<=17 && ${Me.AbilityReady[Backstab]}) { 
      /doability "Backstab" 
   } 
   /if (${Target.Distance}<=17 && ${Me.AbilityReady[Disarm]}) { 
      /doability "Disarm" 
   } 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Item Buffs 
|-------------------------------------------------------------------------------- 
Sub ItemCast 
   /doevents 
   /declare ItemDelay int inner 0 
   /varset ItemDelay 1 
   /varset i 1 
   :ItemCheckLoop 
      /doevents 
      /varset ialias ${Ini[PullItems.ini].Arg[${i},|]} 
      /if (${ialias.NotEqual[NULL]}) { 
         /if (${Ini[PullItems.ini,${ialias},KeepUp].Equal[FALSE]}) /goto :NextItem 
         /varset bouncenum 1 
         /varset doIclick TRUE 
         :BounceCheckLoop 
            /varset ibounce ${Ini[PullItems.ini,${ialias},BounceOff${bouncenum}]} 
               /if (${ibounce.NotEqual[NULL]}) { 
                  /if (${ibounce.Equal[${Me.Buff[${ibounce}]}]}) /varset doIclick FALSE 
               } else /goto :DoneBounceChecks 
            /varcalc bouncenum ${bouncenum}+1 
            /goto :BounceCheckLoop 
         :DoneBounceChecks 
            /varset itemspellname ${FindItem[${Ini[PullItems.ini,${ialias},FullName]}].Spell} 
            /if (${itemspellname.Equal[${Me.Buff[${itemspellname}]}]}) /varset doIclick FALSE 
            /squelch /target myself 
            /if (${doIclick}) { 
               /if (${ItemDelay}==1) { 
                  /delay 1s 
                  /varset ItemDelay 0 
               } 
            } 
            /if (${doIclick}) /docommand /iclick ${ialias} 
            /if (${clicktimer}) /goto :DoneItemChecks 
         :NextItem 
            /varcalc i ${i}+1 
      } else /goto :DoneItemChecks 
      /goto :ItemCheckLoop 
      :DoneItemChecks 
         /doevents 
         /squelch /target clear 
/return 

Sub Event_ItemSet(string Line) 
   /varset lastevent Event_ItemSet 
   /if (!${Line.Arg[5].Length} || ${Line.Arg[6].Length}) { 
      /if (${verbosity}>=0) /${channel} ** Improper use of /iset 
      /if (${verbosity}>=0) /${channel} -- /iset <itemalias> keepup|nokeepup <"Item Name"> 
      /if (${verbosity}>=0) /${channel} -- For example: 
      /if (${verbosity}>=0) /${channel} -- /iset gobby keepup "Shrunken Goblin Skull Earring" 
      /return 
   } 
   /ini "PullItems.ini" "${Line.Arg[3]}" "FullName" "${Line.Arg[5]}"  
   /ini "PullItems.ini" "${Line.Arg[3]}" "KeepUp" "${If[${Line.Arg[4].Equal[keepup]},TRUE,FALSE]}" 
   /if (${verbosity}>=0) /${channel} ** ${Line.Arg[5]} (KeepUp=${If[${Line.Arg[4].Equal[keepup]},TRUE,FALSE]}) updated in INI! 
/return 

Sub Event_ItemBounce(string Line) 
   /varset lastevent Event_ItemBounce 
   /if (!${Line.Arg[4].Length}) { 
      /if (${verbosity}>=0) /${channel} ** Improper use of /ibounce 
      /if (${verbosity}>=0) /${channel} -- /ibounce <itemalias> "Some Spell Name" 
      /if (${verbosity}>=0) /${channel} -- For example: 
      /if (${verbosity}>=0) /${channel} -- /ibounce gobby "Strength of Tunare" 
      /return 
   } 
   /if (!${Ini[PullItems.ini,${Line.Arg[3]}].Length}) { 
      /if (${verbosity}>=0) /${channel} ** [${Line.Arg[3]}] not in INI file! 
      /return 
   } 
   /declare bindex int local 1 
   :CheckNextKey 
      /if (${Ini[PullItems.ini,${Line.Arg[3]},BounceOff${bindex}].Length}) { 
         /varcalc bindex ${bindex}+1 
         /goto :CheckNextKey 
      } else { 
      /ini "PullItems.ini" "${Line.Arg[3]}" "BounceOff${bindex}" "${Line.Arg[4]}"  
      /if (${verbosity}>=0) /${channel} ** Added "${Line.Arg[4]}" to [${Line.Arg[3]}]'s bounce list 
      } 
/return 

Sub Event_ItemCast(string Line) 
   /varset lastevent Event_ItemCast 
   /if (!${Line.Arg[3].Length}) { 
      /if (${verbosity}>=0) /${channel} ** Improper use of /icast 
      /if (${verbosity}>=0) /${channel} -- /icast <itemalias> 
      /if (${verbosity}>=0) /${channel} -- For example: 
      /if (${verbosity}>=0) /${channel} -- /icast gobby 
      /return 
   } 
   /if (!${Ini[PullItems.ini,${Line.Arg[3]}].Length}) { 
      /if (${verbosity}>=0) /${channel} ** [${Line.Arg[3]}] not in INI file! 
      /return 
   } 
   /declare fullname string local ${Ini[PullItems.ini,${Line.Arg[3]},FullName]} 
   /if (${verbosity}>=1) /${channel} ** Attempting to use: ${fullname} 
   /if (${FindItem[${fullname}].InvSlot.Pack}) { 
      :OpenPack 
         /if (!${Window[${FindItem[${fullname}].InvSlot.Pack.Name}].Open}) { 
            /itemnotify ${FindItem[${fullname}].InvSlot.Pack.Name} rightmouseup 
            /delay 2 
            /goto :OpenPack 
         } 
         /declare camefrom ${FindItem[${fullname}].InvSlot} 
      :GrabItem 
         /if (!${Cursor.ID}) { 
            /itemnotify ${InvSlot[${camefrom}]} leftmouseup 
            /delay 2 
            /goto :GrabItem 
         } 
         /declare clickyID int local ${Cursor.ID} 
         /declare wornat int local ${Cursor.WornSlot[1]} 
      :SwapFirst 
         /if (${Cursor.ID}==${clickyID}) { 
            /itemnotify ${InvSlot[${wornat}]} leftmouseup 
            /delay 2 
            /goto :SwapFirst 
         } 
         /delay 2 
         /if (${verbosity}>=1) /${channel} ** Clicking: ${fullname} 
         /declare previousID ${Cursor.ID} 
         /itemnotify ${InvSlot[${wornat}]} rightmouseup 
      :SwapAgain 
         /if (${Cursor.ID}==${previousID}) { 
            /itemnotify ${InvSlot[${wornat}]} leftmouseup 
            /delay 2 
            /goto :SwapAgain 
         } 
      :PutItBack 
         /if (${Cursor.ID}==${clickyID}) { 
            /itemnotify ${InvSlot[${camefrom}]} leftmouseup 
            /delay 2 
            /goto :PutItBack 
         } 
      :SummonedCheck 
         /if (${Cursor.ID}) { 
            /autoinv 
            /delay 2 
            /goto :SummonedCheck 
         }    
      :ClosePack 
         /if (${Window[${InvSlot[${camefrom}].Pack.Name}].Open}) { 
            /itemnotify ${InvSlot[${camefrom}].Pack.Name} rightmouseup 
         /delay 2 
         /goto :ClosePack 
         } 
   } else { 
   /if (${FindItem[${fullname}].InvSlot}) { 
      /if (${verbosity}>=1) /${channel} ** Clicking: ${fullname} 
      /itemnotify ${FindItem[${fullname}].InvSlot} rightmouseup 
      /delay 2 
   } else { 
   /if (${verbosity}>=0) /${channel} ** "${fullname}" not found! 
      } 
   } 
   :CastLoop 
      /delay 1 
      /squelch /target radius 100 npc 
      /if (${Target.ID}) { 
         /if (${Target.CleanName.Equal[${Me.Name}]}) { 
            /squelch /target clear 
            /goto :CloseMobCheck 
         } 
         /keypress duck 
         /delay 1 
         /keypress duck 
         /delay 1 
         /return 
      } 
   :CloseMobCheck 
      /if (${Me.Casting.ID}) /goto :CastLoop 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Slain 
|-------------------------------------------------------------------------------- 

Sub Event_Slain 
   /varset RV_TargetDead 1 
   /varset RV_Fighting 0 
   /attack off 
   /target clear 
   /keypress forward 
   /keypress back 
   /squelch /target radius 30 corpse 
   /face fast 
   /if (${RV_HasTarget} && (${Defined[RV_LootArray]} || ${RV_LootAllItems})) /call LootMob 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Zoned 
|-------------------------------------------------------------------------------- 
Sub Event_Zoned 
  /echo Zoned 
  /delay 60s 
  /quit 
  /endmacro 

|-------------------------------------------------------------------------------- 
|SUB: Looting 
|-------------------------------------------------------------------------------- 
Sub LootMob 
   /doevents 
  
/return 

|-------------------------------------------------------------------------------- 
|SUB: Reset 
|-------------------------------------------------------------------------------- 
Sub ResetSub 
   /doevents 
   /varset RV_HasTarget 0 
   /varset RV_TargetDead 0 
   /varset RV_Fighting 0 
/return
......................................................................................................................................................


Now the question is how i could go about adding a couple things into this to where it will..


1 ) only in combat when the mob is at 70% at all times the spells are up /cast 8, 9, and 10

2 ) /keypress 6 once on every mob when Mobs HP is at 45%

3 ) only in combat /cast 5 on every mob when mobs HP is at 80%

4 ) /keypress 0 only in combat everytime it is up



thank you for all your help

Wickedmonk
 
Last edited by a moderator:
We would need to know the name of the abilities/spells you are using. *I* at least don't know how to tell if an ability is up without knowing the name.

instead of 7 8 9(or whatever) tell us the ability names and I will be glad to help you out. I need exact names. periods, `s and all
 
Last edited:
1 ) only in combat when the mob is at 70% at all times the spells are up /cast 8, 9, and 10

for these the spells are Vilify Rk. II(10), Revile Rk. III(9), and Burst of Spite Rk. II

2 ) /keypress 6 once on every mob when Mobs HP is at 45%

for this the ability is an AA... Encroaching Darkness, Ability number 826

3 ) only in combat /cast 5 on every mob when mobs HP is at 80%

for this the spell is Charge for Power Rk. III

4 ) /keypress 0 only in combat everytime it is up

for this it is my epic click, Name of epic is Innoruuk's Dark Blessing
 
Where is your epic located? Primary or just in inventory?
 
Haha sorry to ask so many questions?

What exactly is the name of the buff when you click your 2.0?

Is it "Lich Sting"?
 
I have no way of testing it. But try this. If it errors out or whatever get me a screenshot of what it says.

Code:
PullMac


| Pull Macro 
| Pull.mac 
| Author      : robdawg :Ripped by Jdelpheki :Ripped Again By hakcenter 
| Version     : v3 2004-12-16 5:50pm PST 
| Useage      : /macro pull 
| Description : This macro will run your character around Pulling any mobs. 
|      This is definitely a work in progress and I am sure 
|      someone can think of plenty of upgrades for this. 
| : Ripped section Jdelpheki 
|      Modified for pull to area where Macro is started.  I have been using this 
|      2 level 45's Cleric Running genbot and Warrior running Pull2.  Ran for 4 hours 
|      Max with one cleric death. Needs Throwing weapon or arch support too 
|      Needs Genbot to announce its getting hit or get a new cleric script 
| : Ripped section hakcenter 
|      Pulls Any Mobs within radius (regardless of level) 
|      No Mob Array Required 
|      Looting Added 
|      *Looting -stuck on corpse bug fixed- 
|      Loot Table Array Support 
|      *Puller runs to pull spot after mob looting is finished 
|      *Removed Target Fail Counters 
|      *Checks for mobs every 30seconds, 1second 50radius checks 
|      *Reformated 
|      *On zoning(death whatever), quits everquest 
|      *Added more checks 
| 
|      2004-12-11 
| 
|      Added some squelching, always looking for mobs within range, 5 distance intervals 
|      Jacked Item Coding from Rogue Helper 
|      Fixed UI locking up 
|      Fixed Long Buff Casts 
|      Added Disarm to the Special Combat abilities 
| 
|      2004-12-16 
|      Revamped Close mob checking to 0.1second 100radius squelched 
|      Revamped Item casting to check for local mobs during.. and interupt if mob is near 100radius 
|      Removed mass escaping.. cause its retarded 
|      Fixed cool errors when accidently pushing esc while on a mob 
|      Fixed cool errors when accidently pushing esc while pulling a mob 
|      Added 1second before first item cast, incase item is worn... you get interupted cause its too fast 
| 
|------------------------------------------------------------------------------------ 

#turbo 10 
#Event Slain "#*# slain#*#" 
#Event Zoned "LOADING, PLEASE WAIT..." 
#Event ItemSet "[MQ2] ItemSet#*#" 
#Event ItemBounce "[MQ2] ItemBounce#*#" 
#Event ItemCast "[MQ2] ItemCast#*#" 

Sub Main 

   |------------------------------------------------------------ 
   |How far would you like to target a mob? 
   |------------------------------------------------------------ 
   /declare RV_MaxRadius        int outer  270
   |------------------------------------------------------------ 
   |How far is the fast movement range? 
   |------------------------------------------------------------ 
   /declare RV_FastRange        int outer  10 
   |------------------------------------------------------------ 
   |How far is the maximum combat range? 
   |------------------------------------------------------------ 
   /declare RV_RangeMax         int outer  30 
   |------------------------------------------------------------ 
   |How far is the minimum combat range? 
   |------------------------------------------------------------ 
   /declare RV_RangeMin         int outer  2 
   |------------------------------------------------------------ 
   |What is the minimum Z Value of mobs I should target? 
   |------------------------------------------------------------ 
   /declare RV_MinZRange        int outer  -200 
   |------------------------------------------------------------ 
   |What is the maximum Z Value of mobs I should target? 
   |------------------------------------------------------------ 
   /declare RV_MaxZRange        int outer  700 
   |------------------------------------------------------------ 
   |Loot Array Information. 
   |------------------------------------------------------------ 
   /call ReadINI PullLoot.ini "${Zone.Name}" Loot 
   /if (!${Defined[RV_LootArray]}) { 
      /echo No Loot Array Created... 
   } 
   |------------------------------------------------------------ 
   |Variables that you don't need to worry about. 
   |------------------------------------------------------------ 
   /declare RV_MyTargetID       int outer  0 
   /declare RV_MyTargetName     string outer 
   /declare RV_MyTargetDead     int outer  0 
   /declare RV_InvalidTargetID  int outer  0 
   /declare RV_HasTarget        int outer  0 
   /declare RV_RandomWait       int outer  0 
   /declare RV_LootSlot         int outer  0 
   /declare RV_CheckLook        int outer  0 
   /declare RV_Fighting         int outer  0 
   /declare RV_TargetDead       int outer  0 
   /declare RV_MyXLOC           int outer  0 
   /declare RV_MyYLOC           int outer  0 
   /declare RV_ObstacleCount    int outer  0 
   /declare RV_hitcount         int outer  0 
   /declare RV_healcheck        int outer  0 
   /declare RT_MyXLOC           int outer  ${Me.X} 
   /declare RT_MyyLOC           int outer  ${Me.Y}
   /declare hcast string outer TRUE
   /declare icast string outer TRUE

   /declare lastevent string outer None 
   /declare CheckBuffs int outer 0 
   /declare i int outer 
   /declare ialias string outer None 
   /declare doIclick bool outer FALSE 
   /declare bouncenum int outer 1 
   /declare ibounce string outer None 
   /declare itemspellname string outer None 
   /declare clicktimer timer outer 0 
   /squelch /alias /iset /echo ItemSet 
   /squelch /alias /ibounce /echo ItemBounce 
   /squelch /alias /iclick /echo ItemCast 
    
   /varset CheckBuffs 1 

   :Start 
      /doevents 
      /call GMCheck 
      /call GetTarget 
      /if (${RV_HasTarget}) /call Pull 
      /if (${RV_HasTarget}) /call CombatSub 
      /call ResetSub 
      /call MoveToLoc ${RT_MyyLOC} ${RT_MyXLOC} 
      /goto :Start 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Reading from an INI File 
|-------------------------------------------------------------------------------- 
Sub ReadINI(FileName,Loot,ArrayType) 
   /echo Attempting to Read Information from ${FileName}... 
   /declare nValues     int local  1 
   /declare nArray      int local  0 
   /declare KeySet      string local  ${Ini[${FileName}]} 
   /if (${Ini[${FileName},Loot,-1,NO].Equal[NO]}) { 
      /echo "${SectionName}" is not a Valid Section for FILE:${FileName}, ending macro... 
      /delay 1s 
      /return 
   } 
   :CounterLoop 
      /if (${String[${Ini[${FileName},Loot,${ArrayType}${nValues}]}].Equal[null]}) { 
         /varcalc nValues ${nValues}-1 
         /goto :MakeArray 
      } 
      /varcalc nValues ${nValues}+1 
      /goto :CounterLoop 
   :MakeArray 
      /if (!${nValues}) /return 
      /if (${FileName.Equal["PullLoot.ini"]}&&${nValues}>0) { 
         /echo Declaring Loot Array... 
         /declare RV_LootArray[${nValues}]  string outer 
         /declare RV_LootStats[${nValues}]  string outer 
      } 
      /for nArray 1 to ${nValues} 
      /if (${FileName.Equal["PullLoot.ini"]}) { 
         /varset RV_LootArray[${nArray}] ${Ini[${FileName},Loot,${ArrayType}${nArray}]} 
         /varset RV_LootStats[${nArray}] 0 
      } 
      /next nArray 
      /echo Information Read Successfully from ${FileName}... 
      /delay 1s 
/return 

|-------------------------------------------------------------------------------- 
|SUB: GM Check 
|-------------------------------------------------------------------------------- 
Sub GMCheck 
   /if (${Spawn[gm].ID}) { 
      /beep 
      /beep 
      /beep 
      /echo GM has entered the zone! 
      /echo FUCK HIM but ending the macro... 
      /keypress forward 
      /keypress back 
      /quit 
      /keypress 0
      /endmacro 
   } 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Aquire Target 
|-------------------------------------------------------------------------------- 
Sub GetTarget 
   /keypress esc
   /delay 3s
   /keypress 8
   /doevents 
   /declare SpawnTimer         int local 
   /declare RV_CurrentRadius   int local 
   /declare RV_TargetSub       int local 
   /echo Looking for Close Range Mobs 
   :Acquire 
      /doevents 
      /for RV_CurrentRadius 100 to ${RV_MaxRadius} step 5 
      /squelch /target radius ${RV_CurrentRadius} npc 
      /varset RV_MyTargetID ${Target.ID} 
      /varset RV_MyTargetDead 0 
      /if (${Target.ID}) { 
         /if (${Int[${Target.Z}]}<${RV_MinZRange}) { 
            /echo Mob is BELOW Min Z Range, picking another... 
            /varset RV_InvalidTargetID ${Target.ID} 
            /call ResetSub 
            /goto :Acquire 
         } 
         /if (${Int[${Target.Z}]}>${RV_MaxZRange}) { 
            /echo Mob is ABOVE Max Z Range, picking another... 
            /varset RV_InvalidTargetID ${Target.ID} 
            /call ResetSub 
            /goto :Acquire 
         } 
         /varset RV_HasTarget 1 
         /varset RV_MyTargetName ${Target.Name} 
         /echo Acquired ${Target.Name} at range ${Int[${Target.Distance}]} 
         /return 
      } 
      /if (${CheckBuffs}>0) { 
         /echo Checking Buffs 
         /call ItemCast 
         /varset CheckBuffs 0 
         /echo Aquiring Long Range Mobs 
      } 
      /next RV_CurrentRadius 
      /goto :Acquire 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Pull 
|-------------------------------------------------------------------------------- 
Sub Pull 
   /doevents 
   /echo Pulling Mob 
   /declare TargDist float local 
   :PullLoop 
      /doevents 
      /if (!${Me.Combat}) /attack on 
      /call MoveToMob 
      /if (!${Target.ID}) /return 
      /face fast 
      /if (${Target.PctHPs}==100) /goto :PullLoop 
      /if (${Target.PctHPs}<21) /return 
      /call MoveToLoc ${RT_MyyLOC} ${RT_MyXLOC} 
      /if (!${Target.ID}) /return 
      /face fast 
   :Engage 
      /varset TargDist ${Math.Distance[${Target.Y},${Target.X},0:${Me.Y},${Me.X},0]} 
      /if ( ${TargDist}<30 ) /return 
      /delay 1s 
      /goto :Engage 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Move to Mob 
|-------------------------------------------------------------------------------- 
Sub MoveToMob 
   /doevents 
   /varset RV_MyXLOC ${Int[${Me.X}]} 
   /varset RV_MyYLOC ${Int[${Me.Y}]} 
   /varset RV_ObstacleCount 0    
   :MovementLoop 
      /doevents 
      /if (!${Target.ID}) /return 
      /face fast 
      /varcalc RV_ObstacleCount ${RV_ObstacleCount}+1 
      /if (${Int[${Target.Distance}]}>${RV_FastRange}) /keypress forward hold 
      /if (${Int[${Target.Distance}]}<${RV_FastRange}&&${Int[${Target.Distance}]}>${RV_RangeMax}) /keypress forward 
      /if (${Int[${Target.Distance}]}<${RV_RangeMin}) /keypress back 
      /if (${RV_ObstacleCount}>=15) { 
         /call CheckObstacle 
         /goto :Movementloop 
      } 
      /if (${Int[${Target.Distance}]}>${RV_FastRange}) /goto :MovementLoop 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Move To Location 
|-------------------------------------------------------------------------------- 
Sub MoveToLoc(MoveToY, MoveToX) 
   /doevents 
   /declare running int local 
   /declare distanceNow float local 
   /declare distanceBefore float local 
   /declare distanceModifier int local 
   /declare distanceTimer timer 15 
   /varset running 0 
   /varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
   /varset distanceModifier 1 
   /echo Moving to Location: ${MoveToY}, ${MoveToX}. 
   /echo Distance: ${distanceBefore} 
   :moveToLocation 
      /doevents 
      /face fast nolook loc ${MoveToY},${MoveToX} 
      /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<10) { 
         /keypress forward 
         /return 
      } 
      /if (${distanceTimer}==0) { 
         /if (${Me.Sneaking}) { 
            /varset distanceModifier 2 
         } else { 
            /varset distanceModifier 1 
         } 
         /varset distanceNow ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
         /if (${Math.Calc[${distanceBefore}-${distanceNow}]}<${Math.Calc[10/${distanceModifier}]}) { 
         /call HitObstacle 
         } 
         /varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
         /varset distanceTimer 15 
      } 
      /if (${running}==0) { 
         /keypress forward 
            /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}>10) { 
               /varset running 1 
               /keypress forward hold 
            } 
      } else { 
         /if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<11) { 
            /varset running 0 
            /keypress forward 
         } 
      } 
      /goto :moveToLocation 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Obstacle Check 
|-------------------------------------------------------------------------------- 
Sub CheckObstacle 
   /doevents 
   /if ((${RV_MyXLOC}==${Int[${Me.X}]})&&(${RV_MyYLOC}==${Int[${Me.Y}]})) /call HitObstacle 
   /varset RV_MyXLOC ${Int[${Me.X}]} 
   /varset RV_MyYLOC ${Int[${Me.Y}]} 
   /varset RV_ObstacleCount 0 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Obstacle Avoidance 
|-------------------------------------------------------------------------------- 
Sub HitObstacle 
   /echo Obstacle hit, moving around it... 
   /keypress forward 
   /keypress back hold 
   /delay 3 
   /keypress back 
   /if (${Math.Rand[2]}) { 
      /keypress strafe_right hold 
   } else { 
      /keypress strafe_left hold 
   } 
   /delay 5 
   /keypress strafe_right 
   /keypress strafe_left 
   /keypress forward hold 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Combat 
|-------------------------------------------------------------------------------- 
Sub CombatSub 
   /doevents 
   /varset RV_Fighting 1 
   /varset RV_TargetDead 0 
   /echo Attacking Mob NOW!
   /varset hcast TRUE 
   /varset icast TRUE
   :CombatLoop
       /if (!${Me.Combat}) /attack on 
      /if (!${Target.ID}) /return 
      /if (${Spell[Lich Sting Recourse].Stacks} && !${Me.Buff[Lich Sting Recourse].ID} && ${Me.Combat}) /casting "Innoruuk's Dark Blessing"|Item
      /if (${Target.PctHPs}<45 && ${hcast}==TRUE) /call castage2
      /if (${Target.PctHPs}<80 && ${icast}==TRUE) /call castage3      
      /if (${Target.PctHPs}<75 && ${Me.Combat}) /call castage

      /call MoveToMob 
      /call SpecialIT 
      /if (!${RV_TargetDead}) /goto :CombatLoop 
      /doevents
/return 

Sub castage
/if (${Me.SpellReady[Vilify Rk. II]} && ${Target.PctHPs}<75 && ${Target.ID} && ${Me.Combat}) /cast "Vilify Rk. II"
/delay 5s !${Me.Casting}
/if (${Me.SpellReady[Revile Rk. III]} && ${Target.PctHPs}<75 && ${Target.ID} && ${Me.Combat}) /cast "Revile Rk. III"
/delay 5s !${Me.Casting}
/if (${Me.SpellReady[Burst of Spite Rk. II]} && ${Target.PctHPs}<75 && ${Target.ID} && ${Me.Combat}) /cast "Burst of Spite Rk. II"
/delay 5s !${Me.Casting}
/return

Sub castage2
/if (${Me.AltAbilityReady[Encroaching Darkness]} && ${hcast}==TRUE) /alt activate 826
/varset hcast FALSE
/return

Sub castage3
/if (${Me.SpellReady[Charge for Power Rk. III]} && ${icast}==TRUE)
/delay 5s !${Me.Casting}
/varset icast FALSE
/return


|-------------------------------------------------------------------------------- 
|SUB: Special Combat 
|-------------------------------------------------------------------------------- 
Sub SpecialIt 
   /doevents 
   /declare TempID    int inner  0 
   /if (${Target.Distance}<=17 && ${Me.AbilityReady[Backstab]}) { 
      /doability "Backstab" 
   } 
   /if (${Target.Distance}<=17 && ${Me.AbilityReady[Disarm]}) { 
      /doability "Disarm" 
   } 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Item Buffs 
|-------------------------------------------------------------------------------- 
Sub ItemCast 
   /doevents 
   /declare ItemDelay int inner 0 
   /varset ItemDelay 1 
   /varset i 1 
   :ItemCheckLoop 
      /doevents 
      /varset ialias ${Ini[PullItems.ini].Arg[${i},|]} 
      /if (${ialias.NotEqual[NULL]}) { 
         /if (${Ini[PullItems.ini,${ialias},KeepUp].Equal[FALSE]}) /goto :NextItem 
         /varset bouncenum 1 
         /varset doIclick TRUE 
         :BounceCheckLoop 
            /varset ibounce ${Ini[PullItems.ini,${ialias},BounceOff${bouncenum}]} 
               /if (${ibounce.NotEqual[NULL]}) { 
                  /if (${ibounce.Equal[${Me.Buff[${ibounce}]}]}) /varset doIclick FALSE 
               } else /goto :DoneBounceChecks 
            /varcalc bouncenum ${bouncenum}+1 
            /goto :BounceCheckLoop 
         :DoneBounceChecks 
            /varset itemspellname ${FindItem[${Ini[PullItems.ini,${ialias},FullName]}].Spell} 
            /if (${itemspellname.Equal[${Me.Buff[${itemspellname}]}]}) /varset doIclick FALSE 
            /squelch /target myself 
            /if (${doIclick}) { 
               /if (${ItemDelay}==1) { 
                  /delay 1s 
                  /varset ItemDelay 0 
               } 
            } 
            /if (${doIclick}) /docommand /iclick ${ialias} 
            /if (${clicktimer}) /goto :DoneItemChecks 
         :NextItem 
            /varcalc i ${i}+1 
      } else /goto :DoneItemChecks 
      /goto :ItemCheckLoop 
      :DoneItemChecks 
         /doevents 
         /squelch /target clear 
/return 

Sub Event_ItemSet(string Line) 
   /varset lastevent Event_ItemSet 
   /if (!${Line.Arg[5].Length} || ${Line.Arg[6].Length}) { 
      /if (${verbosity}>=0) /${channel} ** Improper use of /iset 
      /if (${verbosity}>=0) /${channel} -- /iset <itemalias> keepup|nokeepup <"Item Name"> 
      /if (${verbosity}>=0) /${channel} -- For example: 
      /if (${verbosity}>=0) /${channel} -- /iset gobby keepup "Shrunken Goblin Skull Earring" 
      /return 
   } 
   /ini "PullItems.ini" "${Line.Arg[3]}" "FullName" "${Line.Arg[5]}"  
   /ini "PullItems.ini" "${Line.Arg[3]}" "KeepUp" "${If[${Line.Arg[4].Equal[keepup]},TRUE,FALSE]}" 
   /if (${verbosity}>=0) /${channel} ** ${Line.Arg[5]} (KeepUp=${If[${Line.Arg[4].Equal[keepup]},TRUE,FALSE]}) updated in INI! 
/return 

Sub Event_ItemBounce(string Line) 
   /varset lastevent Event_ItemBounce 
   /if (!${Line.Arg[4].Length}) { 
      /if (${verbosity}>=0) /${channel} ** Improper use of /ibounce 
      /if (${verbosity}>=0) /${channel} -- /ibounce <itemalias> "Some Spell Name" 
      /if (${verbosity}>=0) /${channel} -- For example: 
      /if (${verbosity}>=0) /${channel} -- /ibounce gobby "Strength of Tunare" 
      /return 
   } 
   /if (!${Ini[PullItems.ini,${Line.Arg[3]}].Length}) { 
      /if (${verbosity}>=0) /${channel} ** [${Line.Arg[3]}] not in INI file! 
      /return 
   } 
   /declare bindex int local 1 
   :CheckNextKey 
      /if (${Ini[PullItems.ini,${Line.Arg[3]},BounceOff${bindex}].Length}) { 
         /varcalc bindex ${bindex}+1 
         /goto :CheckNextKey 
      } else { 
      /ini "PullItems.ini" "${Line.Arg[3]}" "BounceOff${bindex}" "${Line.Arg[4]}"  
      /if (${verbosity}>=0) /${channel} ** Added "${Line.Arg[4]}" to [${Line.Arg[3]}]'s bounce list 
      } 
/return 

Sub Event_ItemCast(string Line) 
   /varset lastevent Event_ItemCast 
   /if (!${Line.Arg[3].Length}) { 
      /if (${verbosity}>=0) /${channel} ** Improper use of /icast 
      /if (${verbosity}>=0) /${channel} -- /icast <itemalias> 
      /if (${verbosity}>=0) /${channel} -- For example: 
      /if (${verbosity}>=0) /${channel} -- /icast gobby 
      /return 
   } 
   /if (!${Ini[PullItems.ini,${Line.Arg[3]}].Length}) { 
      /if (${verbosity}>=0) /${channel} ** [${Line.Arg[3]}] not in INI file! 
      /return 
   } 
   /declare fullname string local ${Ini[PullItems.ini,${Line.Arg[3]},FullName]} 
   /if (${verbosity}>=1) /${channel} ** Attempting to use: ${fullname} 
   /if (${FindItem[${fullname}].InvSlot.Pack}) { 
      :OpenPack 
         /if (!${Window[${FindItem[${fullname}].InvSlot.Pack.Name}].Open}) { 
            /itemnotify ${FindItem[${fullname}].InvSlot.Pack.Name} rightmouseup 
            /delay 2 
            /goto :OpenPack 
         } 
         /declare camefrom ${FindItem[${fullname}].InvSlot} 
      :GrabItem 
         /if (!${Cursor.ID}) { 
            /itemnotify ${InvSlot[${camefrom}]} leftmouseup 
            /delay 2 
            /goto :GrabItem 
         } 
         /declare clickyID int local ${Cursor.ID} 
         /declare wornat int local ${Cursor.WornSlot[1]} 
      :SwapFirst 
         /if (${Cursor.ID}==${clickyID}) { 
            /itemnotify ${InvSlot[${wornat}]} leftmouseup 
            /delay 2 
            /goto :SwapFirst 
         } 
         /delay 2 
         /if (${verbosity}>=1) /${channel} ** Clicking: ${fullname} 
         /declare previousID ${Cursor.ID} 
         /itemnotify ${InvSlot[${wornat}]} rightmouseup 
      :SwapAgain 
         /if (${Cursor.ID}==${previousID}) { 
            /itemnotify ${InvSlot[${wornat}]} leftmouseup 
            /delay 2 
            /goto :SwapAgain 
         } 
      :PutItBack 
         /if (${Cursor.ID}==${clickyID}) { 
            /itemnotify ${InvSlot[${camefrom}]} leftmouseup 
            /delay 2 
            /goto :PutItBack 
         } 
      :SummonedCheck 
         /if (${Cursor.ID}) { 
            /autoinv 
            /delay 2 
            /goto :SummonedCheck 
         }    
      :ClosePack 
         /if (${Window[${InvSlot[${camefrom}].Pack.Name}].Open}) { 
            /itemnotify ${InvSlot[${camefrom}].Pack.Name} rightmouseup 
         /delay 2 
         /goto :ClosePack 
         } 
   } else { 
   /if (${FindItem[${fullname}].InvSlot}) { 
      /if (${verbosity}>=1) /${channel} ** Clicking: ${fullname} 
      /itemnotify ${FindItem[${fullname}].InvSlot} rightmouseup 
      /delay 2 
   } else { 
   /if (${verbosity}>=0) /${channel} ** "${fullname}" not found! 
      } 
   } 
   :CastLoop 
      /delay 1 
      /squelch /target radius 100 npc 
      /if (${Target.ID}) { 
         /if (${Target.CleanName.Equal[${Me.Name}]}) { 
            /squelch /target clear 
            /goto :CloseMobCheck 
         } 
         /keypress duck 
         /delay 1 
         /keypress duck 
         /delay 1 
         /return 
      } 
   :CloseMobCheck 
      /if (${Me.Casting.ID}) /goto :CastLoop 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Slain 
|-------------------------------------------------------------------------------- 

Sub Event_Slain 
   /varset RV_TargetDead 1 
   /varset RV_Fighting 0 
   /attack off 
   /target clear 
   /keypress forward 
   /keypress back 
   /squelch /target radius 30 corpse 
   /face fast 
   /if (${RV_HasTarget} && (${Defined[RV_LootArray]} || ${RV_LootAllItems})) /call LootMob 
/return 

|-------------------------------------------------------------------------------- 
|SUB: Zoned 
|-------------------------------------------------------------------------------- 
Sub Event_Zoned 
  /echo Zoned 
  /delay 60s 
  /quit 
  /endmacro 

|-------------------------------------------------------------------------------- 
|SUB: Looting 
|-------------------------------------------------------------------------------- 
Sub LootMob 
   /doevents 
  
/return 

|-------------------------------------------------------------------------------- 
|SUB: Reset 
|-------------------------------------------------------------------------------- 
Sub ResetSub 
   /doevents 
   /varset RV_HasTarget 0 
   /varset RV_TargetDead 0 
   /varset RV_Fighting 0 
/return
 
Last edited:
here is the errors i get ( lets hope its attached :p )
 

Attachments

  • EQ000105.bmp
    4.7 MB · Views: 17