日期:2026-10-07<br>交付:旧版本更新_修复后.e(md5 817c42ccb3fe5b5f64b1c5bf6ee7efdd)<br>回滚:旧版本更新_修复后.bak_括号解析前_20261007_0219.e(md5 615ba4817fe9cb0f50add3460fd67d92)
02:17:15 【跨图】进度 2/80:去 (?44,1589),现在 (413,1591) 距离 413,在 泫渤派
02:17:21 【寻路】还在走 (0,1589),现在 (256,1595),还差 256,已等约 5 秒
02:17:34 【寻路】超时放弃:发了 90 次寻路指令还没走到 (0,1589)
三条线索串起来:
| 现象 | 含义 |
|---|---|
打印 (?44,1589) | 解析出来的 X 是字符串 ?44,不是 444 |
心跳里目标变成 (0,1589) | 到整数("?44") = 0,游戏收到的目标是 (0,1589) |
| 距离 413 | 起点 (413,1591) 到 (0,1589) 的距离 = 413 ✓ 反向印证目标 X 已经是 0 |
所以人物不是走不动,是根本没收到合法目标,在原地打转 15 秒后超时。
取括号内容 子程序是整个跨图脚本的唯一参数解析入口,原写法:
左括号 = 寻找文本 (行文本, “(”, , 假)
.如果真 (左括号 = -1)
左括号 = 寻找文本 (行文本, “(”, , 假) ' ← 全角
.如果真结束
...
返回 (取文本中间 (行文本, 左括号 + 1, 右括号 - 左括号 - 1)) ' ← 按 1 字节括号推进
易语言的 寻找文本 / 倒找文本 / 取文本中间 全部按「字节」索引,而全角 ( = 2 字节(GBK A3 A8)。寻路call(444,1589) 里 ( 起始于第 9 字节:
字节序号 1 2 3 4 5 6 7 8 | 9 10 | 11 12 13 | 14 | 15 16 17 18 | 19 20 | 21
内容 寻 路 c a l l (A3 A8) 4 4 4 , 1 5 8 9 (A3 A8)
↑
代码从这里(9+1=10)开始取 → 取到 A8
A8 和后面的 4 拼成一个非法 GBK 字符 → 显示 ?,于是 444 被解析成 ?44。
首字符永远丢半个字节,这解释了你看到的所有 ? 开头的坐标。
按括号实际宽度推进:
.如果真 (左括号 > 0 且 右括号 > 左括号)
' 全角括号占 2 字节:起点与长度都按括号实际宽度推进,否则首字符会被截掉半个字节
.如果 (寻找文本 (行文本, “(”, , 假) ≠ -1) ' 半角括号:1 字节
返回 (取文本中间 (行文本, 左括号 + 1, 右括号 - 左括号 - 1))
.否则 ' 全角括号:2 字节
返回 (取文本中间 (行文本, 左括号 + 2, 右括号 - 左括号 - 2))
.如果结束
.如果真结束
返回 (“”)
取括号内容 是所有括号指令的公共入口,改这一处全部受益:
| 指令 | 修复前 | 修复后 |
|---|---|---|
寻路call(444,1589) | ?444,1589 → X=0 ✗ | 444,1589 ✓ |
对话(南明湖 警备兵) | ?厦骱? 警备兵 ✗ | 南明湖 警备兵 ✓ |
对话选项(南明湖 警备兵,1) | ?厦骱? 警备兵,1 ✗ | 正确 ✓ |
发包(0000…4A00…) | ?0000… 发出错包 ✗ | 原包正确 ✓ |
坐标移动(169,0,576) | 169,0,576 ✓ | 169,0,576 ✓(半角,未受影响) |
跨地图(-20,-247,-2345,1301) | 正确 ✓ | 正确 ✓(半角,未受影响) |
等待(10) | 10 ✓ | 10 ✓(半角,未受影响) |
也就是说:南明洞那个「对话选项」之前其实也是坏的,进洞那一步同样会失败;发包 指令同理。这次一并治好。
| 项 | 结果 |
|---|---|
| 字节级模拟(12 个真实指令) | 全角用例 旧实现 9 个错 → 新实现 0 个错;半角用例新旧完全一致 |
| t2e 回转编译 | 0 错误 0 警告,SUCC |
| e2t 反查保真(L1 代码级) | 0 差异,470 个子程序一致 |
| 配平 | .如果 ( +1、.否则 +1、.如果结束 +1,.如果真 系列 +0(未动既有结构) |
| 二进制取证(GBK) | ALL PASS(修复注释 + 11 项旧能力全在) |
| 改动范围 | 1 个 hunk、+6 / −1,挂机寻路新 等其它子程序一个字节没动 |
| BOM / 换行 | BOM 在文件开头 ✓;裸 LF = 0 ✓ |
旧版本更新_修复后.e修复前
【跨图】进度 2/80:去 (?44,1589),现在 (413,1591) 距离 413,在 泫渤派
【寻路】超时放弃:发了 90 次寻路指令还没走到 (0,1589)
修复后(应该长这样)
【跨图】进度 2/80:去 (444,1589),现在 (413,1591) 距离 31,在 泫渤派
【跨图】√ 这一步成功:寻路call(444,1589)
? 开头的坐标或 X=0,把日志再贴给我。关于 02:17:46 【停止】界面上的「停止挂机」按钮被点了:那是按钮点击日志,本次改动没碰它。如果是你自己点的,忽略;如果确实没点,说一声,我去查是不是有时钟或功能检测误触发了它。