Skip to content

Modbot 4.0

WIKI PAGE UNDER CONSTRUCTION

ModBot - A Universal Bot Macro

  • Caster
  • Melee
  • Shrouds & MM's
  • Mez, Charm, Heal, Melee, etc
  • All classes supported
  • Now supports mixed groups of MQ2 and Non-MQ2 users/players
  • ModBot is under constant improvement effort, open to suggestions / additions / adjustments, etc

ModBot_4.x Source

General Note on Wiki Entries - Release ZIP packages - While the majority of entries in the Wiki apply to ModBot in general, there are always some entries that apply to changes, additional functionality, new commands, etc. Please keep this note in the back of your mind as you work with the Wiki - if you come across a command, etc. that will just not seem to work for you (and you have already thoroughly researched it, checked syntax, re-checked syntax, etc.), please take a moment to check your version of the module that it applies to - you may need to update.

How To

To use ModBot

  1. Extract and place all included files from zip (all .mac and .inc files) into your MQ2 macro directory.
  2. From inside EQ, type /macro modbot (e.g. /macro modbot OR /macro modbot raidmode).

This will build, if it doesn't exist, your MB_.ini file. Optional entries will make a

MB__.ini. Being shrouded on startup without using an option will use your race and class for the

creation of an MB__.ini file.

  1. From inside EQ, end the macro by typing /endmac
  2. Tab out of EQ, locate your new MB_.ini file in your macro directory, and open it. You can use the editor

of your choice, but Notepad will work just fine.

  1. For every component of the macro you want to use, increase the respective "count", if you want two heals, set

AHCount=2, if you want 2 debuffs, set ADCount=2, etc. After you have set your counts, save and close the INI file.

  1. Tab back over into EQ and restart the macro (/macro modbot). This will now populate your INI file based on the count

entries that you made in the previous step

  1. End the macro again by typing /endmac
  2. Open the INI file once more and "tweak" the newly created entries to fit your needs. When you are done, save and

close the INI file.

  1. Tab back over to EQ and restart the macro.

Your bot should now be just that, a BOT and will listen to your every command (assuming you are the master).

For examples of complete class ModBot INI files, please go to the example INI page.

Please Note!! One thing to keep in mind throughout the configuration of the ModBot INI file: keep your most critical and most used spells, activities, etc., first in their respective INI sections. You don't want your mez spell as Debuff number 20, you don't want slow as debuff 10, you don't want a CBT based buff as buff 23, and you don't want CH as heal 1 (you want your most desperate heal as heal 1), etc. Configure your heals, buffs, debuffs, etc. in a highest priority first order.

Reference to Understanding the ModBot WiKi

- Replace this with the respective descriptor Example 1 -_is luclin_bobby Example 2 -is bobby

(text) - These are "comments" and should be removed when saving the respective file Example 1 - Send=1 (If set to 1 it will send netbots information over the network) This text: *``\(If`````set to 1 it will send netbots information over the network)``\*`should NOT appear in the INI file` ````` [text\] - This is to show different options or series of options Example 1 - /bc cast[, %t, grp,, etc]``

Plugin Requirements & Examples

I suggest you have a good understanding of how to configure each of these plugins. Any misconfiguration can have an adverse affect on the performance of ModBot

Prefered versions are found within the Plugins_Other.zip file that can be found Here (Our thanks go out to the orignal makers and maintainers of these plugins)

MQ2AdvPath (Wiki page) MQ2Cast (Wiki Page) MQ2eqbc (Wiki Page) MQ2Exchange (Wiki Page) MQ2Melee (Wiki Page) MQ2MoveUtils (Wiki Page) MQ2NetBots (Wiki Page) MQ2Twist (Wiki Page) and a modified version of MQ2Main\MQ2Utilities Optional: Mq2Banolier (Wiki Page)

  • If you plan to use item swapping and spell foci items, you may need to configure "sets"

Plugin INI Examples

Example _.INI for MQ2NetBots, MQ2Cast, MQ2Melee:

[MQ2NetBots] Stat=1 Send=1 Grab=1 [MQ2Cast(SpellSet)] ModBot2=1111|1 12345|2 22342|3 43241|4 42342|5 23423|6 12532|7 22334|8 33221|9 11225|10 55443|11 22337|12 88559 [MQ2Melee] enrage=1 facing=1 infuriate=1 jugular=0 petassist=1 petengagehps=94 petrange=45 plugin=1 resume=75 stickrange=75 version=8.000

Example MQ2MoveUtils.INI for MQ2MoveUtils:

[Defaults] AutoPause=on BreakOnWarp=on BreakDist=250.0 BreakOnGate=on Verbosity=1 stuckDist=0.8 turnDirection=10.0 stuckCheck=5 StuckLogic=off

Example MQ2Bandolier_.ini for MQ2Bandolier:

[ThisSet] 17=12345 13=23456 14=34567

ModBot HUD

[_] Last=ModBotHUD SkipParse=7 CheckINI=100 UpdateInBackGround=on ClassHUD=on ZoneHUD=on

[ModBotHUD] Target= 3,060,210,225,225,225,${If[${Target.ID},Dis:${Int[${Target.Distance}]}-Lvl:${Target.Level}-${Target.Class.ShortName}-${Target.PctHPs}%,]} Name1= 3,060,220,240,240,000,${If[${NetBots.Counts}>=1,${NetBots.Client.Arg[1]} ${NetBots[${NetBots.Client.Arg[1]}].Level} XP:${Int[${NetBots[${NetBots.Client.Arg[1]}].PctExp}]} AXP:${Int[${NetBots[${NetBots.Client.Arg[1]}].PctAAExp}]},NA]} HP1= 3,060,230,255,100,100,HP:${If[${NetBots.Counts}>=1,${NetBots[${NetBots.Client.Arg[1]}].PctHPs},]}% Mana1= 3,105,230,100,100,255,M:${If[${NetBots.Counts}>=1,${NetBots[${NetBots.Client.Arg[1]}].PctMana},]}% End1= 3,145,230,255,234,008,E:${If[${NetBots.Counts}>=1,${NetBots[${NetBots.Client.Arg[1]}].PctEndurance},]}% Pet1= 3,185,230,255,255,255,Pet:${If[${NetBots.Counts}>=1 && ${NetBots[${NetBots.Client.Arg[1]}].PetID}>0,${NetBots[${NetBots.Client.Arg[1]}].PetHP},]}% Name2= 3,060,240,240,240,000,${If[${NetBots.Counts}>=2,${NetBots.Client.Arg[2]} ${NetBots[${NetBots.Client.Arg[2]}].Level} XP:${Int[${NetBots[${NetBots.Client.Arg[2]}].PctExp}]} AXP:${Int[${NetBots[${NetBots.Client.Arg[2]}].PctAAExp}]},NA]} HP2= 3,060,250,255,100,100,HP:${If[${NetBots.Counts}>=2,${NetBots[${NetBots.Client.Arg[2]}].PctHPs},]}% Mana2= 3,105,250,100,100,255,M:${If[${NetBots.Counts}>=2,${NetBots[${NetBots.Client.Arg[2]}].PctMana},]}% End2= 3,145,250,255,234,008,E:${If[${NetBots.Counts}>=2,${NetBots[${NetBots.Client.Arg[2]}].PctEndurance},]}% Pet2= 3,185,250,255,255,255,Pet:${If[${NetBots.Counts}>=2 && ${NetBots[${NetBots.Client.Arg[2]}].PetID}>0,${NetBots[${NetBots.Client.Arg[2]}].PetHP},]}% Name3= 3,060,260,240,240,000,${If[${NetBots.Counts}>=3,${NetBots.Client.Arg[3]} ${NetBots[${NetBots.Client.Arg[3]}].Level} XP:${Int[${NetBots[${NetBots.Client.Arg[3]}].PctExp}]} AXP:${Int[${NetBots[${NetBots.Client.Arg[3]}].PctAAExp}]},NA]} HP3= 3,060,270,255,100,100,HP:${If[${NetBots.Counts}>=3,${NetBots[${NetBots.Client.Arg[3]}].PctHPs},]}% Mana3= 3,105,270,100,100,255,M:${If[${NetBots.Counts}>=3,${NetBots[${NetBots.Client.Arg[3]}].PctMana},]}% End3= 3,145,270,255,234,008,E:${If[${NetBots.Counts}>=3,${NetBots[${NetBots.Client.Arg[3]}].PctEndurance},]}% Pet3= 3,185,270,255,255,255,Pet:${If[${NetBots.Counts}>=3 && ${NetBots[${NetBots.Client.Arg[3]}].PetID}>0,${NetBots[${NetBots.Client.Arg[3]}].PetHP},]}% Name4= 3,060,280,240,240,000,${If[${NetBots.Counts}>=4,${NetBots.Client.Arg[4]} ${NetBots[${NetBots.Client.Arg[4]}].Level} XP:${Int[${NetBots[${NetBots.Client.Arg[4]}].PctExp}]} AXP:${Int[${NetBots[${NetBots.Client.Arg[4]}].PctAAExp}]},NA]} HP4= 3,060,290,255,100,100,HP:${If[${NetBots.Counts}>=4,${NetBots[${NetBots.Client.Arg[4]}].PctHPs},]}% Mana4= 3,105,290,100,100,255,M:${If[${NetBots.Counts}>=4,${NetBots[${NetBots.Client.Arg[4]}].PctMana},]}% End4= 3,145,290,255,234,008,E:${If[${NetBots.Counts}>=4,${NetBots[${NetBots.Client.Arg[4]}].PctEndurance},]}% Pet4= 3,185,290,255,255,255,Pet:${If[${NetBots.Counts}>=4 && ${NetBots[${NetBots.Client.Arg[4]}].PetID}>0,${NetBots[${NetBots.Client.Arg[4]}].PetHP},]}% Name5= 3,060,300,240,240,000,${If[${NetBots.Counts}>=5,${NetBots.Client.Arg[5]} ${NetBots[${NetBots.Client.Arg[5]}].Level} XP:${Int[${NetBots[${NetBots.Client.Arg[5]}].PctExp}]} AXP:${Int[${NetBots[${NetBots.Client.Arg[5]}].PctAAExp}]},NA]} HP5= 3,060,310,255,100,100,HP:${If[${NetBots.Counts}>=5,${NetBots[${NetBots.Client.Arg[5]}].PctHPs},]}% Mana5= 3,105,310,100,100,255,M:${If[${NetBots.Counts}>=5,${NetBots[${NetBots.Client.Arg[5]}].PctMana},]}% End5= 3,145,310,255,234,008,E:${If[${NetBots.Counts}>=5,${NetBots[${NetBots.Client.Arg[5]}].PctEndurance},]}% Pet5= 3,185,310,255,255,255,Pet:${If[${NetBots.Counts}>=5 && ${NetBots[${NetBots.Client.Arg[5]}].PetID}>0,${NetBots[${NetBots.Client.Arg[5]}].PetHP},]}% Name6= 3,060,320,240,240,000,${If[${NetBots.Counts}>=6,${NetBots.Client.Arg[6]} ${NetBots[${NetBots.Client.Arg[6]}].Level} XP:${Int[${NetBots[${NetBots.Client.Arg[6]}].PctExp}]} AXP:${Int[${NetBots[${NetBots.Client.Arg[6]}].PctAAExp}]},NA]} HP6= 3,060,330,255,100,100,HP:${If[${NetBots.Counts}>=6,${NetBots[${NetBots.Client.Arg[6]}].PctHPs},]}% Mana6= 3,105,330,100,100,255,M:${If[${NetBots.Counts}>=6,${NetBots[${NetBots.Client.Arg[6]}].PctMana},]}% End6= 3,145,330,255,234,008,E:${If[${NetBots.Counts}>=6,${NetBots[${NetBots.Client.Arg[6]}].PctEndurance},]}% Pet6= 3,185,330,255,255,255,Pet:${If[${NetBots.Counts}>=6 && ${NetBots[${NetBots.Client.Arg[6]}].PetID}>0,${NetBots[${NetBots.Client.Arg[6]}].PetHP},]}%

ModBot Commands & Syntax

ModBot commands are executed in a few different ways:

  • /bc
  • /bc
  • /bct
  • /bct

Are probably most common but check out the EQBC Forum thread for more methods / features.

You can also configure an alias so you can run modbot on the character you control and execute ModBot commands.

To create the alias you must run this from the EQ prompt:

  • /alias /mb /echo mb-

Or change the LoadAlias variable in MBCommon.inc [Settings] section from 0 to 1 if you've lost the alias in your Macroquest.ini

With this alias you can tell your bot locally what to do:

  • /mb makecamp
  • /mb buffup
  • /mb letsroll
  • /mb

Command Reference

Section Updated: June 7, 2009

  • abort (Interrupts any cast in progress, Sets - DoHeals, DoDebuffs & DoMelee FALSE and follows the sender

closely, usefull when you want to RUN away)

  • addbuff "\|\" ABSpellAlias ABTarType (Adds a new buff entry to the

character's INI file.)

  • You must restart the ModBot macro after executing the addbuff command in order to complete the adding of the

    buff entry.

  • The Spellname, etc. section can be entered directly (e.g. */mb addbuff "Bone Mask of the Ancient Iksar|item"

    iksar self_) or, if adding a clicky, by holding the item on your cursor (e.g._ /mb addbuff

    "${Cursor.Name}|item" iksar self*). Please note that the quotes around the spellname|gem section are required.

  • ABTarType will accept multiple targets if quotes are used (e.g. */mb addbuff "Levitiation|gem1" levi "war mnk

    rog"*).

  • addbuff execution will add ABGem, ABSpell, ABSpellAlias and ABTarType entries to the characters INI file. The

    remaining buff lines (ABSpellFociX, ABDurModX, etc.) will be added once you restart the ModBot macro (the array

    size change (ABCount) will also not increment until after re-start). For example, using these Bonemask example

    command, the following entires will be added to the INI file (where "X" is equal to whatever the next numbered

    entry is in your advbuff section):

ABGemX=item

ABSpellX=Bone Mask of the Ancient Iksar

ABSpellAliasX=iksar

ABTarTypeX=self

  • attack (Sets DoMelee TRUE and forces bot to attack the TankName's target)
  • attack (Sets DoMelee TRUE and forces bot to attack the target)

* Note: OffTank must be TRUE to use this option (I may remove this requirement though TBD)

* Example 1 - /bc attack badguy

* Example 2 = /bc attack badguy 100 20

  • buffup (This will set DoBuffs & DoEvents TRUE & DoHeals FALSE)
  • campout (Performs a /camp desktop and ends the macro)
  • cast <on/off> (This will disable or enable the spell associated with this alias)
  • cast [<spawnname/id> \<%t> ] [<spawnname/id> \<%t> ] (infinte)
  • If the spell is detrimental, CAST targets the requester's target.
  • If the spell is beneficial, it targets the sender or, if grp is present, it casts buff on group members.
  • If %t is present, it targets the requester's target.
  • The cast command will ignore INI settings for things like minmana, maxmana, recasts, buff debuff counters, etc.

    This command is mainly used for manual, "one off" type casts.

Example 1 - /bc cast buffhp grp haste bob haste jane dmgshld bob Example 2 - /bc cast dmgshld bob nuke tash Example 3 - /bc cast slow "nasty add"

  • doafk [on, true, off, false, ]
  • dobuffbot [on, true, off, false, ] (Places the bot in "BuffBot Mode".

Currently once set to on or true, it will NOT turn off and you MUST restart the macro to "quit" this mode. It will

cast any spell alias on the requesting target. The requester must be a "master". Example: /t buffhp

  • dobuffs [on, true, off, false, ]
  • docombines (Toggle that turns docombines on/off (default off). Docombines will check for an open tradeskill

window with an enabled combine button (you have to select recipe), and will click the button. Upon a successful

combine, Modbot's built in cursor handling takes over. Useful for tank to summon more arrows during fight. An

associated event will fire and toggle docombines to FALSE when you run out of recipe components.)

  • docures [on, true, off, false, ]
  • dodebuffs [on, true, off, false, ]
  • doevents [on, true, off, false, ]
  • doforage [on, true, off, false, ]
  • dofw [on, true, off, false, ]
  • doheals [on, true, off, false, ]
  • dolist (Used to /bc out the existing "Do" status)
  • doloot [on, true, off, false, ]
  • domelee [on, true, off, false, ]
  • domount [on, true, off, false, ] (To cast a mount or not, used in conjunction

with MountCast INI entry)

  • dopet [on, true, off, false, ] (To cast a pet or not, used in conjunction

with PetCast INI entry)

  • dopull [on, true, off, false, ] (not fully production yet)
  • dopull <on/off/path> (Self explanatory. See the instructions on forums.)
  • doquest [on,true,off,false] (Default is TRUE. If set to FALSE, your looter will ignore items marked "quest"

and still loot other items.)

  • Can be used to add quest items to your loot.ini file. For example, while holding an item on cursor, */mb doquest

    4 Hair of the Dog* will set the item you're holding to "=Quest|4|Hair of the Dog|" in loot.ini.

  • Can also be used in conjunction with the QuestOnly variable (found in the setting section of the loot.ini

    file). If both doquest and QuestOnly are set to TRUE, your toon will only loot quest items. Also note that if

    QuestOnly is set to TRUE and doquest is set to FALSE, your toon will only loot cash off of mobs.

  • Please see the modloot section found

    here for more information on the

    loot.ini file.

  • dosit [on, true, off, false, ]

  • dosongs [on, true, off, false, ] (used for bards only)
  • dotells [on, true, off, false, ] (Toggles a beep when tells are recieved from

non-netbots toons. Useful for tells in background sessions)

  • **exclude ** (Adds to alert list, to save list you must use the "save" option, otherwise

it will not be written to the INI file)

  • The exclude list is dynamic and will only exclude mobs that are present in the zone AND that are on the list.
  • If you want to force an exclude you must edit the INI file and place a "#" in front of the mobs name (e.g.

    ExcludeList=a dusty barrel|a dark coffin|#a bitten victim|a hollow tree|, this will always force "a bitten

    victim" to be on the exclude list)

  • Use the following commands from a character to add mobs to the exclude list (Kroak suggested just tossing this

    in a two-line hotkey):

    • /bcaa //mb exclude ${Target.CleanName} Will write the exclusion to a string that is checked through the

    debuff loop

    • /bcaa //mb exclude save Will write the exclusion in the mbcommon.ini and that exclusion includes the zone

    id, so mobs of the same name in a different zone are NOT excluded. You shouldn't have to re-run the macro

    after an exclude but if you do this in the midst of comabat or something, while mobs are near, it may not

    "take" as quickly.

  • For mob names with spaces in them, simply enter the name without any quotations. For example:

    • ''/bcaa //mb exclude a small bat
  • See the Include command (found below) to temporarily remove a mob from the alert list

  • follow (Follows the sender or )

  • follow close (Follows the sender within 3 steps, very close)
  • give (Calls the sub GiveCheck to hand an item to a toon or NPC.)
  • ItemCount is optional and will default to 1.
  • The give command can be used in conjunction with categories that have been defined in the loot.ini. For

    instance, if you have items marked 'SpellScroll' in your loot.ini, and the Category variable has "SpellScroll"

    included, you can issue the give command as follows: /mb give Bob SpellScroll TRUE. The result will be that

    all items on your toon that are marked with that category (SpellScroll) in your loot.ini will be handed to Bob.) * goto (Bot will move to the loc given) * handin (Target an NPC or PC, get one item on your cursor, and all of that item will be handed to them and trade

or give button pressed.)

  • holdup (This will set DoBuffs,DoDebuffs,DoEvents,DoMelee all to FALSE)
  • include (Removes from alert list, this will not save to the INI file, see exclude save)
  • letsroll (This will set DoBuffs,DoHeals,DoMelee,DoEvents,DoDebuffs TRUE)
  • makecamp (This will Makecamp at existing location. Use /makecamp off or /mb stop to toggle makecamp

functionality off)

  • mana (Used to /bc out the existing Mana % of the bot)
  • mbpause or mbp [on, true, off, false, ] (Used to pause or unpause the

macro)

  • mbwayplay (Used to playback previously recorded paths / waypoints, through zones, doors, chaining

paths, etc.)

  • mbwayrec (Used to record a path / waypoint.)
  • Once started, ducking for each location will add a waypoint to the path.
  • Sitting stops path recording and returns to modbot functions.
  • To add doors, chains, pull locations, etc. you'll need to edit the MBWayPlay.INI file
  • Further information about mbwayplay and mbwayrec (along with examples) can be found

    here in the wiki. * offtank <on/off> (Toggles offtanking for dealing with adds.) * script (This will allow you to run custom commands while the macro is running, or

combine series of commands, see script examples in manual / rev notes)

  • sell (You must be within range of a merchant in order to function, it will sell loot marked as

"=SELL" in the loot.ini file)

  • sell (With NPC targeted will attempt to sell all items marked "sell" in your lootIni file to

target. Otherwise optional target name can be supplied.)

  • setinivar (This will find and change any setting in your .ini)
  • Note that this command will have trouble with script settings if you have more than one (it will set the first

    C1= or whatever that it comes to.

  • Variables changed in the .ini are /varset with the macro running

  • Spells, gems, etc. will not be set unless you use the array correctly for . In other words,

    ADGem[1] is not the same as ADGem1:

    • Use ADGem[1] and this will set the ADGem1 .ini setting and varset the change to memory.
    • Use ADGem1 and it will only change the .ini.
  • This still has a problem finding variables in very long sections. If /echo \({Ini\[\),

    ]} is over the MAX_STRING value - (You go LD typing that if it is). - Stuff like ABGem[20] is almost never found. (Still working on that.)

For example, Ligament Slice for a rogue was set up from in-game with these commands typed in to the MQ window (and the rogue was able to put it immediately to use):

/mb setinivar ADCount 4

(restart macro - had 0 count before)

/mb setinivar ADGem[1] alt

/mb setinivar ADSpell[1] Ligament Slice

/mb setinivar ADTarBegHP[1] 40

/mb setinivar ADTarCnt[1] 1

/mb setinivar ADTarType[1] 1

/mb setinivar ADAnnounce[1] /bc

/mb setinivar ADSpellAlias[1] snare

  • sing (Will sing this song and add the respective gem number to the Twist.List, it attempts to use

detrimental as the qualifier to add it to combat songs, or rest songs)

  • stop (Will stop following and/or stop in place)
  • sung (Will remove this song from the respective Twist.List, it attempts to use detrimental as the

qualifier to remove it from combat songs, or rest songs)

ModBot in game usage and commands

Example commands: /bc Bob follow me [This tells bob and only bob to follow me] /bc cast dd [this tells every bot to cast the spell alias dd] /bc shamandude cast buffsta grp buffhp focus grp buffhp %T [buffsta on the group, buffhp on the requester, focus on the group, buffhp on requesters target] /bc necroguy makecamp [this tells "necroguy" to makecamp] /bc campout [tells all bots to camp to desktop] /bc exclude ${Target.CleanName} [tells all bots to add your target to the exclude / ignore list, toons will not attack any spawn with that name.] /bc clericname dobuffs on [tells the cleric to set DoBuffs to true and will then begin buffing group] /bc pallyguy cast bmb %t buffhp grp [bmb on requesters target, buffhp on the group]

Typical commands sequence for an EXP group: /bc letsroll /bc makecamp You then begin to pull mobs and they will react accordingly.

Mobile Camp Example: /bc follow /bc buffup [once ready zone into the instance] /bc stop /bc letsroll [clear first room lets say] /bc follow [move to next room] /bc makecamp [etc, repeat]

Example movement options with or without invis /bc mbp on /bc follow

Make a EQBC Channel and do things like (using this technique you don't even have to be a master) /bct mycoolchannelname //mb letsroll /bct mycoolchannelname //mb campout

ModBot INI Settings

PreFace Notes

  • Spell Alias's must be unique across all alias's

Obsolete? 06272011 -Changed - ?

"cast" command usage now allows for multiple aliases. If you have several spells with the same alias, using /bc castwill now cast all spells marked. Example, for shaman you can have Fo7, Talisman of Boar, Talisman of Wrulan, Talisman of Tribunal, ect.. all marked with "fullgroup". "/mb cast fullgroup" will cast each spell in the order they are found in the .ini file. `Buffing -Group buffs can now be seperated to different classes, and will allow keeping the spell on netbots members in seperate groups from the caster with the inclusion of keyword`"raid". Example -````` Code: ``````[AB2] ABGem=8 ABSpell=Focus of the Seventh ABSpellFoci= ABDurMod=50 ABSpellAlias=fo7|grpfocus|fullgroup ABAnnounce= ABSpellMinMana=20 ABTarCnt=2 ABTarType=war shd pal rng mnk rog brd bst ber shm dru wiz mag enc nec raid ABRecast=FALSE ABSpellIcon= ABPreCondition=TRUE Note from the above example that clr is not included in the TarType.. My clerics have the spell blocked. Attempting to cast on them will cause a chain loop of``````casting until the cleric gets self buff on that doesn't "stack" with focus. - so watch spell stacking and make sure to set your toons accordingly.``````````` Old format of "self" will also work with no change if you don't want to buff other groups with the spell. Commands - Tell commands will now check buff aliases, and don't need "cast" to ask for buffs.. "/tellfullgroup" from a non-master toon will make the shaman cast every spell with that alias on the sender of the tell. Masters still require use of "cast". - This does allow guildies or whoever else knows your aliases to get buffs easily. /say is not affected and is still not enabled for modbot. `` Added "docommand" -Master toons that aren't in netbots can now directly command toons. "/telldocommand /sit" will make the receiving toon sit, or execute any command after`````the "docommand" keyword. - Word of caution - You can cause macro errors with this if you aren't careful. The command sent is executed directly with /docommand in the macro.A tell received of "/telldocommand /sit" will locally execute "/docommand /sit" Watch extra characters and or brackets.. - Because of the nature of this one,the commanding toon MUST be listed in MasterList.`

  • You should be familiar or at least capable of making MQ2Bandolier sets as they are used by MQ2Cast for "foci"

items

  • Please treat the Buff, Debuff, Event, Heal INI sections as a first in first out (FIFO). Highest priority to lowest

priority, you don't want mez or slow as AD12 but as AD1. You don't want AH1 as Complete Heal, you want AH1 to be

DA/DB (those are examples, use common sense)

  • If you want to add some visual zip to your announcements (things are easy to miss in /bc..), you can use color

coding and the like in any of your Announce settings. For example, *Announce=/bc [+r+]Group Mez \<\<[+y+]

%t [+x+]>> with %s [+x+]* will produce a line in the MQ chat window that is MUCH easier to see than the

regular fonts.

  • Rk. XX Usage - Heals, buffs, debuffs, and cures have code added to check your book and find the correct version of

the spell you're using on startup of modbot. Rk. II and Rk. III are not needed, but only for these sections. If you

upgrade a normal spell in these sections to Rk. II or III, restarting the macro will make the new spell work. Please

note that this does not apply to discs, potionbelt, abilities, or PetCast at this time (meaning you must include the

Rk. XX in the spell name for these types).

  • Setting spell duration modifications (AHDurMod, ADDurMod, ABDurMod, AEDurMod) - Use the following formula to

determine what number to set your DurMod at:

\({Spell[X\].Duration} \* (\)) == timer duration.}+${Spell[X].Duration

So if you want a 25% extension on the timer, set durmod to 25 to make ${Spell[X].Duration} * 1.25 = timer. Modbot shouldn't re-cast if timer is still running.

References

  • tnt = TankName Target
  • grp = group

Settings Section [Settings]

  • DoMelee=TRUE|FALSE
  • DoHeals=TRUE|FALSE
  • DoBuffs=TRUE|FALSE
  • DoDebuffs=TRUE|FALSE
  • DoEvents=TRUE|FALSE
  • DoCures=TRUE|FALSE
  • DoPull=TRUE|FALSE
  • DoPet=TRUE|FALSE
  • Must have a buff entry for creating a pet (in the AdvBuff section - see note for ABTarType). Also see note for

    Cleric pets under PetCast below. * DoSit=TRUE|FALSE * DoLoot=TRUE|FALSE * DoFW=TRUE|FALSE * Should I cast spells for food and water. (see FoodSpell and DrinkSpell entries) * DoForage=TRUE|FALSE * ForageIni=name of ini file for forage * Defaults to forage.ini. Please see the Related include files page for more information on the Forage.ini file. * DoAfk=TRUE|FALSE * DoMount=TRUE|FALSE * If set to TRUE, you must complete the MountCast entry below. * MountCast=Spell/Item name/AA name|gem #,item,alt * Use MQ2Cast syntax without quotes. Examples: * MountCast=Collapsable Roboboar|item * MasterList=PC Name,PC Name * Comma delimited list of names. Can also use ${NetBots.Client} to designate that any chars using NetBots can

    act as master. Examples:

    • MasterList=Bigbob,Sooper
    • MasterList=${NetBots.Client}
    • TankName=PC Name,PC Name
    • Comma delimited list of names. This variable will also be set when you designate a character using either the

    Main Tank or Main Assist group roles.

  • Can also use ${Group.MainTank.Name} to auto set this to whomever is set in the group main tank role. Examples:

    • TankName=Billytank,Larrytank
    • TankName=${Group.MainTank.Name}
  • Radius=#
  • Radius that I will monitor for NPCs. If you are having issues with your characters not casting buffs, etc. while

    not in combat, try adjusting the Radius setting down a bit to make certain that they are not pickng non-aggro

    mobs in the surrounding area. Example:

    • Radius=100
    • ExcludeList=npcname|npcname|
    • Pipe delimited names to exclude. Please note that you must have a Pipe "|" at the end. Example:
    • ExcludeList=a hollow tree|a broken barrel|
    • SitAggroRadiusCheck=#
    • Radius to check for aggro to see if I can sit. Default is 75.
    • AfkMessage=afk message
    • Enter a custom AFK message if desired (leave blank for no AFK message).
    • Default is "Not now, thanks".
    • DeathSlot=TRUE|FALSE
    • Will only be true if your bot needs to camp to desktop to save res timer. This way the macro will know if you

    died and had to camp out. * NetworkIni=Path and filename of ini file * Option for a network based INI file for scripts and path playback (mbwayplay and mbwaypnt.ini file). * File must be prefixed by "Network-" or "Net-" * Example: NetworkINI=X:\shared\modbot\mb_network.ini * TraderName=toon name|bazaar trader * For use with the Campout command. Example: * /bc campout trader will log in whatever toon you have set in the TraderName variable. * Second argument (|bazaar trader) will log in the toon and run the bazaar macro with the trader option (or any

    other mac+options you want there.) * FollowDistance=# * Designates how far you will stay from followee. * Default 20. * FollowStick=MQMoveUtils Options * If using MQ2MoveUtils, enter the options that you would like to use. Default 20 hold uw. Example: * FollowStick=20 hold uw * PetAggro=TRUE|FALSE * TRUE - pet taunt on * FALSE - pet taunt off * PetAssist=[1] * Assist and pet attack or not * PetFoci=[-bandolier|petfoci] * Any spell foci you want to swap in for this spell using MQ2Cast syntax, you must have previously created the set

    via the MQ2Bandolier plugin /createset command. * PetShrinkSpell=pet shrink spell name|gem# * Spell to be used to shrink your pet. Leave blank if you don't want your pet shrunk. Example: * PetShrinkSpell=Tiny Companion|gem9 * GoMNuke/GoRMNuke/GoERMNuke/GoDERMNuke=[] * GoMNuke, GoRMNuke, GoERMNuke and GoDERMnuke will only appear if the toon has the AA available upon startup.

    These settings only require the * ALIAS * of the debuff you want to be "cast" on the MA's target when the

    event fires. No script required. * **SummonFood=spell name,item name,alt

name|gem#,item,alt</span>**

  • These entries appear when DoFW is set to TRUE. Use MQ2Cast syntax for spell entry. Example:

    • SummonFood=Summon Food|gem12
  • **SummonDrink=spell name,item name,alt

name|gem#,item,alt</span>**

  • MQ2Cast syntax. Example:
    • SummonDrink=Summon Drink|gem8

Deprecated Entries

  • DoAura=[TRUE,FALSE] (Must have a completed AuraCast entry below) DEPRICATED!! Set up aura as a buff with

'self aura' as the ABTarType.

  • AuraCast=[\|\,item,alt>] (Example: Uber Aura|gem3) - DEPRICATED! Set up aura

as a buff with 'self aura' as ABTarType. Use MQ2Cast syntax without quotes.

  • PetCast=|gem\<#>|(for Suspended Minion II)] (PLEASE NOTE: As of 3.499 beta, PetCast is

no longer needed. You can now add pet to "AB" section by setting ABTarTypeX=petspell (or petcast). Pets won't be

cast unless DoBuffs and DoPet are true. Also shouldn't cast if in combat unless "cbt" is included in ABTarType. When

used with modbuff, Persistent Minion is also used automatically if you have it, and no extra entry needed. Original

entry: Spell to cast to create / recall pet. Example: PetCast=Animate Dead|gem8|smii (Mainly MQ2Cast syntax

without quotes))

  • Can also use for charming:

    • [charm \<NPC type 0=any 1=undead,vampyre 2=animal 3=summoned 4=(specify name

    type)> ]

    • Example: PetCast=charm 4 4 "lowland basilisk,a emerald drake"
    • For Cleric Hammer type pets that you only want to cast / have while in combat, you MUST have DoPet set to False

    AND have PetCast=|\,item,alt>)

AdvMelee [Melee]

  • OffTank=TRUE|FALSE
  • False - attack the MA target only
  • True - assist MA and then not change targets
  • ACLeash=#
  • The farthest the bot will move from where he is to engage a mob. However if "TankName" stays within 20 steps,

    the bot will exceed this leash. * ACAssistPct=# * Assist when target HP is this or less. Melee characters will engage at this point and caster pets will be sent

    in. * ACManaPct=# * Stop assisting when Mana drops below this. * Set to 0 for melee only * Set to 101 for non-melee casters * ACAnnounce=channel * Channel to announce in, or leave blank for no announce. Example: * ACAnnounce=/bc Will announce in MQ/EQBC window * ACAnnounce=/g Will announce in group chat * ACMeleeCmd=command * Use to set MQ2Melee commands. Example: * ACMeleeCmd=/melee plugin=1 * ACBefore=script * Special script code to execute before you engage. Example: * *ACBefore=/if ({ACMATarget} && {Spawn[{ACMATarget}].Type.Equal[NPC]} &&

    {Spawn[{ACMATarget}].Distance3D}\<={ACLeash} && {Me.CombatAbilityReady[Sneak Attack]} && {Me.Invis} &&

    {Me.Sneaking} && {Me.PctEndurance}>40 && !{Me.Moving}) /call mbscript SneakAttack*

    • ACBefore=/if (!{Me.Pet.ID}) /casting ''{PetCast}'' \<-- cleric pet hammer example
    • ACAfter=script
    • Special script code to execute after you leave combat. Uses same script format as ACBefore.

AdvHeal Section [AdvHeal]

Please note that for FD class toons and ${Group.Puller} - If they are out of ACLeash range and not FD, they will not be healed (to prevent aggro on group), but only if healer is not in 'combat' combatstate. If not in combat they will be healed.

For group heal spells, you must set the TarCnt to something greater than 1 in order for the spell to evaluate correctly (and be used as a "group" heal when more than one member of the group requires healing). For instance, if you have TarCnt=3, then at least 3 members of your group will need to be below the HP level that you set in the Class line. A possible issue may arise when the cleric is in a loop state where a single heal is being fired \(AHHealMode\) - it may take a bit for it to realize the single heal should be stopped and the group heal cast instead. Depending on how you have it configured, the use of AHHealMode can force it to not even check the your group heal spell as it's being told to only check one \(the single heal\). If this is the case (and not the desired result), perhaps use the group heal as the spell to check in AHHealMode.

  • AHCount=#
  • Number of heals you plan to have.
  • AHNewFormat=#
  • Set to '1' for ModBot v4 INI format
  • Set to '0' for ModBot v3.49 INI format
  • AHCheckTime=#
  • How often to check for heals in seconds.
  • AHHealOOBC=TRUE|FALSE
  • Do I heal characters outside of Netbots and EQBC (e.g. folks not running MQ2 or mercenaries.)

AHHealOOBC Thinking of an english name for that setting, all that comes up is "Heal Outside Of BC". So, in other words, if the setting is FALSE, it won't heal anyone that's not on YOUR EQBC server with the netbots plugin set up correctly, even if they're in your group. That is why I recommend you connect all toons and run modbot on all of them at least once, even if you don't plan to run it as a regular thing for the other toons.. It assures the plugins are set correctly. If AHHealOOBC=TRUE, then modbot will heal group members and pets even if there's no netbots connection. Out of group healing can only be done by the macro if there's a netbots connection, or if the other toon is a master and uses the cast command via /tell. I do recommend AHHealOOBC=TRUE setting, but I still left the default FALSE so people could check their connections before setting TRUE.

  • AHHealMode=#|#|#
  • 0 or 1 (off or on)|Heal #|Timer
  • This will keep the toon in the heal loop after casting to check for additional heals for the duration

    of . * AHInterruptLevel=# * Lowest interruptable spell. For example, AHHealSpell1 will never interrupt if this is set to 2. * AHClassPriority=class names * Set class healing priority (e.g. if you're currently healing a chanter, you won't interrupt for a monk). * Allowed entires are: enc,wiz,mag,nec,clr,dru,shm,pal,shd,war,bst,rng,ber,rog,brd,mnk (or any combination

    thereof) * AHAllowDismount=TRUE|FALSE * Designate whether your toon should dismount (or not) to interrupt a spell to cast a heal * TRUE - allow toon to dismount if necessary to interrupt a spell cast in order to fire off a heal. * FALSE - your toon will never dismount to interrupt a spell. * [AHx] * Where 'x' is the number of healing spell * Gem=source * Designate what the source of the spell is. * Valid entries: gem number, alt, ability, item, script, potionbelt * Note that 'potionbelt' does not require a slot number. * Examples: * Gem=3 Cast this spell from gem 3 * Gem=alt This spell is an alternative advancement ability * Spell=source name * Valid entries: spell name, item name, alternate ability name, ability name, script name * Examples: * Spell=Superior Healing This would be generally be paired with an Gem entry indicating which spell gem to

    cast Superior Healing from.

    • Spell=Healing Thingy of Uberness This would be generally be paired with an Gem entry indicating that the

    source of this spell is an item. * SpellFoci=setname * Bandolier set name to swap in before casting this heal. * Please see MQ2Bandolier and MQ2Cast to understand how to use swap sets. * DurMod=## * Any spell extension percentage, e.g. 05 (for 5%), 25 (for 25%). * Due to how spell durations / extensions are calculated, you may need to enter extensions in excessive of 100%

    (e.g. a 25% extension would be entered here as 125). Check your results in game to make sure you have set the

    correct extension. * SpellMinMana=# * Minimum mana percentage to have in order to attempt this heal (e.g. 05 \(for 5%\), 25 (for 25%) * SpellAlias=spell alias * Alias name for the heal. * Please note that you can NOT have spaces in your alias names. * Announce=channel * Channel to announce in, or leave blank for no announce. See Announce description in the AdvMelee section for

    further explanation. * TarCnt=# * Designate how many targets are required to cast this spell. * Class=class name(s) * Valid entries: pc pet group hp0 war shd pal rng mnk rog brd bst ber shm clr dru wiz mag enc nec mypet self (or

    some combination there of). Please also note the following combination restrictions:

    • pc \<-- will include pc's and mercs. Leave pet out to ONLY heal PC's and mercs.
    • pet \<-- will include pets. Leave pc option out for pet only heals.
    • group \<-- will exclude everyone that is not in your group
    • hp0 \<-- set an overall health percentage for any named classes
    • classnames (war, shd, etc.) \<-- used to declare which classes this heal should apply to. Can also be

    combined with a health persentage (e.g. bst50).

    • mypet to be used by itself (e.g. set up a seperate heal for your pet)
    • self \<-- Only use self if the heal spell is SELF ONLY, or only to be cast on yourself. This setting is

    exclusive and other targets will not be checked for that spell. * PreCondition=TRUE|FALSE|PR * Defaults to TRUE * PR (only to be used with NetBots) If PreCondition=PR, then for that particular heal there will be a check on

    target (over NetBots) for any PR type spell. If target has a PR buff on, then the heal will be skipped. Please

    note that the PR setting does not currently account for the duration remaining of the PR buff. PreCondition=PR

    will check for these spell ID's:

    • 9755 (Promised Renewal)
    • 9756 (Promised Renewal Rk. II)
    • 9757 (Promised Renewal Rk. III)
    • 18270 (Promised Recuperation)
    • 18271 (Promised Recuperation Rk. II)
    • 18272 Promised Recuperation Rk. III)

AdvDebuff Section [AdvDebuff]

  • ADCount=#
  • Number of debuffs you plan to have.
  • ADNewFormat=x
  • Set 'x' to 1 for ModBot v4 style
  • Set 'x' to 0 for MobBot v3.49 style
  • ADMobMax=#
  • This is the array size where the valid mob ID's are stored after found. The loop to find valid mobs uses

    SpawnCount, then stores the mobs it "finds" in the array. Setting this to 20 or 30 should be way more than

    enough ever. It is best to keep this setting (and therefor the array) relative small for memory purposes (as

    well as for speed through the debuff loop).

  • If your toons are ignoring NPCs, this number may be set too low. First thing to check!!

  • ADCheckTime=#
  • How often to check for debuffs in seconds.
  • "It's the forced delay or timer between allowing that section of the macro to execute again.. Set higher for

    toons you want to have more emphasis somewhere else.. Like a cleric can be 8 for debuffs and 0 for heals, but a

    shammy you'd want 0 for debuffs. 0 = no forced delay. Speed still varies depending on the size of the loops or

    how many heals, debuffs, ect are in each section." - toomanynames * ADAggroOnly=1|0 * 1 - only add mobs to the mob list if someone in your group or in netbots is the mob's target. Only use this

    option on bots that cast on targets that are NOT the main assist's target (e.g. chanter mezzing adds).

  • Please note: ADAggroOnly is not terribly reliable at times. If you are having issues with one of your bots

    auto-aggroing mobs (when they are not the tank), try setting ADAggroOnly=0 and then ADTarType=1 or 11. * ADHold=0|1|1| * 1=on 0=off|Debuff spell #|Time to wait for debuff| * This is used much like the AHHealMode setting, but only for type 12 debuffs. Sets a timer to hold the toon in

    the debuff loop (no buffs or events) until the debuff is complete. * [ADx] * Where 'x' is the number of Debuff spell * Gem[x]=source * Designate what the source of the spell is. * Valid entries: gem number, alt, ability, item, script, potionbelt * Note that 'potionbelt' does not require a slot number. * Examples: * Gem=3 Cast this spell from gem 3 * Gem=alt This spell is an alternative advancement ability * Spell=source name * Valid entries: spell name, item name, alternate ability name, ability name, script name * Examples: * Spell=Ensnare This would be generally be paired with an Gem entry indicating which spell gem to cast

    Ensnare from.

    • Spell=Bangy Thingy of Uberness This would be generally be paired with an Gem entry indicating that the

    source of this spell is an item. * SpellFoci=setname * Bandolier set name to swap in before casting this spell. Please see MQ2Bandolier and MQ2Cast to understand how

    to use swap sets. * DurMod=## * Any spell extension percentage, e.g. 05 (for 5%), 25 (for 25%). * Due to how spell durations / extensions are calculated, you may need to enter extensions in excess of 100% (e.g.

    a 25% extension would be entered here as 125). Check your results in game to make sure you have set the correct

    extension. * SpellAlias=spell alias * Alias name for the spell. Please note that you can NOT have spaces in your alias names. * Announce=channel * Channel to announce in, or leave blank for no announce. See ACAnnounce description in the AdvMelee section for

    further explanation. * SpellMinMana=# * Minimum mana percentage to have in order to attempt this spell (e.g. 05 \(for 5%\), 25 \(for 25%) * **SpellRecast=\#** * Number of times to recast this spell for fizzles, interrupts, etc. * **SpellCastonResist=spell alias** * Should this spell be resisted, is there another alias to cast before another attempt of this spell. * Please note that if SpellCastonResist is defined, ADSpellRecast must be at least 1. * **SpellDelay=\#** * Number of seconds to wait between casts of this spell. * **TarCnt=\#** * Number of targets required to be present to cast this spell. If set to 0, this spell will not be auto-casted\) * TarType=# * Designate one target type to cast this debuff on. * Valid target types: * 0 = All mobs * 1 = MA Target only * 2 = All except MA Target * 3 = Only on named mob * 10 = All mobs before next spell * 11 = MA target only before next spell * 12 = All but MA target before next spell * 13 = Only on named mob before next spell * Priority Debuffs (10, 11, 12, 13) should be placed first most (prior to non-priorities). Meaning - settings of

    10, 11, 12 and 13 need to be in top spells slots (AD1, AD2, etc) * TarBegHP=# * The target must be equal or below this HP%. * TarEndHP=# * The target must be equal or above this HP% * IfSpellImmune=script name * This is meant to be a pointer to a quick, one line script that is executed when a mob is immune to the spell you

    have cast. If you need to do something complicated, other scripts can be called from it. 'Param1' is now passed

    as the immune target's ID. An example where this would be useful is for chanter mez:

    • /bc {TankName} //multiline ; /varset ACMATarget {Param1};/target id {Param1} will make your

    toon target the immune mob even if he was on another mob at the time. * UseHoTT=# * This will cause the macro to /target the mob and check TargetOfTarget before casting and delay # seconds before

    checking again if mob is skipped. If not a raid or group member, the macro will move on and recheck that mob for

    that debuff after the time has expired. Note that this will default to casting the debuff anyways if HoTT isn't

    available. * PreCondition=one line script * Whatever statement you add to this line needs to /return TRUE. i.e. - PreCondition=/if ({This} && {That})

    /return TRUE. Only a TRUE return will allow the spell to cast, so script carefully, or leave the lines default.

Code:

[AD1] Gem=2 Spell=Turgur's Insects SpellFoci= DurMod=0 SpellAlias=slow Announce=/bc Slowed <<[+y+] %t [+x+]>> with[+g+] %s [+x+] SpellMinMana=10 SpellRecast=2 SpellCastonResist=malos SpellDelay=0 TarCnt=1 TarType=11 TarBegHP=200 TarEndHP=15 IfSpellImmune= UseHoTT=0 PreCondition=TRUE

"Notice the TarBegHP setting. I have the same spell set with TarType=12 directly after this one to make sure he slows adds. (sometimes he pulls em too..) Everything else - mainly ACAssistPct is set to a lower value. Most around 95 or so. Buffs are a pita because if the debuff sub is called \(it is called first\) it won't cast the debuffs if there's any reason not to, then the macro runs through the whole buff loop before getting back to debuffs again.. Setting the TarBegHP at least over the level of all other functions at least attempts to keep the slow first. Also.. I find the macro works best if you always set your ACManaPct very low. Usually keep mine around 5 or so for every toon. I should change the default on that, but clearing targets and such is something your toon will do quite often if his mana is under that value." - Ptarp on the forums on Wed Mar 09, 2011 7:54 pm. (edited into Wiki by Arblis)

AdvBuff Section [AdvBuff]

If you want to cast single target buffs after group buffs, place all of your group buffs first.

  • ABCount=#
  • Number of buffs you plan to have.
  • ABNewFormat=x
  • Set 'x' to 1 for ModBot v4 style
  • Set 'x' to 0 for MobBot v3.49 style
  • ABMobMax=#
  • Max number of targets to track for buffs (do not include pets)
  • ABCheckTime=#
  • How often to check for buffs in seconds
  • [ABx]
  • Where 'x' is the number of buff spell
  • Gem=source
  • Designate what the source of the spell is.
  • Valid entries: gem number, alt, ability, item, script, potionbelt
  • Note that 'potionbelt' does not require a slot number.
  • Examples:
    • Gem=3 Cast this spell from gem 3
    • Gem=alt This spell is an alternative advancement ability
  • Spell=source name
  • Valid entries: spell name, item name, alternate ability name, ability name, script name
  • Examples:

    • Spell=Minor Shielding This would be generally be paired with an Gem entry indicating which spell gem to

    cast Minor Shielding from.

    • Spell=Uber Wand Thingy of Uberness This would be generally be paired with an Gem entry indicating that the

    source of this spell is an item. * SpellFoci=setname * Bandolier set name to swap in before casting this spell. * Please see MQ2Bandolier and MQ2Cast to understand how to use swap sets. * DurMod=## * Any spell extension percentage, e.g. 05 (for 5%), 25 (for 25%). * Due to how spell durations / extensions are calculated, you may need to enter extensions in excessive of 100%

    (e.g. a 25% extension would be entered here as 125). Check your results in game to make sure you have set the

    correct extension. * SpellAlias=spell alias * Enter an "alias" for the spell. This is often a short, easier to use name (e.g. the alias for Spirit of the Wolf

    might be SoW).

  • Please note that you can NOT have spaces in your alias names.

  • Announce=channel
  • Channel to announce in, or leave blank for no announce. See ACAnnounce description in the AdvMelee section for

    further explanation.

  • Annoucements also support formatting (makes it a bit easier to see in the MQ window). For example:

    • Announce=/bc [+r+]Buffed \<\< %t >> with %s [+x+]
  • SpellMinMana=#
  • Minimum mana percentage to have in order to attempt this spell (e.g. 05 \(for 5%\), 25 (for 25%)
  • TarCnt=#
  • Designate how many targets are required to cast this spell.

    • If set to 0, this spell will not be auto-casted. This is useful for spells that you want to call via alias

    to be cast manually.

    • For single cast spells (e.g. Spirit of Eagle), TarCnt will most often be set to 1.
    • For group spells (e.g. Flight of Eagles), you might set your TarCnt higher so that it only gets cast when

    there are more than 2 or 3 people in your group. * TarType=target type * Valid target types are as follows (please note which entries can be used with others and which are exclusive): * ShortClassName Used for class specific buffs (ie. haste on "war"). Valid entries are: war shd pal rng mnk

    rog brd bst ber shm clr dru wiz mag enc nec. Note that any or all of these entries can be used at the same

    time.

    • self Used for self only spells.
    • grp for Group spells (e.g. TarType=self grp)
    • pet used to cast buffs on all pets in the group.
    • mypet used to cast on only your pet. Please note that pet and mypet are mutually exclusive.
    • cbt for spells to be casted during combat (e.g. an entry for Yaulp would be TarType=self cbt). Please note

    that any NPC within radius that is not on your exclude list will cause 'cbt' buffs to fire. If you want to

    buff next to NPCs (and don't plan to kill them), use the exclude command. If you later decide to kill

    whatever mob you've excluded, use the include command to remove it from list. The macro does not check

    combat state of the tank for buffs.

    • idle used with cbt for spells to be casted when in or out of combat (e.g. if you wanted to keep Yaulp on

    at all times (in AND out of combat), your entry would be TarType=self cbt idle). Please note that idle is

    only used in TarType when cbt is also used.

    • aura used to cast an aura - must be used with self (e.g. TarType=self aura)
    • Note that Bard auras *REQUIRE* SpellAlias to be set up to cast, and modbuff will use CastCall to

      actually cast the aura. * tank used to cast only on the designated group tank. Tank designation is keyed from either the TankName

    variable in the setting section (see above) or by setting a toon to Main Tank (Group.Maintank) using the

    Roles function.

    • petspell used to set up an entry to create/cast a pet. Example:

''[AB3]

Gem=7

Spell=Shambling Minion

SpellFoci=

DurMod=0

SpellAlias=pet

Announce=/bc Cooking up a pet

SpellMinMana=10

TarCnt=1

TarType=petspell

Recast=FALSE

SpellIcon=

PreCondition=TRUE''

    • Default entry: *TarType=tank war shd pal rng mnk rog brd bst ber shm clr dru wiz mag enc nec self mypet grp pet

    cbt idle*

    • Please note that the default entry includes settings that do not work together. Specifically, tank, self

    and mypet are meant to be used by themselves. If you want to cast the same buff on yourself, your pet and

    the tank, create them as seperate buff entries. * Recast=TRUE|FALSE * True is only really needed for single targets that are NOT in the group and/or on NetBots. Set Recast TRUE when

    you want the macro to use the spell worn off messages from EQ for the macro to know who to cast the buff on.

    This allows you to rebuff toons that are lower level for your normal buff set, or not in EQBC and not in group.

  • For the most part this shouldn't be needed for rebuffing if all of your toons are NetBots members. The macro

    actually checks the other toons in netbots and knows what their buffs are, whether the one they're trying to

    cast will stack, and the duration of the buff if the toon still has it on. * SpellIcon=icon name * Use when the spell icon has a different name than the actual spell (e.g. the spell Unity of Spirits has a

    spell icon of Transcendent Foresight. In fact, you could use any one of the four spell icons/names that Unity

    creates).

    • Please note that if the name you have in SpellIcon doesn't evaluate to a spell name, the buff will be

    skipped. In other words, leave it blank if your spell doesn't need it.

AdvEvent Section [AdvEvent]

  • AECount=#
  • Number of events you plan to have.
  • AECheckTime=#
  • How often to check for events in seconds
  • AECustomX=watch text
  • Custom emote-triggered events driven by scripts.
  • Default is three blank entries (AECustom1=, AECustom2=, AECustom3=)
  • Please note that an earlier version of this variable populated AECustom1, AECustom2 and AECustom3 with random

    numbers in the ini file. The newwer version of AECustom now adds the three AECustomX entries but sets them as

    blank.)

  • Each AECustomX entry, if defined, must have a corresponding script entry. For example, by defining

    AECustom1=greater bloodmoon healing in the AdvEvent section, you would need a corresponding script defined

    that might read something like:

[Script-AECustomEvent1]

Commands=1

C1=/bc cast stun

  • AEGem[x]=source
  • Designate what the source of the spell is.
  • Valid entries: gem number, alt, ability, item, script, potionbelt
  • Note that 'potionbelt' does not require a slot number.
  • Examples:
    • AEGem1=3 Cast this spell from gem 3
    • AEGem1=alt This spell is an alternative advancement ability
  • AESpell[x]=source name
  • Valid entries: spell name, item name, alternate ability name, ability name, script name
  • Examples:

    • AESpell1=Minor Shielding This would be generally be paired with an ABGem1 entry indicating which spell gem

    to cast Minor Shielding from.

    • AESpell1=Uber Wand Thingy of Uberness This would be generally be paired with an AEGem1 entry indicating

    that the source of this spell is an item. * AESpellFoci[x]=setname * Bandolier set name to swap in before casting this spell. * Please see MQ2Bandolier and MQ2Cast to understand how to use swap sets. * AEDurMod[x]=## * Any spell extension percentage, e.g. 05 (for 5%), 25 (for 25%). * Due to how spell durations / extensions are calculated, you may need to enter extensions in excessive of 100%

    (e.g. a 25% extension would be entered here as 125). Check your results in game to make sure you have set the

    correct extension. * AEDelay[x]=# * How many seconds do I wait between casts of this spell. * AEEventMinMana[x]=# * My mana percentage must be at least this to complete this event. * AEEventMinHP[x]=# * My HP percentage must be at least this to complete this event. * AEMinMana[x]=# * The event target's mana percentage must be above this to complete this event. * AEMaxMana[x]=# * The event target's mana percentage must be below this to complete this event. * AEMinHP[x]=# * The event target's HP percentage must be above this to complete this event. * AEMaxHP[x]=# * The event target's HP percentage must be below this to complete this event. * AETarType[x]=target type * Valid entries: war shd pal rng mnk rog brd bst ber shm clr dru wiz mag enc nec self tnt (Less is better!) * AESpellAlias[x]=event alias * Enter an "alias" for the event. This is often a short, easier to use name (e.g. the alias for Spirit of the Wolf

    might be SoW).

  • Please note that you can NOT have spaces in your alias names.

  • AEAnnounce[x]=channel
  • Channel to announce in, or leave blank for no announce. See ACAnnounce description in the AdvMelee section for

    further explanation.

  • Annoucements also support formatting (makes it a bit easier to see in the MQ window). For example:

    • ABAnnounce1=/bc [+r+]Buffed \<\< %t >> with %s [+x+]
  • AETarCnt[x]=1|0
  • Settings are *only* either 1 (on) or 0 (off).

Examples

Shaman cannibalization example. In this case, settings like AEEventMinMana and AEMinMana both refer to the shaman as he is both the event triggerer as well as the target of the event:

AEGem1=5 AESpell1=Cannibalize III AESpellFoci1= AEDurMod1=0 AEDelay1=0 AEEventMinMana1=0 AEEventMinHP1=30 AEMinMana1=0 AEMaxMana1=90 AEMinHP1=50 AEMaxHP1=100 AETarType1=self AESpellAlias1=canni AEAnnounce1=

Necromancer mana feed example (where the necro is feeding mana to another character). In this case, AEEventMinMana refers to the necro's mana and AEMinMana refer to the mana of the target (as defined by AETarType):

AEGem2=4 AESpell2=Rapacious Subvention AESpellFoci2= AEDurMod2=0 AEDelay2=0 AEEventMinMana2=50 AEEventMinHP2=50 AEMinMana2=20 AEMaxMana2=45 AEMinHP2=0 AEMaxHP2=100 AETarType2=clr enc AESpellAlias2=manafeed AEAnnounce2=/bc

AdvCure Section [AdvCure]

  • AQCount=#
  • Number of cures you plan to have.
  • AQNewFormat=x
  • Set 'x' to 1 for ModBot v4 style
  • Set 'x' to 0 for MobBot v3.49 style
  • AQCheckTime=#
  • How often to check for cures in seconds
  • [AQx]
  • Where 'x' is the number of cure spell
  • Gem=source
  • Designate what the source of the spell is.
  • Valid entries: gem number, alt, ability, item, script, potionbelt
  • Note that 'potionbelt' does not require a slot number.
  • Examples:
    • Gem=3 Cast this spell from gem 3
    • Gem=alt This spell is an alternative advancement ability
  • Spell=source name
  • Valid entries: spell name, item name, alternate ability name, ability name, script name
  • Examples:

    • Spell=Minor Shielding This would be generally be paired with an Gem entry indicating which spell gem to

    cast Minor Shielding from.

    • Spell=Uber Wand Thingy of Uberness This would be generally be paired with an Gem entry indicating that the

    source of this spell is an item. * '''SpellCntr= * Currently not used for anything, so don't worry about it :) * SpellFoci=setname * Bandolier set name to swap in before casting this spell. * Please see MQ2Bandolier and MQ2Cast to understand how to use swap sets (e.g. -bandolier|) * SpellCureType=cure type * Valid entries (type of cure needed): Cursed, Diseased, Poisoned, EnduDrain, LifeDrain, ManaDrain, Blinded,

    CastingLevel, Charmed, Feared, Healing, Mesmerized, Resistance, Rooted, Silenced, Slowed, Snared, SpellCost,

    SpellSlowed, SpellDamage, Trigger, All

  • Set the cure type to the best match for the spell, but keep them in order of best cure first.

  • The first cure in your .ini matching the cure type needed (or if you set to "All") will be the first attempted

    spell.

  • Cures *can* always be interrupted by any heal spell, unless you're using a cure spell that's already listed in

    your heal section (e.g. Cleric's "Word of XXX" line of spells may or may not interrupt for heals depending on

    where they are in your heal section).

  • Modcure.inc will cast once per loop and then return to the main loop, so setting group cures (like Radiant Cure)

    toward the top would be best

  • Be specific on cure types to avoid recasting the same cure over and over if it won't cure you.

  • SpellMinMana=#
  • Minimum mana to have in order to attempt this cure.
  • SpellRecast=#
  • Number of times to recast this spell for fizzles, interrupts, etc.
  • TarCnt=#
  • How many targets should be present to cast this spell, if set to 0, this spell will not be auto-casted.
  • TarType=target type
  • Valid target types are as follows (please note which entries can be used with others and which are exclusive):

    • ShortClassName Used for class specific buffs (ie. haste on "war"). Valid entries are: war shd pal rng mnk

    rog brd bst ber shm clr dru wiz mag enc nec. Note that any or all of these entries can be used at the same

    time.

    • self Used for self only spells.
    • grp for Group spells (e.g. ABTarType1=self grp)
    • pet used to cast buffs on all pets in the group.
    • mypet used to cast on only your pet. Please note that pet and mypet are mutually exclusive.
    • cbt for spells to be casted during combat (e.g. an entry for Yaulp would be TarType=self cbt). Please note

    that any NPC within radius that is not on your exclude list will cause 'cbt' buffs to fire. If you want to

    buff next to NPCs (and don't plan to kill them), use the exclude command. If you later decide to kill

    whatever mob you've excluded, use the include command to remove it from list. The macro does not check

    combat state of the tank for buffs.

    • idle used with cbt for spells to be casted when in or out of combat (e.g. if you wanted to keep Yaulp on

    at all times (in AND out of combat), your entry would be TarType=self cbt idle). Please note that idle is

    only used in TarType when cbt is also used.

    • aura used to cast an aura - must be used with self (e.g. TarType=self aura)
    • Note that Bard auras *REQUIRE* ABSpellAlias to be set up to cast, and modbuff will use CastCall to

      actually cast the aura. * tank used to cast only on the designated group tank. Tank designation is keyed from either the TankName

    variable in the setting section (see above) or by setting a toon to Main Tank (Group.Maintank) using the

    Roles function. * Default entry: *TarType=tank war shd pal rng mnk rog brd bst ber shm clr dru wiz mag enc nec self mypet grp pet

    cbt idle*

    • Please note that the default entry includes settings that do not work together. Specifically, tank, self

    and mypet are meant to be used by themselves. If you want to cast the same buff on yourself, your pet and

    the tank, create them as seperate buff entries. * SpellAlias=spell alias * Enter an "alias" for the spell. This is often a short, easier to use name (e.g. the alias for Radiant Cure might

    be RC).

  • Please note that you can NOT have spaces in your alias names.

  • Announce=channel
  • Channel to announce in, or leave blank for no announce. See ACAnnounce description in the AdvMelee section for

    further explanation.

  • Annoucements also support formatting (makes it a bit easier to see in the MQ window). For example:

    • Announce=/bc [+r+]Cured \<\< %t >> with %s [+x+]

[AQ2] Gem=2 Spell=Counteract Disease SpellCntr=0 SpellFoci= SpellCureType=Diseased Slowed SpellMinMana=0 SpellRecast=0 TarCnt=1 TarType=pc grp pet cbt idle SpellAlias= Announce=/bc

AdvPull Section [AdvPull]

This section is under development.

  • APCheckTime=#
  • Time (in seconds) to wait in between AdvPull executions. Default is 0.
  • APRadius=#
  • The distance around your target to check for more mobs as defined by APMobMax (basically, a check for adds).

    Default is 40. * APMobMax=# * The max amount of mobs (target + adds) you will allow before pulling. Default is 1. If there are less than

    APMobMax mobs within APRadius of your target, it will pull the mob. * APScript=Scriptname * Name of script to define how you want to tag the mob (throw stone, ranged, item clicky, spell, etc) and executes

    when you have a mob targeted to pull. The script name must have at least 3 characters. Default is empty. **YOU

    MUST CREATE A SCRIPT TO TAG THE MOB!**

  • Modbot Scripts

  • APPath=Pathname
  • The name of the path to run for pulling/movement, as defined in your MBWayPnt.ini (See

    ModMove for more details on creating

    a path). The path name must be at least 3 characters. Default is empty. * APRetPath=ReturnPathname * The name of the path to use to move back to camp. The path must be defined in your MBWayPnt.ini file. The path

    name must be at least 3 characters. Default is empty.

  • Mostly used for when the path back to camp is a different one than used to pull mobs (ie, you go through a

    one-way wall to pull or intentionally fall off a ledge and have to run the long way back). If you want to return

    the same way you came, you can just use WPLoop=TRUE in MBWayPnt.ini instead of having to set up a second path. * APBefore= * Command or series of commands (with multiline) to execute before the rest of AdvPull section. Must be at least 3

    characters. Default is empty. * APAfter= * Command or series of commands (with multiline) to execute after AdvPull has finished. Default is empty. * APAnnounce= * A way to announce what you have pulled. Default is empty. * Note: This is not just a chat channel, but a place to put a full incoming message, ie: * APAnnounce=/gsay Incoming -[ %t ]- * APRetries=1 * Number of times to attempt to pull a mob in case it fails the first try (line of site, etc). This will strafe

    left and right on subsequent attempts. Default is 1.

MBCommon.inc Settings

The location and name of MBCommon.inc can now be set by changing line 38 in Modbot.mac.

/declare MBCommon string outer MBCommon.ini

It defaults to the ./macros folder, but the line can be changed to any path.

Settings Section

  • LoadAlias [1,0] This is an on / off setting to load the "/alias /mb /echo MB-" alias for commands. It is set

to 0 after first run when alias should be loaded, but you can set to 1 to add it back to your Macroquest.ini file if

it gets deleted.

  • IniLocation Path to your MB_.ini files. Must end in / or if changed from default.
  • LootIni [Loot.ini] This setting can be used to change the location of your Loot.ini file as well as the name.
  • MBWayPntLocation [MBWayPnt.ini] This setting can be used to change the location of your MBWayPnt.ini file as

well as the name of the file.

  • CheckTargetDebuffs [TRUE|FALSE] This setting toggles on/off the ${Target.Buff} checking for debuffs

(essentially this checks if the spell "Stacks" before casting.)

  • Each debuff listed in MBCommon.ini now has an 'OverwritesID=' entry. This entry is meant for a list of debuffs

    that the spell doesn't 'Stack' with, but you want the debuff to overwrite.

Spell Section

  • Zone.ShortName - List of mobs excluded for that zone in a pipe -"|" delimited string. This setting is not

present for any zones which you have nothing excluded.

  • Immune lists for each spell are saved in their own section along with a MaxLevel=[100] setting. Change to the

    max level of the spell.

  • As the macro finds mobs that are immune to the spell, the zone shortname is added to the entry as a variable

    along with the mob names in pipe delimited format.

  • Mobs that are marked immune to debuffs can be marked in MBCommon.ini with an asterisk to allow for some names

    that have only some immune, and some not. For example, Dreadspire has some body types with same names where some

    are immune to mez, and some not (e.g. an aid to the Seneschal - some body types with that mob name are immune

    to befuddle, and others aren't). By adding an asterisk to the end of the name in the exclude section, the macro

    will repeat attempts to mez, etc. that mob type (rather than just marking them immune and not casting at all):

    _DreadspireImmune=|an aid to the Seneschal_|*

  • The ADIfSpellImmune script, if defined, will only run if the mob is found to be immune after cast, but the

    astrik will not be replaced, and the spell will only cast once allowing the spell to still attempt on the next

    mob it hasn't been cast on.

  • Overwrites= list of debuffs that the spell doesn't 'Stack' with, but you want the debuff to overwrite. This

    does require user intervention, and there's no way to set it auto-set them.

  • MaxLevel= maximum level of mob that can be affected by debuff

An entry in the spell section might look something like this:

[Mystify] MaxLevel=83 thalassius_bImmune=|a sea mephit defender||a sea mephit evoker| OverwritesID=|14569|14570|14530|

ModBot Class INI Examples

ModBot`` ``Class`` ``INI`` ``Examples`` ``linked`` ``to`` ``another`` ``page

Scripts and ModBot Variable Usage

ModBot allows VERY customizable sripts to such an extent you can actually program your own sub-procedures within your INI file. You can harness ANY global variable within ModBot to use with the scripts. Scripts match MQ2 code to every extent, below are several examples of scripts and common variables one would use to create complex scripts

Understanding scripts, syntax, example, how to

  • Scripts General Info
  • Scripts can be difficult and there are some MQ2 commands that give scripts trouble. Keep this in mind and

    prepare to post you script code should you have problems.

  • No script can take more then 15 seconds to complete, however this can be modified in the code directly in the

    Sub MBScript or even changed in the script you create ({Timer} is the var)

  • Scripts are executed from top to bottom and you are allowed to use a label :Top (e.g. /goto :Top), in your

    script. The /goto :Top option allows for complex loops to take place directly from code in the INI file

  • If you use ANY INI generated ModBot global string variables that have spaces in your custom scripts they MUST be

    encapsulated by 2 apostrophies when used in the script, see PetCast example below. * Reserved Characters

:*These characters can not be used in scripts

::*$ "

:*'' Two apostrophies are for passing variables with spaces in script code. Use them to replace quotes.

  • Syntax

[Script-] Commands= C1= . Cn=

What does a script look like in your INI file:

[Script-HelloWorld] Commands=2 C1=/echo Hello World C2=/if ({Timer}>50) /varset Timer 5s C3=/goto :Top

In the example above it will echo to the MQ2ChatWindow "Hello World" for 5s. Notice how I do NOT use a $ to reference the "Timer" variable.

  • How To use or launch a script

:*/bc bob script HelloWorld

:*You can set Gem=script and Spell=HelloWorld as a spell name for any of the spells you've configured in ModBot, and it will be triggered when that event, heal, etc would take place.

Please see the below examples for complex script code.

Common Variables (You can use ANY mq2 variable without the $, you can even CREATE new global vars and use them, all from the INI file via Scripts)

{ACState} = If greater than 0, ModBot thinks you are in combat {ACMATarget} = The target of the main assist {CampStatus} = If greater than 0, means I've been given a /bc makecamp command {FollowFlag} = If greater than 0, means I should be following something {TankName} = The acting main assist {Me}, {Spawn}, etc = See MQ2 Manual

Examples This example is triggered from an event OR a heal and it will remove the necro "Lich" spell:

[AdvHeal] [AH3] Gem=Script Spell=DropLich SpellFoci= DurMod=0 SpellAlias=droplich SpellMinMana=0 Announce=/bc TarCnt=1 Class=pc hp40 nec

[AdvEvent] [AE3] Gem=Script Spell=DropLich SpellFoci= DurMod=0 Delay=0 EventMinMana=100 EventMinHP=40 MinMana=20 MaxMana=100 MinHP=0 MaxHP=90 TarType=tnt SpellAlias= Announce=/bc

[Script-DropLich] Commands=1 C1=/if ({Me.Buff[Lich].ID}) /notify BuffWindow Buff{Math.Calc[{Me.Buff[Lich].ID}-1].Int} leftmouseup

This example is launched via the ACBefore command from the [Melee] section, I've got Sneak Attack bound to hotkey 6. What the bot will do is to trigger Sneak Attack, attempt proper position, backstab the mob, then revert to "normal"

[Script-SneakAttack] Commands=10 C1=/if ({Melee.Enable}) /melee plugin=0 C2=/if ({Me.CombatAbilityReady[Sneak Attack]}) /keypress 6 C3=/if (!{Me.Moving} && !{Stick.MoveBehind} && {Stick.Distance}!={Math.Calc[{Spawn[{ACMATarget}].MaxRangeTo}+5]}) /stick {Math.Calc[{Spawn[{ACMATarget}].MaxRangeTo}+5]} behind id {ACMATarget} C4=/if ({Target.ID}!={ACMATarget}) /multiline ; /target id {ACMATarget};/delay 5 C5=/if ({Melee.BackAngle}>60 || {Melee.BackAngle}<-60) /goto :Top C6=/if ({Target.Distance3D}>={Spawn[{ACMATarget}].MaxRangeTo}) /stick {Math.Calc[{Spawn[{ACMATarget}].MaxRangeTo}-5]} hold behind id {ACMATarget} C7=/if ({Target.Distance3D}>={Spawn[{ACMATarget}].MaxRangeTo}-3) /goto :Top C8=/delay 5 C9=/if ({Me.AbilityReady[Backstab]}) /doability backstab C10=/melee plugin=1

This example will confirm you are hidden and sneaking when I'm at "camp" and not sneaking when I'm in follow mode. It will also re-engage if MQ2Melee lost "stick" because of too much mob movement

[Script-HideSneak] Commands=4 C1=/if ({FollowFlag} && {Me.Sneaking}) /multiline ; /doability sneak;/return C2=/if (!{FollowFlag} && !{ACState} && {Select[{MakeCamp},on]} && {Me.AbilityReady[Hide]} && !{Me.Moving} && !{Melee.Combat}) /multiline ; /doability Hide;/delay 5 C3=/if (!{FollowFlag} && !{ACState} && {Select[{MakeCamp},on]} && {Me.AbilityReady[Sneak]} && !{Me.AbilityReady[Hide]} && !{Me.Moving} && !{Melee.Combat}) /multiline ; /doability Sneak;/delay 5 C4=/if ({ACState} && {ACMATarget} && {Target.ID} && {Me.AbilityReady[Backstab]}) /keypress q

Example of createing a new global var and an example of using it

[Script-EventsOff] Commands=2 C1=/if (!{Defined[CheckSlow]}) /declare CheckSlow int outer 1 C2=/if ({DoEvents}) /multiline ; /varset DoEvents FALSE;/varset CheckSlow 1

[Script-EventsOn] Commands=2 C1=/if (!{Defined[CheckSlow]}) /declare CheckSlow int outer 3 C1=/if (!{DoEvents}) /multiline ; /varset DoEvents TRUE;/varcalc CheckSlow {CheckSlow}+1

[Script-IsSlowed] Commands=3 C1=/if (!{Defined[CheckSlow]}) /multiline ; /varset DoEvents FALSE;/return C2=/if ({CheckSlow}<=4) /varset DoEvents FALSE C3=/if ({CheckSlow}>4) /varset DoEvents TRUE;/varset CheckSlow 1

Example of using a ModBot global string. This will create a new pet, say when your existing pet is about to die

:*Please note in the INI snippets below that the INI generated global string PetCast has a space so to pass this properly in the script,

you must encapsulated in quotes, script code uses apostrophies in place of quotes.

[Script-NewPet] Commands=4 C1=/multiline ; /casting ''{PetCast}'' -maxtries|5;/delay 2s C2=/if ({Cast.Timing}>600) /goto :Top C3=/multiline ; /if ({Me.Pet.ID}) /pet go away;/delay 2s !{Me.Casting.ID} C4=/if (!{Me.Pet.ID}) /goto :Top

Example of using PetCast for a cleric hammer, to be called from a ACBefore command

[Settings] DoPet=FALSE PetCast=Unswerving hammer of awesomeness|gem1 [Melee] ACBefore=/if (!{Me.Pet.ID} && {ACMATarget} && {Spawn[{ACMATarget}].Type.Equal[NPC]} && {Spawn[{ACMATarget}].Distance3D}<={ACLeash}) /call MBScript SumHam [Script-SumHam] Commands=2 C1=/if ({Target.ID}!={ACMATarget}) /multiline ; /target id {ACMATarget};/delay 5 C2=/if (!{Me.Pet.ID}) /multiline ; /casting ''{PetCast}'' -maxtries|2;/delay 3s

Example of a CH script to be run from a non cleric .ini (warrior)

I figure I might as well be posting some of the script versions of other macros that I've been seeing around, but written my own thing so I could just keep modbot running. Modbot script version of CH chain that seems to work, though might have problems I haven't noticed.... I use this with a hotkey from my tank -```"/mb script chain 50" (yes it's in MB\_tank.ini - NOT the cleric.ini.. ) It finds all clerics in netbots, then runs through the list telling each to cast CH after the delay you specify. This script does require the clerics to all be running modbot with an alias of CH for complete heal spell,`and connection to the same EQBCS server.

`Commands=13`
`C1=/multiline ; /declare clrlist string local;/declare x int local 1;/declare StopLoop bool local FALSE`
`C2=/if ({Spawn[{NetBots.Client.Arg[{x}]}].Class.ShortName.Equal[clr]}) /varset clrlist {clrlist} {NetBots.Client.Arg[{x}]}`
`C3=/if ({x} < {NetBots.Counts}) /multiline ; /varset a 1;/varcalc x {x}+1`
`C4=/echo Clerics: {clrlist} casting {Math.Calc[{Param1}/10]}s apart`
`C5=/varset x 0`
`C6=/varset Timer 100`
`C7=/varcalc x {x}+1`
`C8=/if ((!{Spawn[{clrlist.Arg[{x}]}].ID} || {NetBots[{clrlist.Arg[{x}]}].PctMana} < 3) && {x} <= {clrlist.Count[ ]}) /varset a 5`
`C9=/if ((!{Spawn[{clrlist.Arg[{x}]}].ID} || {NetBots[{clrlist.Arg[{x}]}].PctMana} < 3) && {x} > {clrlist.Count[ ]}) /varset a 4`
`C10=/bc {clrlist.Arg[{x}]} cast ch`
`C11=/delay {Param1}`
`C12=/if ({x}>{clrlist.Count[ ]}) /varset a 4`
`C13=/if (!{StopLoop}) /varset a 5`
`````  Posted By Ptarp Tue Apr 12, 2011 1:01 am. Moved to Wiki by Arblis\`

## Script Examples

[```Script`` ``examples`` ``linked`` ``to`` ``another`` ``page```](https://macroquest.org/wiki/index.php/Script_Examples)

* These are for ModBot v3.49 please adjust accordingly

## Related Include Files Information and Examples

[```Related`` ``Include`` ``files`` ``(modloot,`` ``AAPurchase,`` ``modmove,`` ``etc.)`` ``information`` ``and`` ``INI`` ``examples`` ``linked`` ``to`` ``another`` ``page```](https://macroquest.org/wiki/index.php/Related_Include_Files)

* These are from MobDot v3.49 please adjust acccordingly

## Tips, Tricks and Troubleshooting

Here you will find a collection of little gems pulled from the ModBot thread. At some point, this may morph in to a handy little troubleshooting flowchart, but for now it will serve as kind of a tidbit catchall for things that would otherwise get lost in the hundreds of thread pages...

Please note- when you are posting on the forum for help (after reading this wiki of course!\) include the MQ2 version, winEQ version and the EQ install type \(Titanium / sod / UF)

`If you want to have colored messages in Announce=/bc you can try some of these:`
`b = black`
`g = green`
`m = magenta`
`o = orange`
`p = purple`
`r = red`
`t = cyan`
`u = blue`
`w = white`
`y = yellow`
`Example:`
`Announce=/bc [+t+]`
`would color the text cyan`

`Although covered previously on the Wiki quite a few times - If you are having trouble with mobs keeping you from doing non combat things (buff, loot etc) try using the following:`
`exclude <mob name,save>`
````` "What I do.. (while targeted on the mob you want to ignore)```On my tank I have a hotkey. I target the mob to exclude and press it.``
`First line is /bcaa //mb exclude ${Target.CleanName}`
`second line - /bcaa //mb exclude save`
````` /echo ${ADMobCount} (use this after your exclude to see if the char in question has any mobs on the exclude list. Can be used with /bcaa to see all of your toons mobcounts)```If you fight near non-combatant mobs, always use the exclude command so the macro doesn't "see" them, and set your Radius= in your toon's .ini file to a minimum.``
`I normally keep mine at around 60 to 80 depending on what I'm doing. Remember you can "/varset Radius 50" or something in game with the mac running to find a happy medium." -Ptap Mon Sep 20, 2010 1:18 pm`

`It also sounds like an exclude hotkey, and pause hotkey would be your best friends.. Here's a few of the hotkeys I use.`

`_EQTitan.ini in your everquest folder.`
````` Code:```[Socials]``
`Page10Button1Name=TankName`
`Page10Button1Color=0`
`Page10Button1Line1=/bcaa //varset TankName ${Me.Name}`
`Page10Button7Name=Masters`
`Page10Button7Color=0`
`Page10Button7Line1=/bcaa //varset MasterList ${NetBots.Client}`
`Page10Button5Name=pause`
`Page10Button5Color=0`
`Page10Button5Line1=/bcaa //mb mbpause on`
`Page10Button11Name=unpause`
`Page10Button11Color=0`
`Page10Button11Line1=/bcaa //mb mbpause off`
`Page10Button6Name=follow`
`Page10Button6Color=0`
`Page10Button6Line1=/bca follow`
`Page10Button12Name=stop`
`Page10Button12Color=0`
`Page10Button12Line1=/bcaa //mb stop`
`Page10Button10Name=letsroll`
`Page10Button10Color=0`
`Page10Button10Line1=/bcaa //mb letsroll`
`Page2Button1Name=corpse`
`Page2Button1Color=0`
`Page2Button1Line1=/corpse`
`Page2Button6Name=sellitem`
`Page2Button6Color=0`
`Page2Button6Line1=/ini loot.ini ${Cursor.Name.Left[1]} "${Cursor.Name}" Sell`
`Page8Button1Name=include`
`Page8Button1Color=0`
`Page8Button1Line1=/bcaa //mb include ${Target.CleanName}`
`Page8Button1Line2=/pause 5`
`Page8Button1Line3=/bcaa //mb exclude save`
`Page8Button7Name=exclude`
`Page8Button7Color=0`
`Page8Button7Line1=/bcaa //mb exclude ${Target.CleanName}`
`Page8Button7Line2=/pause 5`
`Page8Button7Line3=/bcaa //mb exclude save`
`````

I normally just keep my keys on page 10 and click from there, but as you can see there's include and exclude keys on pg 8 and another on pg2 I use for setting items to "sell" in my loot.ini file. The /bcaa stuff might not work for some depending on plugin versions, so that cn be replaced with a /bca and /mb on a second line. I find it very handy to have some keys I can press quickly, and always either pause all my toons or exclude npcs before I go into areas that I don't want something attacked.

Having trouble with your background session toons not moving properly? You might try this: WinEQ=on```to the [Defaults] section of your mq2moveutils.ini. TrueHeading=off might help also in the same section, though I'm not sure if that's needed.`

Do your toons wander where they are not supposed to?

Thanks to Toomanynames for this tidbit:

Those who have toon wandering issues or whatnot - when you say "radius", what radius do you mean, modbot, melee, makecamp? There are actually three things that work together to make certain that your bots fight and return to a certain area - MQ2MoveUtils, MQ2Melee and the MB_charname.ini file (from ModBot).

  • /makecamp x x x
  • This is a MQ2MoveUtils setting that needs to be properly configured. For example:
    • /makecamp radius x leash=on (or something like that)
  • Please see the MQ2MoveUtils (PMS version)

    [http://www.macroquest2.com/phpBB3/viewtopic.php?f=31&t=15909thread] and

    MQ2MoveUtils:v11 for more detailed information. * /melee x x x * This is an MQ2Melee setting. Those ranges and settings come into play and must be set accordingly to work

    WITH modbot

  • Please see the MQ2Melee [http://www.macroquest2.com/phpBB3/viewtopic.php?f=50&t=17045thread] for more

    detailed information. * Modbot INI * Radius = the max the toon will "See" thiings * ACLeash = the max a toon will engage things

If you don't properly configure MQ2MoveUtils, MQ2Melee and ModBot and confirm those settings are within or compatible with ModBot "ranges" then you'll have issues.