標準条件判断記述について
§リンク
  →チュートリアル一覧
  →GLOSSARY一覧
  →重要な情報一覧

§操作
  プロジェクトエディタ
  演出エディタ(演出ビュー)

§解説
  RSD/RLD
  演出の再利用
  オブジェクトID一覧
  キャラの名前
  キャラ作成用画像
  キャラの表示位置
  選択アイテムの返値
  デバッグ手法
  描画フィルタ
  フォントの設定
  プロジェクト設定項目一覧
  ブロック
  ボリューム
  リソースIDとファイル
  レイヤー構造詳細
  レジスタの利用状況

§各種フォーマット
  色/RRGGBB形式
  標準シナリオ書式
  標準立ち位置指定
  標準透明度指定
  標準透明色指定
  標準補間指定
  標準条件判断書式
  標準「式」書式
  標準アニメシーケンス
   
■概要
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)がどちらの方向にあるかを返す。
     
8 1 2
7 0 3
6 5 4
  パラメータ数   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になります。