| altability | array | buff | character | ground | group | groupmember | item |
| plugin | skill | spawn | spell | string | switch | time | timer |
| type | window | zone |
| argb | bool | body | byte | class | corpse | deity | evolving |
| float | heading | int | invslot | ticks | race | raidmember |
| currentzone | macro | macroquest | math | merchant | raid |


[MQ2]Echo - [MQ2] no combat - endingCall Stack
[MQ2]WriteChatColor([MQ2] no combat - ending)
[MQ2]WriteChatColor(Cleared the following: Timers Arrays)
[MQ2]EndMacro - Ended
[MQ2]WriteChatColor(The current macro has ended.)
>>>First-chance exception at 0x03002e30 (MQ2Main.dll) in eqgame.exe: 0xC0000005: Access violation reading location 0x0127bde8.
>>>MQ2Main.dll!HideDoCommand(EQData::_SPAWNINFO * pChar=0x423338e8, char * szLine=0x0127bde8, int delayed=0) Line 118 + 0x9 C++Code where the crash occurred
MQ2Main.dll!DoNextCommand() Line 40 C++
MQ2Main.dll!Heartbeat() Line 255 + 0x5 C++
MQ2Main.dll!Detour_ProcessGameEvents() Line 270 C++
eqgame.exe!004acd5f()
ntdll.dll!77f944a8()
ntdll.dll!77f57d70()
ntdll.dll!77f58a3a()
ntdll.dll!77f5d760()
ntdll.dll!77f8696d()
ntdll.dll!77f59bf9()
ntdll.dll!77f5d90e()
ntdll.dll!77f5d8e2()
ntdll.dll!77f944a8()
ntdll.dll!77f944a8()
ntdll.dll!77f57d70()
ntdll.dll!77f58a3a()
MQ2CommandAPI.cpp (line 118)Disassembly
if (Pos==0) {
if (pCommand->Parse) {
pCommand->Function(pChar,ParseMacroParameter(pChar,szParam));
}
else
pCommand->Function(pChar,szParam);
>>>strcpy(szLastCommand,szLine);
return;
}
pCommand->Function(pChar,szParam);Macro Fundamentals
03002E15 mov eax,dword ptr [pChar]
03002E18 lea edx,[esp+1018h]
03002E1F push edx
03002E20 push eax
03002E21 call dword ptr [esi+40h]
03002E24 add esp,8
strcpy(szLastCommand,szLine);
03002E27 mov edx,offset _szLastCommand (3075528h)
03002E2C mov eax,ebx
03002E2E sub edx,ebx
>>>03002E30 mov cl,byte ptr [eax]
03002E32 mov byte ptr [edx+eax],cl
03002E35 inc eax
03002E36 test cl,cl
03002E38 jne HideDoCommand+340h (3002E30h)
return;
Sub MainEverything within Sub Main is performed once you start the macro.
:OnExit
/return
|This is a single line commentMulti line comments can also be used. Multi-line comments begin with |** and end with **|
|** This is a multiple line comment wherePound Commands
you could use this form of commenting **|
Example#include "filename"
#define Me charactername
When the macro executes, when Me occurs, it will be replaced with charactername
ExampleA matching Sub must be used. Custom events are further explained in Subroutines.
#event SpellFizzle "Your spell fizzles"
Matching Sub:
Sub Event_SpellFizzle
/return
global
Variables of global scope ALWAYS exist until they are deleted or macroquest ends
outer
Variables of outer scope exist while a macro is running
local (default)
Variables of local scope only exist while within a macro function or "Sub"
ExamplesArrays
/declare MyVar int outer
Creates an int variable named MyVar that exists while the macro is running
/declare MyVar local
Creates a string variable named MyVar that exists within the Sub it was created in
/declare MyTimer timer outer 3000
Creates a timer named MyTime that is set to 3000 at creation and exists while the macro is running
Array ExamplesThere is no limit to the number of dimensions or the number of elements in each dimension, but use your own good judgement.
MyArray[10] int
Creates a single-dimension local array of int with 10 elements (1-10) all 0
MyArray[10,10] int outer 5
Creates a 2-dimensional 10x10 elements(1-10,1-10) int array of scope outer with all values of 5
MyArray[4,5,6] string outer UNDEFINED-ARRAY-ELEMENT
Creates a 3-dimensional array with 4x5x6 elements (1-4,1-5, 1-6) with UNDEFINED-ARRAY-ELEMENT in each location
Examples/varcalc varname formula
/varset MyString ${MyString}stuff
concatenate a string variable
/varset MyString stuff${MyString}
inserts stuff at the front of ${MyString}
/varset MyInt 123
Sets MyInt to 123
/varset MyTimer 123s
Sets MyTimer to 123 seconds
/varset MyFloat 1.23
Sets MyFloat to 1.23
/varset MyIntArray[n] 123
Sets array element n to 123
Examples/vardata varname newMQ2Datavalue
/varcalc MyInt 1+2*2+1
/varcalc MyInt 1+(2*2)+1
ExampleParsing
/vardata MyFloat Math.Calc[${Me.X}+${Me.Y}]
Example${${MyString}} will get the value of a MQ2Data query stored in MyString. This could be Me.Buff[1], or a variable name, or anything that is valid inside ${}. There is no limit to this recursion.
${MyString${MyVar}}
The parser first evaluates ${MyVar}. If MyVar's value is 1, this is then ${MyString1}.
${MyString1} is then evaluated, giving the value of whatever MyString1 is.
Sub Main
.
code
.
/return
Sub Main(int MyParam1, MyParam2, float MyParam3)
/if (${Defined[MyVar2]}) /goto :DoThis
/call MySub ${var1} ${var3}
/echo This value was returned from MySub: ${Macro.Return}
/return
Sub without defined parameters
Sub MySub
/if (${Defined[Param0]}) /goto :DoThis
.
execute this code when /call MySub is executed. Parameters are not necessary.
.
/return [value|${varname}]
Sub with defined parametersThe above Sub has 3 Parameters, MyParam0 is an int type, MyParam1 is a boolean type , and MyParam2 is a string type.
Sub MySub(int MyParam0, bool MyParam1, MyParam2)
.
execute this code when /call MySub is executed.
.
/return [value|${varname}]
Sub Event_Chat[(ChatType,Sender,ChatText)]
ChatType : Channel of message (tell, group, say)
Sender : Name of the person who sent the message
ChatText : Text they sent
ExampleTimer Events
Sub Event_Chat[(ChatType,Sender,ChatText)]
.
This code is executed when /doevents finds(queues) text in the channel defined by #chat "channel"
.
/return [value|${varname}]
Sub Event_Timer[(Timer,OriginalValue)]
Timer: Timer that fired
OriginalValue : Value timer was originally set to
ExampleCustom Events
Sub Event_Timer[(Timer,OriginalValue)]
.
This code is executed when /doevents detects(queues) any defined timer reaching 0
.
/return [value|${varname}]
Old Event systemThe #1# in the middle of the match text is what you use to indicate "this part of the message should be given to me in a parameter".
#Event SelfEcho "[MQ2] Genbot "
Here is what the new Event look like:
#Event SelfEcho "[MQ2] Genbot #1#"
ExampleMacroQuest2 Commands
#Event SkillUp "You have become better at #1#! (#2#)"
Sub Event_SkillUp(SkillUpText,Skill,int Amount)
/popup ${Skill} increased - ${Amount} ...
/echo ${Skill} increased - ${Amount} ...
/return
SkillUpText = "You have become better at #1#! (#2#)"
Skill = Parameter 1 = #1#
Amount = Parameter 2 = #2#
| list all | Lists all AA abilities available to you (doesn't mean you have them) in format [ID : name] |
| list timers | Lists just the AA you have that have timers |
| info abilityname | Gives information about a particular AA ability |
| act abilityname | Works like "/alt act ##", but takes the name instead of ## (note: You will notice a fraction of a second delay using this method vs. the /alt act ## method.) |
/alias [ list| aliasname delete] [ name command]
Examples
/alert add 1 "spawnname" Adds spawnname to alert list 1 /alert clear # Clears all members from alert list 1 /alert list # Lists all members of alert list 1 /alert add 1 npc radius 300 'spawnname' Sets alert(1) to TRUE if 'spawnname' is within radius of 300 from your location /alert add 2 npc range 30 200 'spawnname' Sets alert(2) to TRUE if any 'spawnname' are within 30 to 200 range from your location
/alias list/altkey command
Lists all aliases
/alias /hp /echo My health is ${Me.PctHPs}
Typing /hp in the EQ chat box will display: My health is % in the EQ chat window
/alias aliasname delete
Deletes aliasname from Macroquest.ini
| list | Lists all MQ2 binds |
| eqlist | Lists all Everquest binds |
| name keycombo | Binds name to the normal key combination keycombo |
| ~name keycombo | Binds name to the alternate key combination keycombo |
| name clear | Clears the key combination from name |
| ~name clear | Clears the alternate key combination from name |
Examples:/call subroutine [ Param0... [ Param#]]
/bind forward e Binds the forward command to key e /bind ~forward up Binds the forward command to alternate key uparrow /bind forward clear Clears the key used for the forward command /bind '/bind cast1 shift+1 Binds ''Cast gem 1'' to shift 1 key combination
Note: Changing EQ binds will not immediately update the display in the options window. Change the bind
list selection in the options window to see the updated keys.
Examples/caption list| type value| update # MQCaptions [on|off]
/call MySub Executes Sub MySub /call MySub varname1 varname2 ...[varname#] Executes Sub Mysub and passes parameters
Player1 is linked to /shownames 1
Player2 is linked to /shownames 2
Player3 is linked to /shownames 3
Player4 is linked to /shownames 4
Example
Player1=${If[${NamingSpawn.Trader},Trader,]}${If[${NamingSpawn.Invis},(${NamingSpawn.DisplayName})
Use "\n" to add a new line when setting captions
ExampleWhen using MQCaption if no parameter is given, the default parameter is off
/caption update 20
Sets the number of nearest spawns for MQ2 to update the name of each pass to 20. By default, this is 35.
Examplesname that can be used
/captioncolor list
/captioncolor pcclass on
/captioncolor pctrader on
/captioncolor pctrader 255 128 0
PC OFF (Default color for PCs)/cast [" spellname" | " ${varname}" | #] [ item " itemname"] [ list]
PCCon OFF (PCs by con color)
PCPVPTeam OFF (PCs by PVP team color)
PCRaid OFF (Raid members))
PCClass OFF (PCs by class color(raid settings))
PCGroup OFF (Group members))
PCTrader ON Color: 255 127 0. (Traders)
NPC OFF (NPC default color))
NPCCon ON (NPCs by con color))
NPCClass OFF (NPCs by class color (raid settings))
NPCMerchant ON Color: 255 127 0. (NPC Merchants)
NPCBanker ON Color: 200 0 255. (NPC Bankers)
NPCAssist ON Color: 255 255 0. (NPCs from main assist))
NPCMark ON Color: 255 255 0. (Marked NPCs)
PetNPC OFF (Pet with NPC owner)
PetPC OFF (Pet with PC owner)
PetClass OFF (Pet by class color (raid settings))
Corpse OFF (Corpses))
CorpseClass OFF (Corpse by class color (raid settings))
/cast "complete heal"/charinfo
/cast "${SpellName}"
/cast 1
/cast item "mana robe"
/cast list
Examples
/click left Performs a left mouse click at the current mouse position /click left 100 100 Performs a left mouse click at 100 100 /click left +30 -30 Performs a left mouse click 30 pixels right and 30 pixels up from the current location /click right target Performs a right click on your current target /click left center Performs a left click in the center of the viewport area
Example/ctrlkey command
/combine pack8
Example usage (NOTE: MQ2's very first bind command is "RANGED" so you do not need to do this, but for example)/declare varname global | local | timer | array | array2
/custombind add mybind
/custombind set mybind /ranged
/bind mybind n
Binds the /ranged command to the n key
Examples
/delay 5 Delays the macro execution for 5 tenths of a second /delay 1s Delays the macro for 1 second /delay 1m Delays the macro for one minute
Example of condition usage:
/keypress forward hold
/delay 1s ${Spawn[1234].Distance}<${Spawn[1234].MaxMeleeTo}
/keypress forward
Will execute /keypress forward when ${Spawn[1234].Distance}<${Spawn[1234].MaxMeleeTo} evaluates to TRUE or after 1 second passes.
Example
/docommand ${If[${Me.Sitting},dotrue,dofalse]}
Examples/doors [" filter"]
/doevents chat doevents will only run chat events /doevents flush Clears all events in the /doevents queue /doevents SpellFizzle doevents will only run SpellFizzle events
Example:/endmacro
/echo My current health is at ${Me.PctHPs}
Examples/filter [ macros all| enhanced| none] [ skills all | increase | none] [ target | money | food | encumber | debug on | off] [ name [ add text] | remove ] [ zrange #] [ mq on| off]
/face Turns you to face and look at your selected target /face nolook Faces your target without changing your vertical view angle /face fast Immediately turns your character to face and look at the target /face fast predict Immediately turns your character to face and look at the target's estimated position /face fast nolook Immediately turns your character to face your target without changing your vertical view angle /face fast nopredict Immediately turns your character to face and look at your target's estimated position /face item Faces and looks at the item from /itemtarget /face fast item Immediately faces and looks at the item from /itemtarget
/for varname value1 to|downto value2 [step val3]/goto : labelname
.
commands
.
/next varname
/goto :MyLabel/help macro
/highlight color # # #
Sets the highlight color to an RGB value
Note: You can use search filters for spawnname
Example/ini " ini filename" " keyname" " valuename" " value"
/if (${firstvar.Equal[This is true]}) {
/echo TRUE
} else /if (!${secondvar}) {
/echo FALSE
/mqlog secondvar equals: ${secondvar}
} else {
/echo It's Something else
}
Example/itemnotify [ in] location [ slot#] notification
stuff.ini contains:
[MySection]
Key1=123
Key2=This is cool!
Key3=Wheeee... 15
/ini "stuff.ini" "Section2" "ANewKey" "Some Data!"
stuff.ini after the above command is executed:
[MySection]
Key1=123
Key2=This is cool!
Key3=Wheeee... 15
[Section2]
ANewKey=Some Data!
notification can be:
leftmouse No action leftmouseup Removes the item and puts it on cursor (same as left clicking it) leftmouseheld For making hotkeys (you know, hold down left button) leftmouseheldup No action rightmouse No action rightmouseup Casts the effect, or opens the container (same as right clicking it) rightmouseheld Opens item display window rightmouseheldup Closes the item display window for that item
Examples:/items [" filter"]
Exchange of item in primary slot:
/itemnotify pack8 leftmouseup
itemnotify mainhand leftmouseup
itemnotify pack8 leftmouseup
Click grim aura earring:
itemnotify rightear rightmouseup
ExamplesNote: /keypress works with EQ key binds as well as MQ2 keybinds. See /bind
/keypress jump Taps the key mapped as the jump key /keypress forward hold Holds down the mapped forward key /keypress forward Releases the mapped forward key after /keypress forward hold
AutoExec.CFG
Executed on the first pulse
CharSelect.CFG
Executed when you are put at character select
server_character.CFG
Executed when this character enters the world
mapshortname.CFG
Executed when you zone into this zone
pluginname-AutoExec.CFG
Executed when this plugin is loaded (after its initialization is complete)
Examples of file names:/loadhud hudname
tallon_lordsoth.cfg
character
oot.cfg, soldungb.cfg, soldunga.cfg, take.cfg
maps
MQ2Map-AutoExec.CFG, MQ2ChatWnd-AutoExec.CFG
plugins
Examples/macro filename [ Param0 [ Param1...]]
/look 50 Changes your look angle to +50 /look -75 Changes your look angle to -75 (down)
Example/mapfilter help| option [ color R# G# B#] (Requires MQ2Map plugin to be loaded)
/mapclick lalt+shift /mycommand %i
leftalt+shift right click on a spawn will cause /mycommand to be executed.
| All | Enables/disables map functions |
| CastRadius # | Sets radius of casting circle to # (omit or set to 0 to disable) |
| Corpse | Displays corpses |
| Custom | Sets custom filter (omit to disable). Used same search options as /target and the Spawn search TLOs |
| Ground | Displays ground items |
| Group | Displays group members in a specific color |
| Help | Displays the available options for /mapfilter |
| Menu | Allows display of right-click context menu |
| Mount | Displays mounts |
| NormalLabels | Toggles non-MQ2 label display |
| NPC | Displays NPCs |
| NPCConColor | Displays NPCs in consider colors |
| PC | Displays PCs |
| PCConColor | Displays PCs in consider colors |
| Pet | Displays pets |
| spellradius | Displays a circle on the map, normally for spell radius. |
| Target | Displays your target |
| TargetLine | Displays a line to your target |
| TargetMelee # | Draws a melee-range circle around your target |
| TargetRadius # | Sets radius of a circle around your target to # (omit or set to 0) |
| Timer | Displays Timer objects on the map |
| Trap | Displays trap objects on the map |
| Trigger | Displays hidden triggers/traps |
| Untargetable | Displays untargettable spawns on the map |
| Vector | Displays heading vectors |
Examples/mapnames normal| target options (Requires MQ2Map plugin to be loaded)
/maphide reset
Re-generates the spawn list.
/maphide npc range 1-39
Hides all spawns level 39 and below
Here are a few examples as a guideCurrent % codes (more may be added later)
/mapnames normal [%l %R %C] %N
/mapnames target [%l %R %C] %N (%x, %y, %z)
| n | "Decorated" name like "a_coyote34" |
| N | "Cleaned up" name like "a coyote" |
| h | Current health % |
| i | SpawnID |
| x | X coordinate |
| y | Y coordinate |
| z | Z coordinate |
| R | Race full name - lower case "r" is reserved for race 3-letter code |
| C | Class full name - lower case "c" is reserved for class 3-letter code |
| l | Level |
Example
/memspell 1 "complete heal" memorizes Complete Heal in spell gem 1
Example/nomodkey command
/multiline ; /stand ;/rude ;/sit
Example/notify windowname 0 | controlname [ notification [ data]]
/noparse /ini blah blah blah ${stuff}
Note: ${stuff} is literal instead of changing it to the current value of stuff.
| leftmouseup | Performs a left click on controlname |
| leftmouseheld | Left click and hold on controlname until leftmouseheldup is performed |
| leftmouseheldup | Releases the mouse from leftmouseheld |
| rightmouseup | Performs a right click on controlname |
| rightmouseheld | Performs a right click and hold on controlname |
| rightmouseheldup | Releases the mouse from rightmouseheld |
| enter | Presses the enter key on controlname |
| close | Clicks the Close Window gadget of windowname |
| mouseover | Hovers the mouse over controlname |
| newvalue n | Changes the value in controlname to n |
| listselect n | Selects the nth item in the controlname list |
You can use /notify to click on a link in the chat window.
Examples
/notify hotbuttonwnd HB_Button1 leftmouseup Activates the first hotkey /notify somewindow SomeSlider newvalue 100 Moves the referenced slider in the window to 100 /notify trackingwnd 0 close Closes the tracking window /notify TradeskillWnd RecipeList listselect 1 Selects the first item in the RecipeList listbox
/plugin name noauto/popup text
loads name without updating Macroquest.ini
/plugin name unload noauto
unloads name without updating Macroquest.ini
/popup Current Mana: ${Me.CurrentMana}/ranged [ spawnID]
/popup Run away! Run away!
Example/sellitem 1| #
Sub MySub
.
<code>
.
/return [value|${varname}]
/seterror clear/shiftkey command
Clears the last error value
Example
/shiftkey /itemnotify pack1 leftmouseup
Pick up an entire stack
Examples/spew on| off
/skills Lists all of your skills with skill level /skills pottery Returns your pottery skill
/squelch /filter mq on/substitute [ orig substitution | delete] [ list]
<do your stuff here>
/squelch /filter mq off
Examples/target option
/substitute mom Mother
/substitute omg Oh my god!
/substitute k "%omg, kill %t before I tell your %mom"
The final example if you typed "/say %k" would produce:
Oh my god!, kill targetname before I tell your Mother
Please note the following rules/reminders:
- You don't use the percent signs when creating the substitutions or editing your config file.
- You can use MQ's subsitutions without spaces around them (unlike EQs!) (ie: /echo "%omg%mom" would return "/echo Oh my god!Mother"
- Substitutions do not currently work in macros.
- /sub is currently a valid shorthand for "/subsitute"
- You can use EQ's wildcards (ie: %t) within your substitutions; however, you have to leave spaces around them (yes, they suck)
- You cannot CURRENTLY replace EQ wildcards with MQ substitutions (ie, you can't make a replacement for %m (This may be supported in the future.)
| clear | Clears your current target |
| pc|npc | Selects nearest pc or npc. |
| corpse | Selects the nearest corpse |
| pet | Selects the nearest pet |
| class class | Selects the nearest class match to target |
| race race | Selects nearest race to target |
| range min max | Sets the minimum and maximum level range to target |
| noalert alert# | Target nearest spawn not on alert # |
| nearalert alert# | ***NEED TO FILL THIS DESCRIPTION IN*** |
| notnearalert alert# | ***NEED TO FILL THIS DESCRIPTION IN*** |
| zradius zheight | Targets the spawn if it is within the height value |
| radius distance | Targets the spawn if it is within the 2D distance |
| nopcnear radius | ***NEED TO FILL THIS DESCRIPTION IN*** |
| notid|id spawnid | ***NEED TO FILL THIS DESCRIPTION IN*** |
| spawnname | Targets the nearest specified spawnname |
| myself|mycorpse | Targets the yourself or your corpse |
| alert alert# | Targets the specified keyword |
Example/unload
/timed 10 /echo 1 second has passed
Example/vardata varname new_mq2data_value
/varcalc MyVar ${Me.CurrentMana} - ${Spell[Complete Heal].Mana}
Example/varset varname value| ${varname2}
/vardata MyFloat Math.Calc[${Me.X}+${Me.Y}]
Examples/where [ pc| npc|" spawn name"]
/varset myvar 25 Sets myvar to 25 /varset array[3] 10 Sets the value of array[3] to 10 /varset casttimer 30 Sets the timer to 3 seconds /varset array[2,12] 45 Sets the value of array[2,12] to 45 /varset casttimer 3m Sets the Timer to 3 minutes
ExamplesThe message returned is:
/where Lists the closest pc or npc /where pc Lists the closest pc /where npc Lists the closest npc where npc "orc pawn" Lists where the closest orc pawn is
| group|pc|npc [invis|merchant|tribute|gm|corpse|any] | Lists all matches in the zone for the option used. Note that tribue is tribute master and gm is Guild Leader |
| range minlevel maxlevel | Lists all matches for the option used that are within the level range designated. |
| radius # | Lists all matches for the option used that are within the radius designated. |
| guild | noguild | Lists all guild members in the zone or pc's in the zone not in a guild |
| lfg | Lists all characters who are looking for a group in the zone |
| loc intX intY | Returns the spawn located that intX intY |
| name | Lists the character with the name name if he/she/it is in the zone |
| alert # | Lists any npc/pc on alert # |
| noalert # | Match all spawns not on list # |
| knight | returns Paladins and Shadowknights in the zone |
| tank | returns paladins, shadowknights, and warriors in the zone |
| healer | returns druids and clerics in the zone |
| dps | returns wizards, rangers, and rogues in the zone |
| slower | returns shamans, enchanters, and beastlords in the zone |
float DistanceYou then append .Distance to the TLO name: Target.Distance
Distance from player in (x,y)
/echo Distance to target is: ${Target.Distance}which returns the distance to your target in the float format ###.###
ExampleMQ2Data Members
Using the int immediate type member with a spawn reference type member:
If you wanted to convert the float value Distance to an int value, you could append one of the members of the float immediate type.
${Target.Distance.Int}
int Screw"int" is a type of object which means WHOLE NUMBER while Screws is the name of the object
${TopLevelObject[index](cast).Member[index](cast).Member[index](cast)}To change ${Target} from a string to a boolean:
${Target}(bool)Which could be used in:
${If[${Target}(bool),true,false]}All Boolean use must use a numeric property. ${If[${Target.Name},true,false]} will fail.
ExampleHowever, the part that will come in handy is for people to extend these types by using their own types in a plugin. If you wanted, you could have your plugin make a type called "mytype" that accesses a spawn. Maybe a member of mytype is called "IsCloseToMe" and is a bool value. This would let you do: ${Spawn[1](mytype).IsCloseToMe}.
/varset myvar ${Spawn[1](int)}Do NOT do that! It will only work until the memory address changes. Instead, use the ID as you always have:
/echo ${Int[${myvar}](spawn).Name}
/varset myvar ${Spawn[1].ID} /echo ${Spawn[${myvar}].Name}
| altability AltAbility[n] | Alt ability by number |
| altability AltAbility[name] | Alt ability by name |
ExamplesBool
/echo ${AltAbility[Combat Stability].RequiresAbility}}
Returns the pre-requisite AA ability needed to train in this Ability
/echo ${AltAbility[n].RequiresAbility}}
Returns the pre-requisite AA ability needed to train in the Ability with the number n
Examples
/declare MyVar bool
/varset MyVar ${Bool[This is true]}
/echo ${MyVar} would echo TRUE
/varset MyVar ${Bool[NULL]}
/echo ${MyVar} would echo FALSE
int CurrentHPs Current hit pointsThe italicized text preceding the member name indicates the return type, in this case an integer. The property name follows the return type.
ExampleIf you look at the members and properties of the character referenceType, you will notice that there is no Speed property, but since character has access to the properties of the spawn reference Type, you can find your character's speed by using ${Me.Speed}
/echo ${Me.CurrentHPs}
ExampleCursor
/if ${Corpse.Open} {
Do this stuff
}
If the loot window is open Do this stuff
ExampleDefined
/if (${Cursor.ID} ) /autoinv
If something is on your cursor, drop it into the autoinventory
ExampleGround
/if (${Defined[varname]}) { Do this stuff }
If the variable has been declared execute Do this stuff
ExampleFindItem
/echo ${Ground.Distance}
Echos the distance to the ground item you have targeted
ExamplesFindItemBank
/itemnotify ${FindItem[sprinkler].InvSlot} leftmouseup
Picks up your cleric epic from your corpse
/itemnotify ${FindItem[swirling].InvSlot} leftmouseup
Picks up any item containing the word swirling from the opened corpse
ExampleFindItemBankCount
/echo ${FindItem[=Swirling Shadows]}
This is a simple example with little use, but If the item is found, the name of the item will be echoed
ExampleFindItemCount
/echo ${FindItemBankCount[Swirling]}
Returns how many Swirling Shadows you have in your bank
ExampleFloat
/echo ${FindItem[=Water Flask]}
Echoes the number of Water Flask you have in your inventory
ExampleGameTime
${Float[12.345].Deci}
Creates a float object of 12.345 and truncates the decimal to one decimal place
ExampleGroup
/echo ${GameTime.Date}
Echos todays real time date to the chat window
| heading Heading[degrees] | Creates a heading object using degrees (clockwise) |
| heading Heading[y,x] | Creates a heading object using the heading to this y,x location. |
| heading Heading[N,W] | Same as above, just an alternate method |
ExamplesIf
/echo ${Heading[15].ShortName}
Echos the shortname of the heading of 15 degrees.
/echo ${Heading[-342,700].ShortName}
Echos the shortname heading to the location -342,700
ExamplesIni
/docommand ${If[${Me.Sitting},/stand,/echo I am not sitting down]}
If I am sitting, stand up, Otherwise echo I am not sitting down
/docommand ${If[${Me.CurrentHP}<50,/cast "Gate",/goto :Continue]}
If my hp percent is below 50 cast the Gate spell, otherwise goto the Continue label
ExampleInt
sample.ini contains:
[KeyOne]
value1=foo
value2=bar
[KeyTwo]
Value3=foobar
${Ini[sample.ini,KeyOne,value1]} returns foo
${Ini[sample.ini,KeyOne] returns value1|value2||
${Ini[sample.ini] returns KeyOne|KeyTwo||
| int Int[n] | Make an int object using n |