スクリプト講座 車両編

車両を操作してみよう

- この章で主に扱うスクリプト -

SetSmoke 変数                  //蒸気機関車の煙を操作
SetHeadmark 変数               //ヘッドマークを操作
SetPantograph パンタ番号 変数  //パンタグラフの状態を操作
SetHeadlight 変数              //ヘッドライトの操作
SetTaillight 変数              //テールライトの操作
SetRoomlight 変数              //室内灯の操作
SetSignlight 変数              //字幕灯等の操作
SetModelOption 変数A 変数B     //各オプションの状態を操作
SetShuntingCarIndicator 変数   //入換車両標識を操作
SetTransparent 変数            //半透明状態の操作
SetNCHeadlight 変数A 変数B     //ヘッドライトの特殊操作
SetNCTaillight 変数A 変数B     //テールライトの特殊操作
ResetNCHeadlight               //SetNCHeadlight操作のリセット
ResetNCTaillight               //SetNCTaillight操作のリセット

- 教材 -

以下のレイアウトをダウンロードして使用します。0号か4号〜最新号のいずれかが必要です。編成は先頭車及び機関車を配置してください。
(画像の駅部品は2号。無くても良い)

Download (392KB)
教材

- 演習 -

1. SetRoomlight & SetTaillight
SetSignlight & SetNCHeadlight
SetNCTaillight & SetTransparent

下記のスクリプトは「Set〜light」の命令と「SetTransparent」を実験するスクリプトです。zキーでそれぞれの項目を一つずつ試すことができます。スクリプトは編成の先頭車両にコピー&ペーストします。

//先頭車両にコピペ
Var aa
Var count
Var switch
SetEventKey this Event aa z
DrawMessage "[ z ] キーを押そう!"

BeginFunc Event
  // 6つの動作を繰り返すための変数操作(0のときにリセット)
  add count 1
  mov switch count
  mod switch 6
  // 毎回の各項目リセット
  ResetNCHeadlight
  ResetNCTaillight
  SetTaillight 0
  SetRoomlight 0
  SetSignlight 0
  SetTransparent 0

  ifeq switch 1
    SetNCHeadlight 0 1 // 先頭車両のヘッドライト点灯
  endif
  ifeq switch 2
    SetNCTaillight 0 1 // 先頭車両のテールライト点灯
  endif
  ifeq switch 3
    SetRoomlight 1     // 室内灯点灯
  endif
  ifeq switch 4
    SetSignlight 1     // ヘッドマーク点灯
  endif
  ifeq switch 5
    SetTransparent 1   // 車体を半透明にする
  endif
EndFunc
実行結果
2. SetHeadmark & SetPantograph
SetHeadlight & SetTaillight

「SetHeadmark」は対応している車両のみ動作します。0が無し、1がヘッドマーク1番前、2がヘッドマーク1番後ろ、3がヘッドマーク2番前、という風に変化します。「SetPantograph」は変数Aにパンダ番号を、変数Bにパンダの状態を入力します。下記のスクリプトは二つのスクリプトを同時に検証するものです。また「SetHeadlight」、「SetTaillight」も合わせて実験します。
ビュワーを起動したら「フライスルーカメラ」に切り替えて機関車の方向転換を行ってください。方向転換をするたびにヘッドライト、テールライトの前後が切り替わります。一方で「SetNCHeadlight」は方向転換に依存しません。これが二種類の点灯スクリプトの違いになります。場合によって使い分けましょう。
機関車の車両にコピー&ペーストしてください。

//機関車にコピペ
Var aa
Var count
Var switch
SetEventKey this Event aa z
DrawMessage "[ z ] キーを押そう!"

//項目のリセット
SetPantograph 0 0
SetPantograph 1 0
SetHeadlight 1
SetTaillight 1

BeginFunc Event
  // 4つの動作を繰り返すための変数操作(0のときにリセット)
  add count 1
  mov switch count
  mod switch 4

  // 4通りのヘッドマークの配置を行う
  SetHeadmark switch

  ifeq switch 1
    SetPantograph 0 1
    SetPantograph 1 0
  endif
  ifeq switch 2
    SetPantograph 0 0
    SetPantograph 1 1
  endif
  ifeq switch 3
    SetPantograph 0 1
    SetPantograph 1 1
  endif
  ifzero switch
    SetPantograph 0 0
    SetPantograph 1 0
  endif
EndFunc
実行結果
3. SetSmoke & SetShuntingCarIndicator

「SetSmoke」は蒸気機関車のみに使用するスクリプトで、煙の有無を操作できます。「SetShuntingCarIndicator」は機関車に使用するスクリプトで、入換車両標識(左側のテールライト)を操作します。
下記は両者を実験するスクリプトです。必要な命令の方の「//」を外して使用してください。機関車の車両部にコピー&ペーストします。

//機関車(蒸気機関車)にコピペしてから必要な「//」を外す
Var aa
Var switch
SetEventKey this Event aa z
DrawMessage "[ z ] キーを押そう!"

BeginFunc Event
  //SetSmoke switch
  //SetShuntingCarIndicator switch
  xor switch 1
EndFunc
実行結果
4. SetModelOption

「SetModelOption」は車両の一部ポリゴンを変更する特殊な命令です。
主に連結部の幌の有無を操作します。
対応する車両が限られていますのでマニュアルを見て使用してください。

//オプション搭載車両にコピペ
Var aa
Var count
Var switch
SetEventKey this Event aa z
DrawMessage "[ z ] キーを押そう!"

BeginFunc Event
  add count 1
  mov switch count
  mod switch 4

  //オプションの毎回初期化
  SetModelOption 1 0
  SetModelOption 2 0

  ifeq switch 1
    SetModelOption 1 1
    SetModelOption 2 0
  endif
  ifeq switch 2
    SetModelOption 1 0
    SetModelOption 2 1
  endif
  ifeq switch 3
    SetModelOption 1 1
    SetModelOption 2 1
  endif
  ifzero switch
    SetModelOption 1 0
    SetModelOption 2 0
  endif
EndFunc
実行結果
5. まとめ

多機能機関車を作ってみよう。
zキーを押すとパンダグラフが切り替わり、下りた時に電源がOFFになります。
xキーでヘッドマークが切り替えられます。
cキーで入換車両標識が切り替えられます。
vキーで半透明にできます。

//機関車などにコピペ
Var aa
Var bb
Var cc
Var dd
Var ee
Var a_ct
Var b_ct
Var a_sw
Var b_sw
Var c_sw
Var d_sw
SetEventKey this Event1 aa z
SetEventKey this Event2 bb x
SetEventKey this Event3 cc c
SetEventKey this Event4 dd v
SetEventTime this Start ee 100
SetHeadlight 1
SetTaillight 1

BeginFunc Start
DrawMessage "[ z ] キー パンダグラフの操作"
DrawMessage "[ x ] キー ヘッドマークの操作"
DrawMessage "[ c ] キー 入換車両標識のON/OFF"
DrawMessage "[ v ] キー 半透明設定のON/OFF"
EndFunc

BeginFunc Event1
  add a_ct 1
  mov a_sw a_ct
  mod a_sw 4
  ifeq a_sw 1
    SetPantograph 0 1
    SetPantograph 1 0
    SetHeadlight 1
    SetTaillight 1
    SetRoomlight 1
    SetSignlight 1
  endif
  ifeq a_sw 2
    SetPantograph 0 0
    SetPantograph 1 1
  endif
  ifeq a_sw 3
    SetPantograph 0 1
    SetPantograph 1 1
  endif
  ifzero a_sw
    SetPantograph 0 0
    SetPantograph 1 0
    SetHeadlight 0
    SetTaillight 0
    SetRoomlight 0
    SetSignlight 0
  endif
EndFunc

BeginFunc Event2
  add b_ct 1
  mov b_sw b_ct
  mod b_sw 3
  SetHeadmark b_sw
EndFunc

BeginFunc Event3
  SetShuntingCarIndicator c_sw
  xor c_sw 1
EndFunc

BeginFunc Event4
  SetTransparent d_sw
  xor d_sw 1
EndFunc

撮影用一発設定スクリプト
一通りのスクリプトを用意しておき、いらない物を「//」でキャンセルできます。スクリーンショットなどに非常に便利です。

  //初期設定で、ヘッドライト、室内灯、サインライトの点灯、
  //ヘッドマークが掲げられる。

  SetHeadlight 1
  //SetTaillight 1
  SetRoomlight 1
  SetSignlight 1
  SetHeadmark  1
  //SetSmoke       0
  //SetTransparent 1
  //SetModelOption 1 1
  //SetModelOption 2 1
  //SetShuntingCarIndicator 1
  //SetPantograph 0 0
  //SetPantograph 1 0
目次へ戻る