Initial import of IC.Rebuild

This commit is contained in:
2026-10-13 22:55:05 +08:00
commit 16d61f7a5e
87 changed files with 17054 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
# 猛攻与全职业位移名单修复
版本:0.1.2。目标客户端:国际服 2026.09.15.0000.0000。
用户反馈:16 开启后位移仍存在,14 增加后突进停在目标圈外。两种现象均使用战士猛攻测试。用户随后要求把所有带位移的技能加入 16 的名单。
## 名单与位移拦截
原配置的 BlockedTimelines 为空、BlockListed=true,因此旧实现开启 16 时不屏蔽任何技能。新版从动作表选择 IsPlayerAction=true 且 AffectsPosition=true 的所有条目,通过 AnimationEnd 建立名单。
本机动作表结果:79 个技能条目,58 个不同 Timeline,均有有效的 16 位映射。包含 PvE、PvP 及仍保留在动作表中的历史条目;不宣称每个条目都仍可从技能栏使用。数据明细见 `movement-skills-2026.09.15.json`。
| 技能 | 动作 ID | Timeline | 位移标记 |
| --- | --- | --- | --- |
| 猛攻 PvE | 7386 | 5189 | true |
| 猛攻 PvP | 29079 | 12244 | true |
首次加载当前客户端版本时自动补全名单,模式切为仅屏蔽名单内,所有模块仍默认关闭。相同版本后续加载保留用户编辑;可点击“加入全部位移技能”重新补全。相同 Timeline 对应的多个技能会联动。
保留三种明确模式:全部本地技能位移、仅屏蔽名单内、仅放行名单内。名单模式下空名单不屏蔽;另提供技能 ID 转换、技能名展示与最近位移命中统计。
## 原生路径核对
旧 NoActionMove 签名唯一匹配 RVA 0x1821FC0,是一个转发函数。它调用共用位移初始化函数 RVA 0x1822510。新版对共用入口建立经唯一性检查的签名,覆盖从其他转发路径进入的同类请求。
共用入口的参数对应控制器、位移类型、目标、起点、朝向及元数据;控制器 +0x3E0 为所属对象。拦截限定本地角色,未就绪或无效元数据时放行。
下层 RVA 0x180A370 的 0x14180A5A9、0x14180A5B0 分别读取元数据字节 2、3,0x14180A5B7 读取 word [data]。旧代码把前四字节全部作为 Timeline,会把标志位混入编号。新版按低 16 位读取编号,单独显示两个标志字节。
函数参数、偏移和签名限于本次审计版本。运行中的猛攻是否进入该入口、是否被成功屏蔽,仍需用界面的本地调用及拦截计数确认。
## 目标半径与落点
旧实现全局增加 GetRadius 的返回值,既影响目标,也影响自身和其他调用方。GetActionInRangeOrLoS 在本机 RVA 0x8DD220,明确读取目标与自身半径并参与距离计算;这种全局修改也会影响其他使用半径的移动或碰撞流程。
新版仅在本地角色的普通技能距离检查中,对正在检查的目标增加半径。使用线程局部作用域;自身、其他对象、未知技能和 AffectsPosition=true 的技能不加值。离开距离检查后立即恢复作用域,其他工作线程不继承。
因此 14 不再修改显示目标圈、碰撞半径或突进落点,也不给猛攻本身增加目标半径。13 的技能距离设置独立保留。热栏颜色等其他缓存显示是否同步仍待游戏内观察。
## 测试与记录
Release 构建通过,0 警告、0 错误;32 项离线测试通过。新增覆盖位移编号与标志分离、三种名单模式、本地对象限制、半径作用域、线程隔离、异常恢复和玩家技能目录筛选。
游戏内复测未完成,不把名单完整性等同于所有位移路径均已拦截。
已读取新生成的自动保存 JSONL,实际包含 2048 条上下行元数据,客户端版本匹配且 PayloadComplete 均为 false。聚合结果见 `capture-summary-second-test.json`;名称来自映射表,不能仅凭元数据验证具体包体含义或动作结果。