Copyright © 2018 Jeminie Interactive All rights reserved.
翻译:Mutant 校对:zbx1425 翻译尚未完全完成
本文作者是Jeminie。为了不引起国际问题,谢绝转载。请使用本页链接。
Hmmsim开发文档
此页面正在施工中。请注意语法可能在将来的版本中改变。
Hmmsim的开发方式具有全新的结构和新增的功能。
将来,在将BVE线路转换为Hmmsim线路之后,开发者将能够添加或编辑新功能。
文件兼容性
字符编码 | ASCII / UTF-8 |
贴图格式 | .bmp |
物件格式 | .hmmo / .csv |
声音格式 | .wav / .ogg / .mp3 |
文件结构
脚本语法
#命名空间
|
标志命名空间 (可以理解成部分) 开始
|
{ ... }
|
命名空间的内容包含在大括号中,这个就是大括号:{}。
|
命令 = 值;
命令 = 值0, 值1, ...;
|
在命名空间中调用命令。 有些命令需要多个值作为参数。
如果未在需要多个值的指令中列出所有值,则将其视为指令中设置的默认值。
|
command();
command(value0, value1, ...);
|
也有像函数一样的指令。 同样的,某些指令需要多个值。
|
@ comment
|
插入注释。从 @ 到行末都被视为注释,在解析时会忽略。
|
Scenarios.txt
该文件是Hmmsim Addon的中心。 该文件名必须是Scenarios.txt。 注: Addon 就是线路包之类的。
|
加载图片(自定义一个加载时显示的图片) = 文件路径;
|
|
|
注册名称空间以添加列车以显示在路线选择屏幕上。 所有列出的列车将按列出顺序依次 在线路选择框内显示。
|
|
|
列车名字 :输入要在列表中显示的列车名称。如果第一个字是 $,则将其替换为语言文件中设置的ID的文本。
|
|
|
添加要在路线选择屏幕上显示的线路。 所有添加了的线路将被 按顺序依次 显示在路线选择屏幕上。
|
|
|
Name : 输入要在列表中显示的线路名称。 如果第一个字是$,则将其替换为语言文件中设置的ID的文本。
|
Localization
此文件设置用于 Addon 的所有文本。 如果不需要,则不需要创建此文件。
如果没有与游戏设置语言对应的ID,则默认情况下会显示英文文本。
|
ID : 输入文字的ID。
文本 : 输入游戏设置语言为英语时要显示的文本。
|
|
ID : 文本的ID
文本 : 输入游戏设置语言为韩语时要显示的文本。
|
|
ID : 输入文字的ID。
文本 : 输入游戏设置语言为日语时要显示的文本。
|
Scenario
这是设置地图的文件,游戏将在该地图上运行并放置火车.
|
|
添加列车行驶的进路。 放置列车时,可以使用所有添加的进路。
|
|
|
名称 : 列车运行的进路的名称。可在此前添加的进路中选取。
|
|
|
时间 : 列车到达第一站的时间 HH:MM:SS (不同于OpenBVE的HH.MMSS) HH-小时,MM-分钟,SS-秒,都要是两位,不足开头补零
|
|
|
放置其他列车 (AI车, 对头车)。 所有添加的列车都放置在地图上。
|
|
|
名称 : 列车运行的进路的名称。可在此前添加的进路中选取。
|
|
|
时间 : 列车到达第一站的时间 HH:MM:SS (不同于OpenBVE的HH.MMSS) HH-小时,MM-分钟,SS-秒,都要是两位,不足开头补零
|
Track
进路文件设置列车运行的进路。
|
|
添加由一段或多段轨道组成的进路。 轨道必须按照行驶的顺序给出。
|
|
|
开始位置 : 进路在这条轨道上的这一段,在地图文件中的起始位置。
结束位置 : 进路在这条轨道上的这一段,在地图文件中的结束位置。
|
|
|
可以将起始位置设置为比结束位置更大。 这样的话,列车就会沿反方向运行。
|
|
|
添加要放置在进路上的车站。 所有添加的停车位置必须按到达的顺序排列。
|
|
|
名称 : 输入车站名称。 如果第一个字是 $ ,则将其替换为语言文件中设置的ID的文本
|
|
|
null :该值未被使用。请随意填写。
范围 :输入允许的停止范围。
|
|
|
|
Left :设置为左侧开门。
Right :设置为右侧开门。
None : 设置为不开门通过。
|
|
|
到达时间 : 到达时间时:分:秒(HH:MM:SS)在表格中输入时间的值。
出发时间 : 出发时间时:分:秒(HH:MM:SS) 在表格中输入时间的值。
|
|
|
这个时间是指,从到达第一站的时间开始算,到这个时间,之间的差值。
因此,第一站的到达时间必须设置为0:00:00。
|
|
|
注册名称空间以添加背景纹理事件以放置在轨道上。 必须按照行车时遇到它们的顺序来写。(仅支持.bmp文件)
|
|
|
注册名称空间以添加要放置在轨道上的火车亮度值。 必须按照行车时遇到它们的顺序来写。类似于OpenBVE中的Brightness,不过请注意这里的值的范围并不是0~255,而是0.0~1.0
|
|
|
亮度 输入线路内亮度的值,范围: 0.0 ~ 1.0 之间
|
|
|
注册名称空间以添加火车行驶声音事件以放置在轨道上。 必须按照行车时遇到它们的顺序来写。
|
|
|
注册名称空间,以添加要在轨道上放置的火车转弯通行声音文件。 必须按照行车时遇到它们的顺序来写。这里仅支持.wav文件
|
|
|
注册名称空间以添加速度限制指令以放置在轨道上。 必须按照行车时遇到它们的顺序来写。
|
|
|
注册名称空间以添加要放置在轨道上的声音事件。 必须按照行车时遇到它们的顺序来写。(该指令常被用来放置报站)
|
Train
设置火车的文件。(有点类似OpenBVE的train.dat文件,不过这个文件还囊括了extensions.cfg以及sound.cfg)
|
FrictionCoefficient = null;
|
|
当前未使用该命令
|
|
|
ControlDelay = 增加反应时间,减少反应时间;
|
|
|
增加反应时间:输入档位上升的反应速度(以秒为单位)。
减少反应时间:输入档位下降时的反应速度(以秒为单位)。
|
|
|
ControlJerk = 加速度上升速度,加速度下降速度;
|
|
|
加速度上升速度 :增加级位时,以m / s3为单位的加速度变化的速度
加速度下降速度 :减少级位时:以m / s3为单位的加速度变化的速度。
|
|
|
|
设置加速度曲线。(若是在进行OpenBVE开发,那么TrainEditor会代替我们来完成这项工作,可惜在进行Hmmsim原生格式开发时没有一个TrainEditor来代替我们)
|
|
|
|
Notch[指数] = a0, a1, v1, v2, e;
|
|
|
|
인덱스:输入加速档位
a0:输入在速度为0km/h时应用的加速度,以km/h/s为单位。
a1 : v1输入以km/h/s为单位的速度应用的加速度。
v1 : 输入加速度插值开始的速度。
v2 : 输入加速度插值开始的速度
e : 输入加速度曲线所需的指数。
|
|
|
ControlDelay = 增加反应时间,减少反应时间;
|
|
|
增加反应时间:输入档位上升的反应速度(以秒为单位)。
减少反应时间:输入档位下降时的反应速度(以秒为单位)。
|
|
|
ControlJerk = 加速度上升速度,加速度下降速度;
|
|
|
加速度上升速度 :增加级位时,以m / s3为单位的加速度变化的速度
加速度下降速度 :减少级位时:以m / s3为单位的加速度变化的速度。
|
|
|
最小压力:输入主风缸的最小压力,单位为kPa。
最大压力:输入主风缸的最大压力,单位为kPa。
|
|
|
CylinderMax = 常用制动最大压力,紧急制动压力;
|
|
|
常用制动最大压力输入常用制动的最大压力,单位为kPa。
紧急制动压力以kPa为单位输入紧急制动压力。
|
|
|
CylinderDelta = 上升变化量,下降变化量;
|
|
|
上升变化量:输入制动压力上升的速度,单位为kPa / s。
下降变化量 : 输入制动压力下降的速度,单位为kPa / s。
|
|
|
Objects = 文件路径0, 文件路径1, ...;
|
|
|
文件路径:输入用作车辆对象的文件的相对路径。 您可以输入多个值。
|
|
|
前轴位置:以车辆中心为基准,前轴的相对位置。
后轴位置:以车辆中心为基准,后轴的相对位置。
|
|
|
x : 相对于车厢中心,视点的X位置。
y : 相对于轨道高度,视点的Y位置。
z : 相对于车厢中心,视点的Z位置。(与OpenBVE还是有细微差别的)
|
|
索引:输入要使用的一个数字,其值介于0 ~ 15 之间
文件路径:输入用作电机音的声音文件的相对路径。
|
|
索引 : 输入要使用的索引,其值介于0 ~ 7 之间
文件路径 : 输入用作走行音的声音文件的相对路径。
|
|
索引 : 输入要使用的数字,其值介于0 ~ 7 之间
文件路径 : 输入用作轮轨摩擦音(过弯道)的声音文件的相对路径。
|
|
상태 : 역전기 상태를 다음 값 중 하나로 입력합니다.
|
|
|
Up : 역전기가 올라갈 때를 설정합니다.
Down : 역전기가 내려갈 때를 설정합니다.
|
|
파일경로 : 역전기 제어음으로 사용할 사운드 파일의 상대 경로를 입력합니다.
|
|
|
Up : 加速槽上升时设定。
Down : 设置加速槽何时下降。
Max : 当加速度档位上升到最大步数时设置。
Min : 当加速度降到0时设置。
|
|
文件路径 :输入用作加速陷波控制声音的声音文件的相对路径。
|
|
상태 : 제동 놋치 상태를 다음 값 중 하나로 입력합니다.
|
|
|
Up : 제동 놋치가 올라갈 때를 설정합니다.
Down : 제동 놋치가 내려갈 때를 설정합니다.
Max : 제동 놋치가 최대 단수로 올라갈 때를 설정합니다.
Min : 제동 놋치가 0으로 내려갈 때를 설정합니다.
|
|
파일경로 : 제동 놋치 제어음으로 사용할 사운드 파일의 상대 경로를 입력합니다.
|
|
상태 : 제동 상태를 다음 값 중 하나로 입력합니다.
|
|
|
Release : 제동이 해제될 때를 설정합니다.
ReleaseHigh : 제동이 완전히 해제될 때를 설정합니다.
ReleaseFull : 비상 제동이 체결될 때를 설정합니다.
|
|
파일경로 : 공기 제동음으로 사용할 사운드 파일의 상대 경로를 입력합니다.
|
|
상태 : 출입문 상태를 다음 값 중 하나로 입력합니다.
|
|
|
LeftOpen : 왼쪽 출입문이 열릴 때를 설정합니다.
RightOpen : 오른쪽 출입문이 열릴 때를 설정합니다.
LeftClose : 왼쪽 출입문이 닫힐 때를 설정합니다.
RightClose : 오른쪽 출입문이 닫힐 때를 설정합니다.
|
|
파일경로 : 출입문 구동음으로 사용할 사운드 파일의 상대 경로를 입력합니다.
|
|
인덱스 : 사용할 인덱스를 다음 값 중 하나로 입력합니다.
|
|
|
0 : 일반 경적음을 설정합니다.
1 : 발차벨을 설정합니다.
|
|
파일경로 : 경적음으로 사용할 사운드 파일의 상대 경로를 입력합니다.
|
|
상태 : 램프 상태를 다음 값 중 하나로 입력합니다.
|
|
|
On : 램프가 점등될 때를 설정합니다.
Off : 램프가 꺼질 때를 설정합니다.
|
|
파일경로 : 램프 점등음으로 사용할 사운드 파일의 상대 경로를 입력합니다.
|
|
파일경로 : 부저음으로 사용할 사운드 파일의 상대 경로를 입력합니다.
|
|
파일경로 : 분기기 통과음으로 사용할 사운드 파일의 상대 경로를 입력합니다.
|
|
파일경로 : 열차 잡음 배경음으로 사용할 사운드 파일의 상대 경로를 입력합니다.
|
|
|
|
네임스페이스를 등록하여 구동음 인덱스에 대응하는 그래프를 설정합니다.
|
|
|
|
속도 : 키의 속도 값을 입력합니다.
볼륨 : 속도에 해당하는 볼륨 값을 입력합니다.
피치 : 속도에 해당하는 피치 (Pitch) 값을 입력합니다.
|
|
|
|
낮은 속도 순서대로 키를 추가합니다. 키와 키 사이는 선형 보간으로 처리됩니다.
|
|
|
|
네임스페이스를 등록하여 구동음 인덱스에 대응하는 그래프를 설정합니다.
|
|
|
|
속도 : 키의 속도 값을 입력합니다.
볼륨 : 속도에 해당하는 볼륨 값을 입력합니다.
피치 : 속도에 해당하는 피치 (Pitch) 값을 입력합니다.
|
|
|
|
낮은 속도 순서대로 키를 추가합니다. 키와 키 사이는 선형 보간으로 처리됩니다.
|
Map
*当前,地图文件语法与脚本语法略有不同。 在1.3.0版中,所有都将被改为脚本语法。
<Settings>
|
该名称空间当前已过时,将在1.3.0版中弃用。
|
|
一个数值 : 随着"Object"指令的增加而增加,范围在 0 ~ 65535 之间
文件路径 : 相对路径,我想这个不用再重复了吧
|
|
一个数值 : 随着"Sound"指令的增加而增加,范围在 0 ~ 255 之间
文件路径 : 依然是相对路径
|
|
Object[一个数值] = 文件路径;
|
|
Sound[一个数值] = 文件路径;
|
|
|
设置主轨道*也就是OpenBVE中所谓的Rail 0。 以下命令仅在主轨道上可用。
|
|
|
曲线半径 : 输入以米为单位的曲线半径。(+右,-左)
外轨超高 : 输入以毫米为单位的倾斜值。
|
|
|
坡度 : 输入以米/千米为单位的坡度,即一个直角三角形的高。
|
|
|
CurveTransition();
|
|
|
在Curve命令调用之前使用它来建立缓和曲线。
|
|
|
PitchTransition();
|
|
|
在Pitch命令调用之前用于设置垂直曲线。
|
|
|
添加新的轨道。 如果其名称与先前添加的轨道相同,则将其视为同一轨道,并且可以连续放置。
以下命令仅在其他轨道上可用
|
|
|
x : 输入X轴相对于主导轨的相对位置。
y : 输入Y轴相对于主导轨的相对位置。
曲线插值 : 输入是否使用曲线插值。
|
|
|
|
true : 在此指令与下一个Position之间使用曲线插补。
false : 在此指令与下一个Position之间使用线性插补。
|
|
PatternObj(重复组编号, Interval, Span, X, Y, StructureKey1, StructureKey2, ...);
|
|
重复组编号 : 输入要给这组重复物件分配的编号,其值介于0 ~ 255 之间
Interval 放置间隔 : 输入要重复的间隔。
Span 放置角度弦长 : 在曲线上的弦长。这个参数决定旋转角。
X : 输入相对于轨道的X位置。
Y : 输入相对于轨道的Y位置
StructureKey 物件编号 : 输入要按顺序重复放置的物件编号。 依次重复放置对象,直到放置完成。
|
译注:此处借用一下BVE5的Repeater示意图,PatternObj和它的原理相同:
|
PatternStart(重复组编号,Interval,Span,x,y,StructureKey1, StructureKey2, ...);
|
|
PatternEnd(重复组编号[与Start指令里的数值要相同]);
|
|
FreeObj(物件编号,放置角度,x,y,y旋转);
|
|
物件编号 : 输入要放置的对象索引。
Span 放置角度弦长 : 在曲线上的弦长。这个参数决定旋转角。
x : 输入相对于轨道的X位置。
y : 输入相对于轨道的Y位置。
y旋转 : 相对于轨道,沿Y轴旋转的量。
|
|
声音 : 输入要放置的声音的编号。
x : 输入相对于轨道的X位置。
y : 输入相对于轨道的Y位置。
|
|
#정의;
#else;
#;
|
|
분기문을 설정합니다. 분기는 시나리오 파일에서 설정한 Defines 정의 유무에 따라 처리됩니다.
분기문을 연속 배치하면 else if 와 같은 형태로 동작하며, else 분기를 이용할 수도 있습니다.
반드시 #; 을 입력해서 분기 종료를 호출합니다.
|
|
|
Curve(曲线半径,倾斜);
|
|
|
Pitch(坡度);
|
|
|
CurveTransition();
|
|
|
PitchTransition();
|
|
|
位置;
|
|
|
PatternStart(数值,放置间隔,放置角度,x,y,object0,object1, ...);
|
|
|
PatternEnd(数值(等于上面Start中的数值));
|
|
|
FreeObj(对象,布置角度,x,y,y轴旋转);
|
|
|
Doppler(声音,x,y);
|
教程
Jeminie还没做......