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
This commit is contained in:
1 parent
dcf5dfce5c
commit
56a1356cce
11 files changed
+121
-121
No files matched your search
@@ -55,7 +55,7 @@
|
||||
// 尝试获取坦克列表(失败也不影响 gameMode 设置)
|
||||
var tankCount = -1;
|
||||
try {
|
||||
var list = gm.q100_1.r11l();
|
||||
var list = gm.m10b_1.j11y();
|
||||
tankCount = list.e1();
|
||||
window.__tankList__ = list;
|
||||
} catch(e) {
|
||||
@@ -111,7 +111,7 @@
|
||||
if (window.__gameMode__) {
|
||||
// 验证当前引用是否有效
|
||||
try {
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
window.__tankList__ = list;
|
||||
} catch(e) {
|
||||
// 引用失效(新战斗/退出战斗),重置等待重新捕获
|
||||
@@ -150,7 +150,7 @@
|
||||
console.log('ght 实例未捕获,请等待');
|
||||
return;
|
||||
}
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
var count = list.e1();
|
||||
console.log('=== 坦克列表 (' + count + " 个) ===");
|
||||
for (var i = 0; i < count; i++) {
|
||||
@@ -165,7 +165,7 @@
|
||||
console.log('ght 实例未捕获');
|
||||
return;
|
||||
}
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
var tank = list.g1(idx || 0);
|
||||
console.log('坦克[' + (idx || 0) + ']:', tank);
|
||||
console.log('字段:', Object.keys(tank));
|
||||
@@ -189,7 +189,7 @@
|
||||
window.__refreshGameMode__ = function() {
|
||||
if (window.__gameMode__) {
|
||||
try {
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
console.log('%c[刷新] ght 引用有效,坦克数:' + list.e1(), 'color:#0f0;font-weight:bold');
|
||||
return window.__gameMode__;
|
||||
} catch(e) {
|
||||
@@ -265,12 +265,12 @@
|
||||
// ===== 获取坦克位置(G$t 物理组件的 rzf_1 = O$向量) =====
|
||||
// 返回 {x, y, z},x/y 水平面,z 高度
|
||||
function GetTankPosition(tank) {
|
||||
var physicsComp = FindComponentByField(tank, 'gzh_1');
|
||||
if (physicsComp && physicsComp.gzh_1) {
|
||||
var physicsComp = FindComponentByField(tank, 'rzf_1');
|
||||
if (physicsComp && physicsComp.rzf_1) {
|
||||
return {
|
||||
x: physicsComp.gzh_1.f20_1,
|
||||
y: physicsComp.gzh_1.g20_1,
|
||||
z: physicsComp.gzh_1.h20_1
|
||||
x: physicsComp.rzf_1.f20_1,
|
||||
y: physicsComp.rzf_1.g20_1,
|
||||
z: physicsComp.rzf_1.h20_1
|
||||
};
|
||||
}
|
||||
return null;
|
||||
@@ -286,7 +286,7 @@
|
||||
if (tankComp) return;
|
||||
try {
|
||||
var comp = (valueList && typeof valueList.g1 === 'function') ? valueList.g1(0) : valueList;
|
||||
if (comp && comp.t101_1 && comp.k10c_1 !== undefined) tankComp = comp;
|
||||
if (comp && comp.p10c_1 && comp.k10c_1 !== undefined) tankComp = comp;
|
||||
} catch(e) {}
|
||||
});
|
||||
if (tankComp && tankComp.k10c_1) return tankComp.k10c_1.k3_1;
|
||||
@@ -340,10 +340,10 @@
|
||||
var MaxScore = typeof opt.maxScore === 'number' ? opt.maxScore : 8000;
|
||||
BotSet = new Set();
|
||||
var gm = window.__gameMode__;
|
||||
if (!gm || !gm.q100_1) return BotSet;
|
||||
if (!gm || !gm.m10b_1) return BotSet;
|
||||
var playerTank = GetPlayerTank(gm);
|
||||
var list, n;
|
||||
try { list = gm.q100_1.r11l(); n = list.e1(); } catch (e) { return BotSet; }
|
||||
try { list = gm.m10b_1.j11y(); n = list.e1(); } catch (e) { return BotSet; }
|
||||
var Groups = { ally: {}, enemy: {} }; // 组 → { 分数 → [坦克...] }
|
||||
for (var i = 0; i < n; i++) {
|
||||
var tank = list.g1(i);
|
||||
@@ -375,7 +375,7 @@
|
||||
t = gm.u10b_1;
|
||||
if (t && (!checkPosition || GetTankPosition(t))) return t;
|
||||
try {
|
||||
var tl = gm.q100_1.r11l();
|
||||
var tl = gm.m10b_1.j11y();
|
||||
if (tl.e1() > 0) {
|
||||
t = tl.g1(0);
|
||||
if (t && (!checkPosition || GetTankPosition(t))) return t;
|
||||
@@ -416,12 +416,12 @@
|
||||
function GetCameraInfo(gm) {
|
||||
var entities = [];
|
||||
try {
|
||||
var gameScene = gm.jyw().jz1_1;
|
||||
var gmEntity = gameScene.xyu("GameMode");
|
||||
var gameScene = gm.lz4().jz1_1;
|
||||
var gmEntity = gm.lz4();
|
||||
if (gmEntity) entities.push(gmEntity);
|
||||
} catch(e) {}
|
||||
try {
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var tCount = tankList.e1();
|
||||
for (var i = 0; i < tCount; i++) {
|
||||
var t = tankList.g1(i);
|
||||
@@ -477,7 +477,7 @@
|
||||
// g16x(startVec, dirVec, maxDist, resultObj, filterObj) = 全局射线检测
|
||||
function GetUMtComponent(gm) {
|
||||
try {
|
||||
var gmEntity = gm.jyw();
|
||||
var gmEntity = gm.lz4();
|
||||
if (!gmEntity || !gmEntity.qz1_1 || !gmEntity.qz1_1.s2a_1) return null;
|
||||
var uMt = null;
|
||||
gmEntity.qz1_1.s2a_1.forEach(function(valueList, key) {
|
||||
@@ -770,14 +770,14 @@
|
||||
|
||||
// 1. GameMode entity
|
||||
try {
|
||||
var gameScene = gm.jyw().jz1_1;
|
||||
var gmEntity = gameScene.xyu("GameMode");
|
||||
var gameScene = gm.lz4().jz1_1;
|
||||
var gmEntity = gm.lz4();
|
||||
if (gmEntity) entities.push(gmEntity);
|
||||
} catch(e) {}
|
||||
|
||||
// 2. 所有坦克列表中的 entity
|
||||
try {
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var tCount = tankList.e1();
|
||||
for (var i = 0; i < tCount; i++) {
|
||||
var t = tankList.g1(i);
|
||||
@@ -860,7 +860,7 @@
|
||||
function getUMtComponent() {
|
||||
if (UMtComponent) return UMtComponent;
|
||||
try {
|
||||
var gmEntity = gm.jyw();
|
||||
var gmEntity = gm.lz4();
|
||||
if (!gmEntity || !gmEntity.qz1_1 || !gmEntity.qz1_1.s2a_1) return null;
|
||||
gmEntity.qz1_1.s2a_1.forEach(function(valueList, key) {
|
||||
if (UMtComponent) return;
|
||||
@@ -1272,7 +1272,7 @@
|
||||
try {
|
||||
var tankList = null, count = 0;
|
||||
if (Ready) {
|
||||
tankList = gm.q100_1.r11l();
|
||||
tankList = gm.m10b_1.j11y();
|
||||
count = tankList.e1();
|
||||
}
|
||||
radar.tankCount = count;
|
||||
@@ -2288,11 +2288,11 @@
|
||||
console.log('[透视] 已挂补给实体观察钩子(金箱子)');
|
||||
}
|
||||
|
||||
// 金箱位置:优先物理组件(与坦克同款 gzh_1),否则退到 bonusData 里的节点世界矩阵/向量
|
||||
// 金箱位置:优先物理组件(与坦克同款 rzf_1),否则退到 bonusData 里的节点世界矩阵/向量
|
||||
function GetGoldBoxPosition(Entity) {
|
||||
var Phys = FindComponentByField(Entity, 'gzh_1');
|
||||
if (Phys && Phys.gzh_1) {
|
||||
return { x: Phys.gzh_1.f20_1, y: Phys.gzh_1.g20_1, z: Phys.gzh_1.h20_1 };
|
||||
var Phys = FindComponentByField(Entity, 'rzf_1');
|
||||
if (Phys && Phys.rzf_1) {
|
||||
return { x: Phys.rzf_1.f20_1, y: Phys.rzf_1.g20_1, z: Phys.rzf_1.h20_1 };
|
||||
}
|
||||
var Bonus = Entity.j10q_1;
|
||||
for (var K in Bonus) {
|
||||
@@ -2419,7 +2419,7 @@
|
||||
|
||||
UpdateCam(camInfo, screenW, screenH); // 每帧只算一次相机基(需在相机位置兜底之后),供顶点变换/投影复用
|
||||
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var count = tankList.e1();
|
||||
var drawnCount = 0, botDrawn = 0;
|
||||
|
||||
@@ -2434,16 +2434,16 @@
|
||||
if (!tank || tank === playerTank) continue;
|
||||
if (!EntityProtoHooked) InstallEntityHook(tank); // 借坦克实例找到实体基类原型,挂补给观察钩子
|
||||
|
||||
var physicsComp = FindComponentByField(tank, 'gzh_1');
|
||||
if (!physicsComp || !physicsComp.gzh_1) continue;
|
||||
var physicsComp = FindComponentByField(tank, 'rzf_1');
|
||||
if (!physicsComp || !physicsComp.rzf_1) continue;
|
||||
var tankState = GetTankState(tank);
|
||||
// 可见坦克 = ACTIVE(3) 或 SEMI_ACTIVE(2)(引擎 s14j() 判定),0/1/4 才跳过
|
||||
if (tankState !== 2 && tankState !== 3) continue;
|
||||
|
||||
var pos = {
|
||||
x: physicsComp.gzh_1.f20_1,
|
||||
y: physicsComp.gzh_1.g20_1,
|
||||
z: physicsComp.gzh_1.h20_1
|
||||
x: physicsComp.rzf_1.f20_1,
|
||||
y: physicsComp.rzf_1.g20_1,
|
||||
z: physicsComp.rzf_1.h20_1
|
||||
};
|
||||
|
||||
// 本帧该坦克是否在移动(供「残留节点」检测:坦克在动而节点矩阵不动 = 旧位置遗留)
|
||||
@@ -2736,7 +2736,7 @@
|
||||
var initError = null;
|
||||
|
||||
try {
|
||||
scene = gm.jyw().jz1_1;
|
||||
scene = gm.lz4().jz1_1;
|
||||
console.log('[后视] 场景对象:', scene);
|
||||
|
||||
// hC 渲染器实例(jr.lye_1)
|
||||
@@ -3134,7 +3134,7 @@
|
||||
|
||||
// ===== UI 标记绘制 =====
|
||||
function DrawUIMarkers(playerTank, playerPos, camInfo, viewMatrix) {
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var count = tankList.e1();
|
||||
debugInfo.tankCount = count;
|
||||
var visibleTanks = 0;
|
||||
@@ -3465,7 +3465,7 @@
|
||||
function GetUMtComponent() {
|
||||
if (UMtComponent) return UMtComponent;
|
||||
try {
|
||||
var gmEntity = gm.jyw();
|
||||
var gmEntity = gm.lz4();
|
||||
if (!gmEntity || !gmEntity.qz1_1 || !gmEntity.qz1_1.s2a_1) return null;
|
||||
gmEntity.qz1_1.s2a_1.forEach(function(valueList, key) {
|
||||
if (UMtComponent) return;
|
||||
@@ -3623,7 +3623,7 @@
|
||||
camInfo.pos = { x: playerPos.x, y: playerPos.y, z: playerPos.z + 100 };
|
||||
}
|
||||
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var count = tankList.e1();
|
||||
var threats = [];
|
||||
|
||||
@@ -4019,7 +4019,7 @@
|
||||
var initError = null;
|
||||
|
||||
try {
|
||||
scene = gm.jyw().jz1_1;
|
||||
scene = gm.lz4().jz1_1;
|
||||
mainCamera = scene.iyx_1;
|
||||
ff = scene.gyw_1.d75_1;
|
||||
if (!mainCamera || !mainCamera.u35_1 || !mainCamera.r35_1 || !mainCamera.o37) {
|
||||
@@ -4428,7 +4428,7 @@
|
||||
var scene = null, ff = null, rootNode = null, mainCamera = null, gl = null;
|
||||
var initError = null;
|
||||
try {
|
||||
scene = gm.jyw().jz1_1;
|
||||
scene = gm.lz4().jz1_1;
|
||||
ff = scene.gyw_1.d75_1;
|
||||
rootNode = scene.fyx_1;
|
||||
mainCamera = scene.iyx_1;
|
||||
@@ -4822,7 +4822,7 @@
|
||||
// 坦克标记
|
||||
var tanks = [];
|
||||
try {
|
||||
var list = gm.q100_1.r11l();
|
||||
var list = gm.m10b_1.j11y();
|
||||
var n = list.e1();
|
||||
for (var i = 0; i < n; i++) { var t = list.g1(i); if (t) tanks.push(t); }
|
||||
} catch(e) {}
|
||||
|
||||
+40
-40
@@ -55,7 +55,7 @@
|
||||
// 尝试获取坦克列表(失败也不影响 gameMode 设置)
|
||||
var tankCount = -1;
|
||||
try {
|
||||
var list = gm.q100_1.r11l();
|
||||
var list = gm.m10b_1.j11y();
|
||||
tankCount = list.e1();
|
||||
window.__tankList__ = list;
|
||||
} catch(e) {
|
||||
@@ -111,7 +111,7 @@
|
||||
if (window.__gameMode__) {
|
||||
// 验证当前引用是否有效
|
||||
try {
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
window.__tankList__ = list;
|
||||
} catch(e) {
|
||||
// 引用失效(新战斗/退出战斗),重置等待重新捕获
|
||||
@@ -150,7 +150,7 @@
|
||||
console.log('ght 实例未捕获,请等待');
|
||||
return;
|
||||
}
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
var count = list.e1();
|
||||
console.log('=== 坦克列表 (' + count + " 个) ===");
|
||||
for (var i = 0; i < count; i++) {
|
||||
@@ -165,7 +165,7 @@
|
||||
console.log('ght 实例未捕获');
|
||||
return;
|
||||
}
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
var tank = list.g1(idx || 0);
|
||||
console.log('坦克[' + (idx || 0) + ']:', tank);
|
||||
console.log('字段:', Object.keys(tank));
|
||||
@@ -189,7 +189,7 @@
|
||||
window.__refreshGameMode__ = function() {
|
||||
if (window.__gameMode__) {
|
||||
try {
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
console.log('%c[刷新] ght 引用有效,坦克数:' + list.e1(), 'color:#0f0;font-weight:bold');
|
||||
return window.__gameMode__;
|
||||
} catch(e) {
|
||||
@@ -265,12 +265,12 @@
|
||||
// ===== 获取坦克位置(G$t 物理组件的 rzf_1 = O$向量) =====
|
||||
// 返回 {x, y, z},x/y 水平面,z 高度
|
||||
function GetTankPosition(tank) {
|
||||
var physicsComp = FindComponentByField(tank, 'gzh_1');
|
||||
if (physicsComp && physicsComp.gzh_1) {
|
||||
var physicsComp = FindComponentByField(tank, 'rzf_1');
|
||||
if (physicsComp && physicsComp.rzf_1) {
|
||||
return {
|
||||
x: physicsComp.gzh_1.f20_1,
|
||||
y: physicsComp.gzh_1.g20_1,
|
||||
z: physicsComp.gzh_1.h20_1
|
||||
x: physicsComp.rzf_1.f20_1,
|
||||
y: physicsComp.rzf_1.g20_1,
|
||||
z: physicsComp.rzf_1.h20_1
|
||||
};
|
||||
}
|
||||
return null;
|
||||
@@ -286,7 +286,7 @@
|
||||
if (tankComp) return;
|
||||
try {
|
||||
var comp = (valueList && typeof valueList.g1 === 'function') ? valueList.g1(0) : valueList;
|
||||
if (comp && comp.t101_1 && comp.k10c_1 !== undefined) tankComp = comp;
|
||||
if (comp && comp.p10c_1 && comp.k10c_1 !== undefined) tankComp = comp;
|
||||
} catch(e) {}
|
||||
});
|
||||
if (tankComp && tankComp.k10c_1) return tankComp.k10c_1.k3_1;
|
||||
@@ -340,10 +340,10 @@
|
||||
var MaxScore = typeof opt.maxScore === 'number' ? opt.maxScore : 8000;
|
||||
BotSet = new Set();
|
||||
var gm = window.__gameMode__;
|
||||
if (!gm || !gm.q100_1) return BotSet;
|
||||
if (!gm || !gm.m10b_1) return BotSet;
|
||||
var playerTank = GetPlayerTank(gm);
|
||||
var list, n;
|
||||
try { list = gm.q100_1.r11l(); n = list.e1(); } catch (e) { return BotSet; }
|
||||
try { list = gm.m10b_1.j11y(); n = list.e1(); } catch (e) { return BotSet; }
|
||||
var Groups = { ally: {}, enemy: {} }; // 组 → { 分数 → [坦克...] }
|
||||
for (var i = 0; i < n; i++) {
|
||||
var tank = list.g1(i);
|
||||
@@ -375,7 +375,7 @@
|
||||
t = gm.u10b_1;
|
||||
if (t && (!checkPosition || GetTankPosition(t))) return t;
|
||||
try {
|
||||
var tl = gm.q100_1.r11l();
|
||||
var tl = gm.m10b_1.j11y();
|
||||
if (tl.e1() > 0) {
|
||||
t = tl.g1(0);
|
||||
if (t && (!checkPosition || GetTankPosition(t))) return t;
|
||||
@@ -416,12 +416,12 @@
|
||||
function GetCameraInfo(gm) {
|
||||
var entities = [];
|
||||
try {
|
||||
var gameScene = gm.jyw().jz1_1;
|
||||
var gmEntity = gameScene.xyu("GameMode");
|
||||
var gameScene = gm.lz4().jz1_1;
|
||||
var gmEntity = gm.lz4();
|
||||
if (gmEntity) entities.push(gmEntity);
|
||||
} catch(e) {}
|
||||
try {
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var tCount = tankList.e1();
|
||||
for (var i = 0; i < tCount; i++) {
|
||||
var t = tankList.g1(i);
|
||||
@@ -477,7 +477,7 @@
|
||||
// g16x(startVec, dirVec, maxDist, resultObj, filterObj) = 全局射线检测
|
||||
function GetUMtComponent(gm) {
|
||||
try {
|
||||
var gmEntity = gm.jyw();
|
||||
var gmEntity = gm.lz4();
|
||||
if (!gmEntity || !gmEntity.qz1_1 || !gmEntity.qz1_1.s2a_1) return null;
|
||||
var uMt = null;
|
||||
gmEntity.qz1_1.s2a_1.forEach(function(valueList, key) {
|
||||
@@ -770,14 +770,14 @@
|
||||
|
||||
// 1. GameMode entity
|
||||
try {
|
||||
var gameScene = gm.jyw().jz1_1;
|
||||
var gmEntity = gameScene.xyu("GameMode");
|
||||
var gameScene = gm.lz4().jz1_1;
|
||||
var gmEntity = gm.lz4();
|
||||
if (gmEntity) entities.push(gmEntity);
|
||||
} catch(e) {}
|
||||
|
||||
// 2. 所有坦克列表中的 entity
|
||||
try {
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var tCount = tankList.e1();
|
||||
for (var i = 0; i < tCount; i++) {
|
||||
var t = tankList.g1(i);
|
||||
@@ -860,7 +860,7 @@
|
||||
function getUMtComponent() {
|
||||
if (UMtComponent) return UMtComponent;
|
||||
try {
|
||||
var gmEntity = gm.jyw();
|
||||
var gmEntity = gm.lz4();
|
||||
if (!gmEntity || !gmEntity.qz1_1 || !gmEntity.qz1_1.s2a_1) return null;
|
||||
gmEntity.qz1_1.s2a_1.forEach(function(valueList, key) {
|
||||
if (UMtComponent) return;
|
||||
@@ -1272,7 +1272,7 @@
|
||||
try {
|
||||
var tankList = null, count = 0;
|
||||
if (Ready) {
|
||||
tankList = gm.q100_1.r11l();
|
||||
tankList = gm.m10b_1.j11y();
|
||||
count = tankList.e1();
|
||||
}
|
||||
radar.tankCount = count;
|
||||
@@ -2288,11 +2288,11 @@
|
||||
console.log('[透视] 已挂补给实体观察钩子(金箱子)');
|
||||
}
|
||||
|
||||
// 金箱位置:优先物理组件(与坦克同款 gzh_1),否则退到 bonusData 里的节点世界矩阵/向量
|
||||
// 金箱位置:优先物理组件(与坦克同款 rzf_1),否则退到 bonusData 里的节点世界矩阵/向量
|
||||
function GetGoldBoxPosition(Entity) {
|
||||
var Phys = FindComponentByField(Entity, 'gzh_1');
|
||||
if (Phys && Phys.gzh_1) {
|
||||
return { x: Phys.gzh_1.f20_1, y: Phys.gzh_1.g20_1, z: Phys.gzh_1.h20_1 };
|
||||
var Phys = FindComponentByField(Entity, 'rzf_1');
|
||||
if (Phys && Phys.rzf_1) {
|
||||
return { x: Phys.rzf_1.f20_1, y: Phys.rzf_1.g20_1, z: Phys.rzf_1.h20_1 };
|
||||
}
|
||||
var Bonus = Entity.j10q_1;
|
||||
for (var K in Bonus) {
|
||||
@@ -2419,7 +2419,7 @@
|
||||
|
||||
UpdateCam(camInfo, screenW, screenH); // 每帧只算一次相机基(需在相机位置兜底之后),供顶点变换/投影复用
|
||||
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var count = tankList.e1();
|
||||
var drawnCount = 0, botDrawn = 0;
|
||||
|
||||
@@ -2434,16 +2434,16 @@
|
||||
if (!tank || tank === playerTank) continue;
|
||||
if (!EntityProtoHooked) InstallEntityHook(tank); // 借坦克实例找到实体基类原型,挂补给观察钩子
|
||||
|
||||
var physicsComp = FindComponentByField(tank, 'gzh_1');
|
||||
if (!physicsComp || !physicsComp.gzh_1) continue;
|
||||
var physicsComp = FindComponentByField(tank, 'rzf_1');
|
||||
if (!physicsComp || !physicsComp.rzf_1) continue;
|
||||
var tankState = GetTankState(tank);
|
||||
// 可见坦克 = ACTIVE(3) 或 SEMI_ACTIVE(2)(引擎 s14j() 判定),0/1/4 才跳过
|
||||
if (tankState !== 2 && tankState !== 3) continue;
|
||||
|
||||
var pos = {
|
||||
x: physicsComp.gzh_1.f20_1,
|
||||
y: physicsComp.gzh_1.g20_1,
|
||||
z: physicsComp.gzh_1.h20_1
|
||||
x: physicsComp.rzf_1.f20_1,
|
||||
y: physicsComp.rzf_1.g20_1,
|
||||
z: physicsComp.rzf_1.h20_1
|
||||
};
|
||||
|
||||
// 本帧该坦克是否在移动(供「残留节点」检测:坦克在动而节点矩阵不动 = 旧位置遗留)
|
||||
@@ -2736,7 +2736,7 @@
|
||||
var initError = null;
|
||||
|
||||
try {
|
||||
scene = gm.jyw().jz1_1;
|
||||
scene = gm.lz4().jz1_1;
|
||||
console.log('[后视] 场景对象:', scene);
|
||||
|
||||
// hC 渲染器实例(jr.lye_1)
|
||||
@@ -3134,7 +3134,7 @@
|
||||
|
||||
// ===== UI 标记绘制 =====
|
||||
function DrawUIMarkers(playerTank, playerPos, camInfo, viewMatrix) {
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var count = tankList.e1();
|
||||
debugInfo.tankCount = count;
|
||||
var visibleTanks = 0;
|
||||
@@ -3465,7 +3465,7 @@
|
||||
function GetUMtComponent() {
|
||||
if (UMtComponent) return UMtComponent;
|
||||
try {
|
||||
var gmEntity = gm.jyw();
|
||||
var gmEntity = gm.lz4();
|
||||
if (!gmEntity || !gmEntity.qz1_1 || !gmEntity.qz1_1.s2a_1) return null;
|
||||
gmEntity.qz1_1.s2a_1.forEach(function(valueList, key) {
|
||||
if (UMtComponent) return;
|
||||
@@ -3623,7 +3623,7 @@
|
||||
camInfo.pos = { x: playerPos.x, y: playerPos.y, z: playerPos.z + 100 };
|
||||
}
|
||||
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var count = tankList.e1();
|
||||
var threats = [];
|
||||
|
||||
@@ -4019,7 +4019,7 @@
|
||||
var initError = null;
|
||||
|
||||
try {
|
||||
scene = gm.jyw().jz1_1;
|
||||
scene = gm.lz4().jz1_1;
|
||||
mainCamera = scene.iyx_1;
|
||||
ff = scene.gyw_1.d75_1;
|
||||
if (!mainCamera || !mainCamera.u35_1 || !mainCamera.r35_1 || !mainCamera.o37) {
|
||||
@@ -4428,7 +4428,7 @@
|
||||
var scene = null, ff = null, rootNode = null, mainCamera = null, gl = null;
|
||||
var initError = null;
|
||||
try {
|
||||
scene = gm.jyw().jz1_1;
|
||||
scene = gm.lz4().jz1_1;
|
||||
ff = scene.gyw_1.d75_1;
|
||||
rootNode = scene.fyx_1;
|
||||
mainCamera = scene.iyx_1;
|
||||
@@ -4822,7 +4822,7 @@
|
||||
// 坦克标记
|
||||
var tanks = [];
|
||||
try {
|
||||
var list = gm.q100_1.r11l();
|
||||
var list = gm.m10b_1.j11y();
|
||||
var n = list.e1();
|
||||
for (var i = 0; i < n; i++) { var t = list.g1(i); if (t) tanks.push(t); }
|
||||
} catch(e) {}
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
// 尝试获取坦克列表(失败也不影响 gameMode 设置)
|
||||
var tankCount = -1;
|
||||
try {
|
||||
var list = gm.q100_1.r11l();
|
||||
var list = gm.m10b_1.j11y();
|
||||
tankCount = list.e1();
|
||||
window.__tankList__ = list;
|
||||
} catch(e) {
|
||||
@@ -103,7 +103,7 @@
|
||||
if (window.__gameMode__) {
|
||||
// 验证当前引用是否有效
|
||||
try {
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
window.__tankList__ = list;
|
||||
} catch(e) {
|
||||
// 引用失效(新战斗/退出战斗),重置等待重新捕获
|
||||
@@ -142,7 +142,7 @@
|
||||
console.log('ght 实例未捕获,请等待');
|
||||
return;
|
||||
}
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
var count = list.e1();
|
||||
console.log('=== 坦克列表 (' + count + " 个) ===");
|
||||
for (var i = 0; i < count; i++) {
|
||||
@@ -157,7 +157,7 @@
|
||||
console.log('ght 实例未捕获');
|
||||
return;
|
||||
}
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
var tank = list.g1(idx || 0);
|
||||
console.log('坦克[' + (idx || 0) + ']:', tank);
|
||||
console.log('字段:', Object.keys(tank));
|
||||
@@ -181,7 +181,7 @@
|
||||
window.__refreshGameMode__ = function() {
|
||||
if (window.__gameMode__) {
|
||||
try {
|
||||
var list = window.__gameMode__.q100_1.r11l();
|
||||
var list = window.__gameMode__.m10b_1.j11y();
|
||||
console.log('%c[刷新] ght 引用有效,坦克数:' + list.e1(), 'color:#0f0;font-weight:bold');
|
||||
return window.__gameMode__;
|
||||
} catch(e) {
|
||||
|
||||
@@ -771,11 +771,11 @@
|
||||
console.log('[透视] 已挂补给实体观察钩子(金箱子)');
|
||||
}
|
||||
|
||||
// 金箱位置:优先物理组件(与坦克同款 gzh_1),否则退到 bonusData 里的节点世界矩阵/向量
|
||||
// 金箱位置:优先物理组件(与坦克同款 rzf_1),否则退到 bonusData 里的节点世界矩阵/向量
|
||||
function GetGoldBoxPosition(Entity) {
|
||||
var Phys = FindComponentByField(Entity, 'gzh_1');
|
||||
if (Phys && Phys.gzh_1) {
|
||||
return { x: Phys.gzh_1.f20_1, y: Phys.gzh_1.g20_1, z: Phys.gzh_1.h20_1 };
|
||||
var Phys = FindComponentByField(Entity, 'rzf_1');
|
||||
if (Phys && Phys.rzf_1) {
|
||||
return { x: Phys.rzf_1.f20_1, y: Phys.rzf_1.g20_1, z: Phys.rzf_1.h20_1 };
|
||||
}
|
||||
var Bonus = Entity.j10q_1;
|
||||
for (var K in Bonus) {
|
||||
@@ -902,7 +902,7 @@
|
||||
|
||||
UpdateCam(camInfo, screenW, screenH); // 每帧只算一次相机基(需在相机位置兜底之后),供顶点变换/投影复用
|
||||
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var count = tankList.e1();
|
||||
var drawnCount = 0, botDrawn = 0;
|
||||
|
||||
@@ -917,16 +917,16 @@
|
||||
if (!tank || tank === playerTank) continue;
|
||||
if (!EntityProtoHooked) InstallEntityHook(tank); // 借坦克实例找到实体基类原型,挂补给观察钩子
|
||||
|
||||
var physicsComp = FindComponentByField(tank, 'gzh_1');
|
||||
if (!physicsComp || !physicsComp.gzh_1) continue;
|
||||
var physicsComp = FindComponentByField(tank, 'rzf_1');
|
||||
if (!physicsComp || !physicsComp.rzf_1) continue;
|
||||
var tankState = GetTankState(tank);
|
||||
// 可见坦克 = ACTIVE(3) 或 SEMI_ACTIVE(2)(引擎 s14j() 判定),0/1/4 才跳过
|
||||
if (tankState !== 2 && tankState !== 3) continue;
|
||||
|
||||
var pos = {
|
||||
x: physicsComp.gzh_1.f20_1,
|
||||
y: physicsComp.gzh_1.g20_1,
|
||||
z: physicsComp.gzh_1.h20_1
|
||||
x: physicsComp.rzf_1.f20_1,
|
||||
y: physicsComp.rzf_1.g20_1,
|
||||
z: physicsComp.rzf_1.h20_1
|
||||
};
|
||||
|
||||
// 本帧该坦克是否在移动(供「残留节点」检测:坦克在动而节点矩阵不动 = 旧位置遗留)
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
function GetUMtComponent() {
|
||||
if (UMtComponent) return UMtComponent;
|
||||
try {
|
||||
var gmEntity = gm.jyw();
|
||||
var gmEntity = gm.lz4();
|
||||
if (!gmEntity || !gmEntity.qz1_1 || !gmEntity.qz1_1.s2a_1) return null;
|
||||
gmEntity.qz1_1.s2a_1.forEach(function(valueList, key) {
|
||||
if (UMtComponent) return;
|
||||
@@ -285,7 +285,7 @@
|
||||
camInfo.pos = { x: playerPos.x, y: playerPos.y, z: playerPos.z + 100 };
|
||||
}
|
||||
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var count = tankList.e1();
|
||||
var threats = [];
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
var initError = null;
|
||||
|
||||
try {
|
||||
scene = gm.jyw().jz1_1;
|
||||
scene = gm.lz4().jz1_1;
|
||||
mainCamera = scene.iyx_1;
|
||||
ff = scene.gyw_1.d75_1;
|
||||
if (!mainCamera || !mainCamera.u35_1 || !mainCamera.r35_1 || !mainCamera.o37) {
|
||||
|
||||
+13
-13
@@ -50,12 +50,12 @@
|
||||
// ===== 获取坦克位置(G$t 物理组件的 rzf_1 = O$向量) =====
|
||||
// 返回 {x, y, z},x/y 水平面,z 高度
|
||||
function GetTankPosition(tank) {
|
||||
var physicsComp = FindComponentByField(tank, 'gzh_1');
|
||||
if (physicsComp && physicsComp.gzh_1) {
|
||||
var physicsComp = FindComponentByField(tank, 'rzf_1');
|
||||
if (physicsComp && physicsComp.rzf_1) {
|
||||
return {
|
||||
x: physicsComp.gzh_1.f20_1,
|
||||
y: physicsComp.gzh_1.g20_1,
|
||||
z: physicsComp.gzh_1.h20_1
|
||||
x: physicsComp.rzf_1.f20_1,
|
||||
y: physicsComp.rzf_1.g20_1,
|
||||
z: physicsComp.rzf_1.h20_1
|
||||
};
|
||||
}
|
||||
return null;
|
||||
@@ -71,7 +71,7 @@
|
||||
if (tankComp) return;
|
||||
try {
|
||||
var comp = (valueList && typeof valueList.g1 === 'function') ? valueList.g1(0) : valueList;
|
||||
if (comp && comp.t101_1 && comp.k10c_1 !== undefined) tankComp = comp;
|
||||
if (comp && comp.p10c_1 && comp.k10c_1 !== undefined) tankComp = comp;
|
||||
} catch(e) {}
|
||||
});
|
||||
if (tankComp && tankComp.k10c_1) return tankComp.k10c_1.k3_1;
|
||||
@@ -125,10 +125,10 @@
|
||||
var MaxScore = typeof opt.maxScore === 'number' ? opt.maxScore : 8000;
|
||||
BotSet = new Set();
|
||||
var gm = window.__gameMode__;
|
||||
if (!gm || !gm.q100_1) return BotSet;
|
||||
if (!gm || !gm.m10b_1) return BotSet;
|
||||
var playerTank = GetPlayerTank(gm);
|
||||
var list, n;
|
||||
try { list = gm.q100_1.r11l(); n = list.e1(); } catch (e) { return BotSet; }
|
||||
try { list = gm.m10b_1.j11y(); n = list.e1(); } catch (e) { return BotSet; }
|
||||
var Groups = { ally: {}, enemy: {} }; // 组 → { 分数 → [坦克...] }
|
||||
for (var i = 0; i < n; i++) {
|
||||
var tank = list.g1(i);
|
||||
@@ -160,7 +160,7 @@
|
||||
t = gm.u10b_1;
|
||||
if (t && (!checkPosition || GetTankPosition(t))) return t;
|
||||
try {
|
||||
var tl = gm.q100_1.r11l();
|
||||
var tl = gm.m10b_1.j11y();
|
||||
if (tl.e1() > 0) {
|
||||
t = tl.g1(0);
|
||||
if (t && (!checkPosition || GetTankPosition(t))) return t;
|
||||
@@ -201,12 +201,12 @@
|
||||
function GetCameraInfo(gm) {
|
||||
var entities = [];
|
||||
try {
|
||||
var gameScene = gm.jyw().jz1_1;
|
||||
var gmEntity = gameScene.xyu("GameMode");
|
||||
var gameScene = gm.lz4().jz1_1;
|
||||
var gmEntity = gm.lz4();
|
||||
if (gmEntity) entities.push(gmEntity);
|
||||
} catch(e) {}
|
||||
try {
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var tCount = tankList.e1();
|
||||
for (var i = 0; i < tCount; i++) {
|
||||
var t = tankList.g1(i);
|
||||
@@ -262,7 +262,7 @@
|
||||
// g16x(startVec, dirVec, maxDist, resultObj, filterObj) = 全局射线检测
|
||||
function GetUMtComponent(gm) {
|
||||
try {
|
||||
var gmEntity = gm.jyw();
|
||||
var gmEntity = gm.lz4();
|
||||
if (!gmEntity || !gmEntity.qz1_1 || !gmEntity.qz1_1.s2a_1) return null;
|
||||
var uMt = null;
|
||||
gmEntity.qz1_1.s2a_1.forEach(function(valueList, key) {
|
||||
|
||||
@@ -56,14 +56,14 @@
|
||||
|
||||
// 1. GameMode entity
|
||||
try {
|
||||
var gameScene = gm.jyw().jz1_1;
|
||||
var gmEntity = gameScene.xyu("GameMode");
|
||||
var gameScene = gm.lz4().jz1_1;
|
||||
var gmEntity = gm.lz4();
|
||||
if (gmEntity) entities.push(gmEntity);
|
||||
} catch(e) {}
|
||||
|
||||
// 2. 所有坦克列表中的 entity
|
||||
try {
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var tCount = tankList.e1();
|
||||
for (var i = 0; i < tCount; i++) {
|
||||
var t = tankList.g1(i);
|
||||
@@ -146,7 +146,7 @@
|
||||
function getUMtComponent() {
|
||||
if (UMtComponent) return UMtComponent;
|
||||
try {
|
||||
var gmEntity = gm.jyw();
|
||||
var gmEntity = gm.lz4();
|
||||
if (!gmEntity || !gmEntity.qz1_1 || !gmEntity.qz1_1.s2a_1) return null;
|
||||
gmEntity.qz1_1.s2a_1.forEach(function(valueList, key) {
|
||||
if (UMtComponent) return;
|
||||
@@ -558,7 +558,7 @@
|
||||
try {
|
||||
var tankList = null, count = 0;
|
||||
if (Ready) {
|
||||
tankList = gm.q100_1.r11l();
|
||||
tankList = gm.m10b_1.j11y();
|
||||
count = tankList.e1();
|
||||
}
|
||||
radar.tankCount = count;
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
var initError = null;
|
||||
|
||||
try {
|
||||
scene = gm.jyw().jz1_1;
|
||||
scene = gm.lz4().jz1_1;
|
||||
console.log('[后视] 场景对象:', scene);
|
||||
|
||||
// hC 渲染器实例(jr.lye_1)
|
||||
@@ -479,7 +479,7 @@
|
||||
|
||||
// ===== UI 标记绘制 =====
|
||||
function DrawUIMarkers(playerTank, playerPos, camInfo, viewMatrix) {
|
||||
var tankList = gm.q100_1.r11l();
|
||||
var tankList = gm.m10b_1.j11y();
|
||||
var count = tankList.e1();
|
||||
debugInfo.tankCount = count;
|
||||
var visibleTanks = 0;
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
t = gm.t10b_1;
|
||||
if (t) return t;
|
||||
try {
|
||||
var tl = gm.q100_1.r11l();
|
||||
var tl = gm.m10b_1.j11y();
|
||||
if (tl.e1() > 0) return tl.g1(0);
|
||||
} catch(e) {}
|
||||
return null;
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
var scene = null, ff = null, rootNode = null, mainCamera = null, gl = null;
|
||||
var initError = null;
|
||||
try {
|
||||
scene = gm.jyw().jz1_1;
|
||||
scene = gm.lz4().jz1_1;
|
||||
ff = scene.gyw_1.d75_1;
|
||||
rootNode = scene.fyx_1;
|
||||
mainCamera = scene.iyx_1;
|
||||
@@ -481,7 +481,7 @@
|
||||
// 坦克标记
|
||||
var tanks = [];
|
||||
try {
|
||||
var list = gm.q100_1.r11l();
|
||||
var list = gm.m10b_1.j11y();
|
||||
var n = list.e1();
|
||||
for (var i = 0; i < n; i++) { var t = list.g1(i); if (t) tanks.push(t); }
|
||||
} catch(e) {}
|
||||
|
||||
Reference in new issue
Block a user