概要
条件判断を記述する最小単位は、比較関数、または「左辺値」「比較演算子」「右辺値」の構造を持っています。
左辺値とは、比較演算子の左側に位置することの出来る値で、右辺値とは、比較演算子の右側に位置することの出来る値です。
平たく言えば、A≦Bという式があった場合、Aが左辺値で、Bが右辺値、そして≦が比較演算子です。
比較関数は、@で始まる文字列で、@関数名(パラメータ数'p0'p1....) という形をしていますが、 現時点でらのべえでは利用できません。右辺値に単項以外の式を記述することは出来ません。 また、計算式では優先順位を表す()を利用することが出来ましたが、条件式には利用できません。 その代わり、いくつかの条件式を AND や OR で組み合わせることが出来ます。 半角の記述はCやC++に準じます。
比較演算子
比較演算子に利用できる記号は次の通りです。
0.評価レベルが同じなら、評価は左から行われる。
1.各式を評価する
2.AND接続を評価する
3.OR接続を評価する
複数の条件判断式を、ANDまたはOR式で接続する際の評価順序は次の通りです。全角表記のOR記号だけは特殊で、半角のセミコロン1個になります。
意味 記号(半角) 記号(全角) 意味 記号(半角) 記号(全角) 等しい == = AND記号 && & 異なる != ≠ OR記号 || ; 以上 <= ≦ 以下 >= ≧ 未満 > > より大きい < <
本来内部では(全角)側の記号が利用されていて、半角側の記号はらのべえがコマンドを出力する際に置換しています。
0.評価レベルが同じなら、評価は左から行われる。
1.各式を評価する
2.AND接続を評価する
3.OR接続を評価する
評価の打ちきり等を無視して具体的に説明すると――
A<3 || B>=2 && C<B
なら、まず全体をOR演算で分解し、「A<3」と「B>=2 && C<B」の2つのブロックに分けます。
次に、「A<3」が評価され真ならこのブロックの評価が真になります。
次に「B>=2 && C<B」が評価され、全ての||で結合されたブロックの評価を行います。
最後に、 個々のブロックの結果をOR演算して評価を決定します。
右辺値や左辺値に利用されるレジスタ等の表記
この色の文字はらのべえでは無視して下さい。
表記 | 例 | 左辺値 | 右辺値 | 説明 | ||||||||||||||||||||||
R* | R1234, R35 | ○ | ○ | 通常レジスタの値です。 | ||||||||||||||||||||||
S* | S1234, S35 | ○ | ○ | システムレジスタの値です。 | ||||||||||||||||||||||
L* | L18, L3 | ○ | ○ | ローカルシステムレジスタの値です。 | ||||||||||||||||||||||
F* | F0〜F31 | ○ | ○ | 拡張フラグ領域の値で0か1になります。 主にゲームの設定等で利用されます。 | ||||||||||||||||||||||
ユーザーが自由に設定できるインデックス範囲は8〜15で、CMD_DEFCONFIGのユーザー拡張部分で値の受け渡しに利用できるため、コンフィグ画面(SystemSettings)の拡張に使われます。各フラグの意味は次の通り。 | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
Q* | Q0〜Q1 | ○ | ○ | Q0〜で、特殊な調査用表記。 | ||||||||||||||||||||||
|
||||||||||||||||||||||||||
Mm* | Mm24 | ○ | ○ | 音楽用既聴フラグの参照です。0か1になります。 | ||||||||||||||||||||||
Ms* | Ms12 | ○ | ○ | シーン用既遊フラグの参照です。0か1になります。 | ||||||||||||||||||||||
Mg* | Mg300 | ○ | ○ | イベントCG用既見フラグの参照です。0か1になります。 | ||||||||||||||||||||||
Mv* | Mv12532 | ○ | ○ | メッセージ既読フラグの参照です。0か1になります。 | ||||||||||||||||||||||
表記 | 例 | 左辺値 | 右辺値 | 説明 | ||||||||||||||||||||||
直値 | 800, -3, 0x24F8 |
× | ○ | 直接的な数値です。32bit整数の範囲です。0xで始めると16進数を、0bで始めると2進数を記述できます。xおよびbは小文字でなければなりません。 | ||||||||||||||||||||||
@* | @isValidItem | - | - | 条件判断で利用される場合は単独(右辺値のない左辺値扱い)で利用しなければなりません。戻り値が0ならfalse、それ以外はtrue扱いされます。つまり常に、@func(params) != 0 と指定されているものとみなされます。関数の一覧は、式の項目をご覧下さい。 | ||||||||||||||||||||||
らのべえリソースのマップ位置
らのべえのリソース | マップ先 | 注釈 |
パラメータ0〜31 | R1400〜R1431 | |
選択結果0〜999 | R1500〜R2499 | 未使用は0。選択された場合AID(1〜)。キャンセルは-1。タイムアウトは-2。 |
記述例
結果は、真だと1に、偽だと0になります。
記述 | 解説 |
R1401==5 | 通常レジスタの1401番が5だったら(パラメータ5番が5だったら)真 |
R1500!=1 | 通常レジスタの1500番が1以外なら(質問0の回答が1以外なら)真 |
R8==S25 | 通常レジスタ8番とシステムレジスタ25番が等しかったら真 |
R50==R42+1 | こんなことはできません! |
R50==3 && (R24==1 || R15==1) | ()で評価順を変更することは出来ません。()は利用できません。 |
Mv12005==1 | メッセージID 12005 番を読んでいたら真 |
Mg321==0 | CGID:0321を見ていなかったら真 |
R3==200&R20>=1; R3==201&R20==1 | 通常レジスタの3番が200かつ20番が1以上か、通常レジスタの3番が201かつ20番が1の時、真 |
R3==200 && R20>=1 || R3==201 && R20==1 | 上記のC準拠表記 |
R20<=3&Mg300==1 | 通常レジスタ20番が3以下で、0300.gyuを見ていたら、真 |
Q0==0 | 一度もセーブされていなければ真 |
@isStrEmpty(1'20) | 文字列レジスタの20番の内容が空なら真 |