特点
- 允许使用NPC导体实现列车自动化
- 允许放置触发器以指示导体如何导航
- 允许放置生成点,从而生成带有可选火车货车的工作车
- 允许禁用默认的地下workcart生成点
- 允许配置自动列车引擎力和速度
- 允许自动列车向附近的玩家鸣喇叭
- 地下隧道的可选默认触发器
- 自动列车和站点的可选地图标记
- 用于创建插件的API
导言
这个插件的主要功能是将 “触发器” 添加到火车轨道上。触发器是一种不可见的物体,它可以检测火车何时与其接触,以便执行各种功能,包括以下功能。- 给火车增加一名售票员
- 更改列车的速度、方向和轨道选择
- 在可配置的时间段内暂时停止列车
- 运行自定义服务器命令
- 摧毁火车
触发器还可以用作工作车的生成点,并带有可选数量的附加货车和工作车。
导体如何工作
自动驾驶火车将为连接到该火车的每个工作台添加一个导体NPC,自动卸下当前驾驶它们的任何玩家。- 导体是无敌的
- 作为自动列车一部分的所有工作车和货车都是无敌的
- 自动工作车不需要燃料
- 自动列车不能与其他列车耦合,也不能解耦
触发器如何工作
每个触发器可以具有多个属性,包括方向 (例如,Fwd,Rev,Invert) 、速度 (例如,Hi,Med,Lo,Zero) 、曲目选择 (例如,Default,Left,Right),停止持续时间 (以秒为单位) 以及出发速度/方向。当导体驱动的列车接触触发器时,其指令可以根据触发器属性而改变。例如,如果火车当前正在遵循说明Fwd,Hi,Left,然后触摸仅指定轨道选择的触发器Right,列车指令将更改为Fwd,Hi,Right,导致火车在它到达的每个十字路口右转,直到它碰到一个指示其他情况的触发器。触发器的类型
映射特定触发器
- 可以放置在火车轨道上的任何地方,地上或地下。
- 仅适用于使用世界坐标放置它们的地图。
- 通过启用Enable map triggers配置选项。
- 添加了aw.addtrigger或awt.add命令。
- 保存在数据文件中:oxide/data/AutomatedWorkcarts/MAP_NAME.json。
- 注意: 非程序映射的文件名将排除擦除编号,以便您可以在强制擦除中重复使用触发器。
隧道触发器
- 只能放置在香草火车隧道中。
- 使用隧道相对坐标在相同类型的所有隧道处自动复制。
- 通过启用Enable tunnel triggers->*选项。
- 添加了aw.addtunneltrigger或awt.addt命令。
- 保存在数据文件中oxide/data/AutomatedWorkcarts/TunnelTriggers.json。
教程
教程: 自动化所有地下工作车
该插件提供默认触发器,您可以为地下隧道启用。此设置只需几分钟。- 设置Enable tunnel triggers->TrainStation至true在插件配置中。
- 设置Enable tunnel triggers->VerticalIntersection至true在插件配置中。
- 重新加载插件。
从地图的角度来看,每个workcart将围绕相邻的循环以逆时针方向移动,或者围绕地图的外边缘以顺时针方向移动,根据workcart在哪个维护隧道中生成以及附近可用的循环。这种组合将覆盖大多数地图,允许玩家通过在各个站点切换方向来几乎去任何地方。
要直观地查看触发器,请授予automatedworkcarts.managetriggers权限并运行awt.show命令。60秒,这将显示附近隧道的触发器。从这里,您可以根据自己的喜好添加、更新、移动和删除触发器。有关如何管理触发器,请参阅命令部分。
下面的屏幕截图描述了一个具有以下属性的配置,火车刚刚产生了片刻。
- 启用所有默认隧道触发器
- 自动售货机和彩色地图标记启用火车,使用动态路线颜色
- 使用动态路线颜色为火车站启用彩色地图标记

教程: 自动化地上工作车
注意: 这些说明最初是为自定义地图编写的,可能不适合程序生成的地上轨道,因为火车会随机产生。相反,请参见下面的部分或创建繁殖点。- 如果您是地图开发人员,请参阅下面的 “地图开发人员提示” 部分。合理地设计轨道将简化自动路线的设置。
- 仔细检查地图上的轨道,以确定您希望使用的路线。
- 授予自己automatedworkcarts.managetriggers许可。
- 找到一个火车产卵的位置,你想火车自动接收导体。
- 瞄准轨道并运行命令awt.add Conductor Fwd Hi。在此触发器上产生的任何火车都将自动接收售票员,并以最大速度开始向前行驶。
- 找到您希望自动工作车短暂停止的轨道部分。
- 瞄准轨道并运行命令awt.add Brake Zero 15 Hi。任何通过此触发器的火车都会刹车,直到停止,等待15秒,然后开始移动相同的方向Hi速度。
- 继续添加/编辑触发器并生成workcarts以优化路线。
教程: 创建繁殖点
可以通过生成触发器生成Workcarts。以下步骤将引导您通过一个示例开始。- 授予自己automatedworkcarts.managetriggers许可。
- 瞄准火车轨道上的某个地方,然后运行命令awt.add Workcart(或awt.addt Workcart对于隧道相对触发器)。workcart应该立即在那里产卵 (如果有足够的空间),但不会有导体。
- 如果workcart面向错误的方向,则瞄准触发器,同时大致面向您希望workcart面向的方向,然后运行awt.rotate。
- 要移动生成点,请瞄准要将其移动到的位置,然后运行awt.move <id>,在哪里<id>应替换为触发器id,您可以在触发器上方看到浮动 (它将有一个#)。
- 要将货车添加到生成点,请瞄准触发器并运行命令awt.train Workcart WagonA WagonB WagonC Workcart。此示例命令将添加多个货车,最后还有一个额外的工作车。您可以根据需要以任何顺序添加任意数量的货车和工作车,只要在轨道上有足够的空间即可。
- 如果要在火车上添加售票员,请瞄准触发器并运行awt.update Conductor Fwd Hi然后awt.respawn。
许可
此插件使用权限系统。要分配权限,请使用oxide.grant <user or group> <name or steam id> <permission>。要删除权限,请使用oxide.revoke <user or group> <name or steam id> <permission>。- automatedworkcarts.toggle-- 允许使用aw.toggle和aw.resetall命令。
- automatedworkcarts.managetriggers-允许查看,添加,更新和删除触发器。
命令
此插件使用相同的语法提供聊天和控制台命令。在聊天中使用命令时,请在其前面加上正斜杠: “/”。切换单个工作推车的自动化
- aw.toggle @<optional_route_name>-切换您正在查看的火车的自动化。
- 如果指定了路线名称,则列车将响应全局触发器 (即,未指定路线的触发器) 和分配给该路线的触发器。列车将忽略分配给其他路线的触发器。
- 如果路由名称为不指定,列车将仅响应全局触发器。
- 火车将根据DefaultSpeed和Default track selection在插件配置中。
- aw.resetall-将所有自动列车重置为正常。这将移除所有导体。例外:由导体触发器产生的火车将保留其导体。
管理触发器
- aw.showtriggers @<optional_route_name> <optional_duration_in_seconds>(别名:awt.show) -- 向玩家显示指定持续时间的所有附近触发器。默认为60秒。
- 这将显示每个触发器的id、速度、方向等。
- 当使用任何其他触发命令或手动自动化workcart时,触发也会自动显示至少60秒。
- 指定路由名称时,全局触发器和匹配该路由的触发器将以其默认颜色显示,但不同路由的触发器将显示为灰色。
- aw.addtrigger <option1> <option2> ...(别名:awt.add) -- 将触发器添加到您瞄准的轨道位置,并带有指定的选项。通过触发器的自动列车将受到触发器选项的影响。
- 速度选项:Hi|Med|Lo|Zero。
- 方向选项:Fwd|Rev|Invert。
- 轨道选择选项
efault|Left|Right|Swap。
- 火车车厢选项:Locomotive|Sedan|Workcart|WorkcartCovered|WagonA|WagonB|WagonC|WagonFuel|WagonLoot|WagonResource|Caboose
- 其他选项:
- Conductor-如果不存在,则将导体添加到火车上。一个放置的好地方Conductor触发器位于workcart产卵位置,例如地下维护隧道中的香草产卵。此选项也可以与火车车厢选项结合使用,以自动生成自动火车。
- 注意: 玩家拥有的火车不能接收导体。香草列车没有所有者,但大多数为玩家生成车辆的插件将通过设置OwnerID车辆的属性。
- Brake-- 指示列车制动,直至达到指定速度。例如,如果火车正在Fwd_Hi并进入一个Brake Med触发,它会暂时去Rev_Lo直到它足够慢下来,然后它会去Fwd_Med。
- Destroy-摧毁火车。这主要用于测试和演示,但如果您不想费心进行更周到的轨道设计,它也很有用。
- @<route_name>-- 如果未分配此路线,则指示列车忽略此触发器 (替换<route_name>用你想要的名字)。
- 如果触发器具有Conductor属性和火车还没有售票员,它将被分配这条路线。
- <chance>%-使触发器只有百分之一的机会影响火车。不影响列车接收售票员的机会。
- Enabled-- 启用触发器。
- Disabled-- 禁用触发器。禁用的触发器被火车忽略,颜色为灰色。
- Conductor-如果不存在,则将导体添加到火车上。一个放置的好地方Conductor触发器位于workcart产卵位置,例如地下维护隧道中的香草产卵。此选项也可以与火车车厢选项结合使用,以自动生成自动火车。
- aw.addtrunneltrigger <option1> <option2>(别名:awt.addt) -- 在您瞄准的轨道位置添加触发器。
- 选项与相同aw.addtrigger。
- 必须在支持的火车隧道中 (在插件配置中启用)。
- 该触发将在相同类型的所有列车隧道处被复制。编辑或删除其中一个触发器将影响所有触发器。
- aw.updatetrigger <id> <option1> <option2> ...(别名:awt.update) -- 添加或更新指定触发器的属性,而不删除任何属性。
- 选项与相同aw.addtrigger。
- aw.replacetrigger <id> <option1> <option2> ...(别名:awt.replace) -- 用指定的属性替换指定触发器的所有属性。
- 选项与相同aw.addtrigger。
- 这对于从触发器中删除属性 (无需删除并添加它) 很有用,因为aw.updatetrigger不删除属性。
- aw.movetrigger <id>(别名:awt.move) -- 将指定的触发器移动到玩家瞄准的轨道位置。
- aw.rotatetrigger <id>(别名:awt.rotate) -- 将指定的触发器旋转到玩家面对的位置。这仅对生成触发器有用,因为它确定了生成时火车将面对的方式。如果旋转已反转,此命令将自动重新生成火车。
- aw.removetrigger <id>(别名:awt.remove) -- 删除指定的触发器。
- aw.enabletrigger <id>(别名:awt.enable) -- 启用指定的触发器。这与aw.updatetrigger <id> enabled。
- aw.disabletrigger <id>(别名:awt.disable) -- 禁用指定的触发器。这与aw.updatetrigger <id> disabled。禁用的触发器被火车忽略,颜色为灰色。
- aw.settriggertrain <id> <wagon1> <wagon2> ...(别名:awt.train) -- 将零个或多个火车车厢分配给触发器,替换当前的火车车厢列表,导致此触发器自动生成具有指定工作车和货车的火车,按顺序连接。货车将自动连接到工作车。允许值:Locomotive,Sedan,Workcart,WorkcartCovered,WagonA,WagonB,WagonC,WagonFuel,WagonLoot,WagonResource,Caboose。要删除所有火车车厢,请在不指定任何火车车厢的情况下运行命令。
- aw.respawntrigger <id>(别名:awt.respawn) -- Despawns和respawns指定的触发器的火车。在隧道触发器处使用时,列车将在隧道触发器的所有实例处被重新生成。
- aw.addtriggercommand <id> <command>(别名:awt.addcmd) -- 将指定的命令添加到触发器。每当火车通过触发器时都会执行。您可以使用魔术变量$id在将由主workcart的网络ID替换的命令中。
- aw.removetriggercommand <id> <number>(别名:awt.removecmd) -- 从触发器中删除指定的命令。命令编号为1、2、3等,并且在使用aw.showtriggers。
命令示例
简单的例子:- awt.add Lo-使火车在其电流方向在Lo速度。示例:Fwd_Hi->Fwd_Lo。
- awt.add Fwd Lo-使火车移动前进在Lo速度,不管它的当前方向。示例:Rev_Hi->Fwd_Lo。
- awt.add Invert-导致火车反方向在其当前速度。示例:Fwd_Med->Rev_Med。
- awt.add Invert Med-导致火车反方向在Med速度。示例:Fwd_Hi->Rev_Med。
- awt.add Brake Med-导致火车制动器直到它到达Med速度。示例:Fwd_Hi->Rev_Lo->Fwd_Med。
- awt.add Left-使火车转弯左在所有未来的十字路口。
- awt.add Conductor Fwd Hi Left-- 使列车自动接收导体,移动前进在Hi速度,并始终转向左。
- awt.add Brake Zero 10 Hi-导致火车制动器到a停止,等待10秒,然后移动Hi速度在同一方向。
- awt.add Zero 20 Med-导致火车关闭它的引擎为20秒 (缓慢滚动到停止),然后移动同一方向在Med速度。
- awt.add @Route1 Conductor Fwd Hi Left-- 使列车自动接收导体,移动前进在Hi速度,总是转左,并向忽略分配给其他路由的触发器(即,未命名的路线Route1)。
- awt.add @Route1 Left-使火车转弯左在所有未来的十字路口,仅如果火车被分配了Route1路线。
- awt.update 60-- 将触发器的停止持续时间更新为60秒。
- awt.update Left-- 将触发器的曲目选择更新为Left。
- awt.update Fwd Hi-将触发器的方向更新为Fwd,并将速度提高到Hi。
- awt.update @Route2-- 将触发器的路由更新为Route2。
- awt.update 60 Left Fwd Hi @Route2-- 一次将上述所有更新应用于触发器。
- awt.add Workcart-- 创建一个触发器,将产生一个workcart。
- awt.train Workcart WagonA WagonB-更新触发器以生成一个workcartWagonA和一个WagonB马车耦合在它后面。
- awt.train Workcart WagonC WagonC-更新触发器以生成具有两个的workcartWagonC后面有货车。
- awt.train Workcart Workcart-- 更新触发器以生成两个耦合在一起的workcarts。
- awt.train Locomotive Workcart WagonA WagonB WagonC WagonFuel WagonLoot WagonResource Caboose WorkcartCovered-更新触发器以生成一列火车,并在其后面耦合所有可能的火车车厢类型。
- awt.add Conductor Brake Zero 10 Fwd Hi Left Workcart WagonA WagonB-创建一个触发器,将产生一个workcart与一个WagonA和一个WagonB马车耦合在它后面。它将有一个导体,最初将等待10秒,然后在Hi速度。在回访时,它会刹车停下来,等待10秒钟再继续。
配置
设置和选项可以在AutomatedWorkcarts文件下的config目录。建议使用编辑器和验证程序,以避免格式问题和语法错误。默认配置:
代码:
{
"Play horn for nearby players in radius": 0.0,
"Default speed": "Fwd_Hi",
"Default track selection": "Left",
"Bulldoze offending workcarts": false,
"Destroy barricades instantly": false,
"Enable map triggers": true,
"Enable tunnel triggers": {
"TrainStation": false,
"BarricadeTunnel": false,
"LootTunnel": false,
"Intersection": false,
"LargeIntersection": false,
"VerticalIntersection": false
},
"Max conductors": -1,
"Spawn triggers respect conductor limit": false,
"Disable default tunnel workcart spawn points": false,
"Trigger display distance": 150.0,
"Conductor outfit": [
{
"ShortName": "jumpsuit.suit",
"Skin": 0
},
{
"ShortName": "sunglasses03chrome",
"Skin": 0
},
{
"ShortName": "hat.boonie",
"Skin": 0
}
],
"Automated train engine overrides": {
"assets/content/vehicles/sedan_a/sedanrail.entity.prefab": {
"Enable engine overrides": false,
"Override max speed": 44.0,
"Override engine force": 10000.0
},
"assets/content/vehicles/trains/locomotive/locomotive.entity.prefab": {
"Enable engine overrides": false,
"Override max speed": 20.0,
"Override engine force": 250000.0
},
"assets/content/vehicles/trains/workcart/workcart.entity.prefab": {
"Enable engine overrides": false,
"Override max speed": 21.0,
"Override engine force": 33000.0
},
"assets/content/vehicles/trains/workcart/workcart_aboveground.entity.prefab": {
"Enable engine overrides": false,
"Override max speed": 18.0,
"Override engine force": 30000.0
},
"assets/content/vehicles/trains/workcart/workcart_aboveground2.entity.prefab": {
"Enable engine overrides": false,
"Override max speed": 17.0,
"Override engine force": 30000.0
}
},
"Map markers": {
"Train map markers": {
"Map marker update interval seconds": 5.0,
"Colored map marker": {
"Enabled": false,
"Color": "#00ff00",
"Alpha": 1.0,
"Radius": 0.05,
"Use dynamic route color": false
},
"Vending map marker": {
"Enabled": false,
"Name": "Automated Train"
}
},
"Train stop map markers": {
"Display only while stop is reachable": false,
"Colored map marker": {
"Enabled": false,
"Color": "#ff9900",
"Alpha": 1.0,
"Radius": 0.1,
"Use dynamic route color": false
},
"Vending map marker": {
"Enabled": false,
"Name": "Train Stop"
}
},
"Dynamic route colors": [
"#ff0000",
"#ff9900",
"#ffff00",
"#00ff00",
"#0099ff",
"#cc00ff",
"#ffffff",
"#777777"
]
}
}