热血江湖助手 · 分析资料站← 报告总目录助手主页
分区:15_助手版本迭代说明源文件:防杀正邪判断_改动说明.md篇幅:6.5 KB收录:2026-10-19 17:10

防杀测试 · 正邪判断 — 改动说明

时间:2026-10-06 15:25 | 工程:D:\AI空间\rxjh\旧版本更新.代码(文本主本)


一句话

防杀测试 遇到仇人名单上的人时,先读对方正邪:只有「对方与自己是同一阵营」才跳过躲避(同阵营打不了你,没必要白回城 + 停挂机),其余一切情况照旧躲避。


需求

「如果能根据自己正邪和名单正邪不一样 判断 就更好了」

即:名单上的人如果和自己同阵营(正/邪),根本构不成威胁,不该触发回城。回城一次的代价是 停挂机 10 分钟,误触发一次等于白挂 10 分钟。


工程里已有的东西(本次复用,未重写)

用途实现位置
自己的正邪内存_读整数型 (全局_进程句柄, #当前血量值 - 84)原 9011 / 9328 行(武勋任务用的就是它);取自身正邪 ()(10428 行)是它的封装,此前零引用
正邪值 → 文字取玩家正邪 (值) → 1正 2邪 0未转职10432 行
其他角色的正邪内存_读整数型 (全局_进程句柄, 怪物位置 + 0x68)原「人物遍历」按钮(6422 行)的读法

没有重造轮子,也没有新增内存偏移假设——0x68 是工程里原本就在读的写法。


改动(+15 行,2 个文件)

代码\窗口程序集_MainDialogWnd.form.e.txt(12574 → 12589 行)

行内容
6465-6466新增局部变量 自己正邪值 / 对方正邪值(整数型)
6470-6471扫描开始前只读一次自己的正邪(2000 格循环里不必重复读)
6486-6487命中名单后读对方正邪:怪物位置 + 十六到十 ("68")
6489-6495正邪判定:同阵营 → 写一条日志 + 到循环尾 ()(继续扫,不漏掉后面真正的仇人)
6497命中日志带上双方正邪(便于游戏内复核 0x68)

全局变量.e.txt(+1 行)

.全局变量 防杀跳过同阵营名字, 文本型, , , 【防杀优化】上次因「同阵营」被跳过躲避的名字;仅在该名字变化时写一次日志,防止每轮功能检测都刷屏

为什么需要它:防杀测试 是挂在功能检测时钟上每周期跑一次的,同阵营的人会一直站在你旁边。没有这个记录位,每周期写一条「跳过躲避」= 日志刷屏。


判定逻辑(按你选的「保守」)

.如果真 (自己正邪值 ≠ 0 且 对方正邪值 ≠ 0 且 自己正邪值 = 对方正邪值)
    到循环尾 ()          ' 同阵营 → 跳过躲避
.如果真结束
... 原躲避逻辑(回城符/回城命令 + 3 轮校验)...
自己对方结果
1 或 21 或 2,且相等同阵营 → 跳过躲避(只写一次日志)
1 或 21 或 2,不等不同阵营 → 躲避
0 / 读失败 / 任何异常—照旧躲避(保守,绝不漏躲)
—0 / 读失败照旧躲避(保守,绝不漏躲)

关键设计:判定用的是「两个值相等」,而不是「等于 1 还是 2」。这样即使以后发现 1 代表的是邪、2 代表正,同阵营判断依然正确——只看两边是否一致,不看具体数值含义。


⚠️ 需要你在游戏里复核一件事

怪物位置 + 0x68 这个偏移是从工程里「人物遍历」按钮抄来的,我没法在游戏外验证它真是正邪。而且有个旁证让我不完全放心:工程里 怪物等级 在两处分别读 0x2760 和 0x2780,至少有一个是错的——说明这类偏移历史上被猜过。

复核方法(1 分钟):

  1. 站到一个有人的地图,开脚本
  2. 按界面上 「人物遍历」 按钮
  3. 看日志里的 遍历人物正邪:正/邪,和你在游戏里看到的那个人对一下

对得上 → 0x68 正确,功能放心用;对不上(或全是「未转职」)→ 告诉我,我改成别的偏移。

功能跑起来后,日志里也能直接看到双方正邪,例如:

15:30:12 名单人物【XXX】与自己同为【正派】,打不了我,跳过躲避
15:31:05 发现傻逼人物:YYY(自己[正] 对方[邪])

验证

项结果
字节级写入UTF-8 BOM ✓ / CRLF 12588 / 裸 LF 0 ✓(两个文件都是)
断言锚点唯一命中、读对方正邪 → 判定 → 到循环尾 顺序断言 ✓
名称冲突静态检查自己正邪值 / 对方正邪值 / 防杀跳过同阵营名字 全工程无重名 ✓
块结构配平.如果/.如果真/循环/判断 全部闭合 ✓
e2txt t2e 回转SUCC,18471 条日志全 [信息],0 错误 0 警告 ✓
e2t 反向导出防杀测试 子程序归一后 0 差异,新代码 1:1 进 .e ✓
历次修复回归凝神珠名单 8 项带空格、≠ -1、防杀坐标判据、3 轮重试、是否是集魂珠 全部在位 ✓
易语言 F7 编译未代跑(见下)

F7 没代跑的原因:这次不是「改个字符串」那种零风险改动(新增了全局变量和新语句),本想跑一次真编译,但你的易语言没开着、而你可能正在游戏里——探针要抢前台焦点约 1 分钟,中途把游戏切到后台,挂机角色可能站着挨打。所以交给你按一下 F7。静态面已经查干净(t2e 0 错误 + 往返 0 差异 + 无重名),F7 若报错请把错误行发我。


产物

项路径
主本(文本工程)D:\AI空间\rxjh\旧版本更新.代码(12589 行)
编译源D:\AI空间\rxjh\旧版本更新_修复后.e(2,729,290 字节,魔数 CNWTEPRG)
改动前备份旧版本更新.代码.bak_防杀正邪判断_20261006_1520
补丁脚本_patch\fix_防杀正邪判断.py(含断言,可重跑)
审计文本_patch\rt\(由交付 .e 反向导出,核对 .e 里到底有什么)

顺带发现(本次没动)

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