このページは鉄道模型シミュレーターオンラインについて記載しています。
ログインボタンをクリックしてください。VRM ONLINEのアカウントとパスワードを入力してください。
※アカウントを保存した場合は、次回からの入力を省略できます。個人で利用するPCの場合にご利用ください。(不特定多数が利用するPCでは保存しないでください。)
ログインボタンをクリックしてください。VRM ONLINEのアカウントとパスワードを入力してください。
※アカウントを保存した場合は、次回からの入力を省略できます。個人で利用するPCの場合にご利用ください。(不特定多数が利用するPCでは保存しないでください。)
リファレンスは、次の形式で記述されています。
スクリプトの記述形式
解説
スクリプトの記述形式は、「命令」+「パラメータ」となっています。パラメータは、スペース、タブ、カンマで区切ります。パラメータが存在しない命令もあります。
解説は、スクリプトの動作、パラメータの仕様について記述しています。
構文を中心に検査します。また、オブジェクトの名前を調べて、オブジェクト参照が、実際に存在する相手に対して行っているか検査します。
エラー表示の形式
[エラーの発生している行番号] エラー内容
(補足表示は2行目に)
ERROR OBJECT : [部品ID]部品名
[1] ERROR undefined function
var
ERROR OBJECT : [4] 編成配置
ID4の編成配置部品に設定されているスクリプトを修正します。この場合、1行目の記述に間違いがあるので修正します。
※重要:編成に含まれる車両は、編成配置がエラーオブジェクトとして表示されます。編成配置のスクリプトに問題がない場合は、車両のスクリプトをチェックしてください。
コンパイル時のエラーチェックは、構文などの検査が主に行われます。コードの論理的な動きに起因するエラーはチェックされません。コーディングには細心の注意を払ってください。一見動いているように見えて、エラーになっているケースも発生します。
VRM 5/ONLINEでは、いくつかのエラーチェックが追加されています。VRM4で保存したレイアウトを読み込んだ場合、VRM4と同じエラーチェックを行います。そのレイアウトをVRM 5/ONLINEで保存して、開いた場合はVRM 5/ONLINEのエラーチェックが適用されます。このとき、VRM4では問題ないレイアウトからエラーが検出されることがあります。下記のように修正してください。
//VRM4 :EndFuncで閉じていない場合
BeginFunc AAA
BeginFunc BBB
EndFunc
//VRM ONLINE :EndFuncを追加して、閉じてください。
BeginFunc AAA
EndFunc
BeginFunc BBB
EndFunc
ビュワー実行に、命令を実行しているオブジェクトの種類、命令のパラメータ、パラメータの範囲などをチェックします。エラーが発見された場合は、当該命令の実行をスキップして次の命令の実行に移ります。DEBUG命令でデバッグモードを有効にすると、エラーの発生した命令がログに表示されます。
代表的なエラー
オブジェクトをNULLで参照しました。:
オブジェクト変数にNULLが設定されている状態でオブジェクトにアクセスするとエラーになります。オブジェクト変数にNULLが設定されている場合は、コードを実行しないように条件判断を追加してください。
パラメータにエラーがあります。:
命令のパラメータにエラーがあります。パラメータの記述を修正してください。
実行できないオブジェクトです:
オブジェクトがサポートしていない命令を実行しています。適切なオブジェクトに命令を移動してください。
エラー発生時の注意事項
エラーが発生すると当該命令の処理が中止され、次の命令に実行が移ります。ifなど条件判断でエラーが発生した場合は、次の命令が実行され条件が成立したことと同じようになります。デバッグモードでエラーの発生箇所を修正してください。
if xxxobj.yyy
endif
このコードは、xxxobjがNULLの場合、エラーになります。次のように、NULLの場合は実行しないように条件判断を追加してください。
if xxxobj
if xxxobj.yyy
endif
endif
膨大な部品数のスクリプトを限られたメモリーで動作させるため、スクリプトには制約があります。
変数の個数
グローバル変数は、1つのスクリプトに255個まで設定できます。ただし、実用上多くても16個程度にとどめてください。
ローカル変数は、BeginFunc – EndFuncの内側に255個まで設定できます。ただし、実用上多くても16個程度にとどめてください。
メソッドの呼び出しの深さ
最大15レベルまで呼び出しができます。ただし、実用上、なるべく少なくなるようにしてください。(2、3レベルが望ましい)再帰呼び出し、イベントハンドラの再突入はなるべく避けてください。
スクリプトの個数
スクリプトを設定する部品は、必要最小限にとどめてください。
実行の制限
仕様上、すべてのスクリプト命令が完全に動作するとは限りません。ハードウェアの機能不足、未実装機能など実行に失敗するケースがあります。
ビュワーがレイアウトをロードした直後にすべてのスクリプトは、一度実行されます。この処理は、スクリプトの先頭からBeginFuncがあらわれるまでのコードを実行します。
//スクリプトの開始
グローバル変数の宣言
初期化コードなど
//最初のBeginFuncが出現するまで実行
BeginFunc aaa
EndFunc
スクリプトの先頭には、初期化コードを記述してください。主にグローバル変数の宣言や、その変数の初期値設定、部品の初期状態の設定などを行います。
スクリプトは次の順序で初期化されます。
レイアウト以外のスクリプトが実行される順番は不定です。
レイアウトスクリプト以外への外部参照(callや、別部品の変数を操作するなど)は、初期化の段階では使用できません。動作が不定になります。レイアウトスクリプトは最初に必ず実行されるので、このスクリプトにレイアウト全体で使うグローバル変数を定義すると便利です。
初期化コードで実行できない外部参照の例(説明用の模擬コードです)
POINT200は、POINT100のTESTメソッドをcallしますが、POINT100が先に実行される保証はないため、TEST内のDrawVarが正しい結果(100を表示する)を表示できない場合があります。初期化の実行順序に依存しないコードに書き換えてください。(一定時間後に発生するイベントを使って、そこからcallするなど)
//部品"POINT100"のコード
Var a
set a, 100
BeginFunc TEST
DrawVar a
EndFunc
//部品"POINT200"のコード
call "POINT100", TEST