Files
TankIC/3dtank.com/play/static/js/main.b7114b43.js
T
2026-07-28 01:16:15 +08:00

267 lines
10 KiB
JavaScript

console.log("如果你能看到这个声明,证明你正在使用本地版本进行实验");
// ===== WebSocket 捕获钩子 (注入在游戏加载前) =====
/*(function() {
if (window.__ws_hooked__)
return;
window.__ws_hooked__ = true;
window.__ws_capture__ = [];
function toHex(b) {
var bytes = new Uint8Array(b);
var h = [];
for (var i = 0; i < bytes.length; i += 16) {
var c = bytes.slice(i, Math.min(i + 16, bytes.length));
var hp = Array.from(c).map(function(b) {
return b.toString(16).padStart(2, '0')
}).join(' ');
var ap = Array.from(c).map(function(b) {
return (b >= 32 && b < 127) ? String.fromCharCode(b) : '.'
}).join('');
h.push(i.toString(16).padStart(8, '0') + ' ' + hp.padEnd(48) + ' ' + ap)
}
return h.join('\n')
}
function toAB(d) {
if (d instanceof ArrayBuffer)
return d;
if (ArrayBuffer.isView(d))
return d.buffer.slice(d.byteOffset, d.byteOffset + d.byteLength);
if (typeof d === 'string')
return new TextEncoder().encode(d).buffer;
return d
}
var OW = window.WebSocket;
function HW(url, p) {
var ws = p ? new OW(url,p) : new OW(url);
var id = window.__ws_capture__.length;
var info = {
id: id,
url: url,
openTime: null,
messages: []
};
window.__ws_capture__.push(info);
var os = ws.send.bind(ws);
ws.send = function(d) {
var ab = toAB(d);
info.messages.push({
dir: 'send',
t: Date.now(),
sz: ab.byteLength,
hx: toHex(ab),
buf: ab
});
console.log('[WS#' + id + '] >>> ' + ab.byteLength + 'B:\n' + toHex(ab));
return os(d)
}
;
var oom = null;
Object.defineProperty(ws, 'onmessage', {
get: function() {
return oom
},
set: function(fn) {
oom = fn;
ws.addEventListener('message', function(e) {
var ab = toAB(e.data);
info.messages.push({
dir: 'recv',
t: Date.now(),
sz: ab.byteLength,
hx: toHex(ab),
buf: ab
});
console.log('[WS#' + id + '] <<< ' + ab.byteLength + 'B:\n' + toHex(ab))
})
}
});
ws.addEventListener('open', function() {
info.openTime = Date.now();
console.log('[WS#' + id + '] 已连接')
});
ws.addEventListener('close', function(e) {
console.log('[WS#' + id + '] 关闭 code=' + e.code)
});
ws.addEventListener('error', function(e) {
console.log('[WS#' + id + '] 错误', e)
});
return ws
}
HW.CONNECTING = OW.CONNECTING;
HW.OPEN = OW.OPEN;
HW.CLOSING = OW.CLOSING;
HW.CLOSED = OW.CLOSED;
HW.prototype = OW.prototype;
window.WebSocket = HW;
window.__dl_ws = function() {
var d = window.__ws_capture__.map(function(w) {
return {
id: w.id,
url: w.url,
t: w.openTime,
m: w.messages.map(function(m) {
var b = new Uint8Array(m.buf);
var s = '';
for (var i = 0; i < b.length; i++)
s += String.fromCharCode(b[i]);
return {
d: m.dir,
t: m.t,
s: m.sz,
h: m.hx,
b: btoa(s)
}
})
}
});
var bl = new Blob([JSON.stringify(d, null, 2)],{
type: 'application/json'
});
var u = URL.createObjectURL(bl);
var a = document.createElement('a');
a.href = u;
a.download = 'ws_capture_' + Date.now() + '.json';
a.click();
URL.revokeObjectURL(u);
console.log('[WS] 已下载 ' + d.length + ' 个连接')
}
;
console.log('[WS Hook] 已加载,用 __dl_ws() 下载')
})();*/
var __script_base_url__ = (typeof document !== "undefined" && document.currentScript && document.currentScript.src) ? document.currentScript.src.replace(/[^\/]+$/, "") : "./";
!function(t, n) {
"object" == typeof exports && "object" == typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define([], n) : "object" == typeof exports ? exports.Launcher = n() : t.Launcher = n()
}(globalThis, async () => {
// ===== 切割版模块加载器 =====
window.__modules__ = {};
console.log("加载决定");
console.log(window.__modules__);
const __base_url__ = window.__script_base_url__ || './';
// 6.1 加载资源模块 (从 resources.json 批量注册)
const __resource_resp__ = await fetch(__base_url__ + 'unpacked/resources.json');
if (!__resource_resp__.ok)
throw new Error('resources.json load failed: HTTP ' + __resource_resp__.status);
const __resource_data__ = await __resource_resp__.json();
const __resource_map__ = __resource_data__.resourceMap;
for (const __id__ in __resource_map__) {
if (!Object.prototype.hasOwnProperty.call(__resource_map__, __id__))
continue;
const __path__ = __resource_map__[__id__];
const __id_num__ = Number(__id__);
window.__modules__[__id_num__] = (function(__p__) {
return (t, n, i) => {
"use strict";
t.exports = i.p + __p__;
}
;
}
)(__path__);
}
// 6.2 加载代码模块 (fetch + eval 独立文件)
const __code_ids__ = [806, 905, 1510, 1901, 3535, 3569, 7426, 7552, 7793, 9345, 9539, 9963, 10032, 10283, 10849, 12218, 13431, 13532, 13754, 14766, 15152, 15330, 15831, 16100, 17259, 17323, 18334, 19074, 19487, 21300, 21973, 24635, 24923, 25377, 26482, 27736, 28485, 29518, 29545, 29554, 30285, 31509, 31584, 31620, 31908, 32088, 36659, 36734, 37036, 37504, 38335, 40293, 41164, 42920, 43319, 44740, 44794, 45555, 45686, 47243, 48576, 50824, 51233, 51400, 51887, 52943, 54199, 55088, 55520, 55920, 56077, 57128, 57328, 58309, 59131, 59411, 60273, 60824, 61378, 61430, 61860, 63383, 64280, 64477, 65201, 66610, 67222, 69682, 70130, 70298, 71105, 71426, 72834, 73932, 74897, 75453, 76074, 77249, 77672, 78231, 78931, 79763, 80397, 80693, 81886, 82347, 84441, 85183, 85196, 85667, 85745, 87072, 88693, 89613, 89679, 89803, 90225, 90875, 92980, 94090, 94965, 96480, 97556, 97675, 99295, 99527];
await Promise.all(__code_ids__.map(async (__id__) => {
const __padded__ = typeof __id__ === 'number' ? String(__id__).padStart(5, '0') : __id__;
const __url__ = __base_url__ + 'unpacked/module_' + __padded__ + '.js';
const __resp__ = await fetch(__url__);
if (!__resp__.ok)
throw new Error('Module ' + __id__ + ' load failed: HTTP ' + __resp__.status + ' @ ' + __url__);
const __code__ = await __resp__.text();
(0,
eval)(__code__);
}
));
console.log(window.__modules__);
var __webpack_modules__ = window.__modules__;
// ===== 原 webpack runtime (一字未改) =====
;var __webpack_module_cache__ = {};
function __webpack_require__(t) {
var n = __webpack_module_cache__[t];
if (void 0 !== n)
return n.exports;
var i = __webpack_module_cache__[t] = {
id: t,
loaded: !1,
exports: {}
};
return __webpack_modules__[t].call(i.exports, i, i.exports, __webpack_require__),
i.loaded = !0,
i.exports
}
// ===== __webpack_require__ 由 module_13431.js 内部捕获到 window.__wp_require__ =====
__webpack_require__.n = t => {
var n = t && t.__esModule ? () => t.default : () => t;
return __webpack_require__.d(n, {
a: n
}),
n
}
,
__webpack_require__.d = (t, n) => {
for (var i in n)
__webpack_require__.o(n, i) && !__webpack_require__.o(t, i) && Object.defineProperty(t, i, {
enumerable: !0,
get: n[i]
})
}
,
__webpack_require__.g = function() {
if ("object" == typeof globalThis)
return globalThis;
try {
return this || new Function("return this")()
} catch (t) {
if ("object" == typeof window)
return window
}
}(),
__webpack_require__.hmd = t => ((t = Object.create(t)).children || (t.children = []),
Object.defineProperty(t, "exports", {
enumerable: !0,
set: () => {
throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: " + t.id)
}
}),
t),
__webpack_require__.o = (t, n) => Object.prototype.hasOwnProperty.call(t, n),
__webpack_require__.r = t => {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
value: "Module"
}),
Object.defineProperty(t, "__esModule", {
value: !0
})
}
,
__webpack_require__.p = "/play/",
__webpack_require__(76074),
__webpack_require__(13431),
__webpack_require__(26482);
var __webpack_exports__ = __webpack_require__(78231);
// ===== 最后加载 hornet_bundle (自定义工具) =====
try {
const __hornet_url__ = __base_url__ + 'unpacked/hornet_bundle.js';
const __hornet_resp__ = await fetch(__hornet_url__);
if (__hornet_resp__.ok) {
const __hornet_code__ = await __hornet_resp__.text();
(0, eval)(__hornet_code__);
console.log('[Hornet] bundle 已加载');
} else {
console.warn('[Hornet] bundle 加载失败: HTTP ' + __hornet_resp__.status);
}
} catch(__hornet_err__) {
console.error('[Hornet] bundle 加载异常:', __hornet_err__);
}
return __webpack_exports__;
}
)
//# sourceMappingURL=main.b7114b43.js.map