** 内容はSRC2.2.33のものです **
変数
変数とは各種の状態を記録したり、参照したりするためのものです。自分で作成できるほか、様々な情報を得るためのシステム変数が用意されています。
変数の中でもっとも簡単でなおかつシナリオで多用するのはフラグとよばれるものです。「あるでき事がおこったか(オン)・おこっていないか(オフ)」を記録するために使います。例えばフラグを使うことにより、敵キャラを説得したかどうかを記録しておいて、説得したかどうかであとのイベントの内容を変更することができます。
フラグをオンにセットするには
Set フラグ名
でOKです。あとでフラグを参照してイベント内容を変えるには、
If フラグ名 Then
フラグがオンのときの処理
Else
フラグがオフのときの処理
EndIf
のようにIfコマンドを使って分岐処理を行います。
変数はフラグとして使うだけでなく、様々な情報を記録するのにも使えます。変数に値を代入し、情報を記録するにはSetコマンドを使います。変数に代入する値は整数でも文字列でもかまいません。例えばキャラ同士の信頼度を記録しておき、一定の値以上になるとデートイベントを発生させる……ということもできます。
例
Talk アリス
あ…ありがとう。うれしい……
End
Set アリス信頼度 (アリス信頼度 + 1)
例2
If アリス信頼度 > 5 Then
GoTo アリスとデート
Else
GoTo 誰とデートしようかな
End
Setコマンドで設定した変数の内容はそのステージ限りのもので、次のステージに移動すると消えてしまいます。変数の内容をステージに渡って保持しセーブデータに記録されるようにするにはGlobalコマンドを使い、変数をグローバル変数に設定します。
例 Global アリス信頼度
そのステージ内でしか有効でない通常の変数はローカル変数と呼ばれます。
変数の中にはシステムに関する各種の情報を参照するためにあらかじめ設定されているものもあります。このような変数をシステム変数と呼びます。以下の変数がシステム変数として定義されています。
ターン数そのステージの経過ターン数
総ターン数現在までの累計ターン数
フェイズ現在のフェイズの陣営名
味方数出撃・格納状態にある味方のユニット数
NPC数出撃・格納状態にあるNPCのユニット数
敵数出撃・格納状態にある敵のユニット数
中立数出撃・格納状態にある中立のユニット数
資金現在の資金
選択Askコマンド・Questionコマンドでプレイヤーが選択した選択肢。
対象パイロットイベントの対象となったユニットのメインパイロットのパイロットID。
パイロットIDはザコパイロットや汎用パイロットの場合はパイロットの名称と異なるため、
パイロットの名称が必要な場合はPilot関数を使ってください。
(SRC Ver.1.6までの対象ユニットに相当する変数です。)
相手パイロットイベントの対象となったユニットの相手ユニットのメインパイロットのパイロットID
パイロットIDはザコパイロットや汎用パイロットの場合はパイロットの名称と異なるため、
パイロットの名称が必要な場合はPilot関数を使ってください。
(SRC Ver.1.6までの相手ユニットに相当する変数です。)
例 破壊イベント
対象パイロット = 破壊されたユニットのメインパイロット
相手パイロット = 相手を破壊したユニットのメインパイロット
対象ユニットIDイベントの対象となったユニットのユニットID
相手ユニットIDイベントの対象となったユニットの相手ユニットのユニットID
対象ユニット使用武器 イベントの対象となったユニットが使用した武器名
相手ユニット使用武器 イベントの対象となったユニットの相手ユニットが使用した武器名
防御した場合は「防御」、回避した場合は「回避」、無抵抗の場合は空文字列”“が返る)
対象ユニット使用武器番号 イベントの対象となったユニットが使用した武器の番号
相手ユニット使用武器番号 イベントの対象となったユニットの相手ユニットが使用した武器の番号
対象ユニット使用アビリティ イベントの対象となったユニットが使用したアビリティ名
対象ユニット使用アビリティ番号 イベントの対象となったユニットが使用したアビリティの番号
対象ユニット使用スペシャルパワー イベントの対象となったユニットが使用したスペシャルパワー名
サポートアタックユニットIDサポートアタックを行ったユニットのユニットID
戦闘直後のイベントで参照した場合にのみ正しい値を返します。
サポートガードユニットIDサポートガード、かばう、身代わりのいずれかによって攻撃を代わりに受けた
ユニットのユニットID
戦闘直後のイベントで参照した場合にのみ正しい値を返します。
ステージ現在のステージのイベントファイル名
次ステージ次のステージのイベントファイル名(値を変更可能)
セーブデータファイル名 インターミッションでのセーブ時に使われるファイル名(値を変更可能)
Now現在の時間。時間データ処理関数を使って時刻や日付を参照することができます。
時間データは数値ではないので直接演算は行えませんが、DiffTime関数を使うことで
2つの時間の差を求めることができます。
AppPathSrc.exeのあるフォルダの絶対パス
AppVersionSrc.exeのバージョン番号を5桁の数字で返す。
例 Ver.1.7.3 → 10703
ArgNum現在実行中のサブルーチンの引数の数
BaseX描画系のコマンドに対するX座標の基準位置
BaseY描画系のコマンドに対するY座標の基準位置
通常、描画系のコマンドで指定された座標位置はマップウィンドウの左上隅の座標を
基準として計算されますが(背景描き込みの場合はマップの左上隅が基準)、この2つ
の変数の値を書き変える事で基準となる位置を変更できます。
例えば BaseX=100,BaseY=200 の時、描画位置に(10,20)を指定すると、実際に描画が
行われる座標は(110,220)になります。
この2つの変数は各イベントの開始時に0へ初期化されます。
また、メッセージや特殊効果、戦闘アニメにおけるイベントコマンド実行開始時にも
0へ初期化されます。
ExtDataPath Src.iniで指定した拡張データの絶対パス
ExtDataPath2 Src.iniで指定した拡張データ2の絶対パス
MouseXマップウィンドウ上でのマウスカーソルのX座標
MouseYマップウィンドウ上でのマウスカーソルのY座標
上記2つの関数は、現在のマウスカーソルの座標をピクセル単位で返すものです。
マップ攻撃のターゲット座標など、プレイヤーが選択した座標を参照したい場合は
X,Y,WX,WY関数を使ってください。
これらのシステム変数はSetコマンドやIncrコマンドで値を変更することができません(ターン数、総ターン数、資金、次ステージ、BaseX、BaseYは例外)。ただし値の参照は他の変数と同じように行えます。
いくつかのシステム変数はイベント終了後の値が保証されていません。例えば「選択」はAskコマンドを使ったイベントが終わった後に他のイベントで値を参照しても同じ値を返すとは保証されません。イベント終了後に値を参照したい場合は通常の変数に値を保存して下さい。値が保証されない変数は以下の通りです。
対象パイロット、相手パイロット、対象ユニットID、相手ユニットID
対象ユニット使用武器、相手ユニット使用武器
対象ユニット使用武器番号、相手ユニット使用武器番号
対象ユニット使用アビリティ、対象ユニット使用アビリティ番号
選択
特殊な機能を持つ変数としては他に愛称設定用変数があります。変数名が「主人公~愛称」または「ヒロイン~愛称」になっている変数がそれに該当します。詳しくはパイロットデータ、ユニットデータの愛称のところを参照してください。
変数名に「[インデックス]」を付けることで連想配列として使用することもできます。インデックスには数値と文字列の両方を使うことができます。インデックスは式として処理されるためForEachコマンドなどと併用し、大量のデータを一括して処理することができます。
例
味方ユニットが存在する座標をすべてを一括してPrevX[]とPrevY[]に記録する。
ForEach 味方
PrevX[対象ユニットID] = X()
PrevY[対象ユニットID] = Y()
Next
連想配列をグローバル変数にするには個々の要素にGlobalコマンドを使用するのではなく、配列名に対してGlobalコマンドを使用してください。
例 Global PrevX
インデックスを複数用いて多次元配列として使うこともできます。この際、インデックスは「,」(半角)で区切って下さい。
例 Array[i, j + 1]
注意
・値が設定されていない配列要素を使ってを値を読み出した時には空文字列が読み出されます。配列の要素数を調べるにはCount関数を使います。
・配列と同じ名前の通常の変数を使用することは避けてください。変数の処理が正しく行えない可能性があります。
・変数名には任意の文字列を使うことが出来ますが、半角数字で始まる変数名や、半角文字の特殊記号(アンダーライン「_」を除く)をつけた変数名は使わないで下さい。(特に「”」は配列のインデックス内にも使うことが出来ません)
・変数名としてユニット名やパイロット名、システム的に使用される文字列(例:味方、ターン数、サイズ…)をそのまま使うことは避けてください。思わぬ動作を招くことがあります。
・システム的な制限から変数名は大文字・小文字の区別やひらがな、カタカナの区別がつきません。紛らわしい名前(例 Xとx、さいずとサイズ)を付けていると両者が混同されて思わぬ結果を招くことがあります。このような名前を使うことは避けてください。逆に同じ変数を大文字と小文字の両方で参照することも避けてください。