Commit Graph
75 Commits
Author SHA1 Message Date
TermiNexus 37be0e2418 chore(trace): 在 ReduxToModelGateway.dispatch 打点动作 toString
yt.uar 是全包唯一的真实 dispatch 入口;动作类 toString 形如 SetFragsCount(fragsCount=3),据此反推动作名/字段名/字段值类型(action_trace.json)。打点只在镜像副本里,落地走 /__dump__/action_trace.json。
2026-10-21 20:20:08 +08:00
TermiNexus b083d27165 fix(protocol): TankState 按 23 字节定长 blob(T5)解码,修复 TankCC 后续字节错位
- codec_fields:module_87072::T5 记为单字段 bytes23;pq.tankState 的 TypeCodec 由 85183::jq 改指 87072::T5
- 生成器支持 bytes<N>(ByteArray / R.ReadRaw(N) / W.WriteRaw),重生成 Module87072、Module85183
- 审计链:lib_space_codec 新增 bytes<N>;audit_pt_boundaries / audit_bit_budget 支持 --body/--plain;semantic 暴露 Out.Bits
- 新增工具:audit_bit_budget(nullmap 位预算)、probe_pt_record(pt 项级)、analyze_item_trace(客户端项级打点对照)、dump_codec_src
- wss_server 新增 --dump-plain:把解密+解压后的裸帧体落到 plain/,供离线审计
- 镜像打点:opt 全量位位置、pt 项级字节/位区间、TankCC 逐字段区间;重新打包 unpacked.pack.json
2026-10-21 15:21:10 +08:00
TermiNexus b8651b4a8a feat(protocol): 全量 opt 打点按帧分组,定位每个模型消费的位数 2026-10-21 04:03:51 +08:00
TermiNexus 1c5dc3afb9 feat(protocol): 采集客户端枚举读取打点并加分析脚本 2026-10-21 03:29:56 +08:00
TermiNexus aaf1554fe9 feat(protocol): 位痕迹记录客户端绝对位游标 2026-10-21 03:02:02 +08:00
TermiNexus e0542b2681 feat(protocol): 位痕迹按 codec 槽位指纹定位字段 2026-10-21 02:55:25 +08:00
TermiNexus 97917478a4 feat(protocol): 采集客户端 opt<list> 位痕迹并加分析脚本 2026-10-21 02:49:44 +08:00
TermiNexus 9975a8662f feat(protocol): 采集运行时 modelId→codec 注册并用源码反查模块归属 2026-10-21 01:32:03 +08:00
TermiNexus 353eb9b0a9 chore(bundle): 重新构建 bundle(含栅栏局部坐标判定) 2026-10-21 01:06:26 +08:00
TermiNexus b2deca31be fix(ignore): 解包 type 4 克隆形状后再做三角形判定
type 4 是克隆包装(hu.c9w_1 = 原形状.d21()),地图三角形都以它出现,之前按三角形判定永远不命中。现在 IsTriangle/TriangleNormalZ/ShapeMaxZ/ShapePoint 统一先解包 c9w_1,再套「高于车体 1m + |法线z|<0.6」规则;schema 补 Shape.Clone。
2026-10-21 00:49:13 +08:00
TermiNexus d4a260ac92 feat(ignore): 增加 seen 统计与 ResetStat,便于对比栅栏与地面的形状类型
seen = 本车接触到的所有非坦克形状的 cat/type 直方图(不论是否忽略);新增 ResetStat() 清零,便于「平地 1 秒」与「顶住栅栏 1 秒」两次对比定位栅栏的真实形状类型。
2026-10-21 00:45:50 +08:00
TermiNexus f455fe5c35 feat(ignore): x9o 路径改为忽略本车与任意静态形状的相交查询
接触路径(q9q)仍只忽略立面三角形以防掉地;形状相交查询(x9o)对本车与任意静态形状返回 false,覆盖扫掠/查询式阻挡;新增 skippedOverlap 计数。
2026-10-21 00:42:54 +08:00
TermiNexus 0e8af39bfe feat(ignore): 同时接管形状相交查询 x9o(真形状检测)
栅栏判定同时作用于接触配对 q9q 与形状相交查询 x9o:命中时返回 false(不相交),覆盖扫掠/查询路径;新增 skippedOverlap/overlapPatched 统计;schema 补 CollisionWorld.Overlap。
2026-10-21 00:42:28 +08:00
TermiNexus 2ba8df0245 fix(ignore): 只忽略立面三角形,type 1/4 静态代理不再跳过(修复掉地)
实测 byType={16/4:26530,16/1:4620} 表明被跳过的是非三角形地形代理,导致穿地。现判定只对 type=8 三角形生效:最高点高于车体中心 1m 且 |法线z|<0.6;非三角形静态一律保留。
2026-10-21 00:36:30 +08:00
TermiNexus 580a456032 fix(ignore): 栅栏判定加入高度门槛,避免把地面一起忽略导致掉出地图
上一版 skippedFence 达 4.6 万,说明地面三角也被忽略。现规则:静态形状最高点必须高于本地坦克中心 1m 才可能是栅栏;三角形再要求 |法线z|<0.6。新增 byType 统计(cat/type → 忽略次数)便于确认命中对象。
2026-10-21 00:32:24 +08:00
TermiNexus bfc3821dc7 fix(ignore): 恢复非三角形静态碰撞的忽略,栅栏恢复可穿过
上一版把判定收窄为仅陡峭三角形,导致非三角形静态代理(栅栏碰撞体)仍会挡住本地坦克。现判定:静态几何中非三角形一律忽略;三角形按 |法线z|<0.5 忽略,地面/缓坡保留。
2026-10-21 00:30:00 +08:00
TermiNexus 69defa85e7 feat(ignore): 栅栏诊断输出重叠物体信息(形状 + 邻近场景节点名)
保持原有几何判定(仅陡峭静态三角形);DebugFence(true) 后,本车与任意非坦克形状配对时按签名去重打印 cat/type/法线/位置/7m 内场景节点名,用于确认栅栏对应哪个物体;schema 补 Body.State/PositionVec。
2026-10-21 00:25:16 +08:00
TermiNexus 63c08ab165 fix(ignore): 放宽栅栏判定并加入静态形状诊断
静态障碍不再只认三角形:非三角形静态碰撞代理直接视为障碍,三角形按法线 |nz|<0.5 判定;新增 __hornetNoClip__.DebugFence(true) 打印静态形状样本(cat/type/三角/nz/是否跳过),用于定位未生效原因。
2026-10-21 00:18:51 +08:00
TermiNexus 7481dad24e feat(ignore): 面板新增「忽略」区域(坦克按阵营 / 反弹 / 栅栏)
hornet_noclip 改为通用忽略模块:配对过滤支持 关闭/仅敌方/仅友方/全部 的坦克忽略,并新增忽略栅栏(只跳过 |法线z|<0.5 的静态三角形,地面与缓坡保留);面板新增可折叠「忽略」区域,接管忽略坦克下拉、忽略反弹(NoKnockback)、忽略栅栏,各自 localStorage 持久化;schema 补 Shape.Type/Vertex0-2。
2026-10-21 00:04:38 +08:00
TermiNexus 66a74df6e3 refactor(schema): 全部工具改为经字段抽象层取值
hornet_lib / hook_gamemode / radar / 透视 / 后视镜 / 瞄准警告 / 自由视角 / 战争沙盘 全部改为 Fld/Mth 常量取值;schema 补齐渲染器、网格、射线、武器、皮肤槽位等 88 项字段与别名;SelfCheck 改为只校验核心字段,避免别名误报。
2026-10-20 22:04:07 +08:00
TermiNexus 5a3440229e fix(noclip): 改为拦截碰撞配对,修复关闭后拾取物失效
穿坦克不再修改碰撞 mask(坦克 category 与拾取物触发体共用 bit0,清位会导致拾取失败且关闭后需重生才恢复)。改为包装 module_55088 碰撞世界 ki.q9q,仅跳过双方都是坦克物理组件的配对:地形、拾取物触发、地雷、子弹均保持原样,关闭开关无需还原状态。
2026-10-20 20:39:29 +08:00
TermiNexus bea22bb5f9 feat(noknockback): 新增拒绝击退开关,中弹不再被推开
在本地坦克实体的 kz7 事件派发处丢弃外力事件(ODt:作用点/方向/强度),坦克物理收不到就不产生位移与旋转;悬挂与行驶仍走 m9k 直调,不受影响。面板新增「拒绝击退」开关。字段名走 hornet_schema。
2026-10-20 20:35:19 +08:00
TermiNexus 692b812e58 fix(schema): 自检跳过常量项,避免 Team.NeutralId 误报失配 2026-10-20 20:18:26 +08:00
TermiNexus 972928e848 refactor(schema): 新增字段抽象层,透视滤除非本车节点并重做敌我判定
新增 hornet_schema.js 集中维护匿名引擎字段映射与导出键,支持 SelfCheck 自检失配;透视兜底扫描增加车体距离闸门,只保留跟着本车动的节点;敌我改为按队伍编号(k3_1)每帧比对,中立时沿用上次结果,取消一次判定永久锁定;穿坦克改用抽象字段名。
2026-10-20 20:18:14 +08:00
TermiNexus 6e79057856 feat(noclip): 新增穿坦克工具并接入面板开关
清掉本地坦克碰撞形状 mask 的坦克位(bit0),可穿过其他玩家坦克;地形静态几何(category bit4)碰撞保持不变。引擎状态切换会重写 mask,运行期每帧补一次,停止时按原始快照精确还原。
2026-10-20 20:06:24 +08:00
TermiNexus fcc4901a1f feat(garage): 战局空闲预热车库资源,静态资源启用长缓存与异步读 2026-10-20 16:48:41 +08:00
TermiNexus ce1ffbeb60 fix(team): 队伍函数按需补加载,开局即用可靠基准锁定敌我 2026-10-20 14:28:00 +08:00
TermiNexus f07f182fd8 fix(team): 本地队伍缓存不再随 gm 重建清空,并锁定单局敌我结果 2026-10-20 13:43:21 +08:00
TermiNexus 781ba862b7 fix(alive): 存活判定改用引擎 s14j()(含 TELEPORT),死亡坦克稳定过滤 2026-10-20 13:02:03 +08:00
TermiNexus 8906ba6764 fix(team): 队伍同步延迟时沿用上次判定,消除敌我颜色跳变 2026-10-20 13:01:01 +08:00
TermiNexus 62357fcd9f fix(radar): 恢复死亡坦克的红叉标记(含血量辅助判死) 2026-10-20 11:29:47 +08:00
TermiNexus 2520a91bf1 fix(team): 队伍基准改用本地拥有坦克并缓存;死亡坦克不再标记 2026-10-20 11:20:38 +08:00
TermiNexus 82ee3fd8a4 fix(client): 下发 host 为空时还原为 cN 服务器地址,修复进战斗短命连接 2026-10-20 11:19:09 +08:00
TermiNexus aa3bcba363 fix(wireframe): 扫描结果按字段路径缓存并每帧合并,补齐炮塔与车体漏采 2026-10-19 22:52:33 +08:00
TermiNexus 41b94ef0f9 fix(wireframe): 去重键去掉世界坐标并取消扫描节流,修复模型闪烁 2026-10-19 22:37:31 +08:00
TermiNexus 797f28c8cd fix(wireframe): 采集改为单路径优先并按 mesh+位置去重,修复重复身体与卡顿 2026-10-19 22:32:10 +08:00
TermiNexus af8cde08d2 fix(wireframe): 车身改用皮肤根节点并合并结构扫描,修复漏采与只剩炮塔 2026-10-19 22:08:33 +08:00
TermiNexus 526adc760c fix(wireframe): 顶点/索引优先读 CPU 端缓冲区,修复未上传 mesh 采集失败 2026-10-19 21:45:54 +08:00
TermiNexus 57481a1d09 feat(client-info): 本地镜像的 ClientInfo 显示 SRV: CN1/CN2 2026-10-19 21:43:33 +08:00
TermiNexus 1dd7143e67 fix(wireframe): 去掉炮塔门槛并加实体节点扫描兜底,修复只有点没有模型 2026-10-19 20:14:47 +08:00
TermiNexus dcf9a57456 fix(wireframe): GPU 顶点/索引缓冲字段按新版重定位,恢复模型采集 2026-10-18 19:37:43 +08:00
TermiNexus 86b9322a9f fix(wireframe): 按新版字段修复模型采集与敌我判定 2026-10-18 19:10:22 +08:00
TermiNexus 4d8cbd81d6 chore(sw): 本地镜像禁用 Service Worker(自注销旧注册 + 置空游戏 SW 注册模块) 2026-10-18 19:00:52 +08:00
TermiNexus a34cae5474 fix(tools): 按新旧差异修复位置与相机链路(雷达/透视恢复绘制) 2026-10-17 16:50:54 +08:00
TermiNexus 9506648877 fix(lib): 位置探测增加矩阵式兜底([12],[13],[14] 平移分量)
- 旧版位置来自物理组件的世界变换矩阵(K$ 实例,非普通向量),新版字段平移后无法靠名字命中

- 兜底 2:遍历组件找长度 >=15 的矩阵对象,取 [12]/[13]/[14] 作为平移(引擎惯用布局)
2026-10-17 16:29:06 +08:00
TermiNexus 67b2ff4a80 fix(lib): 坦克位置改为多级字段探测(修复雷达/透视为空)
- 根因:物理组件的位置向量字段每构建都平移,本次 pz7_1→gzh_1→rzf_1 的映射全都指错(gzh_1 是 TerminatorCC、rzf_1 是 RicochetSfxData)

- GetTankPosition 改为多级探测:先试一组成员字段(xzq_1/uzq_1/azr_1/bzr_1/dzr_1/izr_1/jzr_1…),再兜底遍历组件找带 f20_1/g20_1/h20_1 的 O\$ 向量

- 透视的坦克绘制与金箱位置都改用 GetTankPosition
2026-10-17 16:19:54 +08:00
TermiNexus 1cc1afdb08 fix(hook): GameMode hook 目标改为新版导出键(jc/ic),修复所有工具静默失效
- 根因:新版导出键语义漂移 —— \$.ac 变成两字段数据类 \、\ \$.zb 变成 ydt,不再是「取 gmt 实例 / ght 类」

- 新版对应关系:\ \$.jc = dct(scene) 取 ght 实例;\ \$.ic = wct 即 ght 类;\ \$.kc = gct(scene) 取 GameMode 实体

- hook 目标改为 \ \$.jc,并继续 hook wct.prototype 全方法作为兜底

- 重新生成 hornet_bundle.js 并同步 unpacked
2026-10-17 15:57:40 +08:00
TermiNexus 56a1356cce fix(tools): 补全新版符号替换(修复透视/雷达仍不可用)
- 双向校验误判:q100_1 / r11l / jyw / t101_1 在新版同名但含义不同(普通数值 / 别的方法),被当作未变而跳过

- 强制替换:q100_1 到 m10b_1(坦克管理)、r11l 到 j11y(坦克列表)、jyw 到 lz4(取实体)、t101_1 到 p10c_1

- 覆盖 hook_gamemode.js(文件名不匹配 hornet_ 被漏掉)

- 物理组件字段 gzh_1 改为 rzf_1(新版 gzh_1 已是 TerminatorCC 字段,非物理)

- 移除已不存在的 xyu(GameMode),改用 gm.lz4()(等价:取 GameMode 实体)

- 重新生成 hornet_bundle.js(10 模块 / 249229 字节)并同步 unpacked
2026-10-17 15:49:50 +08:00
TermiNexus dcf5dfce5c fix(tools): 工具链符号对齐新版 bundle(修复 HORNET 功能大面积失效)
- 根因:新版 main.7cfa4058 重拆后游戏符号整体平移,工具里写死的字段名(pyt_1/q100_1/r11l/oyz/jyw/cyw_1/dyw_1…)全部对不上 → 找不到组件/相机/场景

- 新增 tools/apply_symbol_map.js:按 map_symbols 映射批量替换,4 道安全规则:① 长名或含下划线 ② 排除 JS 关键字/内置名黑名单 ③ 游戏符号命名特征(含数字或 _数字 结尾) ④ 双向校验(旧名在新 bundle 仍存在→视为未变跳过;新名不存在→映射错误丢弃)

- 单遍替换,避免链式污染(映射表新旧同名复用时会被二次替换)

- 应用到 12 个 hornet_*.js 共 231 处(跳过 25764 个未变符号)

- 重新生成 hornet_bundle.js(10 模块 / 249263 字节)并同步 unpacked
2026-10-16 14:55:39 +08:00
TermiNexus fd0dffe31b feat(bundle): 迁移到新版 main.7cfa4058.js(重做拆分 + 移植 7 处针对性修改)
- 拆分:tools/split.js 重切新版(1347 模块 / 126 代码模块),主文件 main.7cfa4058.js,语法验证通过

- 修复 split.js 内自动刷新拦截的 \\n 转义:它在模板字符串里,必须写 \\\\n,否则生成的主文件字符串断行、语法报错

- 符号映射:map_symbols.js 对齐旧→新(qyr→ryz、w187→c18o、z4t→jtn、vgt→rkt、Bmt→Ezt、Qjt→Fjt、txt→Gjt、k15b→s15n、azi_1→vzr_1…)

- 移植 7 处针对性修改:炮塔摆头不回弹(vSt.ryz)、摆头不过冲(case 0)、精准跟手(case 1/2)、悬浮底盘 raw 两级(Ezt.n36 + Zmt 实际速度)、电磁炮蓄力时长(jtn.c18o)

- 重新打包 unpacked.pack.json(127 文件 / 版本 96833eb2b0cf8909)
2026-10-16 14:20:15 +08:00