Simple Pixelbot for Diablo 2 Resurrected written in python and opencv. Obviously only use it in offline mode as it is against the TOS of Blizzard to use it online! Download here. Got to have a Discord nowadays I guess 🤷♂️
And please. I urge you to actually read that README! It will make your life a lot easier.
The bot currently only supports the screen resolutions 1920x1080 and 1280x720. If your monitor has a higher resolution, you need to reduce it to the mentioned once for running the bot.
All settings will automatically be set when you execute run.exe
and press the hotkey for "Adjust D2R settings" (default f9). Note that D2R should not run during this process, or if it does you will have to restart afterwards. It is not a 100% thing, in rare cases you might still have to fiddle around with your brightness. I suggest using the "Color Test Mode" to verify your settings.
Note: There have been issues reported with image sharpening being truned on via the graphic card settings itself outside of D2R. Try turning it off when running botty.
You can put any skills on left and right attack and see if it works out. E.g. Glacial Spike on left attack and Blizzard or right attack.
Adjust the hotkeys in the custom.ini or param.ini for the [char]
and [sorceress]
section accordingly. Check out the param.ini section in the Readme for more details on each param.
Your standard Hammerdin with Enigma. Dont think I have to explain much here. Same story as with sorc, set up your skills in the .ini file to what you have in D2R or the other way around. When running more than just pindle or shenk you need to start with a full tomb of tps in your inventory.
Open up D2R and wait till you are at the hero selection screen. Make sure the char you running with is selected and will be in A5 in the respective difficulty you set in the param.ini once the bot starts the game.
Download the a prebuilt release here. Start run.exe
in the botty folder. Switch (ALT+TAB) to your D2R window and press the start key (default f11). You can always force stop botty with f12.
To check if you graphic settings are good and if the bot would pick up items there is a Color Test Mode built in. Start botty and press F10 (Default key). This will open up a (mostly black) window. Start a game in D2R and throw some items of different type on the ground. If you now bring forward the debug window all items should show up with their names while the background is black. If you throw an item on the ground that should be picked up, it will have a red circle.
Check out the development.md docu for infos on how to build from source and details of the project structure and code.
To ease the switch to new botty versions, you can also overwrite any of the param.ini fields in a custom.ini file. When a new version of botty is released you just copy the file to the new version without having to port all your param.ini changes to the new version. Example:
; custom.ini - overwrites 3 params in the param.ini
[general]
monitor=1
[routes]
run_pindle=1
run_shenk=0
[general] | Descriptions |
---|---|
monitor | Select on which monitor D2R is running in case multiple are available |
res | Resolution settings can be any of [1920_1080, 1280_720] |
offset_top | Your D2R windows offset from top of the screen (including the window bar). For fullscreen leave at 0. |
offset_left | Your D2R window offset from left of screen. For fullscreen leave at 0. |
min_game_length_s | Games must have at least this length, will wait in hero selection for if game is too quick (to avoid server connection issues) |
max_game_length_s | Botty will attempt to stop whatever its doing and try to restart a new game. Note if this fails, botty will attempt to shut down D2R and Bnet |
exit_key | Pressing this key (anywhere), will force botty to shut down |
resume_key | After starting the exe botty will wait for this keypress to atually start botting away |
color_checker_key | Pressing this key will start a debug mode to check if the color filtering works with your settings. It also includes the item search and marks items it would pick up with red circles |
logger_lvl | Can be any of [info, debug] and determines how much output you see on the command line |
randomize_runs | If 0, the order will always be pindle -> eldritch/shenk. If 1 the order will be random. |
difficulty | Set to normal nightmare or hell for game difficulty |
custom_discord_hook | Add your own discord hook here to get messages about drops and in case botty got stuck and can not resume |
info_screenshots | If 1, the bot takes a screenshot with timestamp on every stuck / chicken / timeout / inventory full event. This is 1 by Default, so remember to clean up the folder every once in a while |
loot_screenshots | If 1, the bot takes a screenshot with timestamp everytime he presses show_items button and saves it to loot_screenshots folder. Remember to clear them once in a while... |
[routes] | Descriptions |
---|---|
run_pindle | Run Pindle in each new game. Select "1" to run it "0" to leave it out. |
run_shenk | Run shenk in each new game. Select "1" to run it "0" to leave it out. |
[char] | Descriptions |
---|---|
type | Build type. Currently only "sorceress" or "hammerdin" is supported |
casting_frames | Depending on your char and fcr you will have a specific casting frame count. Check it here: https://diablo2.diablowiki.net/Breakpoints and fill in the right number. Determines how much delay there is after each teleport for example. |
slow_walk | With this set to 1 the char will have a large delay for each running action in town. Set this to 1 if you keep getting stuck during traversing town. |
static_path_pindle | If set to 1, the pathing is done by staticly recorded screen positions. Otherwise it uses reference templates |
static_path_eldritch | If set to 1, the pathing is done by staticly recorded screen positions. Otherwise it uses reference templates |
atk_len_pindle | Attack length for hdin or number of attack sequences for sorc when fighting pindle |
atk_len_eldritch | Attack length for hdin or number of attack sequences for sorc when fighting eldritch |
atk_len_shenk | Attack length for hdin or number of attack sequences for sorc when fighting shenk |
num_loot_columns | Number of columns in inventory used for loot (from left!). Remaining space can be used for charms |
take_health_potion | Health percentage when healing potion will be used |
take_mana_potion | Mana percentage when mana potion will be used. Currently belt managment is not very clever and it is safest to only pick up health pots and make sure mana reg is enough for pindle to not need mana pots. |
heal_merc | Merc health percentage when giving healing potion to merc |
chicken | Will chicken (leave game) when player health percentage drops below set value, range 0 to 1. Set to 0 to not chicken. |
merc_chicken | Will chicken (leave game) when merc health percentage drops below set value, range 0 to 1. Set to 0 to not chicken. |
show_items | Hotkey for "show items" |
inventory_screen | Hotkey to open up inventory |
stand_still | Hotkey for "stand still". Note this can not be the default shift key as it would interfere with the merc healing routine. |
tp | Hotkey for using a town portal |
show_belt | Hotkey for "show belt" |
potion1 | Hotkey to take poition in slot 1 |
potion2 | Hotkey to take poition in slot 2 |
potion3 | Hotkey to take poition in slot 3 |
potion4 | Hotkey to take poition in slot 4 |
cta_available | 0: no cta available, 1: cta is available and should be used during prebuff |
weapon_switch | Hotkey for "weapon switch" (only needed if cta_available=1) |
battle_order | Hotkey for battle order from cta (only needed if cta_available=1) |
battle_command | Hotkey for battle command from cta (only needed if cta_available=1) |
[sorceress] | Descriptions |
---|---|
teleport | Required Hotkey for teleport |
skill_left | Required Hotkey for skill that is used on left mouse btn (e.g. Glacial Spike) |
skill_right | Required Hotkey for skill that is used on right mouse btn (e.g. Blizzard) |
frozen_armor | Optional Hotkey for frozen armor (or any of the other armors) |
energy_shield | Optional Hotkey for energy shield |
thunder_storm | Optional Hotkey for thunder storm |
[hammerdin] | Descriptions |
---|---|
teleport | Required Hotkey for teleport |
concentration | Required Hotkey for Concentration |
redemption | Optional Hotkey for redemption |
holy_shield | Hotkey for Holy Shield |
blessed_hammer | Hotkey for Blessed Hammer |
[advanced_options] | Descriptions |
---|---|
pathing_delay_factor | A linear scaling factor, between 1 and 10, applied to pathing delays. |
[items] | Descriptions |
---|---|
item_type | 0: Item will not be picked up. 1: Item will be picked up. 2: Item will be picked up and a discord message will be sent. |
This project is free. Support it by contributing in any technical way, giving feedback, bug reports or submitting PRs.