信号機を点灯させる

まず、下のように信号機とビュワー起動用の列車を配置して下さい。

とりあえず信号機であれば何でも良いです。。。

さてさて、ここでSCRIPTマニュアルを開きます

場所はここ

するとマニュアルが出てくるので、左側のフレームを下の方にある「信号」の欄までスクロールしていきます。



コレ(赤丸部分)にある"SetSignal"のリンクをクリックすると以下のことが書かれています。


SetSignal 変数
version 4.0.2.0

信号機の表示ステータスを設定します。

標準ステータス
一般的な信号機についての設定値です。信号機によって実際に設定できるステータスがことなります。(たとえば、2灯式の場合は停止と進行のみ設定できます。)

0 すべてのランプOFF(起動直後)
1 停止
2 警戒
3 注意
4 減速
5 抑速
6 進行
この他に信号機部品によっては、特殊なステータスを設定できます。各部品の設定値はマニュアルのパッケージリファレンスを参照してください。

※一般的な単機能信号機は、この命令を使用します。1つの支柱に多数の信号機が付属している場合は、拡張命令SetSignalExを使用します。


この"SetSignal"は信号機を点灯させる命令文になりますが、ただ単に
※信号機のスクリプトを入力するウィンドウの出し方は、信号機を右クリック>信号機設定...>スクリプトエディターをクリック。で表示されます。

と書いただけでビュワーを起動すると・・・

このようにはじき返されてしまいます。

ではどうすればいいのかというと、上の引用文の一行目にある

SetSignal 変数

に注目して下さい。

これは"SetSignal"のあとに半角スペースを挟んで"変数"を入れてくれと書かれているのです。

変数とはマイナス無限大から無限大までの数字全体です。
要は"数字ならなんでもOK"なんです。

なので0や1といった整数ももちろん、9999でも良いし1.7320508でも-273.15であっても "とにかく数字をぶち込んでやれば問題ない"のです。

ためしにSetSignal 1.7320508を入力して・・・(すべて半角英数字)

ビュワーを起動してやると・・・


エラーも出ず、ちゃんと起動してくれます。

しかし、信号機が点灯していません。
そこでSCRIPTマニュアルの"SetSignal"のページの後半部分に書かれている。


0 すべてのランプOFF(起動直後)
1 停止
2 警戒
3 注意
4 減速
5 抑速
6 進行

上記の部分を使うのです。

つまり、"数字ならなんでもOK"だけど、1,2,3,4,5,6のどれかが入ってきた時は信号機が上記のような点灯をするのです。

試しにSetSignal 6と入力してやると・・・


信号が進行信号になりました。

SetSignal 6の代わりに3を入力してやれば黄色信号になります。
ただ、警戒信号や抑速信号などは実物と同様4灯,5灯しか反応しません。


−文字の入力に関して−

変数は数字なら何でも良いのですが、例えば

といった文字を入力した場合・・・

このようにはじき返されてしまいます。

しかし、ウィザードやインターネットで公開されているレイアウトやスクリプトの中にはこのような表記がなされている場合があります。
どうして文字を入れても正常に動作できるのかというと、そのようなスクリプトは必ず前の段階で"変数宣言"を行っているのです。

スクリプトマニュアルの左のメニューにある変数宣言の欄の一番上にある"Var"と書かれているところをクリックして下さい。
そこの3行目に

数値、文字列などを保持する一般変数を宣言します。

とあります。

つまり、例えば
Var a

と書いた場合、"a"は文字ではなく"変数"つまり数字になるのです。

"Var"というのは「"a"は文字ではなく"変数"である」と「宣言」するのです。


というわけで、まずVarで宣言してビュワーを起動してみると・・・


ちゃんと動いてくれます。

しかし、例によって信号機が点いておりません。
これは、"a"は数字だけれども1,2,3,4,5,6のいずれでもないためです。

ここで登場するのが"set"という構文です。

スクリプトマニュアルの左のメニューにある変数操作の欄の"set"と書かれているところをクリックして下さい。
そこの2行目と5行目に

set 変数  整数

変数に整数を書き込みます。

とあります。

「set 変数  整数」すなわち「set a 6」といったようにsetのあとに文字と数字を並べます。

これは"文字a"を無理矢理6とおくということです。

たとえば


と入力します。

このスクリプトの流れは

"a"を変数とする

"a"を6ということにしておく

信号機点灯(6の場合)

これはSetSignal 6と同じ意味になりますね。

というわけでビュワーを起動してみますと・・・

青色点灯!

さて、「これじゃあわざわざVar使う意味がないじゃないか」と思う方が居るかもしれませんが、その通りです(^^;

これだけのスクリプトではVarを使う意味が全くありません。

しかし、例えば1秒ごとにaが0→1→0→1→0→1→・・・と変化していくスクリプトを組んだとします。
そしてSetSignal aと書くと、1秒間隔で点滅させることが出来るのです。

まだまだ色々使い方がありますので、これはマスターしておいて損はない箇所です。


さてさて、コレで信号機が青になりましたが、ずっと青では信号機の意味がありません。
次回は列車がセンサーを通過すると赤信号になるスクリプトを組んでいきます。

次回へ>>>
※次回は今回使用したレイアウトをそのまま使い回して解説していきます


前へ戻る

inserted by FC2 system