Commit Graph
27 Commits
Author SHA1 Message Date
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
TermiNexus cbeb78baba feat(page): 自动刷新拦截改为默认开启(便于查看 err toast)
- 原来默认关闭(需 localStorage.hornetBlockReload=1),游戏一遇到致命错误/断线就 location.reload() 刷页,err toast 一闪即没

- 现改为默认开启:localStorage.hornetBlockReload='0' 才关闭;F5 仍然放行一次

- 同步源文件 tools/split.js 与产物 main.9f4e7a89.js

- 注意:拦截期间游戏无法靠刷页重连,只能反复内部重连(临时排查用)
2026-10-16 14:14:51 +08:00
TermiNexus 6dbe6c6b24 fix(hover): 悬浮底盘 raw 速度补上第二级平滑器(Zmt.wak 的 m14f_1)
- 上一版只改了 Bmt.l36(目标速度那一级),实际速度还在 Zmt.wak 里经 m14f_1.x142 逐帧追赶,所以摆动依旧

- 速度链是两级串联:Bmt.y12d_1(目标速度)→ Zmt.m14f_1(实际速度),现两级都按 raw 直接锁目标

- 回退:window.__hornetHoverRaw__ = false
2026-10-15 18:51:41 +08:00
TermiNexus f8502a0726 feat(hover): 悬浮底盘改为 raw 速度(参考炮塔做法,消除无端摆动)
- 位置:module_87072 的 Bmt.l36(悬浮底盘每帧速度推进)

- 原逻辑:y12d_1/z12d_1 两个 vgt 平滑器按加速度 u143_1/v143_1 逐帧逼近目标 → 惯性来回摆

- 改为:直接 na0(w143_1) 把当前值锁成目标值(等同炮塔 qyr 的 i = this.azi_1)

- 回退开关:window.__hornetHoverRaw__ = false
2026-10-15 18:20:35 +08:00
TermiNexus 529868b194 feat(wireframe): 3D 透视里给人机坦克标「人机」文字
- hornet_3d_wireframe:坦克绘制后在其上方投影并写「人机」(先描黑边再填黄字,任何背景下可读)

- 复用 lib.ScanBots / IsBot,节流约每 0.3 秒扫描一次;雷达的方块标记保留
2026-10-15 15:47:52 +08:00
TermiNexus 2b64211173 feat(radar): 人机识别标记(同队装备分数相同且 < 8000)
- hornet_lib:新增 GetGearScore(BattleGearScoreCC.score → 组件 cjf_1)、ScanBots(按队伍分组,同分且低于阈值判为人机)、GetBotSet/IsBot

- hornet_radar:约每 0.3 秒扫一次;人机画「灰方块 + 黄框」,真人仍「实心圆 + 白边」;顶部统计加 Bot 计数

- 重新生成 hornet_bundle.js 并同步到 unpacked
2026-10-15 15:27:34 +08:00
TermiNexus 92b5ca6e9b refactor(panel): 移除左上角常驻 HUD(「3DTank 控制台」小窗)
- tools/hornet_panel.js:HUD 不再挂载到页面(等于不显示),原样式与 appendChild 一并去掉

- 保留 hud 对象与 UpdateHud 循环:循环里还负责 TryAutoEnable()(按保存状态自动开启工具)

- 重新生成 hornet_bundle.js 并同步到 unpacked
2026-10-15 15:15:28 +08:00
TermiNexus 9bce46a86e fix(loader): 断线重连死循环 —— location.reload 拦截改为默认关闭
- 游戏断线时靠 location.reload() 刷页重连;此前为看 err toast 接管了 reload,会把刷页吃掉

- 后果:游戏只能反复内部重连 + 反复拉 config.xml(表现为一直重连 c1 / 反复访问 xml,且只在断线时触发,故呈概率性)

- 现默认关闭;需保留页面看 err toast 时用 localStorage.hornetBlockReload='1' 临时开启
2026-10-15 13:47:35 +08:00
TermiNexus 86aa8bd9bd feat(turret): 炮塔精准跟手加死区消抖(滤掉悬浮底盘的 micro-motion)
- module_87072 oxt.wak case 1/2:目标角变化小于死区(默认 0.5 度)时不搬动炮塔

- 死区可实时调:window.__hornetTurretDeadZone__ = 弧度值
2026-10-15 13:35:39 +08:00
TermiNexus d4c5a89703 feat(turret): 炮塔摆头精准跟手(默认开启)+ 探针默认关闭
- module_87072 oxt.wak:case 1/2 直接锁到目标角,去掉速度追赶导致的追过头再回摆

- module_87072 weaponMount.qyr:去掉渲染层二次插值(dzi_1=azi_1、izi_1=gzi_1)

- 回退开关:window.__hornetTurretPrecise__ = 'off' / false

- probe_chassis.js:新增 oxt.wak / weaponMount.qyr 采样链路,用于定位过冲

- main.9f4e7a89.js:探针改为默认关闭(localStorage.hornetProbe='1' 开启)
2026-10-15 13:34:25 +08:00
TermiNexus 512c718d38 feat(hornet): 十字军底盘控制探针 + 中继 config.xml 动态改写
- 新增 sockets/probe_chassis.js:采样 Cyt.j14k_1 / Zmt.r14f_1 三轴并 hook Cyt.wak / Zmt.wak,转储到 names/probe_chassis.log

- serve.js:新增 /probe_chassis.js 路由与 /__probe__?f= 落盘选择;新增 --relay-port 动态改写 config.xml 指向本机中继(不落盘、不依赖 local/config.xml)

- main.9f4e7a89.js:探针块改为自动加载 railgun + chassis 两个探针

- Start-LocalAndRelay.ps1:-WithRelay 改传 --relay-port,修复「前端未走中继」的根因
2026-10-13 17:14:22 +08:00
TermiNexus d4c8a843e2 feat(panel): 电磁炮锁定时长固定默认 1.5s(面板默认开启覆盖)
面板回填逻辑改为「未显式关闭即开启」,默认值 1.5s(实测满伤的最小值);取消勾选仍可回退原版 3~5s。z4t.w187 的 HORNET-TAG 同步。
2026-10-12 11:08:01 +08:00
TermiNexus db8a92a2f7 feat(panel): Alt+T 面板新增「电磁炮设置」——锁定/蓄力时长可实时调
启用时长覆盖(checkbox) + 锁定/蓄力(s) 滑块 0.1~5.0/步进0.05,拖动立即写入 window.__hornetLockSec__ 并持久化到 localStorage(hornet_lock_on/hornet_lock_sec)。实测门槛:1.5s/2.0s 满伤,1.0s/0.1s 无伤害。
2026-10-12 11:01:36 +08:00
TermiNexus 1af3b3a7a3 feat(mirror): 电磁炮锁定时长支持运行时覆盖(window.__hornetLockSec__)
z4t.w187() 优先读 window.__hornetLockSec__(正数则用它),否则回退 gaussParams.njs_1;便于面板实时调值,不必重打包刷新。
2026-10-12 11:01:34 +08:00
TermiNexus 2d2a2c9f61 chore(mirror): 电磁炮锁定时长试 0.1s(极端对照,用于离线解码对比)
z4t.w187() 返回 LR(0.1);已知 1.5s/2.0s 满伤、1.0s 掉伤。HORNET-TAG 同步 0.1s。
2026-10-12 10:57:50 +08:00
TermiNexus 8e13aac99f feat(mirror): 电磁炮锁定时长 2.0s → 1.5s(二分探门槛)
z4t.w187() 返回 LR(1.5);2.0s 已实测满伤、1.0s 掉伤,门槛在 1.0~2.0s 之间。HORNET-TAG 同步为 1.5s。
2026-10-12 10:41:49 +08:00
TermiNexus 712d24e059 fix(mirror): 徽标抗 DOM 裁剪 + 探针块加自证日志
- 徽标每 2s 自检补回(游戏初始化重排 DOM 时会被删掉)
- 打印「版本徽标已注入」「探针块已执行(hornetProbe=…)」两条日志,便于区分是加载器没生效还是探针 fetch 404
2026-10-12 10:31:34 +08:00
TermiNexus dfdd69b375 feat(mirror): 探针自动加载并转储(/probe_railgun.js 路由 + 加载器引入)
- tools/serve.js: 新增 /probe_railgun.js 路由,读 sockets/probe_railgun.js
- main.9f4e7a89.js: 等 __gameMode__ 就绪后自动 fetch+eval 探针(localStorage.hornetProbe='0' 可关闭),数据走 POST /__probe__ 落盘 3DTank/names/probe_railgun.log,省去每次手粘控制台
2026-10-12 10:23:07 +08:00
TermiNexus 09f8769585 feat(mirror): 电磁炮锁定时长 3~5s → 2.0s(z4t.w187,实测满伤)
z4t.w187() 返回 LR(2),不再取 gaussParams.njs_1;冷却 w1al()/x187() 未动(服务端按冷却裁决)。附 HORNET-TAG 供版本徽标显示。
2026-10-12 10:21:04 +08:00
TermiNexus bb3d76117a feat(mirror): 右下角版本徽标(包版本 + 从模块源码读出的 HORNET-TAG)
加载器记录 __hornetPackVersion__ 并渲染固定徽标;TAG 用正则从 __modules__[87072] 源码读取,避免手写常量与真实包不一致。
2026-10-12 10:21:03 +08:00
TermiNexus d33e7b0eba change(mirror): 从模板中移除 Service Worker 注册(排查断联用)
- tools/split.js 模板与已部署 main 同步删除 SW 注册块;hornet_sw.js 本体与 serve.js 的 /hornet_sw.js 路由保留

- index.html(本地,未入库)加一次性注销,清掉已装的 SW(需再刷一次生效)
2026-10-11 20:16:07 +08:00
TermiNexus 562835c284 fix(mirror): Service Worker 默认关闭(URL 加 #sw 才启用),排查 SW 是否导致断联
- main 加载器与 split.js 模板同步:默认注销已注册的 SW(单包缓存接管),#sw 显式启用,#nosw 仍可强制关闭

- 注意:注销在下次导航生效,需刷新两次
2026-10-11 20:11:02 +08:00
TermiNexus 5dd5560090 fix(relay): 透传客户端真实握手头(Origin/UA/Referer),消除与浏览器直连的唯一差异;镜像加 #nosw 旁路
- 上游改按 Req.headers 的 origin/user-agent/referer 透传(缺省才回退常量),避免上游按 Origin 返回与本地构建不匹配的响应(客户端握手失败自行 close=1005)

- main 加载器与 split.js 模板同步:hash 含 #nosw 时注销已注册的 Service Worker,便于排查镜像页接管问题
2026-10-11 19:47:19 +08:00
TermiNexus 4005213226 feat(tools): 新版本工具链移植 + 本地镜像单包加载,中继改为原样直发与异步有序落盘
- hornet 工具链:无 ght 启动;透视冻结节点拖拽跟随、金箱标记、性能优化;雷达死亡红叉;鼠标稳定器;窗口布局持久化

- 本地镜像:切割与单包加载(pack_unpacked.js)+ SW 单包缓存 + F5 兜底刷新;入口更新为 main.9f4e7a89.js

- 中继 wss_server.js:转发改 socket 反压的原样直发(零等待零缓存);落盘改单条有序异步队列(默认开启);新增反压看门狗(默认 60s)
2026-10-11 19:35:54 +08:00
TermiNexus 90c377ad79 feat(3dtank): 本地镜像与 hornet 工具链迁到新版 bundle main.6469b966.js
旧 main.b7114b43.js 已被新构建替换(10,011,039 字节 / 1335 模块),本地镜像整体重切到新版并清掉旧产物;hornet 工具链按 tools/map_symbols.js 生成的新旧符号映射改名后重新打包(3dtank_bundle.js 与 unpacked/hornet_bundle.js 同步)。tools/symbol_map.json(8.9MB 映射产物)与切割解包目录不进库,可用 map_symbols.js / split.js 重新生成。
2026-09-17 19:59:40 +08:00
TermiNexus f1c9d903fa Test Version 2026-07-28 01:16:15 +08:00