• 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

AFK PL With Mercenaries

sebastienjuly

Member
Joined
Aug 1, 2005
RedCents
61¢
Ok so simple and I'm sure tons know about it. But I see lots of questions about the best PLing method so I'll share what I know.
First and most important have SoD expansion and have a tank merc.
Second, find a zone appropriate for your level that meets the following requirements: mobs that your merc can kill and mobs that will agro you (AE bard songs make this easier.)
A few suggestions:
10-15 : Bandits/Orcs in commonlands/lake rathe/ karnas/ desert of ro…
10-15 : Crushbone
10-15 : Kurns
10-20 : The Warens
15-25 : Palladural caverns
15-35 : Blightfire moors
20-30 : Lake of ill omen *hz
30-35 : Mistmore
30-40 : Overthere
30-40 : Gulf of Gunthak
30-45 : Dawnshroud Peaks
35-45 : Dreadlands
35-50 : City of Mist *hz
35-50 : Lower Guk
40-50 : Dulak
45-55 : Skyfire
45-60 : Sebils
45-60 : Velkator
50-60 : Acryila Caverns
50-65 : Veksar *hz
50-65 : Greig's End *hz
55-65 : Chardok
50-70 : PoNightmare *hz
Ok so remember, the key is for mobs to agro you…AND that your merc can kill them without your assistance.
Things that help:
Bards - Can agro AE, can Haste merc, can help regen, can DS… (I suggest using MQ2Twist and not /melody)
Second Account - Get a Healer merc and greatly increase survivability.
Use of macros - a. ‘Target.mac' works well with bards, I'm sure with the casting plugin or range weapons can turn other classes in to the AFK agro machines.
b. ‘Loot.mac' a macro than can loot corpses can turn PL in to Farming. (if you find one share it with me! Plz)
c. ‘Healer.mac' if you are a healing class of any kind the right healing mac can greatly increase survivability.
d. ‘Assist.mac' if you're a DPS class kick up the DPS and work on your melee skills.
 
Last edited:
use an assist mac and use merc as the assist and you can help kill.. not my mac but one i use

|Simple Combat Macro v2.0
|Ripped from Various Macro's
|By HardOne
|To start, /mac assisttank <TankName> <Assist%> ex. /mac assisttank ubertank 97

#event ImDead "#*#You have been slain by#*#"
#event ImDead "Returning to home point, please wait..."
#event ImDead "#*#Returning to Bind Location#*#"

Sub Main
|SYSTEM VARS - DO NOT MODIFY.
/declare maintank string outer ${Param0}
/declare attackat int outer ${Param1}
/declare attackid int outer
/declare RT_MyXLOC int outer ${Me.X}
/declare RT_MyyLOC int outer ${Me.Y}
/declare MyHeading int outer ${Me.Heading.DegreesCCW}
/declare Camp_Zone int outer ${Zone.ID}

/if (!${Param0.Length} && !${Param1.Length}) {
/echo You must start the macro including the main assist's name and the percent to attack after.
/echo i.e.:
/echo /mac assisttank UberTank 98
/end
}

/bc AFK AssistTank Running. Assisting ${Param0} at ${Param1}%
/bc Camp Set to: ${Me.X} ${Me.Y}, Facing: ${Me.Heading.DegreesCCW} in ${Zone}
/echo Ensuring MQ2Melee is loaded
/plugin mq2melee
/delay 2s
/squelch /target clear
/squelch /assist off


:mainloop
/if (!${SpawnCount[${maintank}]}) {
/echo Maintank Dead/Missing. Delaying 30 seconds and restarting.
/delay 30s
/goto :mainloop
}
/assist ${maintank}
/delay 5
/if (${Target.ID} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs}<${attackat}) /call Attacking
/doevents
/goto :mainloop
/end

Sub Attacking
/echo Attacking ${Target.CleanName}!
/varset attackid ${Target.ID}

:attackloop
/if (!${Target.ID}) /goto :endcombat
/if (${Target.ID}!=${attackid}) /goto :newtarget
/if (!${Me.Combat}) /attack on
/doevents
/goto :attackloop


:newtarget
/echo Somehow got new target. Re-assisting maintank.
/squelch /target clear
:endcombat
/varset attackid 0
/delay 2s
/if (${Camp_Zone} == ${Zone.ID}) /call MoveToLoc ${RT_MyyLOC} ${RT_MyXLOC}
/face fast heading ${MyHeading}
/return

Sub MoveToLoc(MoveToY, MoveToX)
/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
/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 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 Event_ImDead
/doevents
/if (${Stick.Status.Equal[ON]}) /squelch /stick off
/keypress forward
/keypress back
/keypress Left
/keypress Right
/delay 2s
/echo I've been Killed! Going into Sleep Mode...
/beep
/beep
:DeathSleep
/doevents
/delay 5s
/if (${Me.State.Equal[HOVER]} || ${Zone.ID} != ${Camp_Zone}) /goto :DeathSleep
/return
 
Here is a macro I put together to use with my mage. It still needs a bit of polish, but it does work... most of the time. It has loot routines if some one can make it more generic it might work for you.

Rich (BB code):
| AFKMage.mac by hoosierbilly
|
|
| Requires the following plugins MQ2cast, MQ2Pax & MQ2Moveutils
|
|
| This macro will keep both mage and pet buffed with haste, damage shields, velocity, strength, and mana regen.
| It will check for nearby mobs to pull and attack.
| Monitors the pets health and attempts to heal pet.
| Monitors mages health and attempts to gate or succor.
| Monitors the targets health and nukes when below 45%.
| Monitors the mages mana and meds when below 60%.
| Loots mob after kill if within range using an ini file.
|
|
|
| Required Spells:
|
| Gate  -  Spell gem 1
| pull nuke - spelll gem 2
| mana regen - spell gem 3
| burning aura - spell gem 3
| Big nuke - spell gem 4
| Pet heal - spell gem 5
| Pet haste - spell gem 6
| damage shield - spell 7
| velocity - spell gem 8
| pet aura - spell gem 9
|


#event hitme "#*#hits YOU for#*#"
#event hitme "#*#bashes YOU for#*#"
#event hitme "#*#kicks YOU for#*#"
#event hitme "#*#tries to hit you#*#"
#event hitme "#*#mauls you for#*#"
#event cannotsee "#*#you cannot see#*#"
#event noloot "#*#you cannot loot#*#"

Sub Main

	/echo afk Mage initiated
	/pet taunt on

   /declare RT_MyXLOC           int outer  ${Me.X} 
   /declare RT_MyyLOC           int outer  ${Me.Y}

:loop

	/call buffs
	/if (!${Me.CombatState.Equal[combat]} && ${Me.PctMana}>60) /call target
	/if (${Me.CombatState.Equal[combat]}) /call combat
	/delay 1s
	/call loot
	/call manacheck

	/delay 2s
	/squelch /target clear
	/if (${Me.CombatState.Equal[combat]}) /call combat
	/delay 2s
	/MoveTo Loc ${RT_MyyLOC} ${RT_MyXLOC}
	

|	/if (${Me.CombatState.Equal[debuffed]}) /echo "I need to purify myself"

	/delay 3s

	/call loot

	/goto :loop
/endmac

sub target

	/squelch /target clear
	/delay 5
	/target npc
	/delay 5

|/echo "${Target.CleanName} is ${Target.Distance} units away"

	/if (${Target.Type.Equal[NPC]} && ${Target.Distance}<175) {
	/face nolook
	/if (${Target.Distance}>75) /casting 0324|2
	/doevents
:wait

	/if (${Target.Distance}>75) /goto :wait
	/pet attack
	}

	/return

sub combat

:combatloop

|	/if (${Me.PctHPs}<30) {
|	/echo gated due to low health
|	/casting gate|1
|	/delay 5s
|	/endmac
|	}

	/if (${Me.PctHPs}<20) {
	/echo emergence gate due to low health
	/succor
	/endmac
	}

	/if (!${Me.State.Equal[stand]}) /stand

	/if (!${Target.Type.Equal[NPC]}) {
	/target ${Me.Pet}
	/delay 5
	/assist
	/delay 5
	/if (!${Target.Type.Equal[NPC]}) /return
	}

	/if (${Me.AltAbilityReady[replenish companion]} && ${Me.Pet.PctHPs}<40) {
	/alt activate ${Me.AltAbility[replenish companion].ID}
	/delay 1s
	}

	/if (!${Me.AltAbilityReady[replenish Companion]} && ${Me.Pet.PctHPs}<40) {
	/casting 5491|5
	/delay 4s
	/assist
	/goto :combatloop
	}

	/face nolook
	/doevents

	/if (!${Me.PetBuff[Magmaskin]}) {
	/target ${Me.Pet}	
	/Casting 10684|7
	/delay 5s
	/assist
	}

	/if (!${Me.PetBuff[iceflame guard]}) {
	/target ${Me.Pet}	
	/Casting 8517|1
	/delay 4s
	/assist
	}

	/if (${Target.Type.Equal[NPC]} && ${Target.PctHPs}<60 && ${Target.PctHPs}>10) {
	/casting 10696|4
	/delay 7s
	}	

	/if (${Me.CombatState.Equal[combat]}) /goto :combatloop

	/delay 3s

	/if (${Me.CombatState.Equal[combat]}) /goto :combatloop

	/return

sub buffs

	/if (${Me.CombatState.Equal[combat]}) /call combat


	/if (!${Me.Buff[Phantom Shield].ID}) {
	/casting 5476|3
	/delay 6s
	/squelch /target clear
	}

	/if (${Me.CombatState.Equal[combat]}) /call combat

	/target pet
	/if (${Target.ID} == ${Me.Pet.ID}) {

	/if (!${Me.PetBuff[Elemental Fury]}) {
	/casting "Elemental Fury"|6
	/delay 6s
	/squelch /target clear
	}

	/if (${Me.CombatState.Equal[combat]}) /call combat

	/if (!${Me.PetBuff[Magmaskin]}) {
	/target ${Me.Pet}	
	/Casting 10684|7
	/delay 5s
	/squelch /target clear
	}

	/if (${Me.CombatState.Equal[combat]}) /call combat

	/if (!${Me.PetBuff[Velocity]}) {
	/casting Velocity|8
	/delay 6s
	/squelch /target clear
	}

	/if (${Me.CombatState.Equal[combat]}) /call combat

	/if (!${Me.PetBuff[Rathe's Strength Effect]}) {
	/casting 8518|9
	/delay 6s
	/squelch /target clear
	}

	}

	/squelch /target clear
	/return

sub manacheck

	/if (${Me.PctMana}>59) /return

:manaloop

	/if (${Me.CombatState.Equal[combat]}) /call combat

	/if (!${Me.State.Equal[Sit]} && ${Me.PctMana}<60) {
	/echo ${Me.PctMana}% mana - now sitting
	/sit
	} 

	/if (!${Me.State.Equal[stand]} && ${Me.PctMana}>96) {
	/echo ${Me.PctMana}% Mana - now standing.
	/stand
	/return
	}
	
	/goto :manaloop

	/return

sub event_hitme

	/target npc
	/pet attack
	/pet attack
	/pet attack

	/stick moveback 30
	/delay 1s
	/stick off

	/return

sub event_cannotsee

	/delay 1s
	/squelch /target clear

/return

sub event_noloot

	/squelch /target clear	
	/delay 5s
|	/call buffs
/return




|
| Loot section stolen from another macro called autolooter.inc
| author of autolooter.inc is unknown to me
|

sub loot

	/if (${Me.CombatState.Equal[combat]}) /return

  /declare slot int local 1
  /declare NumberItems int local 0
  /declare CorpseCut int local 0

|  /echo Looting corpse
/squelch  /target corpse radius 150

	/if (!${Target.ID}) /return

|	/if (${Target.Distance}>5) /call MoveToTarget

	/if (${Target.Distance}>5) {
	/stick 4
:delay
	/if (${Target.Distance}>5) /goto :delay
	/stick off
	}

  /loot
  /delay 3s
  /varset NumberItems ${Corpse.Items}
  /if (${NumberItems}>0) {
    /varcalc CorpseCut ${Target.CleanName.Find['s corpse]}-1
    /for slot 1 to ${NumberItems}
      /shift /itemnotify loot${slot} leftmouseup
      /delay 5
      :LagFix
        /call HandleItem
        /autoinventory
        /delay 5
        /if (${Cursor.ID}) /goto :LagFix
    /next slot
  }
  /nomodkey /notify LootWnd DoneButton leftmouseup
  /delay 5
  /squelch /if (${Target.ID}) /target clear
  /delay 5

/return


sub HandleItem
/delay 1s
|   /echo Found ${Cursor.Name}
   /declare ItemSetting int local
   /declare NotFound int local

   /varset NotFound -1

   | Look up this item in the INI file
   /varset ItemSetting ${Ini[AutoLooter.ini,KeepList,${Cursor.Name},${NotFound}]}
   /delay 5

   | If the item isn't in the .ini file then add it.
   /if (${ItemSetting}==${NotFound}) {
      /ini "AutoLooter.ini" "KeepList" "${Cursor.Name}" "1"
      /varset ItemSetting 1
   }

   | If we're keeping this item then stash it in our bags.
   | Otherwise, just destroy it.
   /if (${ItemSetting}==1) {
      :LootIt
      /autoinventory
      /delay 5
      /if (${Cursor.ID}) /goto :LootIt
   } else {
	/popup Destroying ${Cursor.Name}
      /destroy
   }
/return

|Sub MoveToTarget 
|:KeepMoving 
|
|	/face nolook
|	/delay 1 
|	/keypress forward hold 
|	/if (${Target.Distance}>5) /goto :KeepMoving 
|:StopMoving 
|	/keypress forward 
|	/return
 
ya i wish i knew a little bit more about the computer language MQ2 uses. i understand a bit because i know fortran and i've been able to modify a few macros so far but not sure if i can make a loot.mac out of that. maybe someone else can.

also i want to add to the zone suggestions part, LoIo sarnak fort, go inside to di'zok's room and park on the stairs right by the door you can get about 12 roaming adds there and it is a HZ atm so exp is just wonderful. and my wizzy's tank merc took them all by him self. no hacks or help.
 
AFK PL With Mercenaries

Users who are viewing this thread

Back
Top
Cart