热血江湖助手 · 分析资料站← 报告总目录助手主页
分区:15_助手版本迭代说明源文件:回补卡死与购买列表修复_改动说明_20261007.md篇幅:6.2 KB收录:2026-10-19 17:10

回补卡死 / 无法购买列表物品 —— 诊断与修复说明(2026-10-07)

交付文件:D:\AI空间\rxjh\旧版本更新_修复后_v10.e(2,821,283 字节,md5 8f21eec34f1678f31a205e26230c8101)<br>文本主本:D:\AI空间\rxjh\旧版本更新.代码\代码\窗口程序集_MainDialogWnd.form.e.txt<br>改动前备份:...form.e.txt.bak_回补购买修复前_20261007_204822


一、从日志读出来的完整故障链(角色:梅有野路子5,北海冰宫)

20:24:54  到达挂机点 → 返回挂机坐标成功!开启挂机!
20:24:55  》》》》检测到背包已满
20:24:55  本地回补启动 → 飞图 → 寻路到潘守杰 → 仓库存卖
20:25:25  【警告】存卖石头执行完毕,背包仍然 0 空格
20:25:42  药店回补 → 金医员 → 购买万年雪蔘1(299/300)、购买强铁箭9999(0/9999)
20:26:00  返回挂机坐标 → 20:26:36 又「检测到背包已满」→ 又回补 ……

每隔约 60 秒跑一趟仓库 + 药店,永远出不来。 角色根本没有在打怪。

根因:全局_背包数 被写死成 36,而后 60 格从未被处理

一句话:不是买不到,是包满了清不掉;包清不掉,是因为只打扫了 36 格。

旁证

20:47:45 :背包空格数量:0(36 格口径)与 20:47:50 :背包集魂珠数量:9(36 格口径)<br>—— 而同一个角色用 v9 的诊断跑出来是 背包集魂珠数量:16(本次扫描格数:96)。<br>同一份背包,36 格口径只数到 9,96 格口径数到 16:后 60 格确实被整段漏掉。


二、v10 改了什么(共 7 处,全部只加保护与日志,不改变原有成功路径)

#位置改动为什么
1遍历背包_取物品数量命中即 跳出循环()、只取一格 → 改为同名全格累加;名称先归一化(剔半角/全角空格、全角括号转半角)旧写法对"一格一颗"的集魂珠严重低估(16 颗只返回 1),购买列表物品() 永远判"还差 99"→ 每轮回补狂买 → 塞满包
2购买列表物品列表为空 → 明确告警(含文件路径);每次进入打印条数与当前空格旧代码列表空就循环 0 次静默返回,表现为"回补跑完了什么都没买"
3购买列表物品物品编号.ini 查不到时 告警并跳过,不再 发包买(0,数量)旧代码发 0 号编号包、服务器无视,日志却写"购买××",像发出去了其实没买
4药店买卖每一步失败都写日志(NPC 名为空 / 编号表查不到 / 选中 NPC 失败 / 对话失败 / 开商店失败),返回值改为能区分成败旧写法层层 .如果真 嵌套、任何一步失败全静默返回,日志里一行都没有
5挂机寻路新(跨图返回挂机点失败的空 .否则)补:写日志 + 回补线程开启=假 + 执行寻路线程=假 + 恢复 更新数据时钟/功能检测时钟 + 小助手开()旧代码这个 .否则 是空的:跨图失败后两个时钟永久停摆、助手全功能死掉(用户实测 19:14:44 之后 1 小时无日志)。此处不另起线程,避免与本子程序末尾的自杀冲突
6回补线程(药店坐标无效的早退出口)补恢复两个时钟同类 bug:两个时钟在本线程第 2 步已被置 0,旧代码直接 返回() 导致永远回不来
7存卖石头 空格告警追加「本次只扫了 N 格」并提示核对仓库是否已存满下次一眼就能看出是不是又只扫了 36 格

v9 已含、本次继续保留的修复:检测真实背包格数()(自动识别 36/96 格,_功能检测时钟 每周期调用)、是否是集魂珠 名称归一化、两个诊断按钮的 (本次扫描格数:N) 与 下晶槽N【名字】编号X(名单命中/未命中)。


三、验证结果


四、你需要做的

  1. F7 编译 旧版本更新_修复后_v10.e,把生成的 test.dll 覆盖到所有客户端(D:\rxjh2025\client、E:\niuniu\rxjh2025\client、以及日志里的 C:\rxjh2025\client)。

⚠️ 日志显示至少有一台机器还在跑旧 DLL(背包集魂珠数量 没有"本次扫描格数"后缀)——那台必须换。

  1. 编译后看回补日志:
  1. 购买列表 里的 强铁箭 建议删掉:该角色包里是 追打箭 9999 + 武功箭 9999(箭占独立格、每格上限 9999),包满时永远买不进 强铁箭,只会每分钟空发一次包。

五、尚未处理(等你拍板)

本页由 Markdown 报告自动转排;如需原始 md,可在原会话工作区取用。