24小时挂机刷宝 暗黑2重制版Botty像素机器人怎么调参数
2026/8/22 12:08:08 网站建设 项目流程

24小时挂机刷宝 暗黑2重制版Botty像素机器人怎么调参数

【免费下载链接】bottyD2R Pixel Bot项目地址: https://gitcode.com/gh_mirrors/bo/botty

Botty 是一个跑在《暗黑破坏神2重制版》(D2R) 上的像素级自动刷宝机器人:它只靠截图做模板匹配和 OCR,把回城、捡物、开打、进图串成固定路线循环。适合想挂着 Pindle/Eldritch/Shenk 这类地狱难度任务、又愿意自己改 ini 文件的玩家。

项目速览

我实际跑下来,它的边界很清楚:

  • 只做视觉层:匹配 NPC、怪物、UI 模板,OCR 读地面物品名,不读游戏内存、不改游戏文件。
  • 路线是清单制run_travrun_pindlerun_eldritchrun_eldritch_shenkrun_nihlathak(要传送)、run_arcane(要传送)、run_diablo(仅锤丁)。
  • 职业覆盖有限但够用:光法/暴风雪/新星/死灵法、锤丁、野蛮人、陷阱暗、死灵法师都有实现,深度不一。
  • 带恢复机制:超时、卡死、死亡会自动回城或重启 D2R,不用人盯着。
  • 不做多开,也不承诺 720p 以外的窗口效果,它只按 720p 窗口标定的模板干活。

和"按键宏"比,区别在于它能看到画面:

维度Botty普通按键宏
导航方式模板匹配节点 + 画面校验固定坐标连点
地面物品图像 + OCR 读名字再过滤一律捡或一律不捡
掉线恢复自动重启进程重进游戏需要手动重开
画面漂移容忍相似度阈值内可恢复坐标偏一点就全乱

F10 打开的图形调试窗口,用来验证你的画面设置下模板分数是否稳定在 0.9 以上,以及丢地上的物品能不能被读出来。

5分钟跑通第一条路线

⚙️ 前置条件:D2R 必须是英文语言,720p 窗口。启动后聚焦游戏窗口按 F9 让它自动改图形设置(关掉 HDR、GeForce Experience 之类的增强程序,否则会干扰识别)。

git clone https://gitcode.com/gh_mirrors/bo/botty cd botty
conda env create -f environment.yml conda activate botty python src/main.py

游戏停在人选界面,选中你要跑的角色,按 F11 开始,F12 随时强制停止。

config/params.ini里第一次只动两处,[routes]order[char]type。默认order=run_pindle, run_eldritch_shenktype=light_sorc,如果你就是光法,这两行不用改:

[routes] order=run_pindle [char] type=light_sorc

我一般先只留一条路线跑,确认捡物正常、能顺利回城,再加第二条。参数不确定就建一个config/custom.ini只写要覆盖的字段,升级版本时不用来回搬改动。

原理速写:它凭什么"看见"游戏

纯视觉是有意的取舍。机器人每帧截图,拿assets/templates/里预制的 NPC、怪物、UI 模板去匹配;地面物品先靠图像圈出,再用 OCR 读出名字,交给 BNIP 解析器过滤。代价是游戏语言必须是英文、窗口必须 720p、亮度要固定,任何外部图形增强都会让分数掉下去。收益是它跟游戏内部实现零耦合,D2R 更新只要模板还认得,流程就能继续跑。

寻路不靠硬编码坐标。每张图的路径节点是提前录制生成的(assets/templates/下有对应文件夹),机器人走到一个节点后拿当前画面反向校验位置,所以画面小幅度偏移也能恢复。这也是"卡在原地转圈"时值得先查assets/templates/是否完整的原因。

Chaos Sanctuary 的节点布局示例,这类复杂室内图全靠节点图走,不靠猜。

状态机 + 三条线程。src/main.py启动后开三个线程:死亡监控、血量监控、状态机本体。前两者任何一条判定死亡或撤退(chicken),状态机线程就被杀掉重来,所以它摔死一次能自己爬起来。具体动作藏在各个 manager 里:pather.py管寻路、npc_manager.py管对话、物品识别单独一套。状态流转图在development.md里有完整版本。

状态机的状态和跳转关系,卡住时对照它判断机器人停在哪个环节。

坐标系分四层。Monitor / Screen / Absolute(角色脚下)/ Relative(相对某个模板)。排查"点到怪没点到"这类问题时,先看日志里的坐标属于哪一层,再决定是模板偏移还是窗口偏移。

实战调参:常见场景对照表

参数都在config/params.ini。按我踩过的坑排个序:

打 boss 磨时间。现象:Shenk 或 Pindle 战前摇太长,一局拖到 6 分钟以上。动作:把对应的atk_len_pindle(默认 3.0)、atk_len_shenk(默认 4.0)加 0.5~1.0;锤丁的atk_len_*按 README 注释,trav/shenk 可以给到 8~12。

频繁鸡跑(自动撤退)。现象:chicken默认 0.35,佣兵一挨打就撤退,整局白跑。动作:先把take_health_potion(默认 0.8)往下降到 0.7 左右,让药水提前顶上;确认稳定后再把chicken提到 0.4。追求稳定可以开safer_routines=1,代价是每局多花一点时间。

识别分数上不去。现象:调试窗口里模板分数低于 0.9。动作:重新按 F9 走一遍自动设置,关闭一切外部图形增强,必要时手动微调亮度。这是"物品识别不准"最常见的原因,优先于动任何 ini 参数。

走路职业误捡垃圾。现象:野蛮人/死灵法师走位过程中顺手捡了一路不需要的东西。动作:enable_no_pickup=1,开局会输入/nopickup,只在按show_items时允许拾取。

背包节奏。现象:捡物后长时间不回去整理,后面几局地面越来越满。动作:runs_per_stash默认 4,意思是每 4 局强制回城一次,配合runs_per_repair=0(只在需要时修理)够用。

翻车自救

现象原因动作
模板分数 <0.9亮度/分辨率/语言不对重跑 F9 自动设置,确认英文 + 720p 窗口
寻路原地打转节点模板缺失或窗口位置漂移检查assets/templates/完整性,重新聚焦游戏窗口
卡死无响应单局超过max_game_length_s(默认 380 秒)restart_d2r_when_stuck=1让它自己重启 D2R
捡了一地垃圾走路职业没开反误捡enable_no_pickup=1

Nihlathak 区域的场景模板,run_nihlathak依赖传送,这类模板识别失败基本等于寻路失败。

去哪读源码

  • src/main.py:入口,三个线程在这里拉起来,想看懂"谁负责复活机器人"从这里开始。
  • src/bot.py:状态机主体,每个状态跳转都在这里,逻辑很薄,细节都委托给 manager。
  • src/char/:各职业实现,新加 build 要继承IChar,文件命名和params.ini里的type一一对应。
  • config/default.bnip:默认捡物规则,BNIP 是 NIP 的扩展版,支持[allres][idname]这类新标签;自己放一个.nipconfig/bnip/就会顶掉默认文件。

下一步

先只跑一条run_pindle,开info_screenshots=1观察 20 局再动参数,比一次改十个值快得多。请遵守游戏条款与服务器规则合理使用本工具,账号风险自负。

【免费下载链接】bottyD2R Pixel Bot项目地址: https://gitcode.com/gh_mirrors/bo/botty

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询