UNDER CONSTRUCTION
Contents
How to use this macro
type
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:
Class Template
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.
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.
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.
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
Contents
How to use this macro
type
Rich (BB code):
/mac auto
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
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
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
1. Checks if you are Moving, Extended Target, In Combat, Sticking, or Following
2. If above = false then you will sit
Last edited:

