对话 指令)—— 改动说明2026-10-07 01:12
起因:你给了「台服 取南明洞的 NPC 叫 南明湖 警备兵」+「编号 74」
结果:跨图脚本多了对话(NPC名)指令,夸图.ini南明洞段接上「走到警备兵 → 对话」
工程 取NPC编号 表里本来就有一条 74=南明洞护法。
这不是冲突 —— 是同一个入口 NPC 的国服/台服译名差异:
| 国服 | 台服 | |
|---|---|---|
| 名字 | 南明洞护法 | 南明湖 警备兵 |
| 编号 | 74 | 74 |
| 位置 | 南明洞入口 | 南明洞入口 |
所以你的 74 不需要任何验证,它和表里的 74=南明洞护法 天然互证。<br>已补一条 74=南明湖 警备兵(国服名保留,两条都指向 74,两个名字都能查)。
取NPC编号 表补台服名- .../74=南明洞护法/78=小香/...
+ .../74=南明洞护法/74=南明湖 警备兵/78=小香/...
执行跨图脚本 新增 对话(NPC名) 指令原来引擎只认:段名 / 寻路call / 坐标移动 / 跨地图 / 飞回城符 / 等待。<br>现在多了第 7 条:
对话(南明湖 警备兵)
内部三步:
| 步 | 调用 | 说明 |
|---|---|---|
| ① | 选中NPC (名字, 挂机信息) | 扫内存按名字找(2000 个对象槽,按 +8 = 0x2E 认人物/NPC),所以 NPC 必须在视野内 |
| ② | 发包对话NPC (名字) | 查表拿编号 → 发 00 00 00 00 90 00 18 00 01 00 00 00 00 00 00 00 + 编号单字节 |
| ③ | 循环 5 秒:每 250ms 刷新地图 () | 地图 ID 一变就判成功,把新地图名打进日志 |
这就是「进没进洞」的判据 —— 读内存读出来的地图 ID,不是脚本自己说成功。
新增 2 个局部变量:对话前地图ID、已等。
夸图.ini 南明洞段接上[南明湖] 51 点 ← 南明湖.ini(终点 -20,-2345,进南明湖的过图点)
[南明洞] 17 点 ← 南明湖入口警卫兵.ini(终点 1338,1150,就是警备兵跟前)
对话(南明湖 警备兵) ← 新增
[结束]
注意段来源变了:用的是 南明湖入口警卫兵.ini,不是 南明洞.ini。
| 文件 | 点数 | 起点 | 终点 | 依据 |
|---|---|---|---|---|
南明湖入口警卫兵.ini | 17 | -40,2425 | 1338,1150 | ✅ 你 00:56 实测跑完就遍历到了警备兵 |
南明洞.ini | 17 | -40,2425 | 416,1579 | ❓ 你从没跑过,不知道通到哪 |
日志里查得明明白白:辅助测试.txt里待读取配置文件一共出现 5 次 ——南明湖.ini×3、南明湖入口警卫兵.ini×2、南明洞.ini×0。
对话 发出去后等 5 秒:
| 结果 | 含义 | 下一步 |
|---|---|---|
| 日志「√ 对话生效,已进入 南明洞」 | NPC 是「对话即传送」 | 完事了,不用抓包 ✅ |
| 日志「× 对话发出去了但地图没变」 | 游戏还弹了个选择框 | 抓一次包,加选项支持 |
工程里整条 90 00 18 家族只有三个子码,没有"选选项":
| 子码 | 用途 | 工程里 |
|---|---|---|
01 | 开始对话 | 发包对话NPC ✅ |
02 | 关闭对话 | 发包关闭商店 ✅ |
03 | 打开商店 | 发包打开商店 ✅ |
?? | 选选项 | ❌ 没有 |
先跑一次就知道落在哪种,不用提前抓包。
| # | 位置 | 改了什么 |
|---|---|---|
| 1 | 取NPC编号 的表字符串 | 插一段 74=南明湖 警备兵/ |
| 2 | 执行跨图脚本 局部变量区 | +2 行(对话前地图ID、已等) |
| 3 | 执行跨图脚本 主体 | +44 行(G 段「对话」;原 G 段注释改 H、原 H 注释改 I) |
diff 3 个 hunk:+46 行 / −3 行
−3 行 = 2 条注释改字母 + 1 条编号表更新(**没有任何一行真代码被删**)
其余 469 个子程序零改动。
| 项 | 结果 |
|---|---|
| 补丁断言 | 12 项锚点唯一性 + 配平增量(如果真 +2/+2、如果/否则/结束 各 +4、判断循环 +1/+1、跳出循环 +1) |
| 注释字母顺延 | G. 对话 / H. 神器:返回安全坐标 / I. 其它 在文本、.e、回归文本里各命中 1 |
| BOM / 换行 | BOM 在文件开头(ef bb bf)、裸 LF = 0 |
| t2e 回编译 | 0 错误 0 警告 |
.etprj | 已用 .pre20 还原(425 字节 + BOM) |
| e2t 往返 + L1 | 代码级 0 差异,子程序数 470,全局行一致 |
| 二进制取证 | ALL PASS:74=南明湖 警备兵=1、74=南明洞护法=1(没丢)、五条日志文案各 1、旧能力齐全、段名组=0 |
夸图.ini | 1564 字节 / 74 行 / GBK / CRLF / 无 BOM;寻路行 68 条 |
交付:旧版本更新_修复后.e(md5 ae080ec1b7e766b8bbcd007284725541)<br>回滚备胎:旧版本更新_修复后.bak_对话进洞前_20261007_0109.e
| 想改什么 | 改哪里 | 现在 |
|---|---|---|
| 对话后等地图变化的上限 | 执行跨图脚本 里 .判断循环首 (已等 < 5000) 的 5000 | 5 秒 |
| 轮询密度 | 同段 程序_延时 (250) 的 250 | 250ms |
(选中NPC 循环内有个被注释掉的 程序_延时 (10),如果 2000 个槽扫得太快扫不到,<br>把它的注释去掉能让扫描更稳。)
夸图 → 点「开始寻路」,重点看这两行:【跨图】进入段:【南明洞】,当前在 南明湖 ← 南明湖段成功
【跨图】对话:找【南明湖 警备兵】,当前在 南明湖
【跨图】√ 对话生效,已进入 南明洞 ← ★ 这一行 = 进洞成功
看到最后那行,整条跨图链路(泫勃派 → 南明湖 → 对话进南明洞)就全通了。