首页 / JS 脚本手册 / 在资源包中声明

在资源包中声明

RTE 支持两种声明格式:MTR 3.x 的 custom_trains 与 MTR 4 的 vehicleScripts。两者都从同一个文件读取。

扫描的文件

RTE 遍历所有已启用资源包,收集这两个文件名:

文件说明
mtr_custom_resources.json主文件
mtr_custom_resources_pending_migration.json待迁移文件,格式相同

放在 assets/<任意命名空间>/ 下即可,命名空间不限。

格式一 · MTR 3.x 风格

脚本直接挂在 custom_trains 的车辆条目上。

{
  "custom_trains": {
    "my_train": {
      "name": "我的列车",
      "base_train_type": "train_20_2",
      "engine": "rhino",
      "script_files": [
        "mypack:scripts/lib.js",
        "mypack:scripts/main.js"
      ]
    }
  }
}
字段类型说明
script_files字符串数组脚本资源路径,按数组顺序依次执行
script_texts字符串数组直接内嵌脚本源码,与 script_files 可共存
engine字符串rhino / graal / auto,缺省为 auto
执行顺序:script_texts 先于 script_files。 两者都按数组下标顺序执行,所以工具库放前面、主逻辑放后面。

格式二 · MTR 4 风格

脚本单独注册,车辆用 scriptId 引用。多辆车可共用同一份脚本。

{
  "vehicleScripts": [
    {
      "id": "pis_common",
      "scriptLocations": [
        "mypack:scripts/pis.js"
      ]
    }
  ],
  "vehicles": [
    { "id": "train_a", "scriptId": "pis_common" },
    { "id": "train_b", "scriptId": "pis_common" }
  ]
}

此格式没有 engine 字段,引擎完全由客户端配置 scriptEngine 决定。

引擎优先级

客户端 scriptEngine资源包 engine实际使用
auto已指定资源包指定的
auto未指定自动判定
rhino / graal任意客户端配置,资源包被忽略

换言之:客户端把 scriptEngine 设成具体引擎,就是全局强制。保持 auto 才会尊重资源包。

去重

同一个车辆 ID 只会被绑定一次。多个资源包声明同一 ID 时,先加载的生效,后来的跳过。

路径写法

script_filesscriptLocations 都接受 命名空间:路径 形式。 省略命名空间时按 MTR 旧格式解析。