For support:
d2bot# with kolbot
For live support: irc://irc.synirc.net/d2bs
Originally Posted by [url=http://www.blizzhackers.cc/viewtopic.php?p=4565476#p4565476]kolton » Tue Apr 24, 2012 8:46 am[/url]d2bot# - a game manager for d2bs by d3stroy3r
kolbot - a script library for d2bs by kolton
required software:
.NET 3.5 Download: .NET Framework 3.5 - Microsoft Download Center - Download Details
.NET 4.0 Download: Microsoft .NET Framework 4 (Web Installer) - Microsoft Download Center - Download Details
vc++ 2010 redist Download: Microsoft Visual C++ 2010 Redistributable Package (x86) - Microsoft Download Center - Download Details
Download:
https://github.com/kolton/d2bot-with-kolbot
You can download the repository as .zip file directly, or you can download TortoiseGit - Downloads - tortoisegit - Porting TortoiseSVN to TortoiseGIT - Google Project Hosting -and use 'Git Clone...' option (more on that later).
Quick setup:
kolbot:
* Using Notepad++ is strongly advised
Character config files are in \kolbot\libs\config. They are in .js format.
* If you don't know how to change the default program to open .js files, read here Open With - Change Default Program - Windows 7 Forums
Character Config file format is Class.Charname.js. For example: Sorceress.kolx-n.js, Necromancer.wdqq.js, Assassin.KolTrap.js
* Don't rename the default config! Make a copy of it and then rename the copy.
UserAddon char config maker:
You no longer need to copy/rename character config files yourself!
Just run the bot, press HOME (to close the console) and then press SPACE (to create personal character config).
Editing character config:
Once you've opened the file, read the explanation for each option.
Scripts are enabled/disabled by setting them to true/false. In order to run bot scripts, you must disable User Addon script first by setting it to false:
Code:Scripts.UserAddon = false; // !!!YOU MUST SET THIS TO FALSE IF YOU WANT TO RUN BOSS/AREA SCRIPTS!!!
d2bot# manager:
Click the Add button
Input information, click Apply when happy:
D2BotLead.dbj is the basic leader starter (more on starters later).
Click Start:
That's it for the most basic part!
TortoiseGit:
You can download and update d2bot with kolbot using TortoiseGit. First, download it Downloads - tortoisegit - Porting TortoiseSVN to TortoiseGIT - Google Project Hosting
To download, right click anywhere in empty space (aka don't right click an icon), and choose 'Git Clone...'
Input the Url and click ok:
Wait until it finishes and click close. You're done downloading!
Updating is done by right clicking the d2bot-with-kolbot folder and selecting 'Git Sync...'
Then click Pull, wait for it to finish and click OK.
Starter files:
There's currently 3 starters for you to choose from: D2BotLead, D2BotFollow, D2BotChannel
D2BotLead:
Code:var joinChannel = "clan baal"; var firstJoinMsg = ".login"; var announceGames = true; var switchKeys = false; var switchKeyDelay = 0; // time in seconds to delay before switching keys
D2BotLead is the starter that you use to create games. It can announce games in channels when used for public runs.
D2BotFollow:
Code:var joinChannel = ""; var firstJoinMsg = ""; var switchKeys = false; var switchKeyDelay = 0; // time in seconds to delay before switching keys /* Join game settings Format: "leader's profile": ["leecher 1 profile", "leecher 2 profile", ...] If you want everyone to join the same leader, use "leader's profile": ["all"] NOTE: Use PROFILE names (profile matches window title), NOT character/account names leader:leecher groups need to be divided by a comma example: var joinSettings = { "lead1": ["follow1", "follow2"], "lead2": ["follow3", "follow4"] }; */ var joinSettings = { "leader1": ["leecher1"] };
D2BotFollow is used to join games between players on the same computer
D2BotChannel:
Code:var switchKeys = false; var switchKeyDelay = 0; // time in seconds to delay before switching keys var joinChannel = ""; var games = []; var passwords = []; var joinDelay = 5000; var friendListQuery = 0; // time in seconds between each "/f l" query. 0 = don't use "/f l"
D2BotChannel is used to join games from both channel announcements and friend list announcements
games are in the following format:
var games = ["game1-", "game2-", "game3-"]
each game name in the array has its corresponding password in the passwords array, use "" for no password
var passwords = ["game1pw", "game2pw", "game3pw"];
joinDelay is in milliseconds, it's the time to wait between receiving the message and clicking the join button
friendListQuery determines whether to check your friend list and how often to check it
Examples:
If you want to follow meth baal runs in chan baal channel (uswest nl), you'd have it set up like this:
Code:var joinChannel = "clan baal"; var games = ["meth baal-"]; var passwords = [""]; var joinDelay = 5000; var friendListQuery = 0; // time in seconds between each "/f l" query. 0 = don't use "/f l"
If you want to follow your friend that makes games named "Run-##" with password "pw", you'd have it set up like this:
Code:var joinChannel = ""; var games = ["Run-"]; var passwords = ["pw"]; var joinDelay = 1000; var friendListQuery = 10; // time in seconds between each "/f l" query. 0 = don't use "/f l"
You can combine multiple channel announced-games, multiple friend list announced games, and a MIX of both!
Each starter has these options as well
Code:var switchKeys = false; var switchKeyDelay = 0; // time in seconds to delay before switching keys
If you don't want to use multiple cd-keys, the bot will stop on disabled keys and wait on cdkey in use.
If you set switchKeys to true, it will skip disabled and keys in use.
Originally Posted by [url=http://www.blizzhackers.cc/viewtopic.php?p=4565477#p4565477]kolton » Tue Apr 24, 2012 8:46 am[/url]Character Config Walkthrough:
Scripts section/Sequence config:
This is pretty straightforward, set the scripts you want to run to true, and those you don't to false
Most common mistake here is typing True or TRUE or False or FALSE, these are all wrong. The way to type it is true and false
Special scripts - worth noting is that Wakka is very experimental, so don't expect human-like reflexes. Enchant and battle orders (moved to the top of char config for convenience) use Catacombs waypoint
Town/Potion:
heal percent is the upper limit - if your hp/mana is under it, you will go heal
Config.RejuvBuffer is an uncommon feature that allows you to store rejuvs and drink them from inventory
town hp/mp happens only when attacking, the character will go heal and get back to the fight (this feature might be better known as tp chicken)
Inventory settings:
1 = drop/stash
0 = don't touch
If your whole inventory remains locked with 0's, the bot won't stash anything.
If your whole inventory is unlocked with 1's, the items will be dropped or stashed.
You have been warned, so pay attention here.
Potion config:
You set each column type and minimum number of potions for each column before buying them. Buying potions is only triggered in town. If you want to restock potions mid-run, keep reading.
Pickit config:
Put exact file name like found in kolbot\pickit. You will get an error if you put a bad file name.
Pickit is in the same format as d2nt, its item parser and alias files have been directly ported.
I will not give support for your own pickit errors.
Gambling:
Pretty straightforward, the only thing to note is that GambleItems are classids of items that can be found in NTItemAlias file.
So, if you want to gamble a JMoD, put kite shield in the array. Getting kite shield's classid is as easy as opening the alias file and searching for the word 'kite'. Once found, put this is character config:
Code:Config.GambleItems.push(331); // Kite Shield
Cubing:
Cubing allows you to use most of the useful Horadric Cube recipes. For a list of all of the available ones, go to kolbot\libs\config\Templates\Cubing.txt
Simple ingredients are automatically picked. The only items that need to be in the pickit are base items for socketing and upgrading recipes (for example, upgrading vipermagi or socketing ethereal archon plate).
Crafting bases have already been set to a high enough level. It most likely won't keep any bases when your character's level is low (gambling) and/or when killing low level monsters (only baal/diablo/nihlathak can drop good enough amulets for example)
Again like with gambling, for classids use NTItemAlias file.
Runeword rerolling:
I tried to make this as simple as possible by indexing recipes, so all the input that's required is recipe name and item classid, along with keep runeword line. For the list of all runewords, see libs\config\Templates\Runewords.txt
Runes are picked automatically, main item needs to be in your pickit. KeepRunewords lines are checked against ALL Runewords so you don't need one for each runeword. For example
All of these polearms will be checked with just this one KeepRunewords line.Code:Config.Runewords.push([Runeword.Insight, 255]); // Thresher Config.Runewords.push([Runeword.Insight, 256]); // Cryptic Axe Config.Runewords.push([Runeword.Insight, 257]); // Great Poleaxe Config.Runewords.push([Runeword.Insight, 254]); // Colossus Voulge Config.KeepRunewords.push("[type] == polearm # [meditationaura] == 17");
NOTE: Enhanced damage, Enhanced defense and +defense are currently broken for runewords.
General config:
This part contains various options that have been explained in the file itself. Worth noting is that QuitList is used for quitting with leader(s) when team botting. You don't need to explicitly define the leader to follow anywhere, which gives team botting more flexibility, but it's still wise to have a quit list if you don't want to keep running if leader leaves the game.
TownCheck is the option you use for restocking potions mid-run. It will go to town if you run out of mana or healing potions when teleporting or when attacking.
Anti-hostile config:
This allows you to handle hostile threats in your public games. You can quit as soon as hostility is declared, quit when you see the hostile player nearby or try to kill the player.
DClone config:
You are able to wait if there's soj sales or dclone walk in your game. Dclone stop will immediately stop the run, go to town and wait infinitely. Soj wait happens after all the current scripts are finished.
Monster skip config:
You can skip monsters based on their immunity/enchantment/auras, and multiple immunites or enchantments.
Attack config:
Here you input your attack skills. They must be valid or the bot won't attack. They also must be positive numbers. The only negative value is -1, which means 'don't attack' (you will also get a nice message warning you that you don't have any skills set).
Each character class has their own specific config. Just read the description on each option and set accordingly.
Ingame Commands
Specific to libs:
F12 - reveal area
Pause/Break - pause/unpause the bot. If you go to town you should return to the same area when you unpause
Specific to d2bs:
Home - Toggle console
Alt+Home - Toggle console for input (you can type native code in the console, like getUnit(), me.x, me.y etc.)
Messages (d2bs specific):
.reload - reload the bot
.stop - stops the bot
.start - start the bot
.exec <command> - same as typing a command in the consoleOriginally Posted by [url=http://www.blizzhackers.cc/viewtopic.php?p=4565478#p4565478]kolton » Tue Apr 24, 2012 8:47 am[/url]Team Botting
Team botting includes the following:
Diablo / Diablo Helper / Diablo Leecher (walks, doesn't fight)
Baal / Baal Helper / AutoBaal (doesn't fight)
Joining from the same computer (same d2bot# manager):
Let's say we have 2 profiles, Leader and Leecher:
Leader uses the standard D2BotLead.dbj starter file, no additional config is needed.
Leecher uses D2BotFollow.dbj with the following config:
Code:var joinSettings = { "Leader": ["Leecher"] };
Now, let's say we want to add more leechers, and we want ALL of them to follow one profile - Leader
The D2BotFollow config would be:
Code:var joinSettings = { "Leader": ["all"] };
You can make multiple botting teams without the need to make multiple copies of the starter, simply add leaders with their leechers:
Code:var joinSettings = { "LeaderA": ["LeecherA1", "LeecherA2", "LeecherA3"], "LeaderB": ["LeecherB1", "LeecherB2", "LeecherB3"], };
Joining from friend list or channel announcements:
D2BotChannel treats all channel text equally - if there's a mention of your desired game name, it will try to join, regardless of it being a f-list message or channelbot announcement.
In order to set it up, you just need to know the game name you're joining (and password if there's one).
Code:var joinChannel = ""; var games = [""]; var passwords = [""]; var joinDelay = 5000; var friendListQuery = 0; // time in seconds between each "/f l" query. 0 = don't use "/f l"
joinChannel can be empty, so the bot just joins the lobby
games and passwords need to have the same number of elements, so if a game has no password, use "" in its place
games = ["game one-", "game two-"];
passwords = ["somepw", ""];
Game names aren't case-sensitive, you can type 'fun baal-' and it will join 'Fun Baal-##' games.
Ingame team botting:
First you need to choose the scripts you want to run.
Leader runs Scripts.Baal and/or Scripts.Diablo
Followers can run Scripts.BaalHelper to fight along in a Baal run or Scripts.AutoBaal to just sit in a corner
Same goes for Diablo - Scripts.DiabloHelper for killing along or Scripts.Wakka for following without attacking
DiabloHelper and Wakka do not open seals.
Next important option is public mode:
Config.PublicMode = 0; // 1 = invite, 2 = accept, 0 = disable
Leader uses 1 - invite mode, followers use 2 - accept mode.
Another useful but not crucial setting is Config.QuitList.
It is used to quit along with leader.
Team botting scripts don't require a name to follow, so you can follow multiple runs with the same character without having to supply a leader's name. Everything is either auto-assign or completely ignores the concept of needing a leader (join the first throne portal for example, keep running if leader chickens if you don't have him in quitlist)
Important note: Wakka is a personal experiment, don't expect a miracle.
Gambling System:
It is possible to run dedicated gamblers that will get gold supply from other characters.
This is especially useful when trying to gamble LLD/VLLD items - mainly circlets - on lower level gamblers (24-45).
Gambling rings and amulets is NOT recommended because of their constant and high price. The price of every other item is based on character level and gets lower on low level characters.
Setting up:
Open kolbot\libs\Gambling.js
You will find settings for gamblers, gold finders, game names and min gold
goldFinders - Here you can put any profile that does mf or gf runs. These characters will join games to drop gold for gamblers when needed.
gamblers - Profiles of characters that gamble. They will gamble until their gold is out, after which they'll request gold from goldFinders
gambleGames - these are needed so goldFinders can know what to do in a game. The format is game name without the number. So if you're making 'gamble#', put "gamble", and if making 'gamble-#', put "gamble-"
minGold - least amount of gold goldFinders should keep. Anything over will be given to gamblers, and if they don't have enough, they won't join gamblers' games
Here's an example:
Let's say we have 3 mfer profiles called MF1, MF2, MF3 and one gamble char profile called GAMBLE that makes games "gamble-#" (this is what you put in d2bot manager!).
We want all 3 mfers to supply the one gambler, here's how we set that up
(game names are case sensitive here, and d2 always makes the first letter uppercase, I may change case-sensitivity at some point)Code:goldFinders: ["MF1", "MF2", "MF3"], // don't remove the comma gamblers: ["GAMBLE"], // don't remove the comma gambleGames: ["Gamble-"], // don't remove the comma minGold: 200000, // don't remove the comma
All 3 characters run D2BotLead.dbj as their starter.
goldFinders don't need any additional character config changes
gamblers run Scripts.Gamble in their character config (special scripts), and use Gambling config settings.
One gf barb was enough to supply 3 level 25 circlet gamblers (looking for level 18 compatible circlets) in my tests.
Special Thanks:
d2bs team
synirc #d2bs crew
etal team
McGod and his mBot - lots of ideas came from here, and I snagged mBot's Storage.js
muddywaters
rolle3k
curiousmonkey
Misc Notes
Stashing can be done from anywhere in town, and kolbot uses that, so don't freak out if you see item on cursor after visiting a NPC.
The official kolbot slogan is "use kolbot or die."
Kolbot supports all character classes and most character builds. It doesn't support shapeshift druids, but it does have experimental wolfbarb code. If that proves to be a success, it will be used for druids too. Melee characters (frenzy, conc, zeal, charged strike etc) will walk short distances to reposition when attacking (mostly due to garbage fcr where walking takes less time).
Barbarians and ww assassins will use tri-whirl on solo targets (yay)
Bookmarks