时间:2026-10-06 15:25 | 工程:D:\AI空间\rxjh\旧版本更新.代码(文本主本)
防杀测试 遇到仇人名单上的人时,先读对方正邪:只有「对方与自己是同一阵营」才跳过躲避(同阵营打不了你,没必要白回城 + 停挂机),其余一切情况照旧躲避。
「如果能根据自己正邪和名单正邪不一样 判断 就更好了」
即:名单上的人如果和自己同阵营(正/邪),根本构不成威胁,不该触发回城。回城一次的代价是 停挂机 10 分钟,误触发一次等于白挂 10 分钟。
| 用途 | 实现 | 位置 |
|---|---|---|
| 自己的正邪 | 内存_读整数型 (全局_进程句柄, #当前血量值 - 84) | 原 9011 / 9328 行(武勋任务用的就是它);取自身正邪 ()(10428 行)是它的封装,此前零引用 |
| 正邪值 → 文字 | 取玩家正邪 (值) → 1正 2邪 0未转职 | 10432 行 |
| 其他角色的正邪 | 内存_读整数型 (全局_进程句柄, 怪物位置 + 0x68) | 原「人物遍历」按钮(6422 行)的读法 |
没有重造轮子,也没有新增内存偏移假设——0x68 是工程里原本就在读的写法。
代码\窗口程序集_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 或 2 | 1 或 2,且相等 | 同阵营 → 跳过躲避(只写一次日志) |
| 1 或 2 | 1 或 2,不等 | 不同阵营 → 躲避 |
| 0 / 读失败 / 任何异常 | — | 照旧躲避(保守,绝不漏躲) |
| — | 0 / 读失败 | 照旧躲避(保守,绝不漏躲) |
关键设计:判定用的是「两个值相等」,而不是「等于 1 还是 2」。这样即使以后发现 1 代表的是邪、2 代表正,同阵营判断依然正确——只看两边是否一致,不看具体数值含义。
怪物位置 + 0x68 这个偏移是从工程里「人物遍历」按钮抄来的,我没法在游戏外验证它真是正邪。而且有个旁证让我不完全放心:工程里 怪物等级 在两处分别读 0x2760 和 0x2780,至少有一个是错的——说明这类偏移历史上被猜过。
复核方法(1 分钟):
遍历人物正邪:正/邪,和你在游戏里看到的那个人对一下对得上 → 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 里到底有什么) |
取自身正邪 ()(10428 行)标记为「零引用·未使用」,本次没直接调它(我需要数值而不是文字),用的是同一个读法。它现在依然零引用,可以删,也可以留着当文档。是否出现势力战窗口 ()(出现的窗口.static.e.txt 31 行)是空的——只有一行注释掉的 返回,等于没实现。如果势力战期间同阵营也可能互相攻击,那本次的正邪过滤就有个盲区;等这个检测实现了,建议在势力战期间强制「一律躲避」。