在资源包中声明
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_files 与 scriptLocations 都接受 命名空间:路径 形式。
省略命名空间时按 MTR 旧格式解析。