交付文件:旧版本更新_修复后_v11.e(2,826,585 字节,md5 0b62f61a84cdd1ad0470879b7d7137a2)<br>备份:旧版本更新.代码/代码/窗口程序集_MainDialogWnd.form.e.txt.bak_日志插桩前_20261007_205759
发包执行了,而且服务端也认了。 日志里的铁证:
19:56:24 发包存:0000000094008C000100000003000000000000000608AF2F... ← 强化石(0608AF2F)
19:56:24 发包存:0000000094008C0001000000030000000000000003CD9A3B... ← 下级魂结晶(03CD9A3B)
19:56:24 :存仓:强化石数量:1
19:56:24 :存仓:下级魂结晶数量:1
对比正常时(18:37:21)—— 那时一次能存 2 个强化石 + 3 个下级魂结晶,还卖出金刚石/寒玉石/金创药等 5 种;<br>卡死后每次都只存得动 1 个强化石 + 1 个下级魂结晶,一件都卖不出去。
这两样恰好是刚打怪掉落的新物品。 说明:能清出来的只有新掉的那点,其余格子里的东西存不掉也卖不掉。
对照 20:47:45 那份背包 dump 就一目了然:
物品名称:千岁保血珠 数量:1 ← 任务物品
物品名称:泫渤派支援证明牌 数量:1 ← 任务物品
物品名称:温晓余的信 数量:1 ← 任务物品
:背包空格数量:0
真正的链条:36 格口径漏扫后 60 格 → 可清理的没清 → 包恒满 → 银行/商店都塞不进 → 下晶买不进 → 每分钟空跑一趟泫渤派再回挂机点,无限循环(19:55→20:53 跑了约 60 轮)。
实测代价:
| 子程序 | 单次操作被调用次数 |
|---|---|
发包Call | 222 次 |
发包存 | 58 次 |
发包卖 | 49 次 |
刷新地图 | 32 次 |
轻功检测检测 | 27 次 |
这些是循环内的底层封装,插一行日志就是一次磁盘写(还带互斥锁),会瞬间把日志刷到几万行/分钟、并且拖慢游戏。所以改成分级 + 开关 + 自动熔断。
写流程日志 (阶段, 备注):只在开关打开时写一行 【流程】…写状态快照 (触发点, 采样间隔):写一行 【状态】…,含地图ID|背包空格|下晶数|扫描格数|回补线程|死亡处理|寻路中<br>—— 这是本次最值钱的东西:卡住时一眼看出是哪个条件没满足、哪个标志位卡死了。
| 子程序 | 插入内容 |
|---|---|
存卖石头 | 进入时记录扫描格数 |
回补线程 | 进入日志 + 状态快照 |
回补下晶新 | 进入日志 + 状态快照 |
挂机寻路新 | 进入日志(带当前地图ID) |
金香玉购买下晶 | 进入日志 |
购买下晶 | 进入日志 |
药店买卖 | 进入日志(带买卖NPC名) |
购买列表物品 | 进入日志 |
过滤集魂珠 | 进入日志 |
仓库存卖 | 进入日志(带仓库NPC名) |
_开始挂机_被单击 | 进入日志 |
_功能检测时钟_周期事件 | 状态快照(每 5 轮写 1 条) |
_更新数据时钟_周期事件 | 状态快照(每 5 轮写 1 条) |
五分钟无经验检测寻路、死亡处理_自动复活、背包自动集魂、开启多坐标寻路、多坐标寻路、循环执行任务、自动循环领武勋任务、自动买助手任务、自动提交武勋任务、存装备、购买衣服、火属性石购买、指定ID购买、使用小助手、小助手开1/关1、移动到仓库/药店/挂机点、移动到修炼几层、遍历修炼装置对话、进入南林/北海/东陵/虎峡谷修炼、获取修炼几层、取当前修炼传送装置坐标、遍历活动背包物品并使用、清空寻路测试ini。
config\Default.ini → [config] 段 → 全量日志全量日志=0 = 关闭数量 的全部遍历函数(被状态快照/功能检测高频调用)是否是集魂珠(在 96 格循环里逐格调用)存卖寒玉石/金刚石/仙灵石 系列(在 存卖石头 的 96 格循环里被调 96×7 次)发包、刷新、内存、编码、_xxx_周期事件、_xxx_被单击旧版本更新_修复后_v11.e,覆盖各客户端 test.dll(每台机器都要换)。【状态】 —— 看 背包空格 / 下晶 / 扫描格数 / 各标志位 的实时值【流程】 —— 看流程走到哪个子程序、有没有中途断掉config\Default.ini 的 [config] 段加一行 全量日志=0 关掉(或放着不管,到 30 万条会自动关)。预期能一眼看出的问题:
扫描格数=36 → 就是没换 DLL(v9/v10 会显示 96)背包空格=0 但 存卖石头 只处理了 1~2 个 → 印证"清不动"T 不再变 → 卡死点| 项目 | 结果 |
|---|---|
| t2e(文本 → .e) | 0 错误 0 警告 |
| e2t(.e → 文本) | 0 错误 0 警告 |
| 逐行对拍 | 21 个差异块中 19 个是既有 数组 标志位噪声、2 个同源,真实内容差异 0 |
| 插桩保留 | 41 处调用 + 2 个子程序定义,全部原样保留 |
专项审计发现,下面两处与"运行时间长了就出问题、重登才好"高度吻合(重登 = 游戏进程重启 = 注入的 DLL 全状态清零):
挂机寻路新 里「南明湖/南明洞回补、回不到泫渤派」的失败分支完全不回位L7736 的 .否则回补线程开启 永久停在「真」→ 红药/蓝药/包满/下晶 四个回补触发器全部被拦死,角色从此不再回补、不再买列表物品,且下一轮永远不会来。L7828)在 v10 已修,唯独这条漏了。是否正在处理死亡 在多条路径置真后无人复位要不要一起修,说一声,我做成 v12。