| ■概要 | 
      
       
        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番の内容が空なら真。 | 
             
           
         | 
      
       
        |   |