◆概略
RPGツクールXPでは、標準の選択肢は、4つまでしか設定できません。また、文章表示ウィンドウの中にしか表示できません。
スクリプトで選択肢を表示することも出来ますが、スクリプトが良く分からないという人には、ちょっと設定しにくいものです。
そこで、イベントコマンドの「ラベル」を利用して、簡単に多項目の選択肢を表示できるスクリプト素材を作りました。
◆データ
バージョン:0.10
公開日付:2005/02/02
作った人:入江ノジコ
ダウンロード:
label_choice.zip
◆バージョンアップ履歴
2005/03/19 Ver.0.11 : ウィンドウのZ座標変更(162行目の「win_choice.z = 10010」で設定)
◆使い方
ダウンロードしたらファイルを解凍してください。ゲームを起動し、人と会話すると使い方を教えてくれます。より詳しい説明は、下記の『◆詳細な説明』を読んでください。
サンプルゲームは、Game.exeで起動できます。
RPGツクールXPで開く時は、Game.rxprojをダブルクリックするか、ツクールのメニューから開いてください。
◆できること
・5つ以上項目がある選択肢を表示できます(限度は無し)
・選択肢ウィンドウを好きな場所に表示できます(自動調整もできます)
・ウィンドウの表示行数を固定できます(自動調整もできます)
・ウィンドウの幅を固定できます(自動調整もできます)
・スクロールするウィンドウを表示できます
・ウィンドウ枠を非表示にできます
◆詳細な説明
ダウンロードしたファイルをRPGツクールXPで開いたら、「スクリプトエディタ」を開いてください。一番下から2番目に「★label_choice」というセクションが設定されています。
それが「ラベルで選択肢表示スクリプト」です。
○自分のゲームに導入する方法
自分のゲームに導入する場合、自分のゲームの「スクリプトエディタ」を開いて「★label_choice」をコピーするだけです。
コピーする位置は、「Interpreter 3」より下でなければなりません。(もちろん「Main」より上です)
このスクリプトは、「Interpreter 3」の「command_118(● ラベル)」を再定義して書き換えますので、すでにこのメソッドを変更している場合は注意が必要です。その場合、ご自分で内容を見て変更してください。
また、新たに「Window_Command2」というクラスを作ります。
○イベントでの設定の仕方
このスクリプトは、標準の「ラベル」の機能に選択肢表示の機能を付加するものです。従って、選択肢の設定は「ラベル」で行います。
下図を見てください。これが、最もシンプルな選択肢の設定の仕方です。
1行目の「¥S スタートラベル」というのが、選択肢の始まりを表します。(ここでは、表示の都合で"¥"を全角で書いていますが、実際には半角で書いてください)
ラベル名の先頭に"¥S"と書いてあれば、そこを選択肢の始まりとみなします。「スタートラベル」の部分は書かなくてもいいです。(ちなみにSはスタートのSです)
最後の行の「¥E エンドラベル」というのが、選択肢の終わりです。ラベル名の先頭に"¥E"と書いてあれば、そこを選択肢の終わりとみなします。(ちなみにEはエンドのEです)
スタートとエンドの間の「¥Cりんご」とか「¥Cみかん」というのが、選択肢の項目になります。ラベル名の先頭に"¥C"と書いてあれば、それを選択肢の項目名とみなします。(ちなみにCはチョイスのCです)
項目数に制限はありません。
上図の例の場合、実行すると下図のように表示されます。
「りんご」を選べば、「¥Cりんご」と書いてあるラベルの下の行からイベントが実行されます。
そして、次の項目ラベルのところまで行くと、エンドラベルを探してそこへジャンプして続きを実行します。
○キャンセル設定
選択肢表示中にキャンセルボタンを押した場合に、キャンセルしてウィンドウを閉じるか、キャンセルを受け付けないか設定できます。
キャンセルできるようにする場合は、スタートラベル("¥S"と書いたラベル)のすぐ下に、キャンセル時の処理を書いてください。下図のような感じです。
こうすると、キャンセルキーを押した時、スタートラベルの次からイベントが実行されます。
逆に、スタートラベルのすぐ下に、項目ラベルあるとキャンセル禁止になります。
キャンセルは有効にしたいけど、何も実行したくないという時は、注釈など実行されないコマンドを入れておきましょう。
○ウィンドウの表示位置設定
ウィンドウの表示位置は、標準の設定では自動調整になっています。
自動調整の場合、X座標(横)は、常に中央揃えになります。
Y座標(縦)は、「文章オプションの変更」の設定に合わせて自動調整します(文章表示と同じですね)。「文章オプションの変更」の設定は、ウィンドウ枠の表示・非表示も有効です。
ウィンドウの表示位置を座標で指定したい場合は、スタートラベルに"¥[50,100]"のように書きます。例えば、下記のように書きます。
◆ラベル:¥S ¥[50,100] スタート
これで、X座標が50、Y座標が100の位置に、ウィンドウの左上が来るように表示されます。
座標は、どちらか省いてもいいです。
"¥[,50]"のように、X座標を書かなければ、X座標は標準の中央揃えになり、Y座標は50になります。
○行数の設定
ウィンドウの行数(ウィンドウの高さ)は、標準の設定では自動調整になっています。項目の数に合わせて行数も設定されます。
これを、特定の行数に固定したい場合は、スタートラベルに"¥H5"のように書きます。例えば、下記のように書きます。
◆ラベル:¥S ¥H5 スタート
これで、行数が5行に固定されます。(ちなみに、HはHeightのH)
項目数が、2つでも3つでも、5行分の高さのウィンドウになります。
項目数が、設定した行数を超えた場合、スクロールするようになります。スクロールするウィンドウは、下記のように表示されます。
○ウィンドウの幅の設定
ウィンドウの幅は、標準の設定では自動調整になっています。項目の文字数に合わせて設定されます。
これを、特定の幅に固定したい場合は、スタートラベルに"¥W5"のように書きます。例えば、下記のように書きます。
◆ラベル:¥S ¥W200 スタート
これで、ウィンドウの幅が、200ピクセルに固定されます。(ちなみに、WはWidthのW)
○ウィンドウ枠の表示・非表示
「文章オプションの変更」の設定が、そのまま選択肢ウィンドウにも反映されます。
○選択肢のネスト
仕様上、選択肢の中に更に選択肢を設定することは出来ません。つまり、選択肢を入れ子状に設定することは出来ないわけです。
ただし、条件分岐の中に指定すれば、入れ子状にできます。このスクリプトは、ラベルを検索する時、条件分岐やループがあった場合、それを飛ばして処理する仕様になっているからです。
サンプルイベントにも条件分岐を使ったものがあります。下図のような内容です。
最初の選択肢は、「¥S ¥[20,20] スタートラベル」から始まるもので、「答える・答えない」を選択するものです。
そして、「答える」を選択した場合、さらに次の選択肢を出すようになっています。これを、条件分岐の中に入れているのがポイントです。もし、条件分岐の中に入れていないと、選択肢の表示がおかしくなります。
条件分岐の条件は、最初から満たされているものを選ぶといいでしょう。(ここでは、セルフスイッチAがOFFの場合にしています。セルフスイッチの初期値はOFFですから、セルフスイッチをいじっていない限り、この条件分岐は必ず実行されます)
◆その他注意事項
選択肢を表示している間、他のイベントの実行は止まります。並列処理も止まります。
その関係で、文章ウィンドウを表示した直後に選択肢を表示すると、ウィンドウが消え残りますので、間にウェイトを3フレームくらい入れてください。