If分岐
投稿日:2015年6月10日 | 最終更新日:2024年5月15日
if分岐系のコマンドを使って、一定範囲のコマンドの処理をさせたりさせなかったりします。
ただし、テキスト処理やページ処理、シナリオ分岐に関わる部分では使うのは避けてください。
サンプル
リファレンス
Command | 説明 | Arg1 | Arg2 | Arg3 | Arg4 | Arg5 | Arg6 |
---|---|---|---|---|---|---|---|
If | If文を開始 | if判定の論理式 | |||||
ElseIf | ElseIf文を開始 | if判定の論理式 | |||||
Else | Else文を開始 | ||||||
EndIf | If文終了 |
If-ElseIf-Else-Endif
Ifで必ず始まり、EndIfで必ず終える必要があります。
Command | Arg1 | 説明 |
---|---|---|
If | flag1 | |
...任意のコマンド | ... | Ifの条件(falg1)がtrueだったら、実行される |
...任意のコマンド | コマンドは複数設定可能 | |
ElseIf | falg2 | |
...任意のコマンド | ... | ElseIfの条件(falg2)がtrueだったら、実行される |
...任意のコマンド | コマンドは複数設定可能 | |
Else | ||
...任意のコマンド | ... | Ifの条件もElseIfの条件も満たされなかった場合、実行される |
...任意のコマンド | コマンドは複数設定可能 | |
EndIf |
このように、If系コマンドで囲んだコマンド郡の実行を条件分岐することができます。
if分岐は条件付きで非推奨
ifコマンドは以下の使用条件があります。
- シナリオテキストを混ぜてはいけない(テキスト解析が正確にできなくなる)
- 特にPageCtrlは使ってはいけない。
- サブルーチンを使ってはいけない。
基本的にはテキスト処理やページ処理、シナリオ分岐に関わる部分では使うのは避けてください。
上記の書き方に反する使い方をしてしまっていても、インポート時にエラー出力がされません。
ifが絡むと、ページの区切りが不正確になるため、既読ページやPageCtrl、テキスト解析で不具合が起きるため、使用しないでください。
シナリオを分岐する場合は、JumpコマンドやIfコマンドに条件式を設定するやり方を推奨します。
「宴」のシナリオの書き方の性質上、キャラ表示とテキスト表示が不可分になってしまうことがあるので、「同じシナリオでも服装を変えたりしたい」という場合はConditionalを使うことを推奨します。
ifでPageCtrlを使ったエラーの例
ifを跨いだ形でPageCtrlを使うとテキストが正確に表示できなくなるほか、セーブ時のテキストなどにも不具合が生じます。
以下はエラーが出るシナリオのサンプルです。
ifとマクロの組み合わせ
テキストやシナリオの分岐の関係ないものはifコマンドを使っても問題ありません。
たとえば、Parmコマンドなどのパラメーター操作や、Bgコマンドなどのような表示系コマンドなどです。
さらに、マクロ機能と組み合わせれば、ParamIf(指定した条件でパラメーターを操作するコマンド)なども作成できます。