information
この応用編は、複雑なスクリプト記述やジャンプ・分岐などを取り扱います。
index
・ジャンプ・シナリオロード
・変数操作
・条件分岐
・選択肢
ジャンプ・シナリオロード
はじめに
シナリオが1つの展開だけではなく、複数に展開されるのが普通です。
そこで、ジャンプや別ファイルのスクリプトロード等の機能を使用し、複数のシナリオを用意する必要性があります。
ラベル
シナリオの途中に、ラベルと言う位置の区切りを設定することが出来ます。このラベルは、シナリオ中を自由にジャンプするための目印となります。
ラベルは、ゲームを製作する上では必須の機能となります。例
\w〜〜〜〜\h
!Event004
\w〜〜〜〜\h
・・・
ジャンプ
ラベルにジャンプする機能です。@gotoという命令を使用します。
ジャンプ命令は、選択肢や分岐命令で駆使されます。例
\w〜〜〜\h
@goto("!event001")
・・・
!event001
\w〜〜〜\h
シナリオロード
現在開いているスクリプトとは別のスクリプトを呼び出す命令です。@snfload命令と、ジャンプ命令を内蔵した@snfloadgoto命令が用意されています。
シナリオロード命令は、大型のゲームになればなるほど多く使われる命令となります。例
\w〜〜〜\h
@snfload("abc.snf")
ジャンプとシナリオロードの用途
このページで紹介される条件分岐と選択肢の呼び出し関数として使うことが期待されています。
変数操作
はじめに
変数の操作は、ゲームの展開を設定するのに重要な要素となります。
変数の詳しい説明は、定義・変数・関数をご覧下さい。
変数への代入
ADVRUNでは、変数の宣言などは一切必要なく、呼び出すだけで自動的に変数が作られます。また、大文字小文字の区別がありません。大文字小文字を入れ替えて入力しても同様の変数として扱われます。
変数へ数値や文字列を代入するには、式を使用します。式
#hitpoint=150
$name="おれさま"
式はさらに、複雑なものを記述することが可能です。
複数の値・変数を含んだ式
#hitpoint=#hitpoint-50+(#data1*10)/100
#name="おれさまは"+$newname+"だ"
式で複数のものを取り扱えるのは、値と変数のみです。関数は、返り値付きという非常に限定された範囲内だけで使用できます。
返り値付き関数の式
#data=@math.random(100)
間違った返り値付き関数の式
#data=100+@math.random(100)
条件分岐
はじめに
条件分岐は、シナリオ展開の決定や変数操作になくてはならない重要な要素です。
条件分岐の種類
数値比較・文字比較・フラグ比較の3種類が存在します。
数値比較
@if(数値条件式);実行したい関数
文字比較
@wif(文字条件式);実行したい関数
フラグ判定
@fif(フラグ判定式);実行したい関数
条件式は複数重ねることが出来ます。論理積(and/かつ)と論理和(or/または)が用意されています。
複数の条件分岐(100<=#A<=500 の範囲としたいとき)
@if(#a>=100 && #a<=500);@goto("!dokoka")
選択肢
はじめに
選択肢を使った応用の操作を解説します。
リターン型選択肢の作り方
ゲームの分岐ではなく、タイトルや画像閲覧モードでは、選択後また選択肢に戻ってきます。
この場合は単純に、ラベルとジャンプ機能を使用するだけとなります。
例
!Title
@BtnSelect.Start(False,True,"","cursor5.ogg","decide2.ogg")
("picTTL_1_Hazime.PIZ","picTTL_1_Hazime_P.PIZ",232,232,178,43,False);@goto("!startgame")
("picTTL_2_Load.PIZ","picTTL_2_Load_P.PIZ" ,232,275,178,40,False);@goto("!loadgame")
("picTTL_3_Config.PIZ","picTTL_3_Config_P.PIZ",232,315,178,40,False);@goto("!settings")
("picTTL_4_Exit.PIZ","picTTL_4_Exit_P.PIZ" ,232,415,178,42,False);@goto("!owari")
@btnSelect.End
!startgame
〜なんらかの処理〜
〜ゲームのシナリオへジャンプ〜
!loadgame
@menu.loadwin
@goto("!title")
!settings
@menu.setwin
@goto("!title")
!owari
@Exit
ここでのポイントは、選択肢直前にあるラベルにジャンプして戻っていることです。このように、単純なラベルとジャンプの記述を行うことで、リターン型の選択肢を再現することが出来ます。
分岐ルートと共通ルートの区別
選択肢に限らず、分岐ルートと共通ルートを同じシナリオファイル内で記述したい場合には、ラベルによる擬似的な区別を行って対応します。
例
!root1
〜ルート1〜
@goto("!kyoutuu")
!root2
〜ルート2〜
@goto("!kyoutuu")
!kyoutuu
〜共通ルート〜
以上のように、ラベルとジャンプで区切ることで共通ルートと分岐ルートを共存することが出来ます。