• 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

The Ultimate Auto Macro Guide

Status
Not open for further replies.
Joined
Feb 8, 2005
RedCents
8,901¢
UNDER CONSTRUCTION

Contents

How to use this macro
type
Rich (BB code):
/mac auto
in game

Philosophy
Auto macros is meant for the average mq2 user that just wants to jump in game and type /mac auto and go. It is always evolving, but this is the main purpose of the Auto macro line. I don't condone expanding its purpose to facilitate every type of way to play a character, however with this guide you can do that if you choose. As a community the purpose of this guide is to educate so you can take the control in your hands and build your classes Auto macro. Why would you do this? Simple, you get to customize your class the way it should be and be rewarded with Redcents (I'm drinking hot tea out of a redguides mug as I type this). Myself and community will be here to help guide the macro along as long as you do the leg work. You will build the class guide outlined below and learn using the content here and macroquest2.com wiki. The community will fill in a lot of the blanks and help you out. This guide will evolve and more content will be added as time goes on. The one piece of advice I will give you: DO NOT COPY PASTE CODE FROM ANOTHER MACRO! I will probably scold you for doing it, and it just makes the macro cumbersume and run like crap. If you want to take what another macro does, by all means look at the code and determine what it is doing and how to replicate it. From here you can make a sample macro to test this code and then implement it. Also, asking the community on how to do something is the best solution.

Customizaiton

The macro is split into 2 parts:
1. Main part that all classes use (autosubs.inc)
2. Class only (auto_CLR.mac or auto_WAR.mac)

When customizing you will only be modifying the Class part as the others are shared across other classes and can have many consequences when changing. Each Class mac will be name auto_classshortname.mac for example:
Rich (BB code):
auto_CLR.mac

Class Template
Rich (BB code):
|------------------------------|
|---auto_mac.inc by YourName --|
|--------Version 1.0.0 --------|
|------ 00-00-2018 Update -----|
|------------------------------|

Sub ClassMainLoop
	|===Specific Actions for this class belong here that aren't in autosubs.inc OR auto.mac
	|===Ex. /call MezMobs
/return

Sub ClassVarSetup
	|====This is where you would define specific variables that you are going to use. Again do not RE-DEFINE variables used by autosubs.inc or auto.mac
	|====Ex. /declare mob2mez1	string outer NULL
/return

Sub Sub ClassAliasSetup
	|====This is used for aliases. Typically ingame commands that can change variables or make the macros do certain things.
	|====Recommended for advanced users. Can leave blank. 
/return

Sub INIChanges
	|====Here is where you would put specific variables that you want to keep from each launch of the macro. I.E. remembering if you had camp on. 
	/varset changetoini 0
	/call SetIni General FollowToonName string "${FollowToonName}"
	/call SetIni General UseFellowship		int ${UseFellowship}
	/call SetIni General InstantRelease		int ${InstantRelease}
	/call SetIni General AutoCampHold		int ${AutoCampHold}
/return

Sub SetupDiscs
	|====This is used for Melee classes. Casters will leave these blank. Here is a sample from auto_WAR.inc
	|====Note: you'd fill out the variable name you declared in ClassVarSetup, the level and the name of the disc WITH RankName. 
	|====Syntax Format: /if (${Me.Level}>=000 && ${Me.CombatAbility[${Spell[NAMEOFDISC].RankName}]}) /varset NAMEOFVARIABLE ${Spell[NAMEOFDISC].RankName}

	/if (${Me.Level}>=101 && ${Me.CombatAbility[${Spell[Dichotomic Shield].RankName}]}) /varset bmdisc Dichotomic Shield
	/if (${Me.Level}>=59 && ${Me.CombatAbility[${Spell[Fortitude Discipline].RankName}]}) /varset missall ${Spell[Fortitude Discipline].RankName}
/return

Sub SetupSpells
	|====This is used for Caster classes. Pure melee will leave these blank. Here is a sample from auto_CLR.inc
	|====Note: you'd fill out the variable name you declared in ClassVarSetup, the level and the name of the disc WITH RankName. 
	|====Syntax Format: /if (${Me.Level}>=000 && ${Me.Book[${Spell[NAMEOFDISC].RankName}]}) /varset NAMEOFVARIABLE ${Spell[NAMEOFDISC].RankName}

	/if (${Me.Level}>=102 && ${Me.Book[${Spell[Ward of Surety].RankName}]})  {
		/varset wardspell ${Spell[Ward of Surety].RankName}
	} else /if (${Me.Level}>=97 && ${Me.Book[${Spell[Ward of Certitude].RankName}]})  {
		/varset wardspell ${Spell[Ward of Certitude].RankName}
	}
/return

Using the common auto_subs to Attack, Cast, etc...
In the Class Main Loop you will make "calls" to perform actions, such as casting, moving, attacking, etc... these have already been programmed in to the auto_subs.inc so you can easily do it on command. So lets step through the logic of making a simple melee macro.

Finding a target
Finding the target to kill. This is done by simply adding the following line to ClassMainLoop.
Rich (BB code):
/if (!${Me.Combat}&&${Me.XTarget[1].ID}) /call FindTarget
What /call FindTarget does:
1. Checks Extended Target to find the mob with the lowest HP.
2. Checks to see if there is a MainAssist set and if it is assisting. If not, It will pick the lowest HP in Extended Target.
3. Targets the new target
4. Engages the target IF variable UseMelee = 1 AND Target HP is below variable AutoAssistAt = ## AND Target is within variable AutoCampRadius units AND LineofSite.

Sticking to a target if attacking
Now lets say your target is targeting the correct target, but not engaging (sticking) to the target but are Attacking. All conditions are met above, but the character doesn't use MQ2Melee. Well use the following sub to engage the target. Always set a condition to do this. Lets make sure we do this by using the conditions above but not finding the new target.
Rich (BB code):
/if (${Stick.Status.Equal[OFF]}&&${Me.XTarget[1].ID}&&${UseMelee}==1&&${Spawn[npc id ${autotargetid}].PctHPs}<=${AutoAssistAt}&&${Spawn[npc id ${autotargetid}].PctHPs}>0&&${Target.ID}==${autotargetid}&& ${Spawn[id ${autotargetid} npc los radius ${AutoCampRadius}].ID}) /call EngageTarget
What /call EngageTarget does:
1. If Feign Death stand
2. If not sticking /stick to mob

Sit when not in combat
Does all the sit logic to sit when you aren't doing anything and are low on mana / endurance. Doesn't need any Conditions they are built in.
Rich (BB code):
/call SitCheck
What /call SitCheck does:
1. Checks if you are Moving, Extended Target, In Combat, Sticking, or Following
2. If above = false then you will sit
 
Last edited:
The Ultimate Auto Macro Guide
Status
Not open for further replies.

Users who are viewing this thread

Back
Top
Cart