前回に引き続き、menu:コマンド関連の話を進めます。今回はちょっと特殊な派生コマンドについての解説です。【9-1】Map.Menu:コマンドmap.menuコマンドはScriptModeで使用し、画面の中のどこかをクリックさせて分岐するためのコマンドです。ADVゲームで、アイテムの隠し場所をクリックさせたりする用途を想定しています。そのため、menu:コマンドと同じようにクリックされるまで、あるいは指定したタイムアウト秒数が経過するまで、スクリプトの実行が待ち状態になります。アクションゲームなどで非同期にクリックさせる用途には使えませんのでご注意ください。コマンドMap.menu:[タイムアウト秒数]メッセージ<x1,y1,w1,h1>->ジャンプ先<x2,y2,w2,h2>->ジャンプ先~以下繰り返し記述例1Map.menu:10画面をタップしてください。<200,100,120,100>->Segment:100<400,100,120,100>->Segment:200座標は初期のキャラフレと互換性を維持するため、幅600pixel、高さ340pixelの物理座標を指定してください。x,yは、クリックさせたい位置の左上座標。w,hは幅と高さになります。右下の絶対座標ではない点にご注意ください。上記の例では画面中央付近のやや右とやや左の位置で、マウスカーソルが指の形にのハンドカーソルに代わり、クリックできることがわかります。宝探しゲームなどで、クリックできる場所をわからせたくない場合もあると思います。その場合は、画面全体をクリックエリアとする座標を追加して、ハズレ処理へ飛ばすように記述しましょう。記述例2Map.menu:10画面をタップしてください。<0,0,600,340>->Segment:900<200,100,120,100>->Segment:100<400,100,120,100>->Segment:200下に記述した選択肢が優先順位が高くなりますので、ハズレ処理を一番上に記述します。することで、画面全体どこでもハンドカーソルになり、クリックエリアをわからなくすることができます。【9-2】randmenu:コマンドmenu:のようにクリックを待って分岐するものではありませんが、似た構文のコマンドで、randmenu:というものがあります。指定した確率に従って、ランダムに分岐するためのコマンドです。コマンドrandmenu:メッセージ(ダミーですが構文を揃えるため必須になります)<比重値>->ジャンプ先<比重値>->ジャンプ先~以下繰り返し記述例randmenu:ランダムに分岐(ここで指定する文字列は表示されません)<1>->Segment:100<2>->Segment:200この記述例では、1/3の確率でSegment:100へ。2/3の確率でSegment:200へ分岐します。比重値を総和で割った確率で分岐しますので、50%の確率で2分岐させたい場合は、<1><1>と指定してもいいですし<50><50>と指定しても構いません。ランダム分岐がなぜmenu構文をとっているかというと、デバッグをしやすくするためです。デバッグの時に、すべての飛び先が正しいかどうかを確認するには総当たりでテストせねばならず、レアな確率を指定すると、どうしても膨大なテスト回数が必要になってきます。randmenu:コマンドを使って確率分岐するようにスクリプトをくんでおけば、テスト時に以下のように書き換えるだけで、簡単に総当たりができます。テスト時の記述例menu:ランダムに分岐(ここで指定する文字列は表示されません)<1>->Segment:100<2>->Segment:200randmenuの部分をmenuに書き換えるだけで、そのまま画面にメニューが表示され、任意の選択肢を選んでテストすることができます。総当たりテストが終わったら、menuのところをrandmenuにするだけで、本番バージョンになります。ランダム分岐のあるゲームのテストを簡単にする、キャラフレスクリプト特有のテクニックとして覚えておいてください。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。