日期:2026-10-07 01:52<br>工程:D:/AI空间/rxjh/旧版本更新_修复后.e(编译源:旧版本更新.代码)
要用 挂机寻路新 判断是不是南明洞,才开始执行
挂机寻路新 是回补寻路(挂机途中回城 / 被打回城后,自动走回挂机点)。<br>它里面原本有一条「跨图返回挂机点」逻辑,靠这两招回到目标地图:
回城符名称 = 取对应回城符名称 (挂机地图ID) ' ① 用回城符
... 没符就 ...
发包飞图 (挂机地图ID) ' ② 直接飞图
南明洞(ID 2001)这两招都用不了:没有对应回城符,也不能直接飞图。<br>结果就是挂机地图设成南明洞时,一旦回城就回不去了,回补线程卡在那里。
所以:挂机地图是南明洞时,不能走「回城符 / 飞图」,必须走 夸图 脚本走路进洞。
文件:旧版本更新.代码/代码/窗口程序集_MainDialogWnd.form.e.txt → 挂机寻路新
在「不在挂机地图」这条分支里,给原有内容多套一层南明洞判断:
.如果 (当前地图ID ≠ 挂机地图ID)
.如果 (挂机地图ID = 2001) ← ★ 新增这一层
' 【新增·南明洞】南明洞没有回城符、也不能直接飞图…
写日志 (… “【南明洞回补】当前不在南明洞(在 ” + 取地图名称 (当前地图ID) + “),执行夸图脚本自动进洞” …)
执行跨图脚本 (“夸图”) ← ★ 一路走进洞
.否则 ← ★ 新增
' 环龙返回返回先保存环龙挂机点 ← 以下 89 行完全没动
.如果真 (环龙回城.选中 = 真)
…原有的回城符 / 飞图 / 多坐标寻路 / 寻路call …
.如果结束 ← ★ 新增
.否则
同地图直接寻路(原有,未动)
.如果结束
易语言靠 .如果 / .如果结束 配对、不靠缩进,所以原有那 89 行一个字节都没改,<br>只是位置上往后挪了 6 行。补丁脚本对此做了字节级断言(t2 == expect)。
| 回补时人在哪 | 走哪条路 | 结果 |
|---|---|---|
| 泫渤派 / 别的图 | 新增层 → 执行跨图脚本(夸图) | 泫渤派 → 南明湖 → 进洞 → 湖洞挂机.ini → 挂机坐标 ✓ |
| 已经在南明洞里 | 原有「同地图直接寻路」 | 寻路call (挂机X,挂机Y) 走回挂机点 ✓(本来就对) |
| 挂机地图不是南明洞 | 完全走原有逻辑 | 与改动前一致 ✓ |
| 步骤 | 结果 |
|---|---|
| 补丁结构断言 | 新层在「不在挂机地图」分支内部;原有 89 行字节级未变;t2 == expect 逐字节校验通过 |
| 块配平 | .如果 +1 / .否则 +1 / .如果结束 +1;.如果真、循环类、返回 () 总数全部不变 |
| t2e 回转 | 0 错误 0 警告,挂机寻路新 解析成功 |
| e2t 反查 | 470 个子程序齐全,L1 代码级 0 差异;L2 注释差异仍是 27 条既有历史损失,本轮新注释没丢 |
| 二进制取证 | 新日志 / 新注释 / 执行跨图脚本 / 夸图 全部命中;旧能力(挂机寻路新 / 环龙回城 / 多坐标寻路 / 环龙跨图返回挂机点 / 跨图成功开始寻路)全部还在 —— 11 项 ALL PASS |
| 改动范围 | 2 hunk,+6 / −0(纯新增) |
D:/AI空间/rxjh/旧版本更新_修复后.e(md5 eeee197b84bcd197fe5c7a8e8754c058)旧版本更新_修复后.bak_南明洞回补前_20261007_0150.e_patch/南明洞回补前_20261007_014843/、_patch/项目.etprj.pre24回补触发时,日志里应该出现:
【南明洞回补】当前不在南明洞(在 泫渤派),执行夸图脚本自动进洞
========== 开始跨图脚本:夸图 ==========
【跨图】进入段:【南明湖】…
【跨图】√ 这个是过图点:没走到坐标,但地图已从 泫渤派 变成 南明湖,算成功
【跨图】进入段:【南明洞到NPC】…
【跨图】√ 对话选项生效,已进入 南明洞
【跨图】执行脚本:【湖洞挂机】
【跨图】√ 执行脚本完成:【湖洞挂机】共跑了 40 个坐标
【跨图】√ 已到挂机坐标
========== 跨图脚本结束:成功 N 个动作 ==========
前面有一条前提:界面「挂机地图」要选南明洞(否则判断不成立,走原逻辑)。
(444,1589) 重新走一遍(那一段起点在泫渤派入口附近),能到但绕。要优化得给 执行跨图脚本 加一个「从指定段开始」的参数,暂时没做。
执行跨图脚本 末尾的 [开始挂机] 带守卫:回补时挂机本来就在跑(按钮是「停止挂机」),所以会跳过,不会把正在挂的停掉。
挂机寻路新 是线程内运行,执行跨图脚本 里的 处理事件 () / 大量延时在线程里是安全的(原代码本来就在线程里用 处理事件 ())。但跨图脚本运行期间这个线程会长时间不返回,<br>期间 回补线程开启 保持为真 —— 这是有意的,防止时钟再次触发双开。