• IS THIS SITE UGLY? Click "RG3" at the very bottom-left of this page to change it. To dismiss this notice, click the X --->
Resource icon

Unmaintained pl-nav-pull.mac 1.0

Download now: Join us with Level 2 access
or earn your way in with RedCents.
Software Requirements
[Plugins]
MQ2Nav
Since coming back I've been ds powerleveling several new characters. I've used this macro to help with the pulling process. It's made for an sk but it can be changed easily for any class. It uses MQ2Nav to pull mobs either nearby you or nearby your target. It runs around and aggros mobs then pulls them back to camp.

Any questions let me know.

Rich (BB code):
| pl-nav-pull.mac - Sym 5.1.2017
| 
| Builds list of nearby spawns then will /nav target and aggro them in sequence
| When all have been aggro'd it will return to where the script started
|
| If you have mob targeted when starting the macro the list will be generated from nearby that spawn point.
| Otherwise the list will be generated from where you are standing.
|
| To help see how big of a radius you will pull within use
|    /mapfilter targetradius 500
|                             ^ -- Adjust as needed
|
|  Requires: MQ2Nav
|
| Adjust MaxPullCount for the number of mobs to pull
| Adjust the /alert add lines to exclude mobs you don't want to pull
| Adjust the MobsToPull line to specify only the mobs to pull
| Adjust PullRadius as needed. It can also be the specified when running the macro, i.e. /mac pl-nav-pull 500
|
| This is built for an SK to pull. It uses Taunt if available, if not it will use the spells 
|        in slot 1 and slot 2 (instant cast terror spells work best)
|

Sub Main(int PullRadius)

    /if (!${Plugin[MQ2Nav].Name.Length} || !${Navigation.MeshLoaded}) {
        /echo Something is wrong with your MQ2Nav setup. Check it and try again.
        /endm
    }

| Adjust the /alert add lines to exclude mobs you don't want to pull. Standard spawn search values.
    /alert clear 10
    /alert add 10 scout

| Adjust MaxPullCount for the number of mobs to pull. You may get more or less depending on pathing and proximity aggro.
| The script will return to camp when it has aggro'd this many mobs.
    /declare MaxPullCount int 40
    
| Adjust the MobsToPull line to specify only the mobs to pull   
    /declare MobsToPull string
    
| Adjust PullRadius as needed
    /if (!${Defined[PullRadius]}) /declare PullRadius int 500
    
    /declare CurMob int outer 1
    /declare MobArray[100] int    
    /declare TargetID int
    /declare TotalMobs int
    /declare a int
    /declare b int
    /declare WaitTimer timer
    /declare StartX int ${Me.X}
    /declare StartY int ${Me.Y}
    /declare StartZ int ${Me.Z}
    /declare InTow int 0
    
    
    | Generate our pull list
    /for a 1 to ${MaxPullCount}
        | If we have a target start pull from that point. Otherwise pull from where I'm standing.
        /if (${Target.ID}) {
          /varset TargetID ${Spawn[id ${Target.ID}].NearestSpawn[${a},npc radius ${PullRadius} noalert 10 ${MobsToPull}].ID}
        } else {
          /varset TargetID ${Me.NearestSpawn[${a},npc radius ${PullRadius} noalert 10 ${MobsToPull}].ID}
        }
        /delay 1s ${TargetID}       
        /if (!${TargetID}) /goto :StartPull
        /varset TotalMobs ${a}
        /varset MobArray[${a}] ${TargetID}
        /echo MobID ${a} is ${Spawn[${MobArray[${a}]}].CleanName}
    /next a
    
    
    :StartPull
    /echo -- Pulling ${TotalMobs} mobs
    /for b 1 to ${TotalMobs}
      /echo -- Pulling ${Spawn[${MobArray[${b}]}].CleanName} (${b} of ${TotalMobs})
      /if (${MobArray[${b}]})  {        
          /target id ${MobArray[${b}]}
          /delay 5
          /delay 1s ${Target.ID} == ${MobArray[${b}]}
          /echo -- Targeted ${Spawn[${MobArray[${b}]}].CleanName} (${b} of ${TotalMobs})
          /if (${Me.TargetOfTarget.ID} && ${Target.ID} == ${MobArray[${b}]}) {
              /varcalc InTow ${InTow} + 1
              /squelch /target clear
              /next b
          }
          | Move to target
          /nav target
          /delay 5 ${Navigation.Active}

          | We're not moving? Mesh must have an issue, probably destination problem. Skip this mob. Check you mesh file.
          /if (!${Navigation.Active}) /next b

          | We have a 60 second pull timeout. If it takes longer than that something is probably wrong and we need to move on.
          /varset WaitTimer 60s
          :WaitTarget
              /delay 5
              
              | Target is moving. Chase it down.
              /if (${Target.Speed}) /squelch /nav target
              
              | Pull took too long. Go to next mob.
              /if (!${WaitTimer}) {
                  /squelch /target clear
                  /echo -- Timeout pulling mob ${b}. Skipping.
                  /squelch /nav stop
                  /next b
              }
              
              | Mob is already aggro on me. Go to next mob.
              /if (${Me.TargetOfTarget.ID} && ${Target.ID} == ${MobArray[${b}]}) {
                  /squelch /nav stop
                  /varcalc InTow ${InTow} + 1
                  /squelch /target clear
                  /next b
              }
              
              | We have line of sight and are within casting range, but not too close to waste the cast
              | so hit the key for instant cast aggro (Number pad 1 and 2 in this case)
              /if (${Target.Distance} < 200 && ${Target.Distance} > 75 && ${Target.LineOfSight}) {
                  /if (!${Me.TargetOfTarget.ID}) {
                      /keypress NUM_1
                      /delay 5 ${Me.TargetOfTarget.ID}
                  }
                  /if (!${Me.TargetOfTarget.ID}) {
                      /keypress NUM_2
                      /delay 5 ${Me.TargetOfTarget.ID}
                  }
              }
          | Not near mob. Keep waiting.
          /if (${Target.Distance} > 5) /goto :WaitTarget
          
          | Now we're very close to mob and still have not gotten aggro
          | Taunt or cast as we can.
          
          |||||||||||||||||||||||||||||||||||||||||
          | Adjust aggro spells/ability as needed |
          |||||||||||||||||||||||||||||||||||||||||
          
          /doability Taunt
          /delay 5 ${Me.TargetOfTarget.ID}
          /if (!${Me.TargetOfTarget.ID}) {
              /keypress NUM_1
              /delay 5 ${Me.TargetOfTarget.ID}
          }
          /if (!${Me.TargetOfTarget.ID}) {
              /keypress NUM_2
              /delay 5 ${Me.TargetOfTarget.ID}
          }
          /delay 5
          /if (${Me.TargetOfTarget.ID}) /varcalc InTow ${InTow} + 1
          /squelch /target clear
          /delay 1s !${Target.ID}
      }
   /next b

    :BackToCamp
    /echo -- Returning to camp with ${InTow} mobs
    /squelch /nav loc ${StartY} ${StartX} ${StartZ}
    

/return
Server Type
Live, Test Server
Author
Sym
Downloads
5
First release
Last update
Rating
0.00 star(s) 0 ratings

More resources from Sym

Top