「地下試験線V3 C-ATSパッチのホームドア表示機の仕組みを知りたい。」
という方が多かったので、今回、仕組みを解説します。
・注意
この記事を理解するには、Bve5の構文をそこそこ理解している必要があります。
・どの構文を使っているのか?
ざっくりと説明しますと、他列車(Train)構文を使用し、
表示機を0.1m単位で動かしています。
・作り方
まず、「ホームドア全開」「ホームドア全閉」「停止位置OK」
それぞれの状態を表示した表示機ストラクチャを作ります。
下のSSは左から、「ホームドア全開」「ホームドア全閉」「停止位置OK」
状態のストラクチャです。
次に、ストラクチャリストにさっき作ったストラクチャを書き込みます。
ここでは、上のSSの左から、「open」「close」「ok」としておきます。
次は、他列車構文を使うのに必要な、他列車ファイルを作りましょう。
まずは、「open.txt」「close.txt」「ok.txt」という名前の
テキストファイルを作り、適当なところに保存します。
それぞれのテキストファイルに、以下の構文を打ち込みます。
文字コードはUTF-8を推奨します。
・open.txt
BveTs Train 1.01
#ホームドア全開
[Structure]
Key = open
Distance = 0
Span = 0
Z = 0
・close.txt
BveTs Train 1.01
#ホームドア全閉
[Structure]
Key = close
Distance = 0
Span = 0
Z = 0
・ok.txt
BveTs Train 1.01
#停止位置OK
[Structure]
Key = ok
Distance = 0
Span = 0
Z = 0
これでOKです。
次は、mapファイルに他列車構文を打ち込みます。
メインのmapファイルに打ち込むとごちゃごちゃになるので、
新しくmapファイルを作り、includeで読み込ませると良いでしょう。
では、打ち込みます。
・mapファイル
BveTs Map 2.02
#ファイルの読み込み
Train['open'].Load("open.txtへの相対パス",'FormDoor',1);
Train['close'].Load("close.txtへの相対パス",'FormDoor',1);
Train['ok'].Load("ok.txtへの相対パス",'FormDoor',1);
$Station = 1000;#停止位置距離程(m)
$Departure = '11:59:30';#出発時刻(12:00:00)-停車時間(30秒)
$StopTime = 30;#停車時間(second)
$Station-0.5;#停止位置前方限界
Train['close'].Enable(0);
Train['ok'].Enable(0);
Train['close'].Enable($Departure);
$Station;#○○駅停止位置
Station['○○'].Put(1,-0.5,0.5);
$Station+0.5;#停止位置後方限界
#停止位置の10m先にホームドア表示機を設置。
#一番前
$Station+9.8;
Train['close'].Stop(0,0,99999,99999);
$Station+9.9;
Train['ok'].Stop(0,5,99999,99999);
$Station+10;
Train['open'].Stop(0,$StopTime-3,99999,99999);
$Station+10.1;
Train['close'].Stop(99999,0,0,0);
$Station+10.2;
Train['ok'].Stop(99999,0,0,0);
Train['open'].Stop(99999,0,0,0);
#一番後ろ
#ホームドア表示機の位置調整。
Track['FormDoor'].Position(0,0);#位置がズレていたらここでXとYの調整が可能。
…、理解出来ましたか?
おそらく出来ないと思います。
この仕組みは、言葉で表すのが難しいので、実際に路線に実装して、
いじってみるのが一番手っ取り早いです。
僕もこれを作るのに結構苦労しましたが、苦労した分
いいものができたと思っています。
これを完璧なものに仕上げるのは、あとはあなたの技術次第です。
以上です。
あ、SSのストラクチャは、C-ATSパッチのフリー素材として配布しています。
コメントをお書きください