Skip to content

载具运输(RoRo: Road-vehicle on Road-vehicle) ​

来源:pulsexlb/OpenTTD-patches px-patch(2026-09 批次),经 git merge 并入 jrpm。

功能简介 ​

「载具运输」允许火车、轮船、飞机直接运载汽车:

  • 汽车不再只能自己跑在路上,而是可以「搭车」:由列车等载具运到远方后再下地自己行驶;
  • 载具(火车/轮船/飞机)通过**改装为「运输载具(汽车)」**获得运载汽车的能力(使用专属货物 VEHC,占用车厢载货空间);
  • 汽车端通过订单设置「等待被运载」「在此被卸下」,与承运端的「装载载具」「卸下载具」配对使用。

使用方式 ​

承运端(火车/轮船/飞机) ​

  1. 在车库对列车执行手动改装,目标货物选择「运输载具(汽车)」——改装为运输载具只能手动完成,调度计划改装不适用;
  2. 在车站订单上启用「装载载具」:列车在该站把等待的汽车装上车厢;
  3. 可选配对选项:
    • 「等待装载完成」(装满才发车);
    • 「路签/目的地匹配」:只装载声明的卸货站与列车下一站一致的汽车;
    • 「在此卸下全部载具」:无视汽车自己声明的卸货站,全部卸下。

汽车端 ​

  1. 在车站订单上设置「等待被运载」:汽车在该站停靠等待承运载具;
  2. 设置「在此被卸下」:汽车到站后从承运载具上开下来;
  3. 两个选项互斥(同一订单只能二选一);
  4. 汽车被卸下时会自动做一次寻路,选择最优站台下地。

细节与规则 ​

  • 专属货物槽:载具运输使用第 128 号货物(NUM_CARGO - 1),不占用 NewGRF 的 64 个货物槽;货物种类上限也从 64 扩展到 128;
  • 专用承运判定:载具整列都改装为「运输载具(汽车)」时,其订单按钮默认展示载具运输选项;混装普通货物的载具则默认普通货物;
  • 可运载部位设置:vehicle.rv_transport_carrier_parts 决定载具哪些部位能装汽车(任意部位 / 仅超大件部位 / 大宗+超大+载具货物);
  • 跨公司装卸:可选允许装卸其他公司的载具并自动结算费用;
  • 「被运载过久」提醒:汽车被运载时间过长会给出一次性警告;
  • 与调度计划兼容:玩家自建调度表(独立订单列表)同样支持载具运输订单位。

轮船还能运载整列火车(专属 RAIL 货物),这是 2026-10 批次新增的能力,详见「火车轮渡与雨天系统」。

存档兼容 ​

  • 汽车等待/被运载状态、订单上的载具运输标志均持久化;
  • 旧存档(无 XSLFI_CARGO_TYPES_128 标志)按 64 货物槽读取,自动兼容。

控制台调试命令(默认关闭) ​

rvtransport 系列命令(list/wait/orderflag/attach/detach/selftest 等)仅在 CMake 选项 RORO_DEBUG_COMMANDS=ON 时编译,供回归测试使用。

相关代码 ​

  • 核心:src/roadveh_transport.h、src/cargo_type.h(VEHC 货物)
  • 订单:src/order_cmd.cpp、src/order_gui.cpp、src/order_base.h(OrderExtraInfo)
  • 列车装卸:src/train_cmd.cpp、src/station_cmd.cpp
  • 货物扩展:src/sl/station_sl.cpp、src/sl/company_sl.cpp(XSLFI_CARGO_TYPES_128)