• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Vxed AFK Bard macro gets new instance... No warping outside of instance

CoderBob

New member
Joined
Aug 29, 2005
RedCents
I am submitting this to you for free access to the eq1 forums. I don't feel it is appropriate to post such a macro in the public display section due to it being a highly saught after macro and I don't want it getting stolen and pasted to another site. I tried pm'ing redsquirrel and emailing it to the [email protected] but as yet have not heard anything so I figured it was time to just post it here.

This is a modification to the vxed macro modified by Ripski and originally created by Redbot. However this macro is intended to maximize your dps by using more dots without drops plus uses cacaphony aa if you have it. It will also get you a new instance when yours expires. This macro has checks for GM's, Health below 60, Health below 45, Health below 42, autocamp upon death, etc. For this macro i use Cade's latest compile.

Notes are included in the macro for how songs are setup, how hotkeys are used, all is included.

Save this code in your macro's folder as Ubarvxed.mac. You can simply copy and paste the code using any text editor such as notepad or wordpad.

Rich (BB code):
| This macro made for www.Redguides.com
| Don't steal it or we'll punch your fase!
|-----  Macro semi-created by Taiisien
#turbo  
#Include advpath.inc 
#event dzgetnew "#*#You have entered Barindu#*#" 
#event restart "#*#You have entered Vxed#*#" 
#event log "nameofpersoningroup tells the group, 'we're done'
#event addplayeryouwanttoadd "playeryouwanttoadd tells you, 'invite me' 
#event dzaddplayeryouwanttoadd "playeryouwanttoadd tells you, 'add me'  
#event dead "You have entered The Plane of Knowledge"
|-------------------------------^^^^^^^^^^^^^^^^
|------------------------------Change to Bind zone 

|-----  The reason for a 13 song twist is to minimize the ammount of downtime due to refreshing selos when not needed.
|-----  With 13 songs it refreshes with plenty of time to prevent drops but still less often than if you did a 5 song twist.  

|-----  Also note i do not have a heal song in place as there are
|-----  three checks for hp's.  Innate regen should take care of any other hp recovery needed.


|-----  Alt ability 553 is number for the DoDh aa "Cacaphony".  The reason for using this is of course to increase dps.


|-----  Keypress 7 is the hotkey I have assigned to warp and start the macro
|-----  Keypress 8 is the hotkey I have assigned to start autoforage
|-----  Keypress 9 is the hotkey I have assigned to use Fading Memories


|-----  Spellgem 1-4 = DoT, 5 = Selos, 6 = unassigned, 7 = DA, 8 = heal, 9 = Selos song of travel


|-----  Notes on how to use:
|-----  When you first use this macro there are several things you must do.  First when you enter Vxed hit selos, second hit DA song, third 
|-----  hit macro hotkey, when you land from your warp you must hit numlock to start running, otherwise you just stand there and die.
|-----  Next if you want to hit your autoforage hotkey (mine is just one line that says /start forage).  Now that you are running and 
|-----  foraging everything else will be automatic until you turn the macro off.  When it zones you back in after a new instance is 
|-----  established there is no need to touch anything it is all included. 



|-----  This is your Main portion of the macro, this is responsible for all major events -----| 
Sub Main  
/declare SafeHP int outer 42
/declare CapTimer timer outer 0  
/call InitAPFVars 1 15 20
    
:loopstart 
/doevents  
/call GMcheck  
/if (${Me.PctHPs}<=45) /potionbelt Activate 1
/if (${Me.PctHPs}<=60) /potionbelt Activate 2
/if (${Me.PctHPs}<=${SafeHP} && ${Zone.ID}==290) /call RegenEvent
/if (${Target.Level}>67) {
/squelch /twist stop
/target npc next
/delay 30
/squelch /twist 1 2 3 4 1 2 3 4 1 2 3 4 5
}
/if (${Target.Name.Equal[A venomous stonemite]}) {
/squelch /twist stop
/target npc next
/delay 30
/squelch /twist 1 2 3 4 1 2 3 4 1 2 3 4 5
}
/if (${Target.Name.Equal[Misguided beludu Creque]}) {
/squelch /twist stop
/target npc next
/delay 30
/squelch /twist 1 2 3 4 1 2 3 4 1 2 3 4 5
}
/if (${Target.Distance}>220) /tar npc radius 220 
/if (${Target.ID}==FALSE) /tar npc radius 220  
|For the AA
/if (${Me.AltAbilityReady[553]} && ${Zone.ID}==290 && ${Target.PctHPs}>50 && ${Target.PctHPs}<98 && ${CapTimer}<=0) {
/alt act 553
/varset CapTimer 15m
}
/delay 10  
/goto :loopstart  
/return 


|-----  This is your GM check, this is responsible for using fade, ending the macro, and camping you if a GM enters zone -----|
 Sub GMcheck  
 /if (${Spawn[gm].ID}) {  
 /echo Gm detected  
 /beep 
 /beep 
 /beep  
 /keypress 9 
 /endmac 
 /unload 
 /q  
 }  
 /return 


|-----  This is your get new event, this is responsible for running you to Udranda, getting new instance, returning you to Vxed -----|
Sub event_dzgetnew
/keypress forward
/circle off
/twist off
/twist 9
/delay 3s
/call PlayFunction "VxedZI_to_Udranda 1 cf nopp noz"
/call WaitTilThere
/twist 8
/target Apprentice Udranda
/hail
/delay 3s
/say vxed
/twist 9
/keypress esc
/keypress esc
/doevents flush
/call PlayFunction "Udranda_to_VxedZI 1 cf nopp noz"
/call WaitTilThere
/face heading 0
/twist 5
/dzadd leanda
/dzadd toon2
/dzadd toon3
/dzadd toon4
/invite leanda
/invite toon2
/invite toon3
/invite toon4
/delay 4s
/twist off
/keypress forward hold
/return


|-----  This is your restart event, this is responsible for getting you back to kite area and begining the kite safely -----|
Sub event_restart
/twist 7
/delay 4s
/twist off
/delay 1s
/keypress 7
/delay 1s
/keypress forward hold
/delay 1s
/keypress 8
/return


|-----  This is your log event, this is responsible for camping you to desktop based upon a key phrase from a group mate -----|
 Sub event_log 
 /sit  
 /camp desktop  
 /return 




|-----  This is your dzadd event, this is responsible for adding people to your instance -----|
|-----  Change the words "personyouwanttoadd" to the actual persons name -----|
 sub event_dzaddpersonyouwanttoadd 
 /dzadd personyouwanttoadd 
 /return 


|-----  This is your invite event, this is responsible for adding people to your group -----|
|-----  Change the words "personyouwanttoadd" to the actual persons name -----|
 sub event_invitepersonyouwanttoadd  
 /invite 
 /return 


|-----  This is your dead event, this is responsible for camping you to desktop when you die -----|
 sub event_dead 
 /delay 5s  
 /sit  
 /camp desktop  
 /endmac 
 /return



|-----  This is your regen event, this is responsible for getting you out of harms way and regening your health -----|
Sub RegenEvent
/keypress 9
/keypress 9
/warp succor
/keypress back
/circle off
/twist 8 
/delay 4s
/sit
:hpcheck
/if (${Me.PctHPs}==100) /call continue
/if (${Me.PctHPs}<100) /goto :hpcheck
/return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Wait Till there - movement wait
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Sub WaitTilThere
 :LoopTilThere
 /if (${PathingFlag}==1) {
 /call AdvPathPoll
 /delay 0
 /doevents
 /goto :LoopTilThere
 }
 /return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Continue - Restarts after Help initiated
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub continue
/sit off
/delay 1s
/twist 5
/delay 4s
/twist 7
/delay 4s
/twist off
/delay 1s
/keypress 7
/delay 1s
/keypress forward hold
/delay 1s
/keypress 8
/call main
/return


|-------------------------------------------------------------------------------|
|-------------------------------------------------------------------------------|
|-----  Credits to include all the hard work of the people at Redguides, specifically to include -----|
|-----  Ripski, Tone, Redbot, and Army Soldier and especially Cade for his compile. -----|
|-----  without their contributions this would not have happened. -----|
|-------------------------------------------------------------------------------|
|-------------------------------------------------------------------------------|

In addition to the macro these are the hotkeys i use


start.jpg

this is the hotkey i use after i have zoned in and have da song on. after warp just hit numlock and it goes.

stop.jpg

just in case i need to stop everything i hit this, then hit fade once i have run up on a wall.

help.jpg

basically a succor hotkey just in case i get into trouble while at the keyboard.

forage.jpg

Used to start auto forage,
 
Last edited:
To add: Your first hotkey setting shows "/pause 5, /face heading -110".

This doesn't work, the command isn't accepted. What you should change it to is "/face fast heading -110". If you leave out the fast, it will warp before you end up facing that direction.

Another addition: "/face fast heading -98" seems to work better for me than the other one. It makes you run around the tree just barely and ends up keeping the mobs in the center more often than not.
 
i had originally had a problem with the face heading but when i put in the /pause 5 before it (which actually makes it happen after the face heading) it cleared up at least for me and i have been using it for a bit over a week and a half now.

with the -98 yeah i had also tried that, but i like going to third person view and turning the camera angle so it appears i am lookin at my toon from the gate, when he went around the tree it would sometimes alter how i saw the toon but either that work for you i say to use. i guess it is a matter of personal preference really though.

Thanks for the feedback, lol was begining to wonder if anyone was even gonna try it.
 
I tried it, and whenever my bard warps to safe loc to regen, he doesnt go back to kiting again, he just sits there, any ideas?
 
hmm i am having this problem for the last two days too, i cannot see why it is hapening since it says to do the same thing when at 100% that it does upon zoning in after getting a new instance. i will be playing around with it today to try and figure out why it is doing this.
 
Ok thanks to the help of cade i finally got this working correctly. The code in the original post has been updated with my current version.

sylkkdaskr, it will now restart the macro once your health returns to 100%.

darkeros, corrected the /camp desk to /camp desktop, that was a throwback from an earlier compile i was still running.

New additions are the use of advpath.inc to get the instance. you can use these files. just copy and paste them with correct names to your macro's folder.

copy the following code and save as PathFile_Udranda_to_VxedZI.ini
Rich (BB code):
[PFLocs]
0=243.34 -742.52 -124.37
1=214.70 -763.11 -114.03
2=190.74 -794.66 -113.12
3=174.55 -828.43 -113.92
4=161.90 -863.95 -120.17
5=155.18 -900.94 -117.40
6=154.30 -939.14 -120.62
7=160.75 -976.56 -118.31
8=167.45 -1015.11 -119.93
9=178.52 -1050.48 -117.86
10=196.68 -1084.61 -120.62
11=220.07 -1113.84 -120.62
12=245.03 -1144.35 -120.62
13=277.41 -1163.07 -120.62
14=310.72 -1179.33 -117.62
15=345.40 -1196.25 -120.34
16=380.70 -1213.48 -116.93
17=414.63 -1228.31 -117.33
18=449.78 -1241.87 -120.53
19=478.14 -1248.66 -119.48
20=496.03 -1250.41 -119.10
21=508.51 -1251.63 -118.74
22=531.54 -1253.89 -118.65

save this as PathFile_VxedZI_to_Udranda.ini
Rich (BB code):
[PFLocs]
0=540.76 -1250.28 -120.15
1=527.89 -1250.12 -119.02
2=490.57 -1248.71 -119.26
3=451.94 -1244.22 -120.28
4=414.30 -1238.59 -116.84
5=377.78 -1231.03 -120.36
6=340.92 -1219.81 -120.62
7=305.23 -1207.04 -120.03
8=272.56 -1188.11 -118.67
9=244.71 -1162.85 -120.62
10=217.96 -1133.55 -120.62
11=200.23 -1104.71 -120.62
12=184.21 -1068.62 -119.30
13=173.09 -1033.44 -118.74
14=162.48 -997.36 -118.40
15=152.87 -959.50 -119.89
16=148.06 -913.69 -120.08
17=151.02 -867.87 -118.38
18=167.52 -825.60 -115.37
19=190.10 -793.29 -113.21
20=215.22 -763.22 -113.69
21=238.07 -739.47 -124.37

lastly save this (posted HERE on macroquest2.com)as advpath.inc (yes still save it in the macros folder).

Rich (BB code):
|advpath.inc
|Generic movement/pathing macro for inclusion in your own macros.
|Version 1.31
|Date:08/08/2004
|
||**
[advpath]
version=1.31
**|

#include advpath2.inc

#Event LocalRecord "[MQ2] record#*#"
#Event LocalPlot "[MQ2] plot#*#"
#Event LocalDistance "[MQ2] distance#*#"
#Event LocalPlay "[MQ2] play:#*#"
#Event LocalStop "[MQ2] stop#*#"
#Event LocalGoto "[MQ2] goto#*#"
#Event LocalPause "[MQ2] pause#*#"
#Event LocalFollow "[MQ2] follow#*#"
#Event LocalSilent "[MQ2] silent#*#"
#Event LocalPattern "[MQ2] pattern:#*#"
#Event LocalAddMod "[MQ2] +#*#"
#Event LocalSubMod "[MQ2] -#*#"
#Event ZoneEvent "#*#You have entered#*#"

Sub AdvPathPoll
/if (${PathingFlag}==1 && ${CheckLocTimer}<=0) /call IncrementLoc ${LocArray[${CurrLoc}].Arg[1]} ${LocArray[${CurrLoc}].Arg[2]} ${LocArray[${CurrLoc}].Arg[3]}
/if (${RecordPathFlag}==1) /call RecordPath
/if (${FollowFlag}==1) {
    /call TrackFollow
    /call CheckForTarget
    /if (${CheckLocTimer}<=0 && ${PauseFlag}==0 && ${NumLocs}>${CurrLoc}) /call FollowIncLoc ${LocArray[${CurrLoc}].Arg[1]} ${LocArray[${CurrLoc}].Arg[2]} ${LocArray[${CurrLoc}].Arg[3]}
}
/return


Sub ShapePlot(ObjectNumSides,ObjectSize,CharStartY,CharStartX,CharStartZ)
/declare PointNumber int local
/for PointNumber 1 to ${ObjectNumSides}
    /varset XCoordinate[${PointNumber}] ${Math.Calc[${Math.Calc[${ObjectSize}*${Math.Cos[${Math.Calc[${Math.Calc[360/${ObjectNumSides}]}*${Math.Calc[${PointNumber}-1]}]}]}]}+${CharStartX}]}
    /varset YCoordinate[${PointNumber}] ${Math.Calc[${Math.Calc[${ObjectSize}*${Math.Sin[${Math.Calc[${Math.Calc[360/${ObjectNumSides}]}*${Math.Calc[${PointNumber}-1]}]}]}]}+${CharStartY}]}
    /varset ZCoordinate[${PointNumber}] ${CharStartZ}
/next PointNumber
/for PointNumber 1 to ${ObjectNumSides}
    /varset LocArray[${PointNumber}] ${YCoordinate[${PointNumber}]} ${XCoordinate[${PointNumber}]} ${ZCoordinate[${PointNumber}]}
/next PointNumber
/varset CurrLoc 1
/varset NumLocs ${ObjectNumSides}
/return


Sub TargetMob(TgtName)
/declare a int local
/if (${NearestSpawn[1,pc "${TgtName}"].ID}>0) {
    /if (${FollowFlag}==1 && ${ZoneTimer}==0) {
        /for a 0 to ${Group}
            /if (${Group[${a}].Name.Equal[${TgtName}]}) /return
        /next a
    }
    /target clear
    /call Delay 2
    /target pc "${TgtName}"
    /call Delay 4
    /if (${Target.ID} && ${Target.CleanName.Equal["${TgtName}"]}) {
        /varset ZoneTimer 0
        /varset ZoneFlag 0
        /varset FollowFlag 1
        /varset FollowID ${Target.ID}
        /if (${CurrLoc}==1) /varset CurrFollLoc ${Spawn[${FollowID}].Y} ${Spawn[${FollowID}].X} ${Spawn[${FollowID}].Z}
        /if (${SilentFlag}==0) /echo -[ Following -( ${Target.CleanName} )- ]-
    }
} else /if (${NearestSpawn[1,npc "${TgtName}"].ID}>0) {
    /target clear
    /call Delay 2
    /target npc "${TgtName}"
    /call Delay 4
    /if (${Target.ID}>0 && ${Target.CleanName.Equal["${TgtName}"]}) {
        /varset ZoneTimer 0
        /varset ZoneFlag 0
        /varset FollowFlag 1
        /varset FollowID ${Target.ID}
        /if (${CurrLoc}==1) /varset CurrFollLoc ${Spawn[${FollowID}].Y} ${Spawn[${FollowID}].X} ${Spawn[${FollowID}].Z}
        /if (${SilentFlag}==0) /echo -[ Following -( ${Target.CleanName} )- ]-
    }
} else /if (${ZoneFollow}==1) {
    /if (${CurrLoc}==${NumLocs}) {
        /if (${ZoneTimer}>0) {
            /varset ZoneFlag 1
            /delay 1s
        } else {
            /if (${ZoneFlag}==0) {
                /call ClearLocs
                /call TryToZone
            } else {
                /varset ZoneFlag 0
                /varset FollowID 0
                /call StopFunction
            }
        }
    }
}
/return


Sub TrackFollow
/declare TempIndex int local
/if (${FollowFlag}==1) {
    /if (${FollowID}>0) {   
        /if (${NumLocs}==1) {
            /if (${Spawn[${FollowID}].Distance3D}>${FollowDistance}) {
                /if (!${Me.Moving}) {
                    /varset LocArray[${NumLocs}] ${CurrFollLoc}
                    /varset NumLocs ${Math.Calc[${NumLocs}+1]}
                }
                /varset LocArray[${NumLocs}] ${Spawn[${FollowID}].Y} ${Spawn[${FollowID}].X} ${Spawn[${FollowID}].Z}
                /call StoreHeading ${NumLocs}
                /if (${LocArray[${NumLocs}].NotEqual["0 0 0"]} && ${LocArray[${NumLocs}].NotEqual["NULL NULL NULL"]}) /varset NumLocs ${Math.Calc[${NumLocs}+1]}
            }
        } else {
            /varset TempIndex ${Math.Calc[${NumLocs}-1]}
            /if (${Math.Distance[${LocArray[${TempIndex}].Arg[1]},${LocArray[${TempIndex}].Arg[2]},${LocArray[${TempIndex}].Arg[3]}:${Spawn[${FollowID}].Y},${Spawn[${FollowID}].X},${Spawn[${FollowID}].Z}]}>${If[${Spawn[${FollowID}].Speed}!=0,${Math.Calc[${Math.Calc[${Spawn[${FollowID}].Speed}/${SpeedSense}]}+${DistanceModifier}]},${Math.Calc[${Math.Calc[200/${SpeedSense}]}+${DistanceModifier}]}]}) {
                /varset LocArray[${NumLocs}] ${Spawn[${FollowID}].Y} ${Spawn[${FollowID}].X} ${Spawn[${FollowID}].Z}
                /if ((${LocArray[${NumLocs}].NotEqual["0 0 0"]} && ${LocArray[${NumLocs}].NotEqual["NULL NULL NULL"]})&&(${Math.Distance[${LocArray[${TempIndex}].Arg[1]},${LocArray[${TempIndex}].Arg[2]},${LocArray[${TempIndex}].Arg[3]}:${Spawn[${FollowID}].Y},${Spawn[${FollowID}].X},${Spawn[${FollowID}].Z}]}<500)) /varset NumLocs ${Math.Calc[${NumLocs}+1]}
            }
        }
    }
}
/doevents
/return


Sub StoreHeading(Index)
/varset StoreHeading ${Heading[${LocArray[${Index}].Arg[1]},${LocArray[${Index}].Arg[2]}].DegreesCCW}
/return


Sub TryToZone
/declare InCurrZone string local
/declare TempStoreTgt int local
/varset TempStoreTgt 0
/varset InCurrZone ${Zone.Name}
/call Move 0
/if (${Target.ID}>0) /varset TempStoreTgt ${Target.ID}
/doortarget
/delay 3
/if (${Target.Name.Find["port"]} || ${Target.Name.Find["tele"]} || ${Target.Name.Find["prtl"]}) /goto :Port
/goto :NotPort
:Port
/if (${Target.Distance}<=50) {
    /if (${PBFace.Equal[facef]}) {
        /face fast nolook door
    } else {
        /face fast nolook away door
    }
    :ZoneMoveCloser
    /if (${Target.Distance}>15) /call SimpleKeyPress FORWARD 1 0
    /if (${Target.Distance}<11) /call SimpleKeyPress BACK 1 0
    /if (${Target.Distance}>15) /goto :ZoneMoveCloser
    /if (${Target.Distance}<11) /goto :ZoneMoveCloser
    /keypress USE hold
    /keypress USE
    /delay 1
    /keypress USE hold
    /keypress USE
    /varset ZoneTimer 5s
    :WaitForZone
    /delay 1
    /if (${Zone.Name.NotEqual["${InCurrZone}"]}) /goto :Zoned
    /if (${ZoneTimer}>0) /goto :WaitForZone
    /if (${TempStoreTgt}>0) {
        /if (${Spawn[${FollowID}].ID}>0) /target id ${TempStoreTgt}
    } else {
        /target clear
    }
    :Zoned
}
:NotPort
/if (${Zone.Name.Equal["${InCurrZone}"]}) {
    /if (${PBFace.Equal[facef]}) {
        /keypress FORWARD
        /keypress FORWARD hold
        /delay 2s
        /keypress FORWARD
    } else {
        /keypress BACK
        /keypress BACK hold
        /delay 2s
        /keypress BACK
    }
    /if (${TempStoreTgt}>0) {
        /if (${Zone.Name.Equal["${InCurrZone}"]} && ${Spawn[${TempStoreTgt}].ID}>0) /target id ${TempStoreTgt}
    } else {
        /target clear
    }
    /varset ZoneTimer 20s
    :WaitForZone2
    /delay 1
    /if (${Zone.Name.NotEqual["${InCurrZone}"]}) /goto :Zoned2
    /if (${ZoneTimer}>0) /goto :WaitForZone2
    /if (${SilentFlag}==0) /echo  -(( Couldn't zone properly.  Stopping. ))-     
    /varset PauseHolder NULL
    /varset PauseFlag 0
    /varset PathingFlag 0
    /varset FollowFlag 0
    /varset RecordPathFlag 0
    /call ClearLocs
    :Zoned2
}
/call Move 0
/return


Sub FollowFunction(FuncText)
/if (${PauseFlag}==0) {
    /if (${PathingFlag}==0) {
        /if (${RecordPathFlag}==0) {
            /if (${FuncText.Length}==0) {
                /varset FollowName NULL
            } else {
                /varset FollowName ${FuncText}
            }
            /if (${FollowName.NotEqual["NULL"]}) {
                /call ClearLocs
                /call Move 0
                /call TargetMob "${FollowName}"
                /varset PBFace facef
            } else {
                /if (${SilentFlag}==0) /echo -(( No follow target specified. You must provide the name of the npc/player you want to follow. ))-
            }
        } else {
            /if (${SilentFlag}==0) /echo -(( You cannot start following while recording a pathfile! ))-
        }
    } else {
        /if (${SilentFlag}==0) /echo -(( You cannot start following while playing back a pathfile! ))-
    }
} else {
    /if (${SilentFlag}==0) /echo -(( You cannot start following while paused! ))-
}
/return


Sub Event_LocalFollow(EvtText)
/if (${EvtText.Mid[7,6].Equal["follow"]}) {
    /call FollowFunction "${EvtText.Right[-13]}"
}
/return


Sub PauseFunction
/if (${PauseFlag}==0) {
    /if (${PathingFlag}==0) {
        /if (${FollowFlag}==0) {
            /if (${RecordPathFlag}==0) {
                /if (${SilentFlag}==0) /echo -(( There is nothing to pause or unpause! ))-
            } else {
                /varset PauseFlag 1
                /varset PauseHolder record
                /varset RecordPathFlag 0
                /if (${SilentFlag}==0) /echo -[ PAUSED recording of path file -( ${RecordPFName} )- ]-
                /if (${SilentFlag}==0) /echo -[ Issue the pause command again to resume recording. ]-
            }
        } else {
            /varset PauseFlag 1
            /varset PauseHolder follow
            /call Move 0
            /if (${SilentFlag}==0) /echo -[ PAUSED following of -( ${FollowName} )- ]-
            /if (${SilentFlag}==0) /echo -[ Issue the pause command again to resume following. ]-
        }
    } else {
        /varset PauseFlag 1
        /varset PauseHolder playback
        /varset PathingFlag 0
        /call Move 0
        /if (${SilentFlag}==0) /echo -[ PAUSED playback of path file -( ${PBPFName} )- ]-
        /if (${SilentFlag}==0) /echo -[ Issue the pause command again to resume playback. ]-
    }
} else {
    /if (${PauseHolder.Equal["record"]}) {
        /varset PauseFlag 0
        /varset RecordPathFlag 1
        /if (${SilentFlag}==0) /echo -[ RESUMED recording of path file -( ${RecordPFName} )- ]-
    }
    /if (${PauseHolder.Equal["playback"]}) {
        /varset PauseFlag 0
        /varset PathingFlag 1
        /if (${SilentFlag}==0) /echo -[ RESUMED playback of path file -( ${PBPFName} )- ]-
    }
    /if (${PauseHolder.Equal["follow"]}) {
        /varset PauseFlag 0
        /if (${SilentFlag}==0) /echo -[ RESUMED following of -( ${FollowName} )- ]-
    }
}
/return


Sub Event_LocalPause(EvtText)
/if (${EvtText.Mid[7,5].Equal["pause"]}) {
    /call PauseFunction
}
/return


Sub PlotFunction
/if (${ManualRecord}==1) {
    /if (${RecordPathFlag}==1) {
        /varset LocArray[${NumLocs}] ${Me.Y} ${Me.X} ${Me.Z}
        /if (${SilentFlag}==0) /echo Location: Y:${LocArray[${NumLocs}].Arg[1]} X:${LocArray[${NumLocs}].Arg[2]} Z:${LocArray[${NumLocs}].Arg[3]} Plotted
        /varset NumLocs ${Math.Calc[${NumLocs}+1]}
    } else {
        /if (${PauseFlag}==0) {
            /if (${SilentFlag}==0) /echo -[ You aren't recording anything! ]-
        } else {
            /if (${SilentFlag}==0) /echo -[ You must unpause your recording in order to plot! ]-
        }
    }
} else {
    /if (${SilentFlag}==0) /echo -[ You are not in Manual Record Mode! ]-
}
/return


Sub Event_LocalPlot(EvtText)
/if (${EvtText.Mid[7,4].Equal["plot"]}) {
    /call PlotFunction
}
/return


Sub PlayFunction(FuncText)
/declare PlayNm string local
/declare PlayItr string local
/declare PlayDctn string local
/declare PlayPong string local
/declare PlayZn string local
/declare PlayFace string local
/declare TempCountVar int local
/if (${PauseFlag}==0) {
    /if (${PathingFlag}==0) {
        /if (${RecordPathFlag}==0) {
            /if (${FollowFlag}==0) {
                /if (${GetMoreCommands}==1) {
                    /varset GetMoreCommands 0
                } else {
                    /varset PlayQueueNum 1
                }

                :InitParse
                :ParsePlayCommands

                /if (${FuncText.Find[" "]}>0) /varset PlayNm ${FuncText.Left[${FuncText.Find[" "]}]}
                /if (${FuncText.Find[" "]}>0) /varset FuncText ${FuncText.Right[${Math.Calc[${FuncText.Length}-${FuncText.Find[" "]}]}]}

                /if (${FuncText.Find[" "]}>0) /varset PlayItr ${FuncText.Left[${FuncText.Find[" "]}]}
                /if (${FuncText.Find[" "]}>0) /varset FuncText ${FuncText.Right[${Math.Calc[${FuncText.Length}-${FuncText.Find[" "]}]}]}

                /if (${FuncText.Find[" "]}>0) /varset PlayDctn ${FuncText.Left[${FuncText.Find[" "]}]}
                /if (${FuncText.Find[" "]}>0) /varset FuncText ${FuncText.Right[${Math.Calc[${FuncText.Length}-${FuncText.Find[" "]}]}]}

                /if (${FuncText.Find[" "]}>0) /varset PlayPong ${FuncText.Left[${FuncText.Find[" "]}]}
                /if (${FuncText.Find[" "]}>0) /varset FuncText ${FuncText.Right[${Math.Calc[${FuncText.Length}-${FuncText.Find[" "]}]}]}

                /if (${FuncText.Arg[2].Find["facef"]}>0 || ${FuncText.Arg[2].Find["faceb"]}>0) {
                    /if (${FuncText.Find[";"]}>0) {

                        /if (${FuncText.Find[" "]}>0) /varset PlayZn ${FuncText.Left[${Math.Calc[${FuncText.Find[" "]}-1]}]}
                        /if (${FuncText.Find[" "]}>0) /varset FuncText ${FuncText.Right[${Math.Calc[${FuncText.Length}-${FuncText.Find[" "]}]}]}

                        /varset PlayFace ${FuncText.Left[${Math.Calc[${FuncText.Find[";"]}-1]}]}
                        /varset FuncText ${FuncText.Right[${Math.Calc[${FuncText.Length}-${FuncText.Find[";"]}]}]}

                        /if (${PlayNm.Length}!=0 && ${PlayItr.Length}!=0 && ${PlayDctn.Length}!=0 && ${PlayPong.Length}!=0 && ${PlayZn.Length}!=0 && ${PlayFace.Length}!=0) {
                            /varset PlayCommandQueue[${PlayQueueNum}] ${PlayNm} ${PlayItr} ${PlayDctn} ${PlayPong} ${PlayZn} ${PlayFace}
                            /varset PlayQueueNum ${Math.Calc[${PlayQueueNum}+1]}
                            /goto :InitParse
                        } else {
                            /if (${SilentFlag}==0) /echo -(( Playback syntax error detected.  Please try your command again. ))-
                            /return
                        }
                    } else {
                        /if (${FuncText.Find["+"]}>0) {

                            /if (${FuncText.Find[" "]}>0) /varset PlayZn ${FuncText.Left[${FuncText.Find[" "]}]}
                            /if (${FuncText.Find[" "]}>0) /varset FuncText ${FuncText.Right[${Math.Calc[${FuncText.Length}-${FuncText.Find[" "]}]}]}

                            /varset PlayFace ${FuncText.Left[${Math.Calc[${FuncText.Find["+"]}-1]}]}
                            /varset GetMoreCommands 1
                        } else {
                            /if (${FuncText.Find[" "]}>0) /varset PlayZn ${FuncText.Left[${FuncText.Find[" "]}]}
                            /if (${FuncText.Find[" "]}>0) /varset FuncText ${FuncText.Right[${Math.Calc[${FuncText.Length}-${FuncText.Find[" "]}]}]}
                            /varset PlayFace ${FuncText}
                        }

                        /if (${PlayNm.Length}!=0 && ${PlayItr.Length}!=0 && ${PlayDctn.Length}!=0 && ${PlayPong.Length}!=0 && ${PlayZn.Length}!=0 && ${PlayFace.Length}!=0) {
                            /varset PlayCommandQueue[${PlayQueueNum}] ${PlayNm} ${PlayItr} ${PlayDctn} ${PlayPong} ${PlayZn} ${PlayFace}
                            /if (${GetMoreCommands}==1) /varset PlayQueueNum ${Math.Calc[${PlayQueueNum}+1]}
                            /goto :DonePlayParse
                        } else {
                            /if (${SilentFlag}==0) /echo -(( Playback syntax error detected.  Please try your command again. ))-
                            /return
                        }
                    }
                } else {
                    /if (${FuncText.Find[";"]}>0) {
                        /if (${FuncText.Find[";"]}>0) /varset PlayZn ${FuncText.Left[${Math.Calc[${FuncText.Find[";"]}-1]}]}
                        /if (${FuncText.Find[";"]}>0) /varset FuncText ${FuncText.Right[${Math.Calc[${FuncText.Length}-${FuncText.Find[";"]}]}]}

                        /if (${PlayNm.Length}!=0 && ${PlayItr.Length}!=0 && ${PlayDctn.Length}!=0 && ${PlayPong.Length}!=0 && ${PlayZn.Length}!=0) {
                            /varset PlayCommandQueue[${PlayQueueNum}] ${PlayNm} ${PlayItr} ${PlayDctn} ${PlayPong} ${PlayZn} facef
                            /varset PlayQueueNum ${Math.Calc[${PlayQueueNum}+1]}
                            /goto :InitParse
                        } else {
                            /if (${SilentFlag}==0) /echo -(( Playback syntax error detected.  Please try your command again. ))-
                            /return
                        }
                    } else {
                        /if (${FuncText.Find["+"]}>0) {
                            /varset PlayZn ${FuncText.Left[${Math.Calc[${FuncText.Find["+"]}-1]}]}
                            /varset GetMoreCommands 1
                        } else {
                            /varset PlayZn ${FuncText}
                        }

                        /if (${PlayNm.Length}!=0 && ${PlayItr.Length}!=0 && ${PlayDctn.Length}!=0 && ${PlayPong.Length}!=0 && ${PlayZn.Length}!=0) {
                            /varset PlayCommandQueue[${PlayQueueNum}] ${PlayNm} ${PlayItr} ${PlayDctn} ${PlayPong} ${PlayZn} facef
                            /if (${GetMoreCommands}==1) /varset PlayQueueNum ${Math.Calc[${PlayQueueNum}+1]}
                            /goto :DonePlayParse
                        } else {
                            /if (${SilentFlag}==0) /echo -(( Playback syntax error detected.  Please try your command again. ))-
                            /return
                        }
                    }
                }

                :DonePlayParse

                /if (${GetMoreCommands}==1) {
                    /if (${SilentFlag}==0) /echo -[ Path Extender Detected. ${Math.Calc[${PlayQueueNum}-1].Int} commands queued.  Continue entering lines. ]-
                    /return
                }

                /if (${SilentFlag}==0) /echo -[------------------------------------------------]-
                /if (${SilentFlag}==0) /echo -[ There ${If[${PlayQueueNum}==1,is,are]} ${PlayQueueNum} ${If[${PlayQueueNum}==1,path,paths]} to be run.
                /if (${SilentFlag}==0) /echo -[------------------------------------------------]-
                /for TempCountVar 1 to ${PlayQueueNum}
                    /if (${SilentFlag}==0) /echo -[ Path Command ${TempCountVar}: ${PlayCommandQueue[${TempCountVar}]}
                /next TempCountVar
                /if (${SilentFlag}==0) /echo -[------------------------------------------------]-

                /varset PlayQueueCurr 1
                /call GetCommand
                /call LoadPathFile "${PBPFName}"
                /if (${Macro.Return}==0) {
                    /if (${SilentFlag}==0) /echo -[ Started play back of path file -( ${PBPFName} )- ]-
                        /if (${Direction.Equal["forward"]}) {
                            /if (${PBDirection.Find["c"]}) {
                                /call GetClosestLoc
                                /call StoreHeading ${CurrLoc}
                            } else {
                                /varset CurrLoc 1
                                /call StoreHeading ${CurrLoc}
                            }
                        } else {
                            /if (${PBDirection.Find["c"]}) {
                                /call GetClosestLoc
                                /call StoreHeading ${CurrLoc}
                            } else {
                                /varset CurrLoc ${NumLocs}
                                /call StoreHeading ${CurrLoc}
                            }
                        }
                    /varset PathingFlag 1
                }

            } else {
                /if (${SilentFlag}==0) /echo -(( You cannot start playback while in follow mode! ))-
            }
        } else {
            /if (${SilentFlag}==0) /echo -(( You cannot start playback while recording! ))-
        }
   } else {
        /if (${SilentFlag}==0) /echo -(( You are already playing back path file -( ${PBPFName} )- ))-
   }
} else {
    /if (${SilentFlag}==0) /echo -(( You cannot start playback while paused! ))-
}
/return


Sub Event_LocalPlay(EvtText)
/if (${EvtText.Mid[7,5].Equal["play:"]}) {
    /call PlayFunction "${EvtText.Right[-11]}"
}
/return 


Sub PatternFunction(FuncText)
/if (${PauseFlag}==0) {
    /if (${PathingFlag}==0) {
        /if (${FollowFlag}==0) {
            /if (${RecordPathFlag}==0) {
                /if (${FuncText.Arg[3].Length}==0) {
                    /if (${FuncText.Arg[1].Length}!=0 && ${FuncText.Arg[2].Length}!=0) {
                        /call ShapePlot ${FuncText.Arg[1]} ${FuncText.Arg[2]} ${Me.Y} ${Me.X} ${Me.Z}
                        /varset RecordPFName TempShape
                        /varset RecordPathFlag 1
                        /call StopFunction
                        /varset PlotFlag 1
                        /call PlayFunction "${RecordPFName} loop cf nopp noz facef"
                    }
                } else {
                    /if (${FuncText.Arg[1].Length}!=0 && ${FuncText.Arg[2].Length}!=0 && ${FuncText.Arg[3].Length}!=0) {
                        /call ShapePlot ${FuncText.Arg[1]} ${FuncText.Arg[2]} ${Me.Y} ${Me.X} ${Me.Z}
                        /varset RecordPFName TempShape
                        /varset RecordPathFlag 1
                        /call StopFunction
                        /varset PlotFlag 1
                        /if (${FuncText.Arg[3].Equal[faceb]}) {
                            /call PlayFunction "${RecordPFName} loop cf nopp noz faceb"
                        } else {
                            /call PlayFunction "${RecordPFName} loop cf nopp noz facef"
                        }
                    }
                }
            } else {
                /if (${SilentFlag}==0) /echo -(( You are already recording path file -( ${RecordPFName} )- ))-
            }
       } else {
           /if (${SilentFlag}==0) /echo -(( You cannot start a pattern playback while in follow mode! ))-
       }
   } else {
        /if (${SilentFlag}==0) /echo -(( You cannot start a pattern playback while playing back a path! ))-
   }
} else {
    /if (${SilentFlag}==0) /echo -(( You cannot start a pattern playback while paused! ))-
}
/return


Sub Event_LocalPattern(EvtText)
/if (${EvtText.Mid[7,8].Equal["pattern:"]}) {
    /call PatternFunction "${EvtText.Right[-14]}"
}
/return


Sub RecordFunction(FuncText)
/if (${FuncText.Arg[2].Equal["manual"]}) {
    /varset ManualRecord 1
} else {
    /varset ManualRecord 0
}
/if (${PauseFlag}==0) {
    /if (${PathingFlag}==0) {
        /if (${FollowFlag}==0) {
            /if (${RecordPathFlag}==0) {
                /varset RecordPFName ${FuncText.Arg[1]}
                /varset RecordPathFlag 1
                /call ClearLocs
                /if (${SilentFlag}==0) /echo -[ Started recording path file -( ${RecordPFName} )- ]-
            } else {
                /if (${SilentFlag}==0) /echo -(( You are already recording path file -( ${RecordPFName} )- ))-
            }
       } else {
           /if (${SilentFlag}==0) /echo -(( You cannot start recording while in follow mode! ))-
       }
   } else {
        /if (${SilentFlag}==0) /echo -(( You cannot start recording while playing back a path! ))-
   }
} else {
    /if (${SilentFlag}==0) /echo -(( You cannot start recording while paused! ))-
}
/return


Sub Event_LocalRecord(EvtText)
/if (${EvtText.Mid[7,6].Equal["record"]}) {
    /call RecordFunction "${EvtText.Right[-13]}"
}
/return


Sub GotoFunction(TempYCoord,TempXCoord,TempZCoord)
/if ((${Defined[TempXCoord]}) && (${Defined[TempYCoord]})) /goto :Defined
    /if (${SilentFlag}==0) /echo -(( You must at least provide the Y and X coordinates to run to. ))-
    /return
:Defined
/if (${Defined[TempZCoord]}) {
} else {
    /declare TempZCoord float local
    /varset TempZCoord ${Me.Z}
}
/if (${PauseFlag}==0) {
    /if (${PathingFlag}==0) {
        /if (${FollowFlag}==0) {
            /if (${RecordPathFlag}==0) {
                /call ClearLocs
                /varset LocArray[1] ${TempYCoord} ${TempXCoord} ${TempZCoord}
                /varset LocArray[2] ${TempYCoord} ${TempXCoord} ${TempZCoord}
                /varset RecordPFName GotoLoc
                /varset RecordPathFlag 1
                /varset CurrLoc 1
                /varset NumLocs 2
                /call StopFunction
                /call PlayFunction "${RecordPFName} 1 f nopp noz"
                /if (${SilentFlag}==0) /echo -[ Running to location:${TempYCoord},${TempXCoord},${TempZCoord} ]-
            } else {
                /if (${SilentFlag}==0) /echo -(( You cannot use goto while recording. ))-
            }
       } else {
           /if (${SilentFlag}==0) /echo -(( You cannot use goto while in follow mode! ))-
       }
   } else {
        /if (${SilentFlag}==0) /echo -(( You cannot use goto while playing back a path! ))-
   }
} else {
    /if (${SilentFlag}==0) /echo -(( You cannot use goto while paused! ))-
}
/return


Sub Event_LocalGoto(EvtText)
/if (${EvtText.Mid[7,4].Equal["goto"]}) {
    /varset EvtText ${EvtText.Right[-11]}
    /declare TempYCrd string local
    /declare TempXCrd string local
    /declare TempZCrd string local
    /if (${EvtText.Arg[1].Length}!=0 && ${EvtText.Arg[2].Length}!=0) {
        /if (${EvtText.Find[" "]}>0) {
            /varset TempYCrd ${EvtText.Mid[1,${EvtText.Find[" "]}]}
            /varset EvtText ${EvtText.Mid[${Math.Calc[${EvtText.Find[" "]}+1]},${Math.Calc[${EvtText.Length}-${EvtText.Find[" "]}]}]}
        }
        /if (${EvtText.Find[" "]}>0) {
            /varset TempXCrd ${EvtText.Mid[1,${EvtText.Find[" "]}]}
            /varset EvtText ${EvtText.Mid[${Math.Calc[${EvtText.Find[" "]}+1]},${Math.Calc[${EvtText.Length}-${EvtText.Find[" "]}]}]}
            /if (${EvtText.Length}>0) {
                /varset TempZCrd ${EvtText.Arg[1]}
            } else {
                /varset TempZCrd ${Me.Z}
            }
        } else {
            /varset TempXCrd ${EvtText.Arg[1]}
            /varset TempZCrd ${Me.Z}
        }
        /call GotoFunction "${TempYCrd}" "${TempXCrd}" "${TempZCrd}"
    } else {
        /if (${SilentFlag}==0) /echo -(( You must at least provide the Y and X coordinates to run to. ))-
    }

}
/return


Sub DistanceFunction(FuncText)
    /varset FollowDistance ${FuncText}
    /if (${SilentFlag}==0) /echo -[ Follow Distance :[${Int[${FollowDistance}]}] ]-
/return


Sub Event_LocalDistance(EvtText)
/if (${EvtText.Mid[7,8].Equal["distance"]}) {
    /call DistanceFunction "${EvtText.Right[-15]}"
}
/return


Sub SilentFunction
/if (${SilentFlag}==0) {
    /varset SilentFlag 1
    /echo -[ Silent Mode ON ]-
} else {
    /varset SilentFlag 0
    /echo -[ Silent Mode OFF ]-
}
/return


Sub Event_LocalSilent(EvtText)
/if (${EvtText.Right[-6].Equal["silent"]}) {
    /call SilentFunction
}
/return


Sub StopFunction
/declare AdvPathIniFile string local
/declare NumOfRecs int local
/declare ClearVar string local
/declare RecCounter int local
/declare RecClrCounter int local
/if (${PathingFlag}==0) {
    /if (${RecordPathFlag}==0) {
        /if (${FollowFlag}==0) {
            /if (${PauseFlag}==0) {
                /if (${SilentFlag}==0) /echo -(( There is nothing to be stopped! ))-
            } else {
                /if (${SilentFlag}==0) /echo -[ Pause stopped and cleared! ]-
            }
        } else {
            /varset FollowFlag 0
            /call ClearLocs
            /call Move 0
            /if (${SilentFlag}==0) /echo -[ Stopped following -( ${FollowName} )- ]-
        }
    } else {
        /if (${NumLocs}>1) {
            /varset RecordPathFlag 0
            /if (${SilentFlag}==0) /echo -[ Stopped recording path file -( ${RecordPFName} )- ]-
            /if (${SilentFlag}==0) /echo -[ Saving path file -( ${RecordPFName} )- Stand By... ]-
            /varset AdvPathIniFile PathFile_${RecordPFName}.ini

            /varset RecClrCounter 0
            :ClearRF
            /varset ClearVar ${Ini[${AdvPathIniFile},PFLocs,${Int[${RecClrCounter}]},NOTFOUND]}
            /if (${ClearVar.NotEqual["NOTFOUND"]}) {
                /ini "${AdvPathIniFile}" "PFLocs" "${Int[${RecClrCounter}]}" "Empty"
                /varset RecClrCounter ${Math.Calc[${RecClrCounter}+1]}
                /goto :ClearRF
            }
            /goto :DoneClearRF
            :DoneClearRF
           
            /varset RecCounter 0
            :CheckClearRF
            /if (${RecCounter}==${RecClrCounter}) /goto :DoneCheckClearRF

            /varset ClearVar ${Ini[${AdvPathIniFile},PFLocs,${Int[${RecCounter}]},NOTFOUND]}
            /if (${ClearVar.Equal["Empty"]}) {
               /varset RecCounter ${Math.Calc[${RecCounter}+1]}
               /goto :CheckClearRF
            }
            /goto :CheckClearRF
            :DoneCheckClearRF
 
            /for NumOfRecs 0 to ${Math.Calc[${NumLocs}-2].Int}
                /ini "${AdvPathIniFile}" "PFLocs" "${Int[${NumOfRecs}]}" "${LocArray[${Math.Calc[${NumOfRecs}+1]}]}"
            /next NumOfRecs

            /varset RecCounter 0
            :CheckRF
            /if (${RecCounter}==${Math.Calc[${NumLocs}-1]}) /goto :DoneCheckRF

            /varset ClearVar ${Ini[${AdvPathIniFile},PFLocs,${Int[${RecCounter}]},NOTFOUND]}

            /if (${ClearVar.Equal["NOTFOUND"]}) /goto :CheckRF
            /if (${ClearVar.Equal["Empty"]}) /goto :CheckRF
            /varset RecCounter ${Math.Calc[${RecCounter}+1]}
            /goto :CheckRF

            :DoneCheckRF
            /if (${SilentFlag}==0) /echo -[ Save Completed. There were ${Math.Calc[${NumLocs}-1].Int} records total. ]-
        } else {
            /varset RecordPathFlag 0
            /if (${SilentFlag}==0) /echo -(( There were no locations to record! ))-
        }
    }
} else {
    /if (${SilentFlag}==0) /echo -[ Playback stopped! ]-
    /call Move 0
}
/varset PauseHolder NULL
/varset PauseFlag 0
/varset PathingFlag 0
/varset RecordPathFlag 0
/varset PlotFlag 1
/call ClearLocs
/return


Sub Event_LocalStop(EvtText)
/if (${EvtText.Right[-6].Equal["stop"]}) {
    /call StopFunction
}
/return


Sub Event_ZoneEvent
/varset FollowID 0
/if (${FollowFlag}==1) {
    /varset ZoneTimer 30s
    /call ClearLocs
    /call Move 0
    /delay 3s
    /call ClearLocs
    /call TargetMob "${FollowName}"
}
/if (${PathingFlag}==1) {
    /call ClearLocs
    /call Move 0
    /delay 3s
    /call ClearLocs
}
/call Move 0
/return


Sub SubModFunction
/if (${DistanceModifier}>0) /varset DistanceModifier ${Math.Calc[${DistanceModifier}-1]}
/if (${SilentFlag}==0) /echo -[ Distance Modifier:[${Int[${DistanceModifier}]}] ]-
/return


Sub Event_LocalSubMod(EvtText)
/if (${EvtText.Right[-6].Equal["-"]}) {
    /call SubModFunction
}
/return


Sub AddModFunction
/varset DistanceModifier ${Math.Calc[${DistanceModifier}+1]}
/if (${SilentFlag}==0) /echo -[ Distance Modifier:[${Int[${DistanceModifier}]}] ]-
/return


Sub Event_LocalAddMod(EvtText)
/if (${EvtText.Right[-6].Equal["+"]}) {
    /call AddModFunction
}
/return


Sub InitAPFVars(FaceF,SpeedS,FollowDst)
/declare CurrLoc int outer
/declare NumLocs int outer
/declare LocArray[5000] string outer
/declare PathingFlag int outer
/declare FollowID int outer
/declare SpeedSense int outer
/declare UseFaceFast int outer
/declare MyLastXLoc float outer
/declare MyLastYLoc float outer
/declare MyLastZLoc float outer
/declare ObstacleCount int outer
/declare CurrZone string outer
/declare LastLoc string outer
/declare TotalObstCount int outer
/declare FollowName string outer
/declare RecordPathFlag int outer
/declare PauseFlag int outer
/declare PauseHolder string outer
/declare PlayCommandQueue[100] string outer
/declare PlayQueueNum int outer
/declare PlayQueueCurr int outer
/declare RecordPFName string outer
/declare PBPFName string outer
/declare PBIterations string outer
/declare PBFace string outer
/declare Iterations int outer
/declare PBDirection string outer
/declare Direction string outer
/declare GetMoreCommands int outer
/declare PBPingPong string outer
/declare PingPongCount int outer
/declare PBZone string outer
/declare FollowFlag int outer
/declare ZoneFollow int outer
/declare SilentFlag int outer
/declare DelayTimer timer outer
/declare ZoneTimer timer outer
/declare ZoneFlag int outer
/declare XCoordinate[100] float outer
/declare YCoordinate[100] float outer
/declare ZCoordinate[100] float outer
/declare DistanceModifier int outer
/declare FollowDistance int outer
/declare CheckLocTimer timer outer
/declare PositionTimer timer outer
/declare StoreHeading int outer
/declare CurrFollLoc string outer
/declare DoorMoveTimer timer outer
/declare ManualRecord int outer
/declare PlotFlag int outer
/varset PlotFlag 0
/varset DoorMoveTimer 0
/varset PositionTimer 0
/varset CheckLocTimer 0
/varset DistanceModifier 0
/varset ZoneFlag 0
/if (${Defined[FaceF]}) {
    /varset UseFaceFast ${FaceF}
} else {
    /varset UseFaceFast 1
}
/if (${Defined[SpeedS]}) {
    /varset SpeedSense ${SpeedS}
} else {
    /varset SpeedSense 15
}
/if (${Defined[FollowDst]}) {
    /varset FollowDistance ${FollowDst}
} else {
    /varset FollowDistance 20
}
/varset SilentFlag 0
/varset ZoneFollow 1
/varset FollowFlag 0
/varset PauseHolder NULL
/varset PauseFlag 0
/varset GetMoreCommands 0
/varset PlayQueueCurr 1
/varset PlayQueueNum 1
/varset PBPFName NULL
/varset RecordPFName NULL
/varset RecordPathFlag 0
/varset CurrLoc 1
/varset NumLocs 1
/varset PathingFlag 0
/varset MyLastYLoc ${Me.Y}
/varset MyLastXLoc ${Me.X}
/varset MyLastZLoc ${Me.Z}
/varset ObstacleCount 0
/varset TotalObstCount 0
/echo Advpath.inc by ml2517 -- Initialized.
/return

if you want an easy macro to create path files check HERE

Lastly i am trying to modify it now to basically time how long you are in the instanc, and at a given time it will dzquit, and start over. This will be usefull on servers where people are sittin outside the zonein every six hours reporting people. if this works it will basically let you set a time such as 4hours 45minutes then boot you so if someone is watchin on the six hour mark you will be happily kiting away. my idea for this is to create a subroutine (just unsure how i will trigger it atm) that says something like
Rich (BB code):
/delay 5h
/dzquit


then because of the rest of the macro it will just pick up like a normal out of time booting and will keep going as usual. if anyone has a better idea for how to accomplish this let me know.

I hope you all enjoy this and hope it gets used.
Taii
 
minimum level to enter is 60, and then it really depends on your gear as to whether you can take a hit or two while out ther. If you are not in a raiding guild with this toon i highly suggest getting the gm cultural crafted armors with gm augs. they are quite pricey even if you can make them yourself unless you farm the scales yourself but they are some of the best gear in game for non raiders.
 
when i do everything exactly (minus human error) as you have said to do it, i get could not find advpath2.inc, so i clicked the mq2 forums link you posted and copied it from there and tried it again, and then it dumps this huge thing of events into my mq2 chat window about zones and group chat you have entered barindu vxed we're done invite me add me shit like that and says its not working and unloads agian...clueless now, TS'd as much as i could heha ny help is much appreciated (i can kite in here myself but only 7 hours at a time) :confused: :confused: :confused:
 
Be Warned. GMs ARE suspending ppl who are afk xping in Vxed. I got 2 accounts suspended today and the GM had been watching me for a few days and i dident even notice anything untill i see a GM pop at kite spot and starts talk to me..
[Sat Oct 22 23:56:25 2005] Buglex tells you, 'Greetings Bard_01. This is GM Buglex. Are you safe to chat?'

[Sun Oct 23 00:07:36 2005] You told Buglex, 'hello'

[Sun Oct 23 00:07:56 2005] Buglex tells you, 'I have been watching your for a while now. I am suspending your account for using 3rd party software to gain experience while away from your keyboard.'

.. So take this warning and stay out of instaced for a while.
 
hehe, it's not quite working right, but i been able to kite there i just need to be back at comp to help it re-start the next expidition... o well.


well i used to anyways! I HAVE BEEN BANED! hehe my first time ever! wow cherry poped. or well says it re-opens in 7-10 days. i'll take the time to catch up on my pot smokeing. and if after review they dicide to fully ban me, i'll just have to make a new acnt. hehe sucks though. who knows how much hours i actuly put in to it and not to mention money.
 
Have had several problems with this. I'm not sure why, the first macro worked fine.

This one, whenever I die due to taking lots of hits before being able to warp, I zone to pok, then it tries to restart itself since I'm back to 100% hp. So my char ends up warping across pok. No idea why it does this instead of checking the dead event because I can turn on the macro then zone into pok and it camps out just fine.
 
Figured out I wasn't actually taking all those hits...I was actually warping back to kite spot and not moving. "/keypress forward hold" isn't working for some reason. I've tried adding delays and it still doesn't work. I'm not sure what else to do atm, because outside of this macro, typing "/keypress forward hold" works, so it has to be a part of the macro keeping it from working correctly.
 
you could try to unkey press on it you know

/keypress forward
then
/keypress forward hold

or something like that because i think it thisnk that the foward key is stil lheld after zone even though it is not. :confused: just a though i might be wrong.
 
The problem is in the continue sub, /keypress forward hold works fine when doing the pathing to get the new expansion.

Its just when the macro hits your hotkey to go back to kite spot, then it tries to do /keypress forward hold, but it doesn't work. I'm not sure why, because I even put in a 4 second delay after the hotkey to make sure all commands go through before /keypress is carried out.

Army said something about /circle taking over any /keypress hold, so maybe that's what's happening. If so, I need to get the new moveutils that starts running automatically.
 
Vxed AFK Bard macro gets new instance... No warping outside of instance

Users who are viewing this thread

Back
Top
Cart