载具运输(RoRo: Road-vehicle on Road-vehicle)
来源:pulsexlb/OpenTTD-patches
px-patch(2026-09 批次),经 git merge 并入 jrpm。
功能简介
「载具运输」允许火车、轮船、飞机直接运载汽车:
- 汽车不再只能自己跑在路上,而是可以「搭车」:由列车等载具运到远方后再下地自己行驶;
- 载具(火车/轮船/飞机)通过**改装为「运输载具(汽车)」**获得运载汽车的能力(使用专属货物
VEHC,占用车厢载货空间); - 汽车端通过订单设置「等待被运载」「在此被卸下」,与承运端的「装载载具」「卸下载具」配对使用。
使用方式
承运端(火车/轮船/飞机)
- 在车库对列车执行手动改装,目标货物选择「运输载具(汽车)」——改装为运输载具只能手动完成,调度计划改装不适用;
- 在车站订单上启用「装载载具」:列车在该站把等待的汽车装上车厢;
- 可选配对选项:
- 「等待装载完成」(装满才发车);
- 「路签/目的地匹配」:只装载声明的卸货站与列车下一站一致的汽车;
- 「在此卸下全部载具」:无视汽车自己声明的卸货站,全部卸下。
汽车端
- 在车站订单上设置「等待被运载」:汽车在该站停靠等待承运载具;
- 设置「在此被卸下」:汽车到站后从承运载具上开下来;
- 两个选项互斥(同一订单只能二选一);
- 汽车被卸下时会自动做一次寻路,选择最优站台下地。
细节与规则
- 专属货物槽:载具运输使用第 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)