■概要 |
sketch上で利用される標準的な式の記述方法を解説します。これは一般的な中置記法(挿入記法)とほぼ同様です。
なお符号反転のためのマイナス記号は手抜きがあって利用できません(単項の直値だけは例外です)。詳細は記述例を参照してください。
記述例は、一番下にあります。 |
|
■式を記述できる場所 |
式を記述できる場所は、バージョンアップに伴って、少しずつ増えています。したがって、入力項目の説明に直接記入できるかどうかが表示されるようになっています。
ご利用になっているsketchが表示するコマンドプロパティ内の項目の説明に(式可)等の記述がある部分には、式を指定することができます。
|
|
|
■式の要素 |
式は、関数、または「+-*/」の4つの演算子、および計算の優先順位を指定する半角カッコ「()」、および下記のレジスタ表記からなります。各レジスタの詳細については「レジスタの利用状況」をご覧下さい
|
表記 |
例 |
説明 |
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. |
システム予約 |
|
Q0 |
Q0 |
セーブデータがあれば1、なければ0。 |
Q1 |
Q1 |
Q0と同じだが、クイックセーブを判定から除外する |
Q2 |
Q2 |
現在実行されているモードを取得する |
|
|
値(10進表記) |
|
説明 |
0x01(1) |
|
メッセージ終端のキー待ち中 |
0x02(2) |
|
文字列標準選択中 |
0x04(4) |
|
選択アイテムによる選択中 |
0x08(8) |
|
タイトルメニュー中 |
0x10(16) |
|
選択汎用 |
0x80(128) |
|
ACTIONから呼び出された |
|
Q3 |
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 |
|
Mm* |
Mm24 |
音楽用既聴フラグの参照です。0か1になります。 |
Ms* |
Ms12 |
シーン用既遊フラグの参照です。0か1になります。 |
Mg* |
Mg300 |
イベントCG用既見フラグの参照です。0か1になります。 |
Mv* |
Mv12532 |
メッセージ既読フラグの参照です。0か1になります。 |
|
|
|
@* |
@isValidItem |
関数です。一覧については、下記の関数を参照してください。 |
|
|
|
直値 |
800, -3,
0x24F8 |
直接的な数値です。32bit整数の範囲です。0xで始めると16進数を、0bで始めると2進数を記述できます。xおよびbは小文字でなければなりません。
|
|
|
■式の評価順 |
条件式と違って、通常の数式と同様です。その代わり、解析に多少負荷がかかります。
計算の過程で0で割られる操作が発生すると、デバッグメッセージを出力し、計算を中断して0を返します。ただし、この返される0に依存するコードを書いてはなりません。変更される可能性があります。 |
|
■関数一覧 |
|
|
@isValidItem(3'lid'siid'flgValid) |
|
|
戻値 |
|
指定したアイテムが指定した状態なら1を、そうでなければ0を返す。 |
|
パラメータ数 |
|
3 |
|
lid |
|
選択アイテムが登録されているレイヤーID(仮想) |
|
siid |
|
対象となる選択アイテムのID |
|
flgValid |
|
0:無効なら1を返す。1:有効なら1を返す。そうでなければ0を返す。 |
|
|
|
例 |
|
@isValidItem(3'810'210'0) |
|
|
|
810番レイヤーに関連づけられた、選択アイテムID210番のアイテムが無効なら1を、有効なら0を返す。 |
|
|
|
|
@isStrEmpty(1'TID) |
|
|
戻値 |
|
指定した文字列レジスタが空なら1を返す。それ以外は0を返す。 |
|
パラメータ数 |
|
1 |
|
TID |
|
調べたい文字列レジスタのID |
|
|
|
例 |
|
@isStrEmpty(1'20) |
|
|
|
文字列レジスタ20番が空なら1を、そうでなければ0を返す。 |
|
|
|
|
@isNotStrEmpty(1'TID) |
|
|
戻値 |
|
指定した文字列レジスタが空なら0を返す。それ以外は1を返す。 |
|
パラメータ数 |
|
1 |
|
TID |
|
調べたい文字列レジスタのID |
|
|
|
例 |
|
@isNotStrEmpty(1'20) |
|
|
|
文字列レジスタ20番が空でなければ1を、空なら0を返す。 |
|
|
|
|
@randomSet(N'value0'value1'...'valueN-1) |
|
|
戻値 |
|
指定した値の中からランダムで1つを選び返す。ロード後は同じ値を返さない。 |
|
パラメータ数 |
|
不定。N+1。 |
|
N |
|
続いて並んでいるパラメータの数 |
|
value* |
|
ランダムで返す値の集合 |
|
|
|
例 |
|
@randomSet(4'0'2'4'8) |
|
|
|
0,2,4,8のいずれかをランダムで返す。 |
|
|
|
|
@random(1'nMax) or @random(2'nMin'nMax) |
|
|
戻値 |
|
nMin以上、nMax未満の値をランダムで返す。ロード後は同じ値を返さない。 |
|
パラメータ数 |
|
1または2 |
|
nMin |
|
最小値 |
|
nMax |
|
最大値+1 |
|
|
|
例 |
|
@random(2'100'200) |
|
|
|
100〜199のいずれかをランダムで返す。 |
|
|
|
|
@isNeighbor(5'distance'bx'by'tx'ty) |
|
|
戻値 |
|
(bx,by)(tx,ty)間が指定した距離以下なら1を、それ以外は0を返す。 |
|
パラメータ数 |
|
5 |
|
distance |
|
比較距離 |
|
bx |
|
始点x座標。間接参照可。 |
|
by |
|
始点y座標。間接参照可。 |
|
tx |
|
終点x座標。間接参照可。 |
|
ty |
|
終点y座標。間接参照可。 |
|
|
|
例 |
|
@isNeighbor(5'100'R1200'R1201'R1202'R1203)) |
|
|
|
(R1200,R1201) と (R1202,R1203) の距離が100ピクセル以下なら1を、そうでなければ0を返す。 |
|
|
|
|
@dir8(4'bx'by'tx'ty) |
|
|
戻値 |
|
(bx,by)を原点として、(tx,ty)がどちらの方向にあるかを返す。 |
|
|
|
|
|
パラメータ数 |
|
4 |
|
bx |
|
基準点x座標。間接参照可。 |
|
by |
|
基準点y座標。間接参照可。 |
|
tx |
|
ターゲットx座標。間接参照可。 |
|
ty |
|
ターゲットy座標。間接参照可。 |
|
|
|
例 |
|
@dir8(4'R1200'R1201'R1202'R1203)) |
|
|
|
(R1200,R1201) から見た(R1202,R1203) の方向を、0〜8の値で返す。 |
|
|
|
|
@distance2(4'bx'by'tx'ty) |
|
|
戻値 |
|
(bx,by)(tx,ty)間の距離の2乗を返す。 |
|
パラメータ数 |
|
4 |
|
bx |
|
始点x座標。間接参照可。 |
|
by |
|
始点y座標。間接参照可。 |
|
tx |
|
終点x座標。間接参照可。 |
|
ty |
|
終点y座標。間接参照可。 |
|
|
|
例 |
|
@distance2(4'R1200'R1201'R1202'R1203)) |
|
|
|
(R1200,R1201) と (R1202,R1203) の距離の2乗を返す。 |
|
|
|
|
@isPlay(2'kind'flgNot) |
|
|
戻値 |
|
音の再生状態を返す |
|
パラメータ数 |
|
2 |
|
kind % 10 |
|
0:音楽 1:環境音 2:効果音 3:環境音声 |
|
kind / 10 |
|
0:実際に再生されていれば1 1:muteされていても再生されていれば1 |
|
flgNot |
|
戻り値を反転させる |
|
|
|
例 |
|
@isPlay(2'10'0) |
|
|
|
音楽が再生されていれば1を返す。ミュートされていても1を返す。 |
|
|
|
|
@posX(1'lid), @posY(1'lid), @width(1'lid),
@height(1'lid) |
|
|
戻値 |
|
指定レイヤーの始点やサイズを返す |
|
パラメータ数 |
|
1 |
|
lid |
|
レイヤーの仮想ID |
|
|
|
例 |
|
@width(1'300) |
|
|
|
レイヤー300の幅を返す。lidが不正な値なら0が返る。 |
|
|
|
|
@clip(4'now'min'max'flags) |
|
|
戻値 |
|
nowをmin<=N<=max の範囲でクリップする。 |
|
パラメータ数 |
|
4 |
|
now |
|
現在値。この値をクリップして返す。式可 |
|
min |
|
最小値。式可 |
|
max |
|
最大値。式可 |
|
flags |
|
0:nowが範囲外なら一番近い境界値を返す。1:nowが範囲外なら一番遠い境界値を返す。式可 |
|
|
|
例 |
|
@clip(4'R1000'0'100'1) |
|
|
|
R1000の値が、R1000<0なら100を、R1000>100なら0を返す。 |
|
|
|
|
@isCheck(N'mode'flags'...) |
|
|
N |
|
modeによって可変(2〜4) |
|
mode |
|
チェックする対象に付けられたID。(0〜) |
|
flags |
|
0:通常 1:結果を反転させる。0なら1を、0以外なら0を返すようになる。 |
|
... |
|
以降のパラメータはmode依存。 |
|
|
|
|
|
|
|
mode 0 |
|
フルスクリーン/ウィンドウチェック |
|
書式 |
|
@isCheck(2'0'0); |
|
|
|
現在の表示がフルスクリーンなら1を、ウィンドウなら0を返す。 |
|
|
|
|
|
|
|
mode 1 |
|
カーソル定義チェック |
|
書式 |
|
@isCheck(2'1'0); |
|
|
|
ユーザーカーソルが適用されている場合は1を返す。 |
|
|
|
|
|
|
|
mode 2 |
|
システムフラグチェック |
|
書式 |
|
@isCheck(3'2'0'index); |
|
|
|
index 0:movie表示時サウンドデバイスが解放される設定なら1を返す |
|
|
|
index 1:ワイドボイスが無効なら1を返す |
|
|
|
index 2:ダイアログへのカーソルの自動移動が有効なら1を返す |
|
|
|
|
|
|
|
mode 3 |
|
未読時のスキップモードチェック |
|
書式 |
|
@isCheck(2'3'0); |
|
|
|
強制スキップなら1を返す。 |
|
|
|
|
|
|
|
|
|
■記述例 |
125+43 |
|
168になります。 |
R1200+43 |
|
通常レジスタの1200番の内容に43を足した値になります。 |
R1200+R400*L10 |
|
400番レジスタの内容に、ローカルレジスタ10番の内容を掛けたものを、1200番レジスタの内容に加えた値になります。 |
(R1200+R400)*L10 |
|
上記と似ていますが、先に足し算を行います。 |
-100 |
|
符号反転のためのマイナス記号は手抜きのため取り扱えませんが、単項の直値だけは許されます。 |
-R200 |
|
この表記は現在のところ許されません。どうしても表記したい場合は、0-R200
としてください。 |
R100+(-200) |
|
この表記は現在のところ許されません。R100+(0-200)、または、R100-200
としてください。 |
R100/-R150 |
|
したがって、これもダメです。R100/(0-R150) や、0-R100/R150 などとしてください。 |
Q0+100 |
|
フラグは0または1の値を持ちます。したがってこれは、セーブデータがなければ100に、あれば101になります。 |
|
|
|
|
|