热血江湖助手 · 分析资料站← 报告总目录助手主页
分区:15_助手版本迭代说明源文件:对话选项_改动说明.md篇幅:9.2 KB收录:2026-10-19 17:10

对话选项(子命令9)+ 发包指令 —— 改动说明

2026-10-07 01:20 | 目标文件 旧版本更新_修复后.e | md5 59d5623ad8c0e252ac9ecc704e4debce

一、先说你给的那个包:它把结构彻底钉死了

0000 0000  90 00 18 00  09 00 00 00 00 00 00 00  4A 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00
└ 4字节零 ┘ └ 命令头 ─┘ └──── 子命令 9 ────────┘ └──── NPC 74 ──────────┘ └──── 参数 1 ────────┘

32 字节 = 8 字节包头 + 3 个 8 字节字段。 这跟工程里已有的三个封包完全同构:

来源包体子命令字段2字段3
发包对话NPC(11056 行)0000000090001800 + 01… + NPC1 打开对话NPC编号(工程手写的短包,只发到 NPC 那一字节)
发包关闭商店 上方注释里的真实抓包(11089 行)0000000090001800020000000000000003…2 关闭对话NPC编号0
发包打开商店(11076 行)00000000900018000300000000000000 + NPC + 16 个零3 打开商店NPC编号0
你给的这一包同上9 ??74 南明湖 警备兵1
4313 行(10 分钟无经验救场)同上16361

所以:90 00 18 00 是「NPC 交互」命令组,第 9 字节起是子命令。你这个包的 4A(=74) 正好落在工程放 NPC 编号的位置上 —— 和上一轮那张编号表对上了,这不是巧合。

我的判读:子命令 9 + NPC编号 + 参数1 = 「对该 NPC 选第 1 个对话选项」。<br>工程里 90 00 18 家族只有 1/2/3 三个子命令(对话/关闭/商店),确实没有「选选项」,所以你这一包补上了唯一缺的一环 —— 这跟我上一轮说「若弹选项框就得抓一次包」完全吻合。

一个我无法从字节里确定、需要你实测的点:这一包是否需要先发子命令1打开对话。
我的实现是两步都发(先 1 再 300ms 后 9),两种情况下都能跑通。

二、代码改了什么(只碰 执行跨图脚本 一个子程序,+82 / −3)

1. 新指令 对话选项(NPC名,选项号)

对话选项(南明湖 警备兵,1)

2. 新指令 发包(十六进制串)

发包(000000009000180009000000000000004A000000000000000100000000000000)

把抓到的包原样发出去,复用工程里现成的 机器码到字节集。<br>这条是给你自己试包用的 —— 以后你再抓到任何包,不用等我改代码,直接写进 夸图.ini 试。

十六进制请用大写、偶数长度(和工程其它硬编码包一致)。

3. 过图点不再误报失败(这条针对你说的「单独执行一次这个寻路」)

原来 执行寻路call 的超时判据是「距离 < 20」。跨图那几秒坐标是脏的,所以过图点必然读不到 < 20 → 报超时 → 记为失败,还容易凑够 5 次失败把整段脚本中止。

现在:超时后先看地图变没变。变了 → 判成功,日志写明「这个是过图点…算成功」。

【跨图】√ 这个是过图点:没走到坐标,但地图已从 泫勃派 变成 南明湖,算成功

4. 夸图.ini 更新了两处

[南明湖]
…(51 个点)…
寻路call(-20,-2345)      ← 泫渤派→南明湖 的过图点
等待(10)                   ← 【新增】按你的口径:这步单独执行完等 10 秒
[南明洞]
…(17 个点)…
对话选项(南明湖 警备兵,1) ← 【改】原来是 对话(南明湖 警备兵)
[结束]

等待(10) 走的是引擎原有的 F 指令,没有新增语法。


三、怎么用

选 夸图 → 点「开始寻路」,一行控件都不用动。日志会按这个顺序出现:

========== 开始跨图脚本:夸图 ==========
【跨图】共 73 行,开始逐行执行
【跨图】进入段:【南明湖】,当前在 泫勃派
…(51 个点)…
【跨图】√ 这个是过图点:没走到坐标,但地图已从 泫勃派 变成 南明湖,算成功   ← 过图点
【跨图】等待 10 秒
【跨图】进入段:【南明洞】,当前在 南明湖
…(17 个点)…
【跨图】对话选项:【南明湖 警备兵】编号 74,选第 1 项,当前在 南明湖
【跨图】√ 对话选项生效,已进入 南明洞                                        ← 成功标志
========== 跨图脚本结束:成功 XX 个动作 ==========
日志含义
√ 对话选项生效,已进入 南明洞进洞成功,全链路通了
× 对话选项发出去了但地图没变选项号不对,把那行的 1 换成 2/3 再试
对话选项:NPC编号表里查不到【…】名字和表里不一个字不差(中间是半角空格 0x20)

参数想调:选项号改 对话选项(…,N);过图等待改 等待(10) 的 10。


四、验证记录(九项全绿)

项结果
模板自检补丁脚本内置断言:拼出来的 32 字节 == 你抓到的包(逐字节相等才允许写盘)
锚点唯一性8 个锚点全部命中 1 次 / 新标识命中 0 次(确认没有残留旧实现)
块配平如果真 +5/+5、如果/结束 +5/+5、否则 +5、判断循环 +1/+1、计次循环 +0/+0、局部变量 +3、跳出循环 +1
BOM / 换行BOM 在开头(补丁脚本里带硬断言,上轮 F 过这个坑)、裸 LF = 0
GBK 安全通过(无 BMP 外字符 → 不会有整行注释被 t2e 丢弃)
t2e 回编译0 错误 0 警告(SUCC)
.etprj已用 .pre21 还原(425 字节 + BOM 回来了)
e2t 往返 + L1代码级 0 差异,子程序数 470(未变),全局行一致
二进制取证ALL PASS:14 条新文案/标识全部落地、旧文案「还得再选一次才进得去」= 0、既有能力(等待离开原地 / 取对应回城符名称 / 发包飞图 / 防杀测试 / 74 两条编号)都在
改动范围5 个 hunk、+82 / −3,只碰 执行跨图脚本

交付:D:\AI空间\rxjh\旧版本更新_修复后.e(md5 59d5623ad8c0e252ac9ecc704e4debce)<br>回滚备胎:旧版本更新_修复后.bak_对话选项前_20261007_0119.e<br>留底:_patch/对话选项前_20261007_0119/、_patch/项目.etprj.pre21、_patch/夸图.ini.pre21


五、「执行多坐标寻路 → 到挂机点 → 开始挂机」——查完了,这条不用改代码

你回的是「执行多坐标寻路(记录坐标组合框)→ 到挂机点 → 开始挂机」。我把链路查通了:

步骤谁负责现状
用 记录坐标组合框 里选的脚本跑寻路_开始寻路按钮_被单击 → 开启多坐标寻路 → 跨图脚本走 执行跨图脚本、纯坐标走 多坐标寻路已有(本轮没动这段分流)
到挂机点挂机寻路新(点「开始挂机」后 启动线程 (&挂机寻路新, , 挂机寻路线程))已有:它自己会回城/飞图到 挂机地图组合框、再 寻路call (挂机X, 挂机Y) 走到挂机点(7600 / 7668 行,挂机X/挂机Y 取自 挂机坐标x/y编辑框)
开始挂机「开始挂机」按钮 → _开始挂机_被单击已有

结论:整条流程都是现有能力,不需要新代码。 你按老习惯点两次就行:<br>① 选脚本 → 点「开始寻路」 ② 到了以后点「开始挂机」(它会自己把你带到挂机点)。

唯一"可选"的自动化:让「开始寻路」跑完自动帮你触发「开始挂机」。
我故意没做,原因是从跨图脚本所在的工作线程去调 _开始挂机_被单击,要同时改
开始挂机.标题、更新数据时钟.时钟周期、功能检测时钟.时钟周期 这些界面对象,
还要拉 挂机寻路线程 —— 做错了会出现「标题变成停止挂机、但实际没在挂机」这种半死状态,
比发包危险。要做的话正确姿势是在工作线程里置一个标志、由界面时钟来真正点,
属于另一块改动。你要就说一声。

六、顺手做的两件清理

  1. D:\rxjh2025\client\坐标脚本\夸图.ini.bak_20261007_005334(我上轮合成时留的备份)

已移出到 坐标脚本_备份\ —— 那个目录是 记录坐标组合框 的下拉数据源(列目录 (“坐标脚本\.”)),<br>放进备份会让下拉框多出一堆垃圾项。移走后目录里已无 .bak/.tmp。

  1. 你把 南明湖入口警卫兵.ini 改名成 南明洞.ini 之后,我核对过:

夸图.ini 的 [南明湖] 段 == 南明湖.ini(51 行全部逐行相同)、<br>[南明洞] 段 == 南明洞.ini(17 行全部逐行相同)—— 没有漂移,段名也对得上了,不需要重新合成。

本页由 Markdown 报告自动转排;如需原始 md,可在原会话工作区取用。