Skip to content

调试器 API

调试器将核心对象暴露在 window.TankiDebug 下,供插件和外部脚本调用。

全局对象

window.TankiDebug

调试器的主对象,包含所有核心功能。

类型: object

示例:

javascript
// 在浏览器控制台中访问
console.log(TankiDebug);

配置相关

TankiDebug.config

当前完整的配置对象。

类型: object

结构:

javascript
{
  profiles: [           // 预设数组
    {
      id: string,       // 预设唯一标识
      name: string,     // 预设名称
      author: string,   // 作者
      enabled: boolean, // 是否启用
      targets: {        // 参数配置
        "类名.参数名": {
          val: string,  // 注入值
          active: boolean // 是否锁定
        }
      }
    }
  ],
  currentProfileId: string // 当前预设 ID
}

TankiDebug.getCurrentProfile()

获取当前正在编辑的预设。

返回值: object - 当前预设对象

示例:

javascript
const profile = TankiDebug.getCurrentProfile();
console.log(profile.name);

TankiDebug.getMergedTargets()

获取所有已启用预设的合并参数(冲突时后启用的覆盖)。

返回值: object - 合并后的参数配置

示例:

javascript
const targets = TankiDebug.getMergedTargets();
// {
//   "BattleUsers.ranks": { val: "[15,30,45]", active: true, profileId: "xxx" },
//   ...
// }

TankiDebug.saveConfig()

手动保存当前配置到本地存储。

返回值: void

说明: 一般情况下配置会自动保存,无需手动调用。


参数操作

TankiDebug.addTarget(cls, pName, obf)

添加参数到当前预设。

参数:

参数类型说明
clsstring类名(如 BattleUsers
pNamestring参数名(如 ranks
obfstring混淆名(可选,自动解析时可不传)

返回值: void

示例:

javascript
TankiDebug.addTarget('BattleUsers', 'ranks');

TankiDebug.removeTarget(targetKey)

从当前预设删除参数。

参数:

参数类型说明
targetKeystring参数完整路径(如 BattleUsers.ranks

返回值: void


TankiDebug.updateVal(targetKey, newVal)

更新参数的注入值。

参数:

参数类型说明
targetKeystring参数完整路径
newValstring新的注入值(字符串形式)

返回值: void

示例:

javascript
TankiDebug.updateVal('State.userTeam', 'TEAM_RED');

TankiDebug.toggleActive(targetKey)

切换参数的锁定状态(启用/禁用注入)。

参数:

参数类型说明
targetKeystring参数完整路径

返回值: void


UI 相关

TankiDebug.showAlert(msg)

显示提示弹窗。

参数:

参数类型说明
msgstring提示内容

返回值: void


TankiDebug.showConfirm(msg, onYes)

显示确认弹窗。

参数:

参数类型说明
msgstring确认内容
onYesfunction点击确定时的回调

返回值: void


TankiDebug.copyText(text, msg)

复制文本到剪贴板。

参数:

参数类型说明
textstring要复制的文本
msgstring成功提示(可选)

返回值: void


数据解析

TankiDebug.serializeValue(val)

将任意值序列化为字符串(用于导出/复制)。

参数:

参数类型说明
valany要序列化的值

返回值: string - 序列化后的字符串

示例:

javascript
const str = TankiDebug.serializeValue({ x: 100, y: 200 });
// "{\n  \"x\": 100,\n  \"y\": 200\n}"

TankiDebug.deepInspect(obj, depth, maxDepth, seen, maxKeys)

深度检查对象并生成 HTML 高亮字符串。

参数:

参数类型默认值说明
objany-要检查的对象
depthnumber0当前深度
maxDepthnumber5最大深度
seenWeakSetnew WeakSet()循环引用检测
maxKeysnumber50最大键数量

返回值: string - HTML 字符串


TankiDebug.translateObjToReal(obj, cache)

递归翻译对象,将混淆键名转换为真实名。

参数:

参数类型说明
objany要翻译的对象
cacheSet循环引用缓存(可选)

返回值: any - 翻译后的新对象


内核探针

TankiDebug.kernel

内核探针模块,详见 内核探针 API

示例:

javascript
// 打开探针面板
TankiDebug.kernel.openInspector();

// 获取坦克数据
const pos = TankiDebug.kernel.getPosition();

插件系统

TankiDebug.registerPlugin(meta, impl)

注册插件。

参数:

参数类型说明
metaobject插件元数据
implobject插件实现(含 onLoadonUnload

meta 结构:

javascript
{
  id: string,       // 唯一标识
  name: string,     // 显示名称
  version: string,  // 版本号
  author: string,   // 作者
  description: string // 描述
}

返回值: void

详见 插件开发


TankiDebug.getApi(pluginId)

获取插件 API 实例。

参数:

参数类型说明
pluginIdstring插件 ID

返回值: object - API 对象

API 对象结构:

javascript
{
  log: (msg, type) => void,
  showToast: (msg) => void,
  getKernel: () => object,
  addButton: (config) => void
}

其他

TankiDebug.version

调试器版本号(从 @version 读取)。

类型: string


TankiDebug.generateId()

生成随机 ID。

返回值: string - 9 位随机字符串


TankiDebug.obfToRealMap

混淆名到真实名的映射表。

类型: object

示例:

javascript
// 输入混淆名,得到真实名
const realName = TankiDebug.obfToRealMap['Z_1a2b3c'];
// "ranks"

TankiDebug.realToObfMap

真实名到混淆名的映射表。

类型: object

示例:

javascript
// 输入真实名,得到混淆名
const obfName = TankiDebug.realToObfMap['ranks'];
// "Z_1a2b3c"

事件

TankiDebugReady

当调试器加载完成并准备好接受插件注册时触发。

示例:

javascript
window.addEventListener('TankiDebugReady', () => {
  TankiDebug.registerPlugin(meta, impl);
});

使用示例

示例1:添加并锁定参数

javascript
const key = 'State.userTeam';
TankiDebug.addTarget('State', 'userTeam');
TankiDebug.updateVal(key, 'TEAM_RED');
TankiDebug.toggleActive(key);

示例2:监听参数变化

javascript
// 通过 runtimeDebugs 获取运行时数据
const rt = Object.values(TankiDebug.runtimeDebugs).find(r => r.key === 'BattleUsers.ranks');
if (rt) {
  console.log('当前值:', rt.origVal);
  console.log('历史记录:', rt.origValues);
}

示例3:导出全部配置

javascript
const config = JSON.stringify(TankiDebug.config, null, 2);
TankiDebug.copyText(config, '配置已复制');

内部技术交流 · 禁止外传