■概要 |
sketch上で表記する標準的な条件判断の記述方法を解説します。
記述例は、一番下にあります。 |
|
■条件判断の最小単位(式) |
条件判断を記述する最小単位は、比較関数、または「左辺値」「比較演算子」「右辺値」の構造を持っています。 |
関数は、@で始まる文字列で、@関数名(パラメータ数'p0'p1....) という形をしています。 |
条件を比較するための、比較演算子には、全角の「=≠≧>≦<」が利用できます。また、Cの比較演算子「==,!=,>=,>,<=,<」も同様に使用できます。 |
左辺値とは、比較演算子の左側に位置することの出来る値で、右辺値とは、比較演算子の右側に位置することの出来る値です。具体的には次の書式が利用できます。
各レジスタの詳細については「レジスタの利用状況」をご覧下さい |
表記 |
例 |
左辺値 |
右辺値 |
説明 |
R* |
R1234, R35 |
○ |
○ |
通常レジスタの値です。 |
S* |
S1234, S35 |
○ |
○ |
システムレジスタの値です。 |
L* |
L18, L3 |
○ |
○ |
ローカルレジスタの値です。 |
F* |
F0〜F31 |
○ |
○ |
拡張フラグ領域の値で0か1になります。
ユーザーが自由に設定できるインデックス範囲は8〜15で、CMD_DEFCONFIGのユーザー拡張部分で値の受け渡しに使用できるため、め、コンフィグ画面(SystemSettings)の拡張に使われます。
各フラグの意味は次の通り。
0. |
表示履歴にAAを適用する |
1. |
非公開 |
2. |
簡易履歴表示を使用する |
3. |
拡大縮小時、常時高画質で演算する |
4. |
abort/save/load/config のプロパティを左クリックで表示する |
5-7. |
システム予約 |
8-15. |
ユーザー定義 |
16-23. |
ユーザー定義予約(現在は使用しないでください) |
23-31. |
システム予約 |
|
Q* |
Q0 |
○ |
○ |
Q0〜で、特殊な調査用表記。 |
|
|
|
|
表記 |
解説
|
Q0 |
セーブデータがあれば1、なければ0。 |
Q1 |
セーブデータがあれば1、なければ0。ただしクイックセーブを調査対象にしない。 |
Q2 |
現在実行されているモードを取得する |
|
戻値(10進) |
|
説明 |
0x01(1) |
|
メッセージ表示のキー待ち中 |
0x02(2) |
|
文字列標準選択中 |
0x04(4) |
|
選択アイテムコマンドによる選択中 |
0x08(8) |
|
タイトルメニュー中 |
0x10(16) |
|
それ以外の選択汎用 |
0x80(128) |
|
非公開:ACTIONから呼び出された |
|
Q3 |
現在実行されているOSを返す |
|
戻値 |
|
説明 |
1 |
|
windows 95 |
2 |
|
windows 98 |
3 |
|
widoows Me |
100 |
|
windows NT4.0 |
101 |
|
windows 2000 |
102 |
|
windows Xp |
103 |
|
windows server 2003 |
104 |
|
windows VISTA / windows server 2008 |
105 |
|
windows 7 / windows server 2008 R2 |
|
Q4 |
強制画面モードを返す。 |
|
戻値 |
|
説明 |
0 |
|
なし(指定通り) |
1 |
|
Yのほうが大きい画面 |
11 |
|
正方形 |
54 |
|
5:4 大抵は1280x1024 |
43 |
|
4:3 |
1609 |
|
ワイド 16:9 |
1610 |
|
ワイド 16:10 |
1616 |
|
それ以外のワイド |
|
Q5 |
表記名の変更が行われていれば1。なければ0。 |
Q10 |
現在時間(ローカル時間)を取得します。戻り値は4桁の整数で hhmm です。hhは24時間制。 |
|
以下、Q11〜Q18は、Q10で取得したデータの値を返し、新規に時間を取得しない。
|
|
表記 |
|
戻値 |
Q11 |
|
西暦年(4桁) |
Q12 |
|
月(1-12) |
Q13 |
|
週(0:日-6:土) |
Q14 |
|
日(1-31) |
Q15 |
|
時間(0-23) |
Q16 |
|
分(0-59) |
Q17 |
|
秒(0-59) |
Q18 |
|
ミリ秒(0-999) |
|
Q20
|
Q29 |
拡張DLLがロードされているかどうか。下位一桁がDLL ID。
ロードされていれば1を、されていなければ0を返す |
|
|
|
|
|
|
|
|
|
|
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 と指定されているものとみなされます。関数の一覧は、式の項目をご覧下さい。 |
|
|
■式のAND |
式どうしのANDを取るためには、半角のアンパサンドを使用します。
評価は左から順番に行われます。括弧による優先順位の変更は出来ません。ご注意下さい。 |
例(1204番レジスタが2で、かつ18番レジスタが4以上):R1204==2 & R18>=4 |
|
■式のOR |
歴史的経緯から、式のORは入力する場所が異なっていることが多いのですが、最終的には、半角のセミコロン;で表現されます。 |
例(800番レジスタが3か、801番レジスタが4):R800==3; R801==4 |
|
■式の評価順 |
条件式は次の手順で評価されます。通常の数式と異なるのでご注意下さい。 |
1. |
式を半角のセミコロンで分断する。分断した式をOr0〜Ornとします。 |
2. |
Or0 を半角のアンパサンドで分断しA0〜Anにします。A0〜Anは、最小単位になっているはずですから、それをひとつひとつチェックしながら、A0〜AnでANDをとります。 |
3. |
2番の操作を、Or0〜Ornが無くなるまで繰り返し、それぞれの結果のORを取ります。 |
4. |
3で得られた結果を返します。 |
|
平たく言えば、全ての式が左から評価され、評価結果に対して全てのANDが左から実行され、その結果に対して全てのORが左から実行されます。 |
|
もちろん、無駄な評価は行われません。例えば、R10==2; R11==1 なら、R10が2の段階で残りの式は評価されませんし、S23==4
& R11==8 & S21!=3 なら、S23が4でない時点で、残りの式は評価されません。 |
|
|
左辺や右辺や演算子の間には、半角スペースを入れることが出来ます。 |
|
|
■記述例 |
R1200==5 |
|
通常レジスタの1200番が5だったら。 |
S100!=1 |
|
システムレジスタの100番が1じゃなかったら。 |
R8==S25 |
|
通常レジスタ8番とシステムレジスタ25番が等しかったら |
R50==R42+1 |
|
こんなことはできません! |
MV12005==1 |
|
メッセージID 12005 番を読んでいたら。 |
MG321==0 |
|
0321.gyu を見ていなかったら。 |
R3==200&R20>=1;
R3==201&R20==1 |
|
通常レジスタの3番が200かつ20番が1以上か、通常レジスタの3番が201かつ20番が1の時、真。 |
R20<=3&MG300==1 |
|
通常レジスタ20番が3以下で、0300.gyuを見ていたら、真。 |
Q0==0 |
|
セーブデータがなければ |
@isStrEmpty(1'20) |
|
文字列レジスタの20番の内容が空なら真。 |
|
|