日期:2026-10-07 00:30<br>工程:D:\AI空间\rxjh\旧版本更新_修复后.e(唯一编译源)<br>补丁:_patch\fix_躲避改回补_加移动判断.py<br>回滚:旧版本更新_修复后.bak_躲避改回补前_20261007_0025.e
本轮一次改了三件事,都在 防杀测试 与 等待离开原地 两个子程序内。改动范围 +45 / −28 行。
按你的要求:取消独立的「躲避地图」配置,躲避直接用界面的「回补地图」。
躲避地图 局部变量、Default.ini 读取链、兜底逻辑 全部删除。目标地图ID = 取地图ID (回补地图组合框.内容)Default.ini 里上一轮加的失效键 已删除(躲避地图=泫渤派),留底 Default.ini.bak_删躲避地图前_20261007_0025。新增一道保护:如果界面「回补地图」是空的或名字打错,取地图ID 会返回 0,以前会直接 发包飞图 (0) 发出一个垃圾包。现在改成只打日志、本次不躲避:
【躲避】回补地图未选择或名称无效(界面值:),本次不躲避;请到界面把「回补地图」选成一座城
这是本轮最要紧的修复,顺手做的,但它关系到你会不会白白站桩 10 分钟。
等待离开原地 原来只要看到「当前地图ID = 目标地图ID」就立刻返回成功。以前没暴露,是因为回城符分支故意传 0 关掉了地图判据;现在回城符分支也传 目标地图ID 了,一旦回补地图就等于当前挂机地图(例如挂虎峡谷、回补地图也选虎峡谷),这条会在第 1 轮轮询(约 150 毫秒)就判「已脱险」——人没动,程序却认为躲完了,接着 停止挂机 + 空等 10 分钟。
改法:进入子程序时先记下 起始地图ID,只有「从起始地图变成目标地图」才算跨图成功。
.局部变量 起始地图ID, 整数型 ← 新增
...
刷新地图 ()
起始地图ID = 当前地图ID
...
.如果真 (当前地图ID = 目标地图ID 且 当前地图ID ≠ 起始地图ID) ← 加了后半句
这样两种场景都正确:
同时保留一条警告日志,遇到同图躲避时提醒你:
【躲避】警告:回补地图与当前地图相同(都是 虎峡谷),回城符只是同图回城、地图ID不变,只能用位移判据,容易误判未生效;建议把界面「回补地图」换成另一座城
以前判据是「双方距离变近就躲」。问题:你自己挂机跑动也会让距离变小,容易被误判成对方在逼近。<br>现在改成 只看他的坐标位移。
发现名单人物后的完整判定顺序:
| # | 条件 | 判定 | 动作 |
|---|---|---|---|
| ① | 距离 ≤ 300 | 已贴脸 | 躲(近距离底线,不受「动不动」影响) |
| ② | 采样期间他离开视野 | 人已不在 | 不躲 |
| ③ | 他的坐标位移 ≤ 8 | 站着没动 | 不躲 |
| ④ | 他在动,但距离没接近 60 以上 | 不是朝你来 | 不躲 |
| ⑤ | 他在动,且距离缩短 60 以上 | 正在逼近 | 躲 |
采样:2 次 × 350 毫秒(约 0.7 秒),期间挂机不停(挂机在别的线程)。
日志长这样:
【趋近判断】正派剃头人 位移只有 3,站着没动,不躲避
【趋近判断】正派剃头人 位移 46,距离 812 → 640,正在逼近,开始躲避
【趋近判断】正派剃头人 采样期间已经贴到 275,已贴脸,直接躲避
这是唯一一处我按安全优先定的口径,需要你知晓:
贴脸(≤ 300)时,即使他站着不动也照躲。 原因是 PK 近战职业打你就是站在原地打——他的坐标不会变,距离也不变。如果「静止一律不躲」没有例外,会出现「他贴脸站着把你砍死、程序判定他在静止所以不躲」的漏洞。
如果你就是要「无论多近,静止一律不躲」,把这一行的 300 改成 0 即可(危险距离首 > 300 里那个 300,.如果 那句)。
| 参数 | 位置 | 当前值 | 说明 |
|---|---|---|---|
| 贴脸底线 | .如果 (危险距离首 > 300) | 300 | 改 0 = 静止一律不躲 |
| 静止判定 | .如果真 (危险人物位移 ≤ 8) | 8 | 越小越严格;嫌他小幅晃动被判成静止就调大 |
| 逼近阈值 | .如果真 (危险距离末 ≥ 危险距离首 - 60) | 60 | 距离缩短超过 60 才算逼近 |
| 采样次数/间隔 | .计次循环首 (2, 采样序号) + 程序_延时 (350) | 2 × 350ms | 反应慢就把 350 改 200 |
| 位移阈值 | 等待离开原地 (危险坐标x, 危险坐标y, 400, ...) | 400 | 同图躲避时,离开原地 400 才算跑掉 |
| 单轮超时 | 同上第 4 参 | 500 | 毫秒 |
| 重试轮数 | .计次循环首 (3, 重试次数) | 3 | 改 5 可应对慢服务器 |
| 延时 | — | 0 | 按你定的:重试之间不等待 |
| 项 | 结果 |
|---|---|
| 补丁前置断言(12 个锚点各命中 1 次) | 通过 |
| 块配平 防杀测试 | .如果真 15/15、.如果 4/4、计次循环 3/3 |
| 块配平 等待离开原地 | .如果真 6/6、判断循环 1/1 |
| BOM 保留 | True → True |
| 裸 LF | 0 → 0(CRLF 12880 → 12897) |
| GBK 安全(无 emoji/超集字符) | 通过 |
| t2e 回编译 | 0 错误 0 警告,SUCC |
.etprj 还原 | 425 字节 + BOM 回来了(.pre17) |
| L1 代码级保真(466 子程序全量比对) | 0 差异 |
| 二进制取证 | ALL PASS(危险人物位移/起始地图ID/回补地图未选择/站着没动 均在;躲避地图 = 0) |
| 改动范围 | 只有 等待离开原地 + 防杀测试,其余 464 个子程序零改动 |
L2 注释损耗 27 条,全部是历史既有(+0x1F84 坐标X、★勾选(1/0)放每行最前等),与本次无关。
Default.ini 里是 泫渤派)。60 调小(如 30)8 调大(如 16)