I am trying to get out of leecher status by posting something useful to the community. I have been using ZoloFighter for a few months now and writing my own bindings. Trial and error has taught me enough to be able to write effective bindings and I hope my knowledge will help other people to get the most out of this incredible bot.
As you may have heard, ZoloFighter is a free bot that survived the recent banwave. ZoloFighter is powerful and easy to use, but there has not been a lot of development for it.
The purpose of this guide is to explain how to make a binding. A binding essentially tells the bot how to play your character. A binding is simply a text file with a .cfg extension. I prefer to use notepad to create my bindings.
If you can master writing bindings, you can customize ZoloFighter to play your character exactly as if you were sitting there playing it yourself.
The following binding is one I wrote for a level 20 priest.
Code:
############################################
# #
# Profile Settings #
# #
############################################
reach=30
maxreach=33
engage_dist=29
shiftloot= y
lootitemdist=30
DRINKPERCENT=0.20
FOODPERCENT=0.20
MANARESTPERCENT=0.75
HEALTHRESTPERCENT=0.75
MANARESTTOPERCENT=0.98
HEALTHRESTTOPERCENT=0.98
maxVerticalMobDistance=15
############################################
# #
# Priest Attacks #
# #
############################################
#defact= act:MindBlast slot:1 key:x cooldown:1.5 prevacttime:9
#defact= act:smite slot:1 key:x cooldown:1.5
defact= act:swpain slot:1 key:x cooldown:1.5 prevacttime:24
defact= act:MindFlay slot:1 key:x
defact= act:HolyFire slot:1 key:x cooldown:1.5 prevacttime:10
defact= act:wand slot:1 key:x cooldown:7
############################################
# #
# Priest Other Abitilities #
# #
############################################
#defact= act:fade slot:1 key:x cooldown:1.5
defact= act:pwshield slot:1 key:x cooldown:1.5 prevacttime:16
defact= act:heal slot:1 key:x cooldown:1.5 lifele:65
defact= act:fheal slot:1 key:x cooldown:1.5 lifele:75
defact= act:renew slot:1 key:x cooldown:1.5 lifele:85 prevacttime:16
defact= act:pwfort slot:1 key:x cooldown:1.5
defact= act:innerfire slot:1 key:x cooldown:1.5
############################################
# #
# Misc Actions #
# #
############################################
defact= act:food slot:2 key:x cooldown:1.5
defact= act:drink slot:2 key:x cooldown:1.5
defact= act:reachCombat js:ReachCombatDistance()
defact= act:wait1s cooldown:1 distle:5
defact= act:lootapproach predefined:approach distle:40 dist:4
defact= act:loot predefined:loot distle:5
############################################
# #
# Pre Combat Actions #
# #
############################################
precombat= act:pwshield
precombat= act:HolyFire
############################################
# #
# Combat Sequence #
# #
############################################
combatseq= act:pwshield
combatseq= act:HolyFire
combatseq= act:heal
combatseq= act:fheal
combatseq= act:renew
combatseq= act:swpain
combatseq= act:MindFlay
combatseq= act:MindFlay
combatseq= act:wand
combatseq= act:reachCombat
############################################
# #
# Loot Sequence #
# #
############################################
lootseq= act:lootapproach
lootseq= act:wait1s
lootseq= act:loot
lootseq= act:wait1s
############################################
# #
# Buff Section #
# #
############################################
globalact= act:pwfort timeout:30m
globalact= act:innerfire timeout:10m
Breaking this binding down section by section will aid in explaining each line and it's intended function.
The first section in the binding tells the bot a variety of important information. This section is the Profile Settings.
reach=30 - This tells the bot that your toon's maximum reach is 30 yards
maxreach=33 - This tells the bot to abort the fight if the mobs moves further than 33 yards away
engage_dist=29 - This tells the bot that your toon should run the precombat routine when a mob is at least 29 yards or closer
shiftloot= y - This tells the bot to use shiftloot (auto loot by holding the shift key)
lootitemdist=30 - This tells the bot to loot any corpses 30 yards or closer
DRINKPERCENT=0.20 - This tells the bot to drink at 20% mana
FOODPERCENT=0.20 - This tells the bot to eat at 20% life
MANARESTPERCENT=0.75 - This tells the bot to sit down and rest at 75% mana
HEALTHRESTPERCENT=0.75 - This tells the bot to sit down and rest at 75% life
MANARESTTOPERCENT=0.98 - This tells the bot to stop resting, stand up and look for the next mob/waypoint at 98% mana
HEALTHRESTTOPERCENT=0.98 - This tells the bot to stop resting, stand up and look for the next mob/waypoint at 98% life
maxVerticalMobDistance=15 - This command is used to tell the bot to avoid mobs located inside caves. This value should be set low to avoid having your character running into the side of a mountain in an attempt to reach a mob inside of a cave. I personally use a value of 15 though I have seen others use a value of 20 with no real problems. Still, the lower the better.
In the next section of the binding, attacks are defined and configured.
defact= act:MindBlast slot:1 key:x cooldown:1.5 prevacttime:9 - This line tells the bot that MindBlast is located on action bar 1, key x. It also tells the bot that after MindBlast is cast, no other skills can be cast for 1.5 seconds (cooldown). "prevacttime" lets the bot know that MindBlast should only be applied once every 9 seconds
defact= act:smite slot:1 key:x cooldown:1.5 - This line tells the bot that smite is located on action bar 1, key x. It also tells the bot that after smite is cast, no other skills can be cast for 1.5 seconds (cooldown).
defact= act:swpain slot:1 key:x cooldown:1.5 prevacttime:24 - This line tells the bot that Shadow Word Pain is located on action bar 1, key x. It also tells the bot that after Shadow Word Pain is cast, no other skills can be cast for 1.5 seconds (cooldown). "prevacttime" lets the bot know that Shadow Word Pain should only be applied once every 24 seconds
defact= act:MindFlay slot:1 key:x - This line tells the bot that Mind Flay is located on action bar 1, key x. It also tells the bot that after Mind Flay is cast, no other skills can be cast for 1.5 seconds (cooldown).
defact= act:HolyFire slot:1 key:x cooldown:1.5 prevacttime:10 - This line tells the bot that Holy Fire is located on action bar 1, key x. It also tells the bot that after Holy Fire is cast, no other skills can be cast for 1.5 seconds (cooldown). "prevacttime" lets the bot know that Holy Fire should only be applied once every 10 seconds
defact= act:wand slot:1 key:x cooldown:7 - This line tells the bot that Shoot is located on action bar 1, key x. It also tells the bot to use the wand for 7 seconds (cooldown). The the bot reads this line as a command to press the shoot key then wait 7 seconds.
The following section defines other abilities such as buffs, heals, etc.
defact= act:fade slot:1 key:x cooldown:1.5 - This line tells the bot that Fade is located on action bar 1, key x. It also tells the bot that after Fade is cast, no other skills can be cast for 1.5 seconds (cooldown).
defact= act:pwshield slot:1 key:x cooldown:1.5 prevacttime:16 - This line tells the bot that Power Word Shield is located on action bar 1, key x. It also tells the bot that after Power Word Shield, no other skills can be cast for 1.5 seconds (cooldown). "prevacttime" lets the bot know that Power Word Shield should only be applied once every 16 seconds
defact= act:heal slot:1 key:x cooldown:1.5 lifele:65 - This line tells the bot that Heal is located on action bar 1, key x. It also tells the bot that after Heal is cast, no other skills can be cast for 1.5 seconds (cooldown). "lifele" tells the bot that Heal should only be cast if your character's health is at 65% or lower.
defact= act:fheal slot:1 key:x cooldown:1.5 lifele:75 - This line tells the bot that Flash Heal is located on action bar 1, key x. It also tells the bot that after Flash Heal is cast, no other skills can be cast for 1.5 seconds (cooldown). "lifele" tells the bot that Flash Heal should only be cast if your character's health is at 75% or lower.
defact= act:renew slot:1 key:x cooldown:1.5 lifele:85 prevacttime:16 - This line tells the bot that Renew is located on action bar 1, key x. It also tells the bot that after Renew is cast, no other skills can be cast for 1.5 seconds (cooldown). "lifele" tells the bot that Renew should only be cast if your character's health is at 85% or lower. "prevacttime" lets the bot know that Renew should only be applied once every 16 seconds
defact= act:pwfort slot:1 key:x cooldown:1.5 - This line tells the bot that Power Word Fortitude is located on action bar 1, key x. It also tells the bot that after Power Word Fortitude is cast, no other skills can be cast for 1.5 seconds (cooldown).
defact= act:innerfire slot:1 key:x cooldown:1.5 - This line tells the bot that Inner Fire is located on action bar 1, key x. It also tells the bot that after Inner Fire is cast, no other skills can be cast for 1.5 seconds (cooldown).
The next section defines miscellaneous actions such as eating, drinking and looting.
defact= act:food slot:2 key:x cooldown:1.5 - This line tells the bot that Food is located on action bar 1, key x. It also tells the bot that after Eat is cast, no other skills can be cast for 1.5 seconds (cooldown).
defact= act:drink slot:2 key:x cooldown:1.5 - This line tells the bot that Drink is located on action bar 1, key x. It also tells the bot that after Drink is cast, no other skills can be cast for 1.5 seconds (cooldown).
defact= act:reachCombat js:ReachCombatDistance() - This line tells the bot to run a pre-defined script which is located in script.js. script.js makes up the basic framework of ZoloFighters commands, is written by WowPanda, the bot's author and is included in every ZoloFighter release. The script that it calls tells the bot to check how far away the mob is from your character and to move within engage distance if the mob is too far away.
defact= act:wait1s cooldown:1 distle:5 - This line tells the bot that if distance is less then or equal to 5 yards from the target, wait 1 second
defact= act:lootapproach predefined:approach distle:40 dist:4 - This line tells the bot to run a pre-defined script located in script.js. The script that is called tells the bot that if the distance is equal to or less than 40 yards from the target to be looted, move towards the target until the character is 4 yards away from the target.
defact= act:loot predefined:loot distle:5 - This line tells the bot to run a pre-defined script located in script.js. The script that is called tells the bot to loot the target if the distance from the target is 5 yards or less.
After the various abilities have been defined and configured, the next part of the script tells the bot when and how to use the abilities. Once the bot encounters a mob that is located within engage distance the Pre-Combat Sequence is executed. Commands are executed in the order they are listed.
precombat= act:pwshield - This tells the bot to use Power Word Shield once a mob comes into attack range.
precombat= act:HolyFire - This line tells the bot to pull the mob by casting Holy Fire
After the bot has identified a mob and executed the Pre-Combat, the next section tells the bot how to fight against the mob. This is the Combat Sequence. The Combat Sequence will loop until the mob is dead.
combatseq= act:pwshield - This line tells the bot to cast Power Word Sheild if it is avaiable.
combatseq= act:HolyFire - This line tells the bot to cast Holy Fire if it is available
combatseq= act:heal - This line tells the bot to cast Heal if the previously defined conditions have been met (ie health has dropped down to the amount specified in lifele)
combatseq= act:fheal - This line tells the bot to cast Flash Heal if the previously defined conditions have been met (ie health has dropped down to the amount specified in lifele)
combatseq= act:renew - This line tells the bot to cast Renew if the previously defined conditions have been met (ie health has dropped down to the amount specified in lifele and the spell is not currently unavailable due to the time specified in prevacttime)
combatseq= act:swpain - This line tells the bot to cast Shadow Word Pain provided it is available to be cast (remember the prevacttime specification)
combatseq= act:MindFlay - This line tells the bot to cast Mind Flay.
combatseq= act:MindFlay - This line tells the bot to go ahead and cast Mind Flay again.
combatseq= act:wand - This line tells the bot to shoot the wand.
combatseq= act:reachCombat - This line tells the bot to check to make sure the mob has not wandered out of range and to close the distance and re-engage if it has
Once Combat is complete, the bot moves onto the next section which is the Loot Sequence. The bot currently attempts to loot 3 times. If looting is unsuccessful after 3 tries, the bot will ignore the corpse and move on.
lootseq= act:lootapproach - This line tells the bot to run the lootapproach command located in script.js as defined in the Misc Actions section.
lootseq= act:wait1s - This line tells the bot to wait 1 second. Server lag may be bad and the bot will not loot. If that is the case this can be adjusted to 2 seconds or so.
lootseq= act:loot - This line tells the bot to run the loot command located in script.js as defined in the Misc Actions section.
lootseq= act:wait1s - This line tells the bot to wait 1 second. Again, server lag may be bad and the bot will not loot. If that is the case this can also be adjusted to 2 seconds or more.
Buffs are handled nicely using a command called globalact. Buffs are easy to setup and go in the Buffs Section.
globalact= act:pwfort timeout:30m - This line tells the bot that Power Word Fortitude should be re-cast every 30 minutes.
globalact= act:innerfire timeout:10m - This line tells the bot that Inner Fire should be re-cast every 10 minutes.
The binding above is an example of a simple yet effective set of commands.
Bindings can also contain java script code which can be called if certain conditions are met. These are called scripts and should be placed in their own separate section as well. These scripts can be used to do a variety of functions including determining when to create a soul shard or when to use a health stone.
Following is an example of a script that can check if a Warlock's Voidwalker needs to be healed.
Code:
<script>
function checkVoidy()
{
var pet = me.wowGetSummon();
if (pet != null)
{
if (pet.health < (pet.maxhealth*.5))
{
me.wowDoFightAction("petHeal");
}
else
{
me.wowLog("There is no need to heal pet, " + pet.health);
}
}
else
{
me.wowLog("Do not have pet.");
}
}
To use the CheckVoidy script you would add the following line into your Buffs Section.
Code:
globalact= act:checkVoidyHealth timeout:1m
globalact= act:checkVoidyHealth timeout:1m - This line would tell the bot to run the checkVoidyHealth script every minute.
I hope this post will help some of you who are interested in using ZoloFighter to make useful and effective bindings. And please, if you do make something awesome, share it with the rest of the community. :D