首页 / JS 脚本手册 / 列车 API

列车 API

第三个参数 train 上的全部方法。这是脚本能读到的列车状态的完整集合。

速度

方法返回说明
speedKmh()floatkm/h,等同 speedKilometersPerHour()
speedKilometersPerHour()floatkm/h
speed()float米每刻
speedMetersPerMillisecond()float米每毫秒 —— MTR 4 内部单位
pathSpeedLimit()float当前路段限速
getRailSpeed(railIndex)float指定轨道段的限速
MTR 4 内部一律用毫秒。3.x 脚本按 tick 或秒写的速度计算, 直接搬过来量级会差很多。显示用途请一律用 speedKmh()

方法返回说明
doorValue()float门开度,0 为全关,1 为全开
isDoorOpen()boolean门是否开着
isDoorFullyOpen()boolean是否完全打开
isDoorClosed()boolean是否完全关闭
isDoorOpening()boolean是否正在开门
justOpening()boolean是否刚开始开门
justClosing(doorCloseTime)boolean是否刚开始关门
doorTarget()boolean门的目标状态
doorSide()String取值 left、right、both、none
// 到站开门时播一次报站
if (train.justOpening()) {
  playAnnouncement(train.currentStationName(), train.doorSide());
}

线路与车站

方法返回说明
routeName()String线路名
routeNumber()String线路编号
routeColor()int线路颜色,RGB 整数
currentRoute()RouteCompat线路对象
nextStationName()String下一站站名
currentStationName()String当前站站名
destinationName()String终点站名
nextStation()StationCompat下一站对象
currentStation()StationCompat当前站对象
nextPlatform()PlatformInfo下一站台
currentPlatform()PlatformInfo当前站台
thisRouteStationCount()int本线路站数
thisRouteCurrentIndex()int当前是第几站,0 起
isAtTerminus()boolean是否在终点站
isAtFirstStation()boolean是否在首站
站名可能是「中文竖线English」的双语格式,按竖线切分即可。 取不到时会回落到常量 UNKNOWN_STATIONUNKNOWN_ROUTEUNKNOWN_DEPOT,这三个常量脚本里可直接引用。

距离与进度

方法返回说明
distanceToNextPlatform()double到下一站台距离,取不到返回 -1
distanceToPrevPlatform()double距上一站台距离
routeProgress()double全程进度,范围 0 到 1
totalRouteDistance()double全程总距离
railProgress()double沿轨道的累计进度
getRailProgress(car)double指定车厢的进度
getRailIndex(railProgress, roundDown)int进度对应的轨道段下标
// 进站进度条
var d = train.distanceToNextPlatform();
if (d >= 0 && d < 200) {
  drawProgressBar(1 - d / 200);
}

站台列表

方法返回说明
getAllPlatforms()List全部站台,含跨线路
getThisRoutePlatforms()List本线路站台
getNextRoutePlatforms()List下一条线路的站台
getAllPlatformsNextIndex()int下一站在全部站台里的下标
getThisRoutePlatformsNextIndex()int下一站在本线路列表里的下标
getPlatformRelative(offset, allowDifferentRoute)PlatformInfo相对当前的第 N 站
size()int站台总数
get(index)PlatformInfo按下标取

PlatformInfo 的成员

成员类型说明
stationName()String站名
platformName()String站台名
routeName()String线路名
routeColor()int线路颜色
destinationStationName()String该站台方向的终点站
distancedouble沿线距离
reverseAtPlatformboolean是否在此站折返
stationStationCompat车站对象
platformPlatformCompat站台对象
routeRouteCompat线路对象
destinationStationStationCompat终点站对象
// 画后续三站
var list = train.getThisRoutePlatforms();
var i = train.getThisRoutePlatformsNextIndex();
for (var k = 0; k < 3 && i + k < list.size(); k++) {
  var p = list.get(i + k);
  draw(p.stationName(), p.routeColor());
}

车辆本身

方法返回说明
id()long车辆实例 ID
trainTypeId()String车型 ID
baseTrainType()String基础车型
trainCars()int编组数
spacing()double车厢间距,受配置 closeCouplingGap 影响
width()double车宽
getCarLength(car)double指定车厢长度
getCarBogieLength(car)double转向架间距
getCarWorldPosition(car)Vector3f车厢世界坐标
getCarWorldRotation(car)Vector3f车厢世界旋转
transportMode()TransportMode运输模式
siding()SidingCompat所属车厂线
mtrTrain()Vehicle底层 MTR 对象

运行状态

方法返回说明
isOnRoute()boolean是否在营运线路上
isReversed()boolean是否反向运行
isCurrentlyManual()boolean是否处于手动驾驶
manualAllowed()boolean是否允许手动
maxManualSpeed()int手动最高速
manualToAutomaticTime()int手动转自动的时间
accelerationConstant()float加速度常数
isClientPlayerRiding()boolean本地玩家是否在车上
shouldRender()boolean是否在渲染范围
shouldRenderDetail()boolean是否在细节渲染距离
headYaw()float车头偏航角
headPitch()float车头俯仰角
shouldRenderisInDetailDistancepreviousDoorValuecurrentDoorValue 同时存在同名的公开字段。 写成属性或方法都能取到值,但同一份脚本里不要混用两种写法。