• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Puller mod request... (1 Viewer)

Adamthebob

New member
Joined
Jul 10, 2007
RedCents
Hi there, would someone be kind enough to mod Puller.mac to have the following features please...

1) If the current target RESISTS a spell, he will recast until it lands.

2) If a spell WEARS OFF of the current target, he will recast.

I am having the problem of when my Ensnare doesn't land, the mob runs @ 18% and brings hell down on my poor little ranger.
This would be greatly appreciated.

Thanks very much!
 
Rich (BB code):
| Puller Macro
| Puller.mac
| Author : Alatyami: Ripped by 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
|
|------------------------------------------------------------------------------------
 
#include Spell_Routines.inc
#turbo 10
#include Exp_Tracking.inc
#Event Slain "#*# slain#*#"
#Event Zoned "LOADING, PLEASE WAIT..."
#Event ItemSet "[MQ2] ItemSet#*#"
#Event ItemBounce "[MQ2] ItemBounce#*#"
#Event ItemCast "[MQ2] ItemCast#*#"
#Event Worn_off "Your #1# spell has worn off of #2#."
 
Sub Main
 
|------------------------------------------------------------
|How far would you like to target a mob?
|------------------------------------------------------------
/declare RV_MaxRadius int outer 210
|------------------------------------------------------------
|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 100
|------------------------------------------------------------
|How far is the minimum combat range?
|------------------------------------------------------------
/declare RV_RangeMin int outer 10
|------------------------------------------------------------
|What is the minimum Z Value of mobs I should target?
|------------------------------------------------------------
/declare RV_MinZRange int outer -1000
|------------------------------------------------------------
|What is the maximum Z Value of mobs I should target?
|------------------------------------------------------------
/declare RV_MaxZRange int outer 1000
|------------------------------------------------------------
|Is your snare spell an aa ability?
|------------------------------------------------------------
/declare Alt		 int outer 0
 
|------------------------------------------------------------
|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
/call ExpPrep
: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: GMCheck
|--------------------------------------------------------------------------------
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
/endmacro
}
/return
 
|--------------------------------------------------------------------------------
|SUB: AquireTarget
|--------------------------------------------------------------------------------
Sub GetTarget
/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}
/target clear
/call ResetSub
/goto :Acquire
}
/varset RV_HasTarget 1
/varset RV_MyTargetName ${Target.Name}
/echo Acquired ${Target.Name} at range ${Int[${Target.Distance}]}
/return
}
 
/next RV_CurrentRadius
/goto :Acquire
/return
 
|--------------------------------------------------------------------------------
|SUB: Pull
|--------------------------------------------------------------------------------
Sub Pull
/declare spellrange int local 100
/varcalc spellrange ${spellrange}-5
/doevents
/echo Pulling Mob
/declare TargDist float local
:PullLoop
/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
/doevents
/if (${Me.Combat}) /attack off
/delay 1s
/call Cast "Ensnare" gem1 1m
/doevents
/delay 1s
/doevents
/goto :abc123_says_goto_is_for_fags
}
/if ((${Target.Distance}<${RV_RangeMin}) && (${Target.LineOfSight}) /keypress back
/if (!${Target.ID}) /return
/face fast
/if (${Target.PctHPs}==100) /goto :PullLoop
/if (${Target.PctHPs}<21) /return
:abc123_says_goto_is_for_fags
/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: MovetoMob
|--------------------------------------------------------------------------------
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: MoveToLocation
|--------------------------------------------------------------------------------
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: ObstacleCheck
|--------------------------------------------------------------------------------
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: ObstacleAvoidance
|--------------------------------------------------------------------------------
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: SpecialCombat
|--------------------------------------------------------------------------------
Sub SpecialIt
/doevents
/declare TempID int inner 0
/if (${Target.Distance}<=17 && ${Me.AbilityReady[Kick]}) {
/doability "Kick"
}
/if (${Target.Distance}<=17 && ${Me.AbilityReady[Disarm]}) {
/doability "disarm"
}
/if (${Target.Distance}<=17 && ${Me.AbilityReady[Taunt]}) {
/doability "Taunt"
}
/if (${Target.Distance}<=17 && ${Me.AltAbilityReady["Grappling Strike"]}) {
/alt act 601
}
/return
 
|--------------------------------------------------------------------------------
|SUB: Slain
|--------------------------------------------------------------------------------
 
Sub Event_Slain
/varset RV_TargetDead 1
/varset RV_Fighting 0
/attack off
/call ExpTrack
/target clear
/keypress forward
/keypress back
/return
 
|--------------------------------------------------------------------------------
|SUB: Zoned
|--------------------------------------------------------------------------------
Sub Event_Zoned
/echo Zoned
/delay 60s
/quit
/endmacro
 
 
|--------------------------------------------------------------------------------
|SUB: Reset
|--------------------------------------------------------------------------------
Sub ResetSub
/doevents
/varset RV_HasTarget 0
/varset RV_TargetDead 0
/varset RV_Fighting 0
/return
 
|--------------------------------------------------------------------------------
|SUB: Spell Worn Off
|--------------------------------------------------------------------------------
Sub Event_Worn_off(string Line, string myspell, string mytarget)
/declare oldt int local ${Target.ID}
/squelch /target clear
/target npc mytarget radius 50
/delay 5
/if (!${Target.ID}) {
/target id ${oldt}
/delay 5
/return
}
/if (!${Alt}) {
/call cast "${myspell}"
} else {
/call cast "${myspell}" alt
}
/delay 5
/target id ${oldt}
/return
 
|--------------------------------------------------------------------------------
|SUB: Spell Resisted
|--------------------------------------------------------------------------------
Sub Event_resist(string variable1, string myspell, string variable2)
/if (!${Alt}) {
/call cast "${myspell}"
} else {
/call cast "${myspell}" alt
}
/return
 
Last edited:
i added a warn off sub and resist sub, yeah. so if the spell wears off it'll target the mob, recast it, then target the mob that was targetted before the spell wore off..... if you can follow that :)
 
Ok, this is what happens... Damn I wish there was a log... this is a lot to type flipping between pages.

He pulls the mob, then when he casts ensnare...

/declarce 'i' failed. Name already in use.
Spell_Routines.inc@163(Cast(string spellName,String spellType, timer giveuptimer, string mysub)): /declare i int local
Puller.mac@211 (Pull): /call Cast "Ensnare" gem1 1m 7
Puller.mac@127 (Main): /if (${RV_HasTarget}) /call Pull
[MQ2] Casting Ensnare on >>A Ravenous Nightstalker<<
Subroutine 7 wasn't found.
Spell_Routines.inc@602 (Waitcast (string mysub)): /if (${Bool[${mysub}]}) /call ${mysub}
Spell_Routines.inc@285 (Cast(string spellName,String spellType, timer giveuptimer, string mysub)): /call waitcast ${mysub}
Puller.mac@211 (Pull): /call Cast "Ensnare" gem1 1m 7
Puller.mac@127 (Main): /if (${RV_HasTarget}) /call Pull
The current macro has ended.
 
Adamthebob said:
Ok, this is what happens... Damn I wish there was a log... this is a lot to type flipping between pages.

He pulls the mob, then when he casts ensnare...

/declarce 'i' failed. Name already in use.
Spell_Routines.inc@163(Cast(string spellName,String spellType, timer giveuptimer, string mysub)): /declare i int local
Puller.mac@211 (Pull): /call Cast "Ensnare" gem1 1m 7
Puller.mac@127 (Main): /if (${RV_HasTarget}) /call Pull
[MQ2] Casting Ensnare on >>A Ravenous Nightstalker<<
Subroutine 7 wasn't found.
Spell_Routines.inc@602 (Waitcast (string mysub)): /if (${Bool[${mysub}]}) /call ${mysub}
Spell_Routines.inc@285 (Cast(string spellName,String spellType, timer giveuptimer, string mysub)): /call waitcast ${mysub}
Puller.mac@211 (Pull): /call Cast "Ensnare" gem1 1m 7
Puller.mac@127 (Main): /if (${RV_HasTarget}) /call Pull
The current macro has ended.
You'll need to post your spell_routines.inc as well, but here's a fix for the "Subroutine 7 wasn't found" error.
 
Here's my Spell_Routines.inc

Ok, that fixed that part, but it's still saying

/declarce 'i' failed. Name already in use.
Spell_Routines.inc@163(Cast(string spellName,String spellType, timer giveuptimer, string mysub)): /declare i int local
Puller.mac@211 (Pull): /call Cast "Ensnare" gem1 1m 7
Puller.mac@127 (Main): /if (${RV_HasTarget}) /call Pull

...when the mob resists the spell, but does not recast.

And it also says

[MQ2] Spell "Your Target" was not found in your spellbook.
 
Last edited:
I'm having a problem with this macro. Im near a zone out door and it Says --------door0 "acbars301" targeted ------ even though a mob is on my target icon and then it spams the door thing and runs all shaky, like its trying to kill the targeted mob yet trying to run to the door. Any help would be great
 
Last edited:
Puller mod request...

Users who are viewing this thread

Back
Top