• 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 Cleric/Melee EXP Macro...Levels 60 to 66

Joined
Feb 8, 2005
RedCents
8,901¢
Afk Cleric/Melee EXP Macro...Levels 51 to 61

MACRO OUT OF DATE REFER TO Redone PoJustice Macro

Modified afkcleric Macro (Cleric Macro) v1.1
(Edited 3/21/05)--Modified Z axis check and Zone Check(auto camp when not in PoJ)
Rich (BB code):
#include spell_routines.inc

#Chat Chat
#Chat tell

Sub Main

|------------READ THIS SECTION AND EDIT IF NEEDED-----------|
   /declare myzone int outer ${Zone.ID}
   /declare RV_MyZLOC int outer -100
   /declare autohealmode int outer 0
   /declare healspell string outer Complete Healing
   /declare healspellrange int outer 100
   /declare patchheal string outer Pious Remedy
   /declare patchhealrange int outer 100
   /declare yaulpspell string outer Yaulp VII
   /declare autosit int outer 1
   /declare distancetosit int outer 40
   /declare autointerrupt int outer 1
   /declare defaultstophealpoint int outer 65

|** Tweak Heals Here - tankhealpoint is for War/Pal/SK other
than MT, casterhotpoint and casterpatchpoint refer to
wiz/mag/enc/dru, necshmpatchpoint refers to necros and
shamans, defaultpatchpoint refers to all other classes.   **|

   /declare selfhealpoint int outer 65
   /declare tankhealpoint int outer 65



|------------------------END EDITING------------------------|

   /declare healpct int outer 60
   /declare tankname string outer ${Target}
   /declare tanknameid int outer
   /declare tankclass string outer
   /declare stophealpoint int outer ${defaultstophealpoint}

   /if (!${Target.ID}) {
      /echo Target the Tank when you run this macro to designate him as MT
      /end
   } else {
      /varset tanknameid ${Target.ID}
      /varset tankclass ${Target.Class.Name}
   }

   /if (${Defined[Param0]}) {   
      /varset healpct ${Param0}
   } else /echo No Heal% specified, defaulting to 60%
   
   /if (!${Defined[Param1]}) {   
      /echo Usage: /mac AFCleric % healspell
   } else {   
      /if (!${Defined[Param2]}) {
         /varset healspell ${Param1}
      } else /if (!${Defined[Param3]}) {
         /varset healspell ${Param1} ${Param2}
      } else /if (!${Defined[Param4]}) {
         /varset healspell ${Param1} ${Param2} ${Param3}
      } else {
         /varset healspell ${Param1} ${Param2} ${Param3} ${Param4}
      }
   }

   /echo Casting ${healspell} on ${tankname} at ${healpct}% HP
   
   :tankwatchloop
   /if (${Target.Distance}>90) {
	/delay 5s
	/stand
	/delay 1s
	/warp target
	}

   /if (${RV_MyZLOC}>${Int[${Me.Z}]}) /warp target
   /if (${String[${Spawn[${tanknameid}]}].NotEqual[${tankname}]}) /varset tanknameid 0
   /if (!${Spawn[${tanknameid}].ID}) /if (${Spawn[${tankname}].ID}) {
      /if (${SpawnCount[${tankname} ${tankclass}]}==1) {
         /varset tanknameid ${Spawn[${tankname} ${tankclass}].ID}
         /echo ${Spawn[${tankname} ${tankclass}].Name} is the designated MT and has ID# ${tanknameid}
      }
   }
   /if ((!${Target.ID})||(${Target.ID}!=${tanknameid})) {
      /if (${Spawn[${tanknameid}].ID}) /if (${Spawn[${tanknameid}].Type.NotEqual[Corpse]}) {
         /target id ${tanknameid}
         /delay 6 ${Target.ID}==${tanknameid}
      }
   }
   /if (${GameState.Equal[CHARSELECT]}) /end
   /if (${Target.ID}==${tanknameid}) {
      /varset stophealpoint ${Math.Calc[${healpct}*1.1]}
      /if ((${Target.Distance}<=${patchhealrange})&&(${Target.PctHPs}<=${Math.Calc[0.7*${healpct}]})&&(${Target.PctHPs}>=1)) {
         /call Cast "${patchheal}" gem2 1s CheckHP
         /delay 15 ${Me.SpellReady[${patchheal}]}
      }
      /if ((${Target.Distance}<=${healspellrange})&&(${Target.PctHPs}<=${healpct})&&(${Target.PctHPs}>=${Math.Calc[0.7*${healpct}]})) {
         /call Cast "${healspell}" gem1 1s CheckHP
         /delay 15 ${Me.SpellReady[${healspell}]}
	 /delay 10s
      }
      /varset stophealpoint ${defaultstophealpoint}
      /call CheckEvents
   }
   /if ((${autosit}>=1)&&(${Bool[${Me.Sitting}]})&&(!${Window[SpellBookWnd].Open})) {
      /if ((${Me.PctMana}>98)||(${Me.PctHPs}<=90)) /stand
   }
   /if ((${autosit}==1)&&(${Bool[${Me.Sitting}]})&&(!${Window[SpellBookWnd].Open})) {
      /if (${NearestSpawn[NPC].Distance}<=${Math.Calc[${NearestSpawn[NPC].MaxRange}+${Math.Calc[${distancetosit}/3]}]}) /stand
   }
   /if ((${autohealmode}<2)&&(${Me.PctMana}<=98)) /call MedTime
   /call CheckEvents
   /goto :tankwatchloop
/return
   

Sub CheckEvents
   /delay 1
   /if (${Me.PctHPs}<20) /gate
   /if (!${Me.Buff["Armor of the Zealot"].Duration}&&(${Bool[${Me.Sitting}]})) /call cast "Armor of the Zealot" gem7 7s
   /call GMCheck
   /doevents Chat
   /doevents tell
   /doevents flush
/return


Sub MedTime
   :oomwait
   /call CheckEvents
   /if ((${autosit}==1)&&(${Me.PctMana}<=98)&&(!${Me.Casting.ID})) {
      /if ((${Bool[${Me.Standing}]})&&(${NearestSpawn[NPC].Distance}>=${Math.Calc[${NearestSpawn[NPC].MaxRange}+${distancetosit}]})&&(${Me.PctHPs}>90)) /sit
      /if ((${Bool[${Me.Sitting}]})&&(!${Window[SpellBookWnd].Open})&&(${NearestSpawn[NPC].Distance}<=${Math.Calc[${NearestSpawn[NPC].MaxRange}+${Math.Calc[${distancetosit}/3]}]})) /stand
   }
   /if ((${Bool[${Me.Standing}]})&&(${autosit}==2)&&(${Me.PctMana}<=98)&&(${Me.PctHPs}>90)&&(!${Me.Casting.ID})) /sit
   /if ((${Bool[${Me.Sitting}]})&&(${autosit}>=1)&&(${Me.PctMana}>98)&&(!${Window[SpellBookWnd].Open})) /stand
   /if ((${Bool[${Me.Standing}]})&&(!${Me.Mount.ID})&&(${Me.SpellReady[${yaulpspell}]})&&(!${Me.Buff[${yaulpspell}].ID})) {
      /if ((!${Me.Buff[Vallon].ID})&&(!${Me.Buff[Spiritual Vigor].ID})&&(!${Me.Buff[Strength of Tunare].ID})) /call Cast "${yaulpspell}"
   }
/return


Sub CheckHP
   /if (!${Window[CastingWindow].Open}) /return
   /if ((${autointerrupt}>=1)&&(${Target.PctHPs}>=${stophealpoint})) {
      /call Interrupt
      /return
   }
/return


Sub FindExactPC(string name)
   /declare nameid int local
   /declare counter int local 1
   :FindNext
   /if (!${NearestSpawn[${counter}, pc ${name}].ID}) /return NOT_FOUND
   /varset nameid ${NearestSpawn[${counter}, pc ${name}].ID}
   /if (${Spawn[${nameid}].CleanName.Equal[${name}]}) {
      /target id ${nameid}
      /delay 1s ${Target.ID}==${nameid}
      /if (${Target.ID}==${nameid}) /return TARGET_SUCCESS
   }
   /varcalc counter ${counter}+1
   /if (${NearestSpawn[${counter}, pc ${name}].ID}) /goto :FindNext
/return NOT_FOUND


Sub Event_Chat(string ChatType,string Sender,string ChatText)
	   /if (${ChatText.Equal[c]}) /call Cast "Conviction" gem8 10s
/return
|--------------------------------------------------------------------------------
|SUB: GM Check
|--------------------------------------------------------------------------------
Sub GMCheck
   /if (${Zone.ID}!=${myzone}) {
	/nomodkey /keypress forward
	/nomodkey /keypress left
	/nomodkey /keypress right
	/camp desktop
	/endmacro
	}
   /if (${Spawn[gm].ID}) {
      /beep
      /beep
      /beep
     
      /echo GM has entered the zone!
      /echo FUCK HIM but ending the macro...

      /keypress forward
      /keypress back

      /call Cast "${healspell}"
      /delay 6s      
      /quit
      /endmacro
   }
   
/return

Refer to Redone PoJustice macro for Up to date Version of Melee portion
 
Last edited:
Has anyone tried this yet? i was thinking of tweaking it for a druid warrior combo. One 67 and one 65 any thoughts?
 
Also post any problems ya all might have i can tweak the macro to your specifications... I don't see any reply posts, so I take it that the macro is working as intended :)
 
ok problem im having is when warrior warps to the mob all i get is the cannot see mob message and then i sit and continuously try to warp to the target that is righ in front of me- i have to end the macro and back off the mob then engage. which is all fine and dandy but if i try to run it afk it ends up causing my healer to die because the warrior has no agro.


ok unloaded mq2moveutils and it seems to be working better now.
 
Last edited:
Will be trying this out tonite... (again)

First attempt yeilded the same problems as geostone... but just noticed his post about unloading mq2moveutils.... I will try this now... and will post again if it starts going well :)
 
Seems to still run ito the problem.... cleric also seems to run into a warp loop until it casts it's first heal, then returns to it's warp loop.

Pehaps add in some code to push tank toon aff of its target but about 10' (or watever distance is measured in) ... and then autoface and attack it....

Actually, seems to begin hitting mob after a bit... but takes some time... (and sometimes doesnt... had cleric just healing away without getting any hits in, until I keypressed back to move into melee range) adding something to push tank off, and make sure cleric warps properly would just help make it more error proof... apart from that, not major errors yet. But if you can make the little changes to guaratee tank/melee positioning initially, it would be greatly appreciated!

Also noticed, the warp loop my cleric gets into, doesnt allow him to sit and med if hes not on his drog.

Don't take any of this the wrong way though please... I LOVE these modifications, just some sugestions, and friendly criticism!!!
 
Last edited:
siddin said:
/stick 13 moveback
works wonders
hehe ... I'm a 'C' newb... last time I used 'C' was Ansi C back in CEGEP (College ... canadian term) .... and well, never quite got too advanced in it. :) I just wouldnt know where to put the command :) would you be able to maybe just paste the 2 lines to stick it between?

However, quick question, since I'm gonna stick to using POJ for this ... since kills are quick and easy.... My main toon is at 65 now.... (spent 58-65 in WoS to get him up here, fairly quickly) ... but I'm wondering, is it worth delevelling him too 63 or so to MAX AA gain while not dropping too many levels?
 
hehe also ... while I'm looking over the code... as I'm a WAR... guess I could change...

/call cast "Jymall's Gloves of Frenzy" item

to...

/call cast "Kizrak's Gauntlets of Batlle" item

as well as add any other clickie effects I want???? Or do these clickie gear effects have to be equipped for them to take effect?

LOL... I'm just full of questions tonite!!!! :)
 
LOL.. running for a good hour now... :) found a problem... :)

Cleric is now down too 29% mana ... and his Armor of Zealot buff is gone... so he has little mana regen... the rebuff /call isnt kicking in. Also, not sure if there is a checkbuff section, but my Warrior has been unbuffed since I brough him in... perhaps some sort of check buff on the warrior side, to shoot on a Virt/conviction (virt in my case as Cleric is only level 65) ...

and maybe something that communicated between the 2 clients to telle the macro that Cleric is low on mana, and too stop warping for a bit....

Don't know if these asre possible, then again, you did ask for suggestions :) just helping to make this foolproof!

Unless these checks are already there, and I'm just missing a certain thing to do, so it's not working properly :(
 
Just gonna keep adding as things become apparent.

My cleric is binded in PoT and Warrior in POK. Warrior dies, and warps to an NPC once in POK (hidden safe spot I assume) ....

However my Cleric goes back to his bind point (didnt die, just seemed to zone too PoT with 2% hp left), and zones over and over and over at his bind point.

Also, reason I died.... Cleric had his spell interupted. Is there a safe point for a heal? Like when the script sees 20% on tank, to quick heal?

I don't know how my CH was interupted, as the cleric had no aggro, but I think it may be linked too the warping issue i mentionned above. It seems the cleric continuously /warp target 's in order to stay close to the MT. Although when the MT is attacking, he moves VERY often either when getting hit himself, or when hitting an NPC. What happens is cas begins, cleric warps to new /loc and spell get interrupted. But then what, there should be some failsafe for this, like an emergency quick heal at 20% ....

Just a thought!

Works well for now! Just not something that can be used while AFK ... hehe or even NOT afk for that matter, as stopping the macro just seems to restart it. :)
 
actually i put the /stick target command in the war mac and havent had any problems running afk yet except druid ran out of food and mana and died. otherwise ive had no problems.


geo

also anyone have suggestions on where else you could use this macro?
 
Gonna revise some of the code to include the /stick command since so many of ya'all use it. Also gonna change the Z axis check to a constant number so you can start the macro anywhere in the zone.... and not just in the basement. Please keep giving me feedback I'll perfect it all for you.
 
Ok Code revised... try it out now... moveutils included due to popular demand, Modified Z axis check to hopefully cut down on spaming of warps, and made auto camp so if you die and zone out of PoJ you will automatically camp.
 
cool beans. i was gonna mention the z axis and constant warping as thats what causes all my deaths. i think once thats licked this will be an exceptional macro. thanks kindly for your hard work.


geo
 
Working REALLY good now.... just semms that when Armor of Zealot drops off my cleric, it never gets rebuffed.... which slowly, eventually causes an OOM cleric :(
 
Ok Shlark... Try loading Armor of the Zealot into the 7th Spell Gem. I think that is what is causing it not to be cast. Or better yet Siddin the macro god can give me syntax to make it load in 7th spell gem if it is not already. :)
 
every few hgours i still get stuck in a warp loop. any chance of plotting locs for the heal er to warp to?
 
When incorperating warping into a macro you gotta really consider all the random varibles in the problem. One major problem is mq2warp.cpp file itself has built in randoms when warping to a target. I have changed the varibles to only got 4 in each direction instead of 12.

Here is a snippet from my mq2warp plugin

Rich (BB code):
		if (!stricmp(command,"target"))  {
			if (ppTarget && pTarget) {
			psTarget = (PSPAWNINFO)pTarget;
			}
			if (!psTarget) {
				WriteChatColor("You must have a target for /warp target.", CONCOLOR_RED);
				return;
			}
			float TargetZ = float (psTarget->Z-(psTarget->AvatarHeight*0.5));
			srand (time(NULL));
				//random Y
				if (rand()%2!=0)
				{
					NewY = float(psTarget->Y+rand()%4);
				}
				else {
					NewY = float(psTarget->Y-rand()%4);
				}
				//random X
				if (rand()%2!=0)
				{
					NewX = float(psTarget->X+rand()%4);
				}
				else {
					NewX = float(psTarget->X-rand()%4);
				}
			LastY = NewY;
			LastX = NewX;
			LastZ = TargetZ;

Notice this line:
NewY = float(psTarget->Y+rand()%4);

Check your mq2warp files and you will find 4 lines just like the one above...
change the number from 12 to 4. Now when you warp you will be very close to the mob and not have such a chance of warping into a wall and what not.

Enjoy!
 
my hacked and working version for a druid healer


Rich (BB code):
#include spell_routines.inc

#Chat Chat
#Chat tell

Sub Main

/declare heal string outer "Karana's Renewal"
|/declare gate string outer "Gate"
/declare healpct int outer 50
/declare tank string outer *tank name here*
|/declare nuke string outer "Summer's Flame"

:main
/target ${tank}
/if (${Spawn[pc *tank name here*].Distance}>50) /call Move
/if (${Spawn[pc *tank name here*].PctHPs}<50) /call heal
/delay 5
/if (!${Me.Mount.ID}) /call cast "Tan Rope Bridle" item
/goto :main
/return

Sub Move
/assist ${tank}
/Warp target
/return

Sub Heal
/target ${tank}
/call cast ${heal} gem7 3s
/return
 
I like that syntax alot Geostone... Gives me idea's.... hmmm possibly 3rd person nuking so i can automate an entire group to kill mobs even faster... Also for next month I got a new improved dual box macro coming out... Its gonna be a huge hit for those dual box afk macroing. Levels up to 70 afk exping...only requirements is tank have CS / CA / LR / ID and around 6k ubuffed.
 
looking forward to seeing the new macro noob. any chance i might get a preview version to help work the kinks out of it? got a 66 war and 64 druid i box. i like to keep my macros simple;) cause im a hillbilly and not that comp smart lol.
 
I would love a macro or two that would let me use my 6 man crew AFK. The group I use is, Druid, Cleric, Enchanter, Mage, Necro, Warrior. Some times I change out the Mage with a Rogue. All are level 70 except the Necro is 68.
 
edited this for a different zone, all i changed was the mob ini, but for some reason it keeps getting stuck targeting acorpse as a target. i'll kill a mob and it'll target the corpse and try to attack it til the corpse poofs.

i got it to work by changing

Rich (BB code):
/squelch /target "${RV_MobArray[${RV_TargetSub}]}"
to
Rich (BB code):
/squelch /target npc next

i imagine that means it'll ignore the ini though, and for the specific zone i'm exping in atm (dranik hollows) that's totally fine and ok, but i'm sure there's an easier way to fix this problem
anyone able to point it out to me?
thanks.

btw, dranik hollows is a great place to level a 50s toon in if you can 3 box and have access to a decently geared melee and a healer. i have a monk and a shaman using the hunt / clr (modified for shaman) and my low 50s rogue with a macro that warps him around to them
it's instanced, so probably safe to afk..it's nice to be able to read a book and just look up every now and then though, and it's a great place to exp
 
Last edited:
Also for next month I got a new improved dual box macro coming out... Its gonna be a huge hit for those dual box afk macroing. Levels up to 70 afk exping...


I am still dying to see this one. pretty please post ;)
 
Re: Afk Cleric/Melee EXP Macro...Levels 51 to 61

This needs to be revised... Will work on it in the next couple days.

Problems with this macro to note
-------------------------------
-Targeting mobs not waypoints
-Needs Playercheck installed

Ill see if I can't update this in the next couple days.
 
afkklr.mac pls add or change:


selfbuff (mem spell and buff /gem 7-9)
clickys
buffing other with keyword (symbol, wov, cv, grp cv, grp symbol)
no warping to the tank would be nice

possible all in a seperate ini file, so all who wants to work with it, can handle it without to be a coder :)))
 
I would like to see it be able to swap weapons once mu truncheon of doom slows the mob and also have it click my clicky haste item for warrior. Possibly set up for PoV like your other one with waypaoints Noob instead of using the ini. That way I could chose my own zone aot easier - all I would need is the static spawn /loc. If you'd like I can post the two macros I use for PoJ. Warrior one is yours and the other is the druid healer i wrote under the login geostone.
 
I got the PoJ almost adjusted ill be posting a revision to it soon. Much improvements in it. This macro is just too dated. more than a year old.
 
I know this might be asking too much, pretty new here but if there is anyway you could adjust this for a lvl 70 druid (all spells including ancients) and a 70 Beast as tank for a macro for PoV or Even plane of earth. I would glady donate to you kind sir, and give you my spell gem line-up if needed.

Thanks in advance.

Abe. :rolleyes:

P.S. Can duo in PoE and PoF with no probs so even a rigorous PoV macro would be awesome.
 
Afk Cleric/Melee EXP Macro...Levels 60 to 66

Users who are viewing this thread

Back
Top
Cart