• 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
And Now - a macro to start your AFNuke2, AutoCleric and Kissassist

Release And Now - a macro to start your AFNuke2, AutoCleric and Kissassist 1.0

No permission to download
Joined
Jan 14, 2016
RedCents
1,418¢
This macro goes through your group and depending on group member class launches AFNuke2, AutoCleric, or Kissassist for each one.

The main reason I wanted this is because I will be going to custom KA INI's for all my toons depending on level (5 lvl increments). I wanted this framework to work off of. I plan on extrapolating via group member level and class, which KA INI to use. That is not implemented yet.

Upcoming releases/future features:
  • Launch AFNuke85, AFNuke100 and AFNuke2 depending on level.
  • Launch KissAssist for any wizzy under lvl 85.
  • Launch KissAssist for any cleric under AutoCleric's level range.
  • Custom KA INI's mentioned above.
  • AdvPath PathNames (puller/pullertank) to be handed to KA at startup.

Features I am considering:
  • If no MA is detected in group, use whatever target each toon has for Assist assignment (i.e. /bcg //tar ID ${Me.ID}).
  • OR - If no MA is detected, MT will assume MA role and others will assist it.

Usage:
  • Have EQBCS running
  • Create Group
  • Assign MainTank, MainAssist, and Puller in group window. Puller is optional if you wanted to run a toon manually (not tested). You would have to turn on/off the various KA [Sections] to accommodate.
  • You can assign Master Looter too since KA9 Release will not over-ride your ML as long as group leader is started last, which it will be. You see that Hoosier?
  • Run this mac from Group Leader.

Settings:
  • Set Debug TRUE if you want/need bread-crumb to go to MQ2Win
  • Set Broadcast TRUE/FALSE to turn on/off basic messages
  • Set ACName to whatever version of AutoCleric you are using (name of mac) defaults to AutoCleric
  • Set KAName to whatever version of KissAssist you are using (name of mac) defaults to KissAssist
  • Set AFNWiz to FALSE if you want your Wiz to be given over to KissAssist (for whatever reason)
  • Set ACClr to FALSE if you want your Clr to be given over to KissAssist (for whatever reason)
  • Set AllowWizClr to TRUE if you want your Wiz or Clr to be allowed to be MA or MT (for whatever reason - could be farming tradeskill items from grey cons, or needing to be group controller for task /ground spawns etc). I am undecided at this time whether or not I want to keep that functionality.

If you find this useful, hit the :rc THANKS.

-------------------------------------------------------------------------------------------------

*** Incog's MQ2StartMacs - Beta 1 - 2016 ***

Rich (BB code):
| MQ2StartMacs.mac - Incognito
| This mac will check everyone in your group to see if they are in the same zone, not Offline, a PC (excluding mercs), and start a macro depending on class.
| Clerics get AutoCleric, Wiz's get AFNuke2 (regretfully configurable). All others get Kissassist.
| It is assumed you have created your group, and assigned MA, MT, & Puller.
| We assign our own macro seperately and lastly due to this mac will abort once launching our own macro.
| It is also assumed you have EQBC up and running and you are connected.

| ** Upcoming functionality - TODO **
| Handle custom INI's 
| Handle AdvPath PathNames for pulling
| If no MA is detected then macro startups will attempt to use whoever that toon has targeted. So you could do a /bcg //tar ID ${Me.ID}.
| If MA does not detect Tank then it will assume Tank Role. If MT does not detect MA then it will assume MA and others will Assist it.
| Assignement of AFNuke2, AFNuke100 or AFNuke85 depending on toons level.

| ------------------------------------------------------------------------------------------------
| ** Usage **
| ------------------------------------------------------------------------------------------------
| * Have EQBCS running
| * Create Group
| * Assign MainTank, MainAssist, and Puller in group window
| * You can assign Master Looter too since KA9 Release will not over-ride your ML as long as
|		group leader is started last, which it will be.
| * Run this mac from group leader
| ------------------------------
| * SETTINGS *
| ------------------------------
| *   * Set Debug TRUE if you want/need bread-crumb to go to MQ2Win
| *   * Set Broadcast TRUE/FALSE to turn on/off basic messages
| *   * Set ACName to whatever version of AutoCleric you are using (name of mac)
| *   * Set KAName to whatever version of KissAssist you are using (name of mac)
| *   * Set AFNWiz to FALSE if you want your Wiz to be given over to KissAssist (for whatever reason)
| *   * Set ACClr to FALSE if you want your Clr to be given over to KissAssist (for whatever reason)
| *   * Set AllowWizClr to TRUE if you want your Wiz or Clr to be allowed to be MA or MT (whatever)
|		   I am undecided at this time whether or not I want to keep that functionality.
| ------------------------------------------------------------------------------------------------

| ------------------------------------------------------------------------------------------------
Sub Main

	/echo *** Incog's MQ2StartMacs - Beta 1 - 2016 ***
	/declare ACName 		string 	outer AutoCleric
	/declare KAName 		string 	outer kissassist
	/declare Debug			bool	outer FALSE
	/declare Broadcast 		bool	outer TRUE
	/declare AFNWiz			bool	outer TRUE
	/declare ACClr			bool	outer TRUE
	/declare AllowWizClr	bool	outer TRUE
	
	| --------------------------------------------
	| ** Do NOT change these - internal use vars
	| --------------------------------------------
	/declare MyInd 			int 	outer
	/declare x 				int 	local 0
	/declare MA 			string 	outer
	/declare MT 			string 	outer
	/declare GetOut 		bool 	outer FALSE
	/declare CSN			string 	outer
	| --------------------------------------------

	/varset MA ${Group.MainAssist}
	/varset MT ${Group.MainTank}
	
	/if (!${Group.Members}) {
		/echo YOU have not created a group yet. Aborting.
		/return
	}
	/if (${MA.Find[null]}) {
		/echo Please assign MainAssist in Group Window. Aborting.
	}
	/if (${MT.Find[null]}) {
		/echo Please assign MainTank in Group Window. Aborting.
	}
	/if (${MT.Find[null]} || ${MA.Find[null]}) /return
	/if (${Broadcast} || ${Debug}) /echo Detected MA: ${Group.MainAssist} - ${Group.MainAssist.Class} - MT: ${Group.MainTank} - ${Group.MainTank.Class}
	
	| ** Undecided yet if I want to allow a WIZ/CLR to be able to be MA/MT **
	/if (${Select[${Group.MainAssist.Class},WIZ,CLR]} && !${AllowWizClr}) {
		/echo WIZ or CLR detected as MA. Aborting.
		/return
	}
	/if (${Select[${Group.MainTank.Class},WIZ,CSN]} && !${AllowWizClr}) {
		/echo WIZ or CLR detected as MT. Aborting.
		/return
	}
	| start at 1 instead of 0 to exclude yourself, we are doing ourself last after the loop
	/for x 1 to ${Group} 
		/if (${Debug}) /echo INSIDE Loop - X: ${x} - OtherZone: ${Group.Member[${x}].OtherZone} - Type PC: ${Group.Member[${x}].Type.Equal[PC]} - OffLine: ${Group.Member[${x}].Offline}
		/if (${Broadcast}) /echo Processing GroupMember ${x} - ${Group.Member[${x}].Name} a ${Group.Member[${x}].Class.ShortName}
		/If (!${Group.Member[${x}].OtherZone} && ${Group.Member[${x}].Type.Equal[PC]} && !${Group.Member[${x}].Offline}) {
			/varset CSN ${Group.Member[${x}].Class.ShortName}
			/call CheckForAFNuke ${x} ${CSN}
			/if (!${Macro.Return}) /call CheckForAC ${x} ${CSN}
			/if (!${Macro.Return}) /call CheckForAssist ${x} ${CSN}
			/if (!${Macro.Return}) /call CheckForPullerTank ${x} ${CSN}
			/if (!${Macro.Return}) /call CheckForPuller ${x} ${CSN}
			/if (!${Macro.Return}) /call CheckForTank ${x} ${CSN}
			/doevents
		}
		/varset GetOut FALSE
	/next x
	
	/if (${Debug}) /echo After LOOP - MacReturn: !${Macro.Return} - GetOut: ${GetOut}
	/varset MyInd ${Group.Member[${Me}].Index} | should be zero
	/varset CSN ${Group.Member[${MyInd}].Class.ShortName}
	| /varset GetOut FALSE
	/if (${Debug}) /echo Last Member (Me) MyInd: ${MyInd} - MyClass: ${CSN} - MacReturn: ${Macro.Return} - GetOut: ${GetOut}
	/if (${Broadcast}) /echo I am ${Group.Member[${MyInd}].Name} a ${CSN}
	/call CheckForAFNuke ${MyInd} ${CSN}
	/if (!${Macro.Return}) /call CheckForAC ${MyInd} ${CSN}
	/if (!${Macro.Return}) /call CheckForAssist ${MyInd} ${CSN}
	/if (!${Macro.Return}) /call CheckForPullerTank ${MyInd} ${CSN}
	/if (!${Macro.Return}) /call CheckForPuller ${MyInd} ${CSN}
	/if (!${Macro.Return}) /call CheckForTank ${MyInd} ${CSN}
/return

Sub CheckForAC(int GrpMemNum, string CName)
	/if (${Debug}) /echo Inside CheckForAC GrpMemNum: ${GrpMemNum} - CName: ${CName} - ACFlag: ${ACClr}
	/if (${Select[${CName},CLR]} && ${ACClr}) {
		/call DoAutoCleric ${GrpMemNum}
		/varset GetOut TRUE
	}
/return ${GetOut}

Sub CheckForAFNuke(int GrpMemNum, string CName)
	/if (${Debug}) /echo Inside CheckForAFNuke GrpMemNum: ${GrpMemNum} - CName: ${CName} - WizFlag: ${AFNWiz}
	/if (${Select[${CName},WIZ]} && ${AFNWiz}) {
		/call DoAFNuke2 ${GrpMemNum}
		/varset GetOut TRUE
	}
/return ${GetOut}

Sub CheckForPullerTank(int GrpMemNum, string CName)
	/if (${Debug}) /echo Inside CheckForPullerTank GrpMemNum: ${GrpMemNum} - CName: ${CName}
	/if (!${Select[${CName},CLR,WIZ]} && ${Group.Member[${GrpMemNum}].MainTank} && ${Group.Member[${GrpMemNum}].Puller}) {
		/call DoKAPullerTank ${GrpMemNum}
		/varset GetOut TRUE
	} 
/return ${GetOut}

Sub CheckForTank(int GrpMemNum, string CName)
	/if (${Debug}) /echo Inside CheckForTank GrpMemNum: ${GrpMemNum} - CName: ${CName}
	/if (!${Select[${CName},CLR,WIZ]} && ${Group.Member[${GrpMemNum}].MainTank} && !${Group.Member[${GrpMemNum}].Puller}) {
		/call DoKATank ${GrpMemNum}
		/varset GetOut TRUE
	} 
/return ${GetOut}

Sub CheckForPuller(int GrpMemNum, string CName)
	/if (${Debug}) /echo Inside CheckForPuller GrpMemNum: ${GrpMemNum} - CName: ${CName}
	/if (!${Select[${CName},CLR,WIZ]} && !${Group.Member[${GrpMemNum}].MainTank} && ${Group.Member[${GrpMemNum}].Puller}) {
		/call DoKAPuller ${GrpMemNum}
		/varset GetOut TRUE
	} 
/return ${GetOut}

Sub CheckForAssist(int GrpMemNum, string CName)
	/if (${Debug}) /echo Inside CheckForAssist GrpMemNum: ${GrpMemNum} - CName: ${CName}
	/if (!${Group.Member[${GrpMemNum}].MainAssist} !${Group.Member[${GrpMemNum}].MainTank}) {
		/call DoKAAssist ${GrpMemNum}
		/varset GetOut TRUE
	} 
/return ${GetOut}

Sub DoAutoCleric(int GrpMemNum)
	/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to ${ACName} assisting ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //mac ${ACName}
/return

Sub DoAFNuke2(int GrpMemNum)
	| TODO AFNuke85/100
	/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to AFNuke2 assisting ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //mac afnuke2
/return 

Sub DoKAAssist(int GrpMemNum)
	/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to ${KAName} assisting ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //mac ${KAName}
/return 

Sub DoKAPullerTank(int GrpMemNum)
	/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to ${KAName} PullerTank assisting ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //mac ${KAName} pullertank
/return 

Sub DoKATank(int GrpMemNum)
	/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to ${KAName} Tank assisting ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //mac ${KAName} tank
/return 

Sub DoKAPuller(int GrpMemNum)
	/if (${Broadcast} || ${Debug}) /echo Assigning ${Group.Member[${GrpMemNum}]} to ${KAName} Puller assisting ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //tar ${MA}
	/bct ${Group.Member[${GrpMemNum}]} //mac ${KAName} puller
/return
 
Last edited:
Well crap, server's up, macro no workie. I'll have to troubleshoot tomorrow, too tired tonight.
 
Last edited:
Well crap, server's up, macro no workie. I'll have to troubleshoot tomorrow, too tired tonight. DO NOT USE
Looks like CNS/CSN typo, and WIZ/CLR typo, and come comment wonkyness. This is working for me now.

Rich (BB code):
:57	/declare CSN			string 	outer   | Change from CNS to CSN to match rest of macro
	
:76	| ** Undecided yet if I want to allow a WIZ/CLR to be able to be MA/MT **  | Add space after comment delimeter

:81	/if (${Select[${Group.MainTank.Class},WIZ,CLR]} && !${AllowWizClr}) {   | Fix CRL typo

:85	| start at 1 instead of 0 to exclude yourself, we are doing ourself last after the loop  | Add space after comment delimeter
 
Last edited:
LOL I don't think I've ever had anyone troubleshoot for me before. Thx Mate! The fricken comments, man, yeah they get wonky. I've had them cause probs for merely being in what MQ2 considers the wrong spot, and it doesn't tell you.

This thing runs fast. The puller already had a mob in camp before I could even verify that each grp member had the right macro running. I had a cleric in grp that I am PLing and just wanted it to melee and soak up XP while giving the appearance of participating. The ACClr flag worked great and it started up with KA.

OP Updated.
 
Yeah, I'm loving it. I don't have to update my social based on who is in group anymore! It's the little things.. lol.
 
I'm up to 24 toons now, and a few more one-offs. The hotkey management gets to be a nightmare after a few toons. And once I get to the custom KA INI's according to lvl & class it would have otherwise been a total nightmare.
 
Note: Something I've been using awhile:

IF you remove the Puller designation (or never set it) on your MA, this mac will start your MA as Tank. To turn on pulling you can issue:
Rich (BB code):
/varset Role PullerTank

Put it in a Social/HotKey. Why would you want to do this? Because I like to make sure the group is ready, and buffed, everything is good to go before pulling. I check that everyone's mac is not only started, but the right one. It would be frustrating if for some reason the CLR didn't launch correctly, MA could be dead before you switched windows and manually healed (or weren't paying attn and never noticed). You could then tag the MA as Puller in Grp Win if that is the desired setting (to make merc stay in camp etc).

Using the varset allows me to toggle Pulling on and off which is useful for myraid reasons. Obviously /varset Role Tank works in reverse.

NOTE: If starting KA in Tank mode, and ReturnToCamp is not on in the INI, you will need to issue a /camphere before setting Puller mode so the puller has some place to pull to. Otherwise Puller will engage mob at whatever distance the mob may be and will eventually, if not immediately, be out of range of group. Depending on how you are accustomed to having your ReturnToCamp setting in the INI, you could always add a /camphere to your Puller hotkey.
 
Release And Now - a macro to start your AFNuke2, AutoCleric and Kissassist

Users who are viewing this thread

Back
Top
Cart