Git Product home page Git Product logo

botty's Introduction

Pixelbot for Diablo 2 Resurrected. This project is for informational and educational purposes only.

Getting started & Prerequisites

  • D2R needs to be in English Language,
  • Botty currently works with 720p D2R window (will be adjusted automatically on auto settings)

1) Graphics and Gameplay Settings

All settings will automatically be set when you execute main.exe and press the hotkey for "Adjust D2R settings" (default f9). It is not a 100% thing, in rare cases you might still have to fiddle around with your brightness. I suggest using the "Graphic Debugger" to verify your settings. Note: Make sure that no other external programs adapt your graphics settings (HDR, Geforce Experience, etc.)

2) Supported builds

Check the documentation for params.ini further down. Different Sorc builds, Hammerdin, Barb, Trapsin are already implemented to different extents. It is quite straightforward to implement new classes. Give it a go if you like!

3) Start Location

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 any of Act 3, 4 or 5 in the respective difficulty you set in the params.ini once the bot starts the game.

4) Start Botty

You can either run from python. Follow development.md for that. Or you download the a prebuilt release here (the .rar file!). Start main.exe in the botty folder. Focus your D2R window and press the start key (default f11). You can always force stop botty with f12. Note: Botty will use the /nopickup command in the first game to avoid pickup up trash while traversing. This command will only allow item pickup when "show items" is active.

Development

Check out the development.md docu for infos on how to build from source and details of the project structure and code.

BNIP Pickit

Botty NIP (BNIP) is an extended version of Njaguar's Item Parser (NIP). BNIP is compatible with NIP (with some minor exceptions as discussed below).

There is a default nip file that comes with botty called "default.nip" inside config folder, you can add your own nip files by putting them inside config/nip with a file extension of .nip. Creating your own nip file also turns off the default.nip.

We suggest you read the NIP guide if you are unfamiliar with NIP https://github.com/blizzhackers/pickits/blob/master/NipGuide.md

New features in BNIP

Poison damage is no longer calculated, but is now read as it's raw value. Example: Adds 5-10 poison damage over 1 seconds can be picked with [poisonmindam] == 5 && [poisonmaxdam] == 10. "313 Poison Damage over 5 seconds" can be picked with [poisonmindam] == 313 or [poisonmaxdam] == 313.

[allres] is a thing now. example: [type] == amulet && [quality] == unique # [allres] == 30 will pick up Mara's

[idname] can now be used for unique / set items. For example, [idname] == thestoneofjordan will pick up SoJ. Keep in mind, however, this forces the item to be ID'd so be careful if you want to keep unid items.

[maxquantity] is not supported (yet). You can leave those tags in but they'll do nothing.

If you have the discord webhook hooked up to alert you when the bot keeps items, you can suppress these alerts by adding a "@" in front of your expression.

@[type] == ring = no notification [type] == ring = notification

Graphic Debugger

To check if you graphic settings are good and if the bot would pick up items there is a Graphic Debugger Mode. Start botty and press F10 (Default key). This will open up a (mostly black) window. Start a game in D2R and go to A5. You should see some templates with blue circles detected and scores printed out to the console. To check item finding, throw some items of different types on the ground. The debug window should show the item names with black background. If you throw an item on the ground that should be picked up, it will have a red circle. The console will print out the scores for each item that would be picked up. Scores should be well above 0.9 for these items.

params.ini

All botty configuration files are located in the config folder. To ease the switch to new botty versions, you can also overwrite any of the .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 params.ini changes to the new version. Example:

; custom.ini - overwrites 2 params in the params.ini
[general]
name=MyCustomName

[routes]
order=run_pindle, run_eldritch
[general] Descriptions
difficulty Set to normal nightmare or hell for game difficulty.
name Name used in terminal and discord messages.
randomize_runs Randomize the order of [routes] specified in params.ini.
saved_games_folder [Optional] Defaults to ~\Saved Games\Diablo II Resurrected. Used to store configuration settings for f9 / auto settings.
custom_loot_message_hook Add your message hook here (such as Discord channel) to get info about loot
custom_message_hook Add your message hook here (such as Discord channel) to get info about botty status updates, discord webhook is default.
discord_log_chicken Set to 1 to enable messages about bot chickens, 0 to disable.
discord_status_count Number of games between discord status messages being sent. Leave empty for no status reports.
message_api_type Which api to use to send botty messages. Supports "generic_api" (basic discord), or "discord" (discord embeds with images).
break_length_m Break for break_length_m minutes every max_runtime_before_break_m minutes
max_runtime_before_break_m ^
d2r_path [Optional] Path to d2r.exe. If not set, it will default to C:\Program Files (x86)\Diablo II Resurrected\D2R.exe when attempting to restart.
max_consecutive_fails Botty will stop making games if the number of consecutive fails reaches this max value.
max_game_length_s Max game length in seconds. Botty will attempt to stop whatever it's doing and try to restart a new game at specified interval. If this fails, botty will attempt to shut down D2R and Bnet.
restart_d2r_when_stuck Set to 1 and botty will attempt to restart d2r in the case that botty is unable to recover its state (e.g: game crash).
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.
pickit_screenshots If 1, the bot takes a screenshot with timestamp on every ground loot snapshot taken during pickit routine, can be useful for debugging.
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
order List of runs botty should do. These will be run in the the order listed unless randomize_runs is set to 1. Possible runs:
run_trav, run_pindle, run_eldritch, run_eldritch_shenk, run_nihlathak (requires teleport), run_arcane (requires teleport), run_diablo (requires teleport, only hammardin)
[char] Descriptions
type Build type. Currently only "sorceress" or "hammerdin" is supported
belt_rows Integer value of how many rows the char's belt has
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. If your system has some delay e.g. on vms, you might have to increase this value above the suggest value in the table!
cta_available 0: no cta available, 1: cta is available and should be used during prebuff
safer_routines Set to 1 to enable optional defensive maneuvers/etc during combat/runs at the cost of increased runtime (ex. hardcore players)
num_loot_columns Number of columns in inventory used for loot (from left!). Remaining space can be used for charms
force_move Hotkey for "force move"
inventory_screen Hotkey to open inventory
potion1 Hotkey to take potion in slot 1
potion2 Hotkey to take potion in slot 2
potion3 Hotkey to take potion in slot 3
potion4 Hotkey to take potion in slot 4
show_belt Hotkey for "show belt"
show_items Hotkey for "show items"
stand_still Hotkey for "stand still". Note this can not be the default shift key as it would interfere with the merc healing routine
teleport Hotkey for teleport (set blank if your character can't teleport)
town_portal Hotkey for town portal
weapon_switch Hotkey for "weapon switch" (only needed if cta_available=1)
battle_order Hotkey for battle orders from cta (only needed if cta_available=1)
battle_command Hotkey for battle command from cta (only needed if cta_available=1)
stash_gold Bool value to stash gold each time when stashing items
use_merc Set to 1 for using merc. Set to 0 for not using merc (will not revive merc when dead), default = 1
atk_len_arc Attack length for hdin/sorc fighting arcane
atk_len_eldritch Attack length for hdin or number of attack sequences for sorc when fighting eldritch
atk_len_nihlathak Attack length for hdin or number of attack sequences for sorc when fighting nihlathak
atk_len_pindle Attack length for hdin or number of attack sequences for sorc when fighting pindle
atk_len_shenk Attack length for hdin or number of attack sequences for sorc when fighting shenk
atk_len_trav Attack length for hdin fighting trav (note this atk length will be applied in 4 different spots each)
atk_len_cs_trashmobs Attack length for hdin or number of attack sequences when fighting Trash Mobs in Chaos Sanctuary (Diablo)
atk_len_diablo_deseis Attack length for hdin or number of attack sequences when fighting Sealboss B "Lord De Seis" in Chaos Sanctuary (Diablo)
atk_len_diablo_infector Attack length for hdin or number of attack sequences when fighting Sealboss C "Infector of Souls" in Chaos Sanctuary (Diablo)
atk_len_diablo_vizier Attack length for hdin or number of attack sequences when fighting Sealboss A "Vizier of Chaos" in Chaos Sanctuary (Diablo)
atk_len_diablo Attack length for hdin or number of attack sequences when fighting Diablo in Chaos Sanctuary
cs_mob_detect If 1, it will attempt to use holy freeze from merc / conviction aura / poison to detect nearby mobs to help speed-up CS run.
cs_town_visits CURRENTLY BROKEN, LEAVE AT 0 FOR NOW
kill_cs_trash If 1, most Trash mob packs from Chaos Sancturay Entrance to Pentagram are cleared. If 0, the run starts at Pentagram and just kills Sealbosses & Diablo (default)
belt_hp_columns Number of belt columns for healing potions
belt_mp_columns Number of belt columns for mana potions
belt_rejuv_columns Number of belt columns for rejuv potions
take_health_potion Health percentage when healing potion will be used. e.g. 0.6 = 60% helath
take_mana_potion Mana percentage when mana potion will be used
take_rejuv_potion_health Health percentag when rejuv potion will be used
take_rejuv_potion_mana Mana percentag when rejuv potion will be used
heal_merc Merc health percentage when giving healing potion to merc
heal_rejuv_merc Merc health percentage when giving rejuv 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.
enable_no_pickup When enabled, will type /nopickup into chat at game start, which can help reduce accidental pickups especially for walking characters.
fill_shared_stash_first Fill stash tabs starting from right to left, filling personal stash last
gamble_items List of items to gamble when stash fills with gold. Leave blank to disable. Supported items currently include circlet, ring, coronet, talon, amulet
open_chests Open up chests in some places. E.g. on dead ends of arcane.
pre_buff_every_run 0: Will only prebuff on first run, 1: Will prebuff after each run/boss
runs_per_repair Force repair after runs_per_repair of runs. Set to 0 to repair only when needed.
runs_per_stash 0: Will only stash after intentional item pickup, 1+: Will force stash after # of runs set here (recommend at least 4 in case of accidental pickups)
sell_junk 0: Discard unwanted items by dropping them on ground. 1: Discard items by selling them at vendor.
[transmute] Descriptions
stash_destination Stash tabs by priority to place the results of the transmute. Default: 3,2,1,0. (It means the result will be first placed in stash 3 untils it's full, then to stash 2, etc. 0 - personal tab)
transmute Add any or all of chipped, flawed, standard, flawless to trasmute gems of these types
transmute_every_x_game How often to run transmute routine (currently transmutes flawless gems into perfect gems). Transmute routine depends on stashing routine it will only start after items stashing is done. E.g. so it could take more than X games to perform transmutes if there were no items to stash at the time. Default: 20

Builds

[sorceress] Descriptions
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
static_field Optional Hotkey for static field
telekinesis Optional Hotkey for telekinesis
[light_sorc] Descriptions
chain_lightning Optional Hotkey for chain_lightning (must be bound to left skill)
lightning Required Hotkey for lightning (must be bound to right skill)
frozen_orb Optional Hotkey for frozen orb (must be bound to right skill)
[blizz_sorc] Descriptions
blizzard Required Hotkey for Blizzard (must be bound to right skill)
ice_blast Optional Hotkey for ice_blast (must be bound to left skill)
[nova_sorc] Descriptions
nova Required Hotkey for Nova (must be bound to right skill)
[hydra_sorc] Descriptions
alt_attack Required Hotkey for any alternate attacking skill. Fireball,Lightning,Frozen Orb, etc. (must be bound to right skill)
hydra Required Hotkey for Hydra (must be bound to right skill)
[paladin] Descriptions
cleansing Optional Hotkey for Cleansing
holy_shield Required Hotkey for Holy Shield
redemption Optional Hotkey for Redemption
vigor Optional Hotkey for Vigor
[fohdin] Descriptions
blessed_hammer Hotkey for Blessed Hammer. (Optional. Bind to left skill)
concentration Hotkey for Concentration
conviction Hotkey for Conviction
foh Hotkey for Fist of Heavens (Required)
holy_bolt Hotkey for Holy Bolt (Required)
[hammerdin] Descriptions
concentration Required Hotkey for Concentration
blessed_hammer Required Hotkey for Blessed Hammer. (must be bound to left skill!)
[trapsin] Descriptions
burst_of_speed Optional Hotkey for Burst of Speed
death_sentry Required Hotkey for Death Sentry
fade Optional Hotkey for Fade
lightning_sentry Required Hotkey for Lightning Sentry
shadow_warrior Optional Hotkey for Shadow Warrior
skill_left Optional Hotkey for Left Skill
[barbarian] Descriptions
cry_frequency Time in seconds between each cast of war_cry. Set to 0.0 if max fcr should be used
find_item Optional Hotkey for Find Item
leap Required Hotkey for Leap
shout Required Hotkey for Shout
war_cry Required Hotkey for War Cry
[Necro] Descriptions
skill_left Required Hotkey for attack (bonespear/teeth)
bone_armor Required Hotkey for Bone Armor
clay_golem Required Hotkey for Clay Golem
raise_skeleton Required Hotkey for Raise Skeleton
amp_dmg Required Hotkey for Amplify Damage
corpse_explosion Required Hotkey Corpse Explosion
raise_revive Required Hotkey revive
damage_scaling Adjusts time spent casting attack skills. Ex: 2 will cast twice as long
clear_pindle_packs Clears mobs before pindle
[advanced_options] Descriptions

botty's People

Contributors

aeon0 avatar aliig avatar bjoerm avatar cfigueiroa avatar cr4zyeight avatar d2rlegit avatar definitelynotsosa avatar egut125 avatar ezro avatar foldablepod avatar ggodev avatar jagarop avatar jobithu avatar johnstylez avatar jrzheng avatar kozfelipe avatar master-matt avatar mischavandenburg avatar navy91 avatar nlapinski avatar rb-development avatar reqyl avatar riddle1001 avatar roozhou avatar skizotenigma avatar sp3cialk29 avatar steve6030 avatar vladimirmakaev avatar xw220 avatar yhkinsar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

botty's Issues

Does it have low hp protection?

Hi,

Does the bot have low hp protection? Like, quickly "save and quit" when on low hp or use reuj (e.g. certain belt slot)?

Also, is there an option to stop the bot running after certain amount of time or after certain amount of runs?

Trav town moving stops at tp exit

`[2021-12-19 14:35:16,382] DEBUG Found Match: A3_TOWN_10 (91.5% confidence)

[2021-12-19 14:35:16,383] DEBUG Traverse from a3_stash_wp to a3_stash_wp

[2021-12-19 14:36:28,931] INFO Force Exit

[2021-12-19 14:37:55,136] INFO Searching for window offsets. Make sure D2R is in focus and you are on the hero selection screen

[2021-12-19 14:37:55,651] DEBUG Set offsets: left 2px, top 37px

[2021-12-19 14:37:56,126] INFO Press f12 to exit health manager

[2021-12-19 14:37:56,127] INFO Start health monitoring`

i think the "Traverse from a3_stash_wp to a3_stash_wp" is the problem

Sudden death

Botty Version
0.3.0

Describe the bug
Bot ended session because of "chiken", but hero was alive and just standing on tp point

Logs
[2021-11-23 13:34:19,133] WARNING Trying to chicken, player HP 0.0%!
[2021-11-23 13:34:23,347] INFO End game while chicken or death happened. Checking where we are at.
[2021-11-23 13:34:27,423] ERROR Could not determine location after chicken / death. Can not continue..

UPD: solved. Another programm interfered.

hammerdin on trav run doesn' work, failed to throw hammer

Is it really a Bug report?
Yes

Botty Version
DEV
Commit number: 3f496af

Describe the bug
Didn't throw and teleport to correct position, it seems that standstill is broken.
But my sorc run smoothly on pindle and ed.

To Reproduce
Steps to reproduce the behavior:

  1. put param.ini inside your botty folder
  2. open d2r
  3. hit f11

Expected behavior
teleport -> stop ->throw hammer -> teleport -> throw hammer

Screenshots / Video

Logs
Add the relevant part of the info.log in this section. Either upload it as a fail or copy-paste the relevant part in here.

(botty) PS C:\Users\NiNi\git\botty> python .\src\main.py
============ Botty 0.4.4-dev [name: Botty] ============

For gettings started and documentation
please read https://github.com/aeon0/botty

+--------+---------------------+
| hotkey |       action        |
+--------+---------------------+
|   f9   | Adjust D2R settings |
+--------+---------------------+
|  f10   |  Graphic debugger   |
+--------+---------------------+
|  f11   | Start / Pause Botty |
+--------+---------------------+
|  f12   |      Stop bot       |
+--------+---------------------+


[2021-12-08 00:04:36,348] INFO       Searching for window offsets. Make sure D2R is in focus and you are on the hero selection screen
[2021-12-08 00:04:37,005] DEBUG      Set offsets: left 657px, top 171px
[2021-12-08 00:04:37,284] INFO       Start health monitoring
[2021-12-08 00:04:37,503] INFO       Start Death monitoring
[2021-12-08 00:04:38,219] INFO       Setting up Hammerdin
[2021-12-08 00:04:38,614] INFO       Starting game #1
[2021-12-08 00:04:38,614] DEBUG      Waiting for Template ['D2_LOGO_HS']
[2021-12-08 00:04:38,684] DEBUG      Found Match: D2_LOGO_HS (89.8% confidence)
[2021-12-08 00:04:38,685] DEBUG      Wait for Play button
[2021-12-08 00:04:38,741] DEBUG      Found Play Btn
[2021-12-08 00:04:39,003] DEBUG      Waiting for Template ['LOADING', 'HELL_BTN']
[2021-12-08 00:04:39,108] DEBUG      Found Match: HELL_BTN (100.0% confidence)
[2021-12-08 00:04:41,610] DEBUG      Waiting for Template ['A5_TOWN_0', 'A5_TOWN_1', 'A4_TOWN_0', 'A4_TOWN_1', 'A3_TOWN_0', 'A3_TOWN_1']
[2021-12-08 00:04:52,992] DEBUG      Found Match: A3_TOWN_1 (80.5% confidence)
[2021-12-08 00:04:55,192] DEBUG      Waiting for Template ['ITEM_PICKUP_ENABLED', 'ITEM_PICKUP_DISABLED']
[2021-12-08 00:04:58,264] DEBUG      Could not find any of the above templates
[2021-12-08 00:04:58,265] ERROR      Failed to detect if /nopickup command was applied or not
[2021-12-08 00:04:59,092] DEBUG      Will pickup: {'rejuv': 6, 'health': 2, 'mana': 2}
[2021-12-08 00:04:59,155] DEBUG      Waiting for Template ['TP_ACTIVE', 'TP_INACTIVE']
[2021-12-08 00:04:59,294] DEBUG      Found Match: TP_INACTIVE (94.3% confidence)
[2021-12-08 00:04:59,360] INFO       Run Trav
[2021-12-08 00:04:59,361] DEBUG      Traverse from a3_town_start to a3_stash_wp
[2021-12-08 00:05:09,281] DEBUG      Select A3_WP (90.9% confidence)
[2021-12-08 00:05:15,906] DEBUG      Waiting for Template ['TRAV_0', 'TRAV_1']
[2021-12-08 00:05:16,139] DEBUG      Found Match: TRAV_0 (96.4% confidence)
[2021-12-08 00:05:16,154] INFO       Health Manager is now active
[2021-12-08 00:05:23,773] DEBUG      Drink health potion in slot 1. HP: 74.5%, Mana: 83.2%
[2021-12-08 00:05:39,464] INFO       Force Exit

Additional info

window mode, 1280x720

param.diff.log : git diff 3f496afe9a09683f2868afcabd07d35032a57e51 params.ini
params.ini.txt : params.ini(github doesn't allow .ini format, adding .txt as extension)

Error Pathing to Eldrich

Botty Version
0.3.0

Describe the bug
[2021-11-20 14:00:29,753] ERROR Got stuck exit pather

To Reproduce
Everytime the bot is ran. Have re downloaded and entered in the correct commands still getting the issue, also tried 720p vs 1080

Expected behavior
Kill eldrich, it has before when i was working on making sure it ran correctly and now it will not continue to eldrich. It will freeze at the last teleport location infront of eldrich and fail to attack then save and exit.

Screenshots / Video
info_pather_got_stuck_20211120_140029
Logs
[2021-11-20 13:59:25,920] INFO Run Pindle
[2021-11-20 13:59:54,824] INFO Picking up rare_gloves
[2021-11-20 14:00:02,472] INFO Stashing picked up items
[2021-11-20 14:00:13,086] INFO Run Eldritch
[2021-11-20 14:00:22,363] INFO Run Shenk
[2021-11-20 14:00:29,753] ERROR Got stuck exit pather
[2021-11-20 14:00:34,946] INFO End game. Elapsed time: 78.87s
[2021-11-20 14:00:35,425] INFO Start new game
[2021-11-20 14:00:40,439] INFO Force Exit
Additional info
trying t figure out why it fails to attack all of a sudden and causes a error but i cannot.

Drink potions not getting counted

Botty Version
#138

Describe the bug
Potions that have been drink in the middle of run don't get counted.
In the example below, the run started with:
[2021-11-28 22:18:45,760] DEBUG {'rejuv': 0, 'health': 0, 'mana': 0}
But the bot had to drink a mana potion:
[2021-11-28 22:19:00,842] DEBUG Drink mana potion in slot 2
Regardless, it didn't loot a mana potion from that was dropped by pindle (screenshot below)

Expected behavior
Once a potion is drink, add +1 to potion needs so it will get looted middle run.

Screenshots / Video
https://i.imgur.com/GpaHFmL.jpeg

Logs

[2021-11-28 22:18:13,994] INFO       Searching for window offsets. Make sure D2R is in focus and you are on the hero selection screen
[2021-11-28 22:18:14,550] DEBUG      Set offsets: left 640px, top 340px
[2021-11-28 22:18:15,201] INFO       Setting up Sorceress
[2021-11-28 22:18:15,217] INFO       Starting game #1
[2021-11-28 22:18:15,218] DEBUG      Waiting for Template D2_LOGO_HS
[2021-11-28 22:18:15,267] DEBUG      Found Play Btn
[2021-11-28 22:18:15,741] DEBUG      Searching for nightmare Btn...
[2021-11-28 22:18:16,631] DEBUG      Waiting for Template NORMAL_BTN
[2021-11-28 22:18:16,651] DEBUG      Found nightmare Btn -> clicking it
[2021-11-28 22:18:19,267] DEBUG      Waiting for Template ['A5_TOWN_1', 'A5_TOWN_0']
[2021-11-28 22:18:45,760] DEBUG      {'rejuv': 0, 'health': 0, 'mana': 0}
[2021-11-28 22:18:45,794] INFO       Run Pindle
[2021-11-28 22:18:45,795] DEBUG      Traverse from a5_town_start to nihlathak_portal
[2021-11-28 22:18:45,795] DEBUG      Start health monitoring
[2021-11-28 22:18:52,348] DEBUG      Select ['A5_RED_PORTAL', 'A5_RED_PORTAL_TEXT']
[2021-11-28 22:18:52,348] DEBUG      Waiting for Template ['A5_RED_PORTAL', 'A5_RED_PORTAL_TEXT']
[2021-11-28 22:18:54,187] DEBUG      Waiting for Template ['PINDLE_0', 'PINDLE_1']
[2021-11-28 22:19:00,842] DEBUG      Drink mana potion in slot 2
[2021-11-28 22:19:10,025] DEBUG      Took a screenshot of current loot
[2021-11-28 22:19:11,476] DEBUG      Stop health monitoring
[2021-11-28 22:19:12,385] DEBUG      Stop death monitoring
[2021-11-28 22:19:12,710] DEBUG      Waiting for Template ['SAVE_AND_EXIT_NO_HIGHLIGHT', 'SAVE_AND_EXIT_HIGHLIGHT']
[2021-11-28 22:19:15,306] DEBUG      Waiting for Template ['SAVE_AND_EXIT_NO_HIGHLIGHT', 'SAVE_AND_EXIT_HIGHLIGHT']
[2021-11-28 22:19:16,821] INFO       End game. Elapsed time: 61.60s

Additional info
Add any other information about the problem here.

Background bot run?

Hi there,

First al all let me tell you that I love you 100% for what you're doing regarding the bot, you make me feel like a child again. Back in the days i was level 99 on a Gamespace server doing only baal runs with my friends.
My kindly question for you, can you please think of a way to somehow minimize the bot or let it run in the background leting you use the pc? For me this is the biggest problem and i tried to sort it out with a vm but failed.

Really wait for your feedback

Thanks,
Vlad

Problem with shenk

Botty Version
0.3.0

Describe the bug
bot don't do shenk

To Reproduce
Go on shenk after eldritch

Expected behavior
bot don't do shenk because he needs 1 or 2 more TPs to reach it

Screenshots / Video
short video https://disk.yandex.ru/i/3iqMWL0J0kTyyw
2 full runs https://disk.yandex.ru/i/0ETBROFilXfGYA

Logs
[2021-11-23 12:46:19,442] INFO Run Shenk
[2021-11-23 12:46:36,790] ERROR Got stuck exit pather
[2021-11-23 12:46:42,108] INFO End game. Elapsed time: 104.17s

Additional info
Add any other information about the problem here.

no .exe

Hello. I am very new to GitHub but I can't find the .exe?

I downloaded the very first one you released and it came with a .exe but now I cant find it.

I got out of tps error in pindle while tome is full โ€ฆ fire sors . Another bug which happenes today is that she is buying potions every run and full the stash any help ?

Is it really a Bug report?
If you have questions regarding setup or feature information/requests, please consider asking in the Discord channel: https://discord.gg/Jf3J8cuXWg. The Github issues section is for bug reports only.

Botty Version
What version of botty are you running? Are you using a pre-compiled release? Which one. Are you using the latest master branch? On which commit?

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. etc.

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots / Video
If applicable, add screenshots or even better a short video of the error happening to help explain your problem. Botty often automatically makes screenshots when something goes wrong. Add these also.

Logs
Add the relevant part of the info.log in this section. Either upload it as a fail or copy-paste the relevant part in here.

Additional info
Add any other information about the problem here.

Items not picked, Shenk not done (stands in params = 1)

Botty Version
0.3.0

Describe the bug
after kill, "alt" would not be pushed and items analysed. (Color-Settings are done)

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. etc.

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots / Video
If applicable, add screenshots or even better a short video of the error happening to help explain your problem. Botty often automatically makes screenshots when something goes wrong. Add these also.

Logs
2021-11-23 10:48:51,440] INFO Run Pindle
Exception in thread Thread-4:
Traceback (most recent call last):
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL2\threading.py", line 932, in _bootstrap_inner
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL
2\threading.py", line 870, in run
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL2\bot.py", line 270, in doit
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL
2\char\hammerdin.py", line 65, in kill_pindle
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL2\char\hammerdin.py", line 51, in _do_redemption
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL
2\keyboard_init_.py", line 379, in send
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL2\keyboard_init_.py", line 358, in parse_hotkey
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL
2\keyboard_init_.py", line 358, in
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL2\keyboard_init_.py", line 309, in key_to_scan_codes
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL
2\keyboard_canonical_names.py", line 1239, in normalize_name
ValueError: Can only normalize non-empty string names. Unexpected ''
[2021-11-23 10:49:25,844] INFO Run Eldritch
Exception in thread Thread-7:
Traceback (most recent call last):
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL2\threading.py", line 932, in _bootstrap_inner
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL
2\threading.py", line 870, in run
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL2\bot.py", line 309, in doit
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL
2\char\hammerdin.py", line 76, in kill_eldritch
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL2\char\hammerdin.py", line 51, in _do_redemption
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL
2\keyboard_init_.py", line 379, in send
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL2\keyboard_init_.py", line 358, in parse_hotkey
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL
2\keyboard_init_.py", line 358, in
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL2\keyboard_init_.py", line 309, in key_to_scan_codes
File "C:\Users\blubb\AppData\Local\Temp\ONEFIL
2\keyboard_canonical_names.py", line 1239, in normalize_name
ValueError: Can only normalize non-empty string names. Unexpected ''
[2021-11-23 10:49:48,676] INFO End game. Elapsed time: 76.45s

Additional info
i am using shadow.tech as cloud gaming computer. so my keyboard is connected through cloud session.

Botty is not working with set equipment

The not is not working at all while using full Talrasha's set.
Its just moving the mouse at the spawn spot over the end of the stairs and its got stuck with no progress at all.
If I help him to move it continue to do the pindle run normally

Chicken save & exit mouse conflict

Botty Version
An older version of my require_merc branch of my fork, core is botty 2.2. chicken subroutine was unchanged

Describe the bug
Unusual rare behavior on chicken when trying to click save & exit. Could it be due to the bot continuing to try to move or perform attack sequence simultaneously when the chicken occurs and causes a conflict in mouse movement?

To Reproduce
Steps to reproduce the behavior:
-Force a chicken during an attack sequence or movement sequence, then observe mouse attempt to save&exit.

Expected behavior
-Save&exit should be clicked

Screenshots / Video
https://user-images.githubusercontent.com/9866239/142743819-c3a2376b-3465-454d-b4c0-f5db118dc425.mp4

Logs
Log

Regression: "Got stuck exit pather" on Eldritch run

Botty Version

Latest dev version commit 8d6fb66

Describe the bug

Sorceress on chain lightning: with the latest changes from today (28.11) some times (quite often) when Eldritch run starts, the sorc will get stuck right after entering Frigid Highlands, on the waypoint there. It just wont start teleporting up to Eldritch but wait a while and start casting spells instead, while meantime logging the "got stuck exit pather" error.

To Reproduce

Set up a sorceress to go run Eldritch, she will eventually get stuck on the waypoint every now and then - not always, but occasionally. This was introduced with the latest pather changes.

Expected behavior

I expect that the Eldritch run is successful every time, without getting stuck on the waypoint.

Screenshots / Video

info_pather_got_stuck_20211128_162721

Logs

image

UnicodeDecodeError

UnicodeDecodeError: 'cp950' codec can't decode byte 0x87 in position 171: illegal multibyte sequence

Assertion failed in resize.cpp

Hey guys, I'm having an error while trying to run botty, I've filled out param.ini and pressed f9 to auto set the d2 settings, but then I press f10 or f11 and I'm getting this assertion error:

Capture

Do you know what I am missing?

PS: I'm using the main.exe compiled version

Template not matching for full rejuvs?

Botty Version
Master branch commit 11b55a1 (post 4.0). 1920x1080. Belt rows =4. HP=2, RV=2.

Describe the bug
Bot won't pick up full_rejuv potions when plain rejuv potion is disabled in params.ini and full_rejuv is enabled. Bot starts picking up both when plain rejuv is re-enabled (log file reads match for regular rejuv).

To Reproduce
Make sure you need rejuv potions, then watch bot during pickit when plain rejuv potion is disabled in params.ini. Might only happen in 1920x1080, haven't tested 720p

Screenshots / Video

;potions
misc_rejuvenation_potion=0
misc_full_rejuvenation_potion=1
misc_super_healing_potion=1
misc_super_mana_potion=1

video
https://user-images.githubusercontent.com/9866239/143371894-086cbef6-6f28-42d3-b1bc-8c9418573484.mp4

Screenshot 2021-11-24 213251

;potions
misc_rejuvenation_potion=1
misc_full_rejuvenation_potion=1
misc_super_healing_potion=1
misc_super_mana_potion=1

video
https://user-images.githubusercontent.com/9866239/143371975-6a4f0076-2fd0-4830-abe6-1ca85a4b7ee8.mp4

misc_rejuv

Graphics debugger:
debug

I looked at the 1920x1080 assets and they seem fine. Regular rejuv and full rejuv are equivalent pixels/in so should be appropriate for 1920.

Hammerdin not working: TypeError: 'type' object is not subscriptable

Is it really a Bug report?
Yes

Botty Version
DEV
Commit number: 3f496af

Describe the bug
python src/main.py throws an error when trying to run hammerdin

To Reproduce
Steps to reproduce the behavior:
git clone https://github.com/aeon0/botty.git
cd botty
conda env create environment.yml
conda activate botty
python src/main.py

Logs:
Traceback (most recent call last):
File "src/main.py", line 1, in
from bot import Bot
File "C:\Users\Brandon\Downloads\botty\src\bot.py", line 3, in
from char.hammerdin import Hammerdin
File "C:\Users\Brandon\Downloads\botty\src\char\hammerdin.py", line 14, in
class Hammerdin(IChar):
File "C:\Users\Brandon\Downloads\botty\src\char\hammerdin.py", line 42, in Hammerdin
def _do_redemption(self, delay: tuple[float, float] = (1.5, 2.0)):
TypeError: 'type' object is not subscriptable

Paladin error - does not run anywhere with his feet

Version 5 and 5.1

1.When entering any locations (without enigma and tp):
We teleport to Travinkal and this error appears:
HAMMERDIN
[2021-12-19 00:55:02,336] DEBUG Traverse from a3_trav_start to a3_trav_center_stairs
Exception in thread Thread-5:
Traceback (most recent call last):
File "threading.py", line 973, in _bootstrap_inner
File "threading.py", line 910, in run
File "bot.py", line 125, in start
File "transitions\core.py", line 899, in get_trigger
File "transitions\core.py", line 401, in trigger
File "transitions\core.py", line 1201, in process
File "transitions\core.py", line 426, in trigger
File "transitions\core.py", line 435, in process
File "transitions\core.py", line 272, in execute
File "transitions\core.py", line 1123, in callbacks
File "transitions\core.py", line 1144, in callback
File "bot.py", line 322, in on_run_trav
File "run\trav.py", line 49, in battle
File "pather.py", line 372, in traverse_nodes
File "char\i_char.py", line 102, in move
File "keyboard_init
.py", line 379, in send
File "keyboard_init
.py", line 358, in parse_hotkey
File "keyboard_init
.py", line 358, in
File "keyboard_init.py", line 309, in key_to_scan_codes
File "keyboard_canonical_names.py", line 1239, in normalize_name
ValueError: Can only normalize non-empty string names. Unexpected ''

2.We teleport to any location on act 5 and this error appears
[2021-12-18 01:02:03,630] DEBUG Traverse from a5_town_start to a5_malah
Exception in thread Thread-5:
Traceback (most recent call last):
File "threading.py", line 973, in _bootstrap_inner
File "threading.py", line 910, in run
File "bot.py", line 125, in start
File "transitions\core.py", line 899, in get_trigger
File "transitions\core.py", line 401, in trigger
File "transitions\core.py", line 1201, in process
File "transitions\core.py", line 426, in trigger
File "transitions\core.py", line 435, in process
File "transitions\core.py", line 272, in execute
File "transitions\core.py", line 1123, in callbacks
File "transitions\core.py", line 1144, in callback
File "bot.py", line 209, in on_maintenance
File "town\town_manager.py", line 81, in heal
File "town\a5.py", line 29, in heal
File "pather.py", line 372, in traverse_nodes
File "char\i_char.py", line 102, in move
File "keyboard_init
.py", line 379, in send
File "keyboard_init
.py", line 358, in parse_hotkey
File "keyboard_init
.py", line 358, in
File "keyboard_init.py", line 309, in key_to_scan_codes
File "keyboard_canonical_names.py", line 1239, in normalize_name
ValueError: Can only normalize non-empty string names. Unexpected ''
That is, hammerdin does not run anywhere with his feet !!!

pickit bug

new version is picking up magic spiked clubs, and also moving them to stash lol? not sure if just me or i did something

Bot always tries to resurrect my merc when he is already alive and it wastes time

Is it really a Bug report?
If you have questions regarding setup or feature information/requests, please consider asking in the Discord channel: https://discord.gg/Jf3J8cuXWg. The Github issues section is for bug reports only.

Botty Version
What version of botty are you running? Are you using a pre-compiled release? Which one. Are you using the latest master branch? On which commit?

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. etc.

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots / Video
If applicable, add screenshots or even better a short video of the error happening to help explain your problem. Botty often automatically makes screenshots when something goes wrong. Add these also.

Logs
Add the relevant part of the info.log in this section. Either upload it as a fail or copy-paste the relevant part in here.

Additional info
Add any other information about the problem here.

Adding items question

Hi @aeon0

I would add some new items, but don't know how to create a screenshot properly. When I do it in game using "PrtScr", background isn't pure black, so these items aren't recognized by "Color test mode". How to do it properly?

Thanks in advance,
Alex

Stop health monitoring while still in map looking for tp

Will edit with better info later, its a known issue by @aeon0

Describe the bug
Botty is not looking for your health when its trying to tp so if it gets stuck in the loop trying to find the Tp it made but its under attack then it won't chicken or or heal or anything.

How to set hotkey of sorceress.

I don't understand how you set hotkey[skill] in your code.

Could you share the default setting of hotkey[skill] of sorceress?

it might be like below:
[hotkey] = [skill & TP]
F1 = teleport
F2 = ?
F3 = ?
F4 = ?
? = TP roll

or could you share how you set those hotkey[skill]?

Thanks.

d2r.exe crashes while running shop.py

its not a botty issue, but prob a d2r.exe memory leak.

after a few hours (not too many) of running shop.py, d2r.exe will crash.

i think a workaround is making a new game after x amount of runs (since i don't have problems running main script).

to reproduce, try to run shop.py overnight.

Bug "force_move"?

There is no "force_move"! I did not install it ( force_move=) left it empty because it is not in the game, you need to click with the mouse.
botty/src/char/i_char.py

Line 102 in 1f482d5

keyboard.send(self._config.char["force_move"])

if force_move:
keyboard.send(self._config.char["force_move"])
else:
mouse.click(button="left")

Why is there no left mouse click?

Missing "name" data in discord message ['content']

image

The generic_api feature in 0.6.2 is omitting the bot's name in the discord message. This will likely break any custom implementations that parsed out the name for various reasons. In my case, I parsed the name and send a custom discord message to a name-specific channel. In general terms, the data should include the name for basic context.

Bug: Start a new game with little health

v. 5.1
Start a new game with a small amount of health. Drinks a can of "health" and turns off. . The code appears (see below):

[2021-12-20 00:57:04,228] DEBUG Waiting for Template ['A5_TOWN_0', 'A5_TOWN_1', 'A4_TOWN_4', 'A4_TOWN_5', 'A3_TOWN_0', 'A3_TOWN_1']
[2021-12-20 00:57:12,138] DEBUG Drink health potion in slot 1. HP: 44.7%, Mana: 99.2%
[2021-12-20 00:57:13,003] DEBUG Found Match: A5_TOWN_1 (87.2% confidence)
[2021-12-20 00:57:13,064] INFO Health Manager is now pausing
[2021-12-20 00:57:13,784] DEBUG Will pickup: {'rejuv': 0, 'health': 3, 'mana': 0}
[2021-12-20 00:57:13,808] INFO Healing at next possible Vendor
[2021-12-20 00:57:13,809] DEBUG Traverse from a5_town_start to a5_malah
Exception in thread Thread-5:
Traceback (most recent call last):
File "threading.py", line 973, in _bootstrap_inner
File "threading.py", line 910, in run
File "bot.py", line 125, in start
File "transitions\core.py", line 899, in get_trigger
File "transitions\core.py", line 401, in trigger
File "transitions\core.py", line 1201, in process
File "transitions\core.py", line 426, in trigger
File "transitions\core.py", line 435, in process
File "transitions\core.py", line 272, in execute
File "transitions\core.py", line 1123, in callbacks
File "transitions\core.py", line 1144, in callback
File "bot.py", line 209, in on_maintenance
File "town\town_manager.py", line 81, in heal
File "town\a5.py", line 29, in heal
File "pather.py", line 372, in traverse_nodes
File "char\i_char.py", line 102, in move
File "keyboard_init
.py", line 379, in send
File "keyboard_init
.py", line 358, in parse_hotkey
File "keyboard_init
.py", line 358, in
File "keyboard_init.py", line 309, in key_to_scan_codes
File "keyboard_canonical_names.py", line 1239, in normalize_name
ValueError: Can only normalize non-empty string names. Unexpected ''

Botty will discard equipped items if they somehow end up in inventory

Is it really a Bug report?
Yes.

Botty Version
Botty v0.4.3 pre-compiled release.

Describe the bug
There is a particular set of events that might get your equipped items to disappear forever.

To Reproduce
If you are between equipment repair sequence points and have an item with + str or dex break (ex. Shako) other items that were depending on those stats will remain equipped but have no effect on character's stats (ex. Enigma stays equipped but you don't get the str bonus).

However, if you then die (having the str/dex bonus item still broken), botty will pick up your body but since you don't get bonuses from broken items, other gear depending on the broken item's stats won't get equipped and will remain in inventory. (ex. Enigma armor needs +2 str from Shako, Shako is broken, you don't have enough str to equip Enigma armor, Enigma will be picked up in inventory).

From here, you end up with a previously equipped item in your inventory and because that item is not in your pick it (ex. runewords), botty will drop it on the ground (like when discarding accidentally picked up items).

Expected behavior
Don't discard gear.

Screenshots / Video
N/A

Logs
N/A

Additional info
Some possible solutions:

  • Have the bot repair all equipment at initialization and / or after death.
  • Keep a log of equipped items and never discard them. At least stash them if they somehow end up in inventory and can't equip them.
  • Monitor the top right visual representation of damaged / broken items to trigger a repair all action.

Botty not working for char that didn't beat normal Baal (nightmare unlocked)

Botty Version
#138

Describe the bug
Botty not working for char that didn't beat normal Baal (nightmare unlocked)

To Reproduce
Steps to reproduce the behavior:

  1. Try to start with char that doesn't have nightmare unlocked, with normal setting on .ini

Logs

[2021-11-27 19:22:48,232] INFO       Searching for window offsets. Make sure D2R is in focus and you are on the hero selection screen
[2021-11-27 19:22:48,769] DEBUG      Set offsets: left 640px, top 340px
[2021-11-27 19:22:49,438] INFO       Setting up Sorceress
[2021-11-27 19:22:49,454] INFO       Starting game #1
[2021-11-27 19:22:49,455] DEBUG      Waiting for Template D2_LOGO_HS
[2021-11-27 19:22:49,507] DEBUG      Found Play Btn
[2021-11-27 19:22:49,796] DEBUG      Searching for normal Btn...
[2021-11-27 19:22:50,936] DEBUG      Waiting for Template NORMAL_BTN
[2021-11-27 19:22:59,543] DEBUG      Could not find btn, try from start again

Additional info
seems like this code was supposed to handle it, but it doesn't

while 1:
            # edge case: if a player hasn't unlocked nightmare difficulty, there won't be an option to select difficulty after clicking play button
            wait(0.75,1.25)
            if self._template_finder.search("LOADING", self._screen.grab())[0]:
                Logger.debug("On loading screen, nightmare not unlocked")
                return True

            found, pos = self._template_finder.search_and_wait("NORMAL_BTN", roi=self._config.ui_roi["normal_btn"], time_out=8)

            if not found:
                Logger.debug("Could not find btn, try from start again")
                return self.start_game()

            x, y = self._screen.convert_screen_to_monitor((self._config.ui_pos[f"{difficulty}_x"], self._config.ui_pos[f"{difficulty}_y"]))
            Logger.debug(f"Found {difficulty} Btn -> clicking it")
            mouse.move(x, y, randomize=[50, 9], delay_factor=[1.0, 1.8])
            wait(0.15, 0.2)
            mouse.click(button="left")
            break

Add requirements.txt

Hey, could you add a requirements.txt to the main git for easy pip installs?

you can do this by running pip freeze > requirements.txt

which will allow other developers to run pip install -r "requirements.txt" for easy dependency installation

Out of tps

Botty 0.4.3

hi, every time I turn on the bot, soso only goes to Pindle, after Pindel I have this message: [2021-12-04 12: 54: 44,535] WARNING Out of tps

It is set to go to Pindle, Shenk, Eld

Alt not being pressed and no item picked in 0.4.0

Botty Version
What version of botty are you running? Are you using a pre-compiled release? Which one. Are you using the latest master branch? On which commit?
Release build v0.4.0
Describe the bug
A clear and concise description of what the bug is.
Alt not being pressed, no item nor pots are picked
To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. etc.

Expected behavior
A clear and concise description of what you expected to happen.
Should press alt and pick items
Screenshots / Video
If applicable, add screenshots or even better a short video of the error happening to help explain your problem. Botty often automatically makes screenshots when something goes wrong. Add these also.
image
The snapshot is taken by loot_screenshots=1. As you can see there's pots on the ground and the bot can't see it (since no alt pressed) nor pick it up.
Logs
Add the relevant part of the info.log in this section. Either upload it as a fail or copy-paste the relevant part in here.
[2021-11-25 09:28:28,778] INFO Setting up Sorceress
[2021-11-25 09:28:28,807] INFO Starting game #1
[2021-11-25 09:28:28,886] WARNING You are creating a game in online mode!
[2021-11-25 09:28:48,944] INFO Run Pindle
Additional info
Add any other information about the problem here.

  1. I have turned on loot_screenshots=1 and it doesn't show any items in snapshot.
  2. v0.3.0 works well but not v0.4.0
  3. changing hotkey won't help

Thanks,
DB

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.