Files
IC.Rebuild/diagnostics/2026-10-11-radius-native-ring.md

39 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 14 原生目标圈与距离修复
版本:0.1.4。客户端:国际服 2026.09.15.0000.0000。
用户确认两个问题:画面目标圈没有变大,技能距离也没有增加;并明确要求修改游戏原生圈,不接受额外叠加圈。
## 距离路径
0.1.2—0.1.3 只在 GetActionInRangeOrLoS 中临时增加目标半径,漏掉 IsActionTargetInRange 的前置路径。
本机原生 IsActionTargetInRange 位于 RVA 0x8EE490,在 0x8EE51E 调用 GetActionRange,然后将结果与 ActionManager 内的缓存距离比较。因此仅影响最终半径读取,不能覆盖前置距离判断。
0.1.4 在 IsActionTargetInRange 与 GetActionInRangeOrLoS 两个检查范围内,对普通技能的有效距离补上编号 14 的增量,数学上相当于增加目标判定半径。作用域按线程隔离;未知技能、位移技能、负数及零范围不补偿。不直接改写缓存距离或物理半径。
13 和 14 共用一个 GetActionRange Hook,分别计算自己的增量,避免两个独立 Hook 互相覆盖。共享资源按引用计数释放;关闭任意一个模块不停止另一个,释放失败时禁止再次挂接。
## 原生圈路径
从本机可执行文件中的 gl_target 资源路径向使用方追踪:
- vfx/common/eff/gl_target1.avfx 和 gl_target2.avfx 是目标圈资源。
- 资源路径表起点 RVA 0x28A3640,gl_target1 位于第 105 项。
- 对应资源句柄表起点 RVA 0x2A8F5B0。
- 资源选择函数 RVA 0x3938A0,被原生圈更新函数调用。
- 原生圈更新函数通过 unwind 链确认完整入口为 RVA 0x7B5430;签名在本机唯一匹配。
- 0x7B5829 通过对象虚表的 GetRadius 槽读取半径,并且 adjustByTransformation=false,用于后续圈尺寸计算。
0.1.4 仅在此原生圈更新函数的同步调用范围内增加显示半径,并排除本地角色。其他线程、突进、碰撞及范围外读取仍返回原值。没有绘制 ImGui 叠加圈,没有修改游戏资源文件或永久写入对象半径。
原生圈更新 Hook 按本次审计版本限制启用。关闭模块后停止半径补偿,下一次游戏原生更新读取原始半径。
## 诊断与验证
面板显示前置检查、最终检查、距离补偿、原生圈更新、绘制半径补偿五项计数,以区分入口未触发与已触发但实际效果不符。
Release 构建通过,0 警告、0 错误;40 项离线测试通过。覆盖两条距离作用域、位移排除、原生圈作用域、跨线程隔离、异常退出恢复、13 和 14 的共享生命周期及清理失败处理。
静态反汇编和离线测试不代替游戏内验收。待复测:关闭 13 和 16,单开 14,增量设为 1;观察原生目标圈与普通近战技能距离,再确认关闭后恢复以及猛攻落点不受影响。不要只用猛攻验证普通技能的距离增量,14 明确排除位移技能的距离补偿。