[VX] 大量の選択肢を一つのウィンドウに表示する

ゲーム中で一度に大量(10個以上)の選択肢から一つを
選択させたい時、VX標準の機能では不十分です。
今回のスクリプトは、大量の選択肢を一つのウィンドウに
表示させ、その中から項目を選択できるようにするための
ものです。

画像


スクリプト素材のダウンロードは↓
http://www.lm-t.com/blog/choose_window_110.zip

[2013/8/17追記]
機能追加を行いました。(Ver1.10)


-----機能説明ここから-----
■基本情報■
1.機能概要
 選択ウィンドウスクリプトは、VX標準システムでは一度に最大で4個
 までしか表示できない選択肢を大量に表示することができるように
 するものです。

 選択ウィンドウスクリプトには、以下の機能が搭載されており、
 それぞれの機能はイベント、またはバトルイベントから使用する
 ことができます。

 (1) 選択項目の追加
  選択ウィンドウに表示する選択項目を1件追加します。

 (2) 選択項目の複数件追加
  選択ウィンドウに表示する選択項目を一度に複数件追加します。

 (3) 選択項目のクリア
  追加した選択項目をクリアします。

 (4) 選択開始
  選択ウィンドウを表示し、プレイヤーによる選択を開始します。


2.選択項目の追加
 選択項目の追加は「スクリプト命令」に以下の書式で記述します。

 Ex.choose_add(
  item,
  enabled
 )


 (1) item
  選択項目の文字列を指定します。

 (2) enabled
  選択項目の選択可否を指定します。
  trueを指定すると選択可能になります。
  falseを指定すると選択不可になり、itemの値はグレー表示され、
  選択できなくなります。

  enabledは省略可能で、省略すると自動的にtrueになります。


3.選択項目の複数件追加
 選択項目の複数件追加は「スクリプト命令」に以下の書式で
 記述します。

 Ex.choose_add_items(
  items
 )


 (1) items
  選択項目の文字列を指定します。
  値は一度に複数指定することができます。
  例:"はい", "いいえ", "キャンセル"


4.選択項目のクリア
 選択項目のクリアは「スクリプト命令」に以下の書式で記述します。

 Ex.choose_clear


5.タイトルの設定 (Ver1.10)
 選択ウィンドウのタイトル設定は「スクリプト命令」に以下の書式で
 記述します。

 Ex.choose_title(
  title
 )


 (1) title
  表示したいタイトルを指定します。
  nilを指定すると、タイトルを表示しません。

 タイトルの表示は任意です。タイトルを設定しなかった場合は
 タイトルの無い選択ウィンドウを表示します。


6.選択開始
 選択開始は「スクリプト命令」に以下の書式で記述します。

 Ex.choose_start(
  variable,
  rows,
  width,
  flags
 )


 (1) variable
  選択結果を格納する変数の番号を指定します。
  選択ウィンドウによる選択が完了すると、このパラメータに
  指定した変数にどの項目が選択されたかを示す数値が格納されます。

  数値は最も上の項目を0とした番号になっています。
  これにより、選択ウィンドウの処理後に条件分岐命令で変数の値を
  参照してイベントを分岐させることができます。

  選択ウィンドウがキャンセルされると、変数には-1が格納されます。

 (2) rows
  選択項目を一度に何行表示するかを指定します。
  1~16の範囲で指定します。範囲外の値を指定した場合は自動的に
  範囲内の値に丸められます。

  rowsは省略可能で、省略すると自動的に6になります。

  (Ver1.10)
  rowsに0を指定すると、選択項目数に従って自動的に値を決定します。
  ただし、選択項目数が16を超える場合は16に設定されます。

  (Ver1.10)
  選択ウィンドウにタイトルを表示する場合は選択項目がスクロール
  しないようにしてください。タイトルを表示する状態で選択項目が
  スクロールすると、ウィンドウの表示が乱れます。
  画像


 (3) width
  選択ウィンドウの幅を指定します。
  幅は画面全体の横幅を1.0とする比率で指定します。
  例えば、0.5を指定すると画面横幅の半分の幅の選択ウィンドウが
  表示されます。

  0.1~1.0の範囲で指定します。範囲外の値を指定した場合は
  自動的に範囲内の値に丸められます。

  widthは省略可能で、省略すると自動的に0.5になります。

  (Ver1.10)
  widthに0.0を指定すると、選択項目とタイトルの長さから自動的に
  幅を決定します。

 (4) flags
  選択ウィンドウの動作フラグを指定します。
  現在、以下の動作フラグがサポートされています。

  ・Ex::CHOOSE_DEFAULT
   デフォルトの動作を意味します。

  ・Ex::CHOOSE_CANCELABLE
   選択ウィンドウ表示中にキャンセルボタンを押すと
   選択をキャンセルすることができるようになります。
   この値を指定しなかった場合はキャンセルボタンを
   押してもキャンセルできません。

   この動作フラグを指定し、且つ全ての選択項目が
   選択不可とされている場合、選択ウィンドウは表示されず、
   選択結果を格納する変数には-1が格納されます。

   また、選択項目が0件の場合も選択ウィンドウは表示されず、
   選択結果を格納する変数には-1が格納されます。

  flagsは省略可能で、省略すると自動的に
  Ex::CHOOSE_DEFAULTになります。


■使用例■
1.選択項目を1件ずつ追加して表示する
 文章:
  君はどんな女性と結婚したいのかね?
 スクリプト:
    Ex.choose_add("一般的な女性", true)
 スクリプト:
    Ex.choose_add("人妻", false)
 スクリプト:
    Ex.choose_add("下町の一人娘", true)
 スクリプト:
    Ex.choose_add("世界的大物女優", true)
 スクリプト:
    Ex.choose_add("初音○ク", false)
 スクリプト:
    Ex.choose_start(1, 5, 0.4)
 画像


2.選択項目を一度に複数追加して表示する
 文章:
  ごはん、なにしよっか?
 スクリプト:
    Ex.choose_add_items(
        "寿司", "牛丼", "ファミレスで",
        "居酒屋で", "ラーメン", "スイーツ",
        "焼肉", "その辺の定食", "イタめし"
    )

 スクリプト:
    Ex.choose_start(20, 6, 0.5)
 画像


3.キャンセル可能な選択ウィンドウを表示する
 スクリプト:
    Ex.choose_add_items("はい", "いいえ")
 スクリプト:
    Ex.choose_start(
        1,
        2,
        0.3,
        Ex::CHOOSE_CANCELABLE
    )



4.タイトル付きの選択ウィンドウを表示する (Ver1.10)
 スクリプト:
    Ex.choose_title(
      "晩ご飯は何にするか決めた?"
    )

 スクリプト:
    Ex.choose_add_items(
      "すき家でおろしポン酢牛丼サラダセット",
      "松屋で牛焼肉定食のご飯大盛り",
      "スーパーでお惣菜を買って自宅で食べる",
      "友達と一緒に街に出て回転寿司",
      "居酒屋で鶏料理を食べつつお酒を飲む"
    )

 スクリプト:
    Ex.choose_start(
      1,
      0,
      0.0
    )

 画像


■導入手順■
1.スクリプトの追加と置換
 (1) 追加
  以下のスクリプトは標準のスクリプトには存在しないものなので、
  手動で追加する必要があります。スクリプトの名前は各ファイル名
  から「.txt」を除いたものにしてください。

  Controller_Choose.txt
  Ex.txt
  Window_Choose.txt

  ただし、過去に公開された拙作のスクリプト素材を導入済みで、
  すでに同じ名前のスクリプトが存在する場合は、以下のコメントで
  囲まれている部分を手動で追加してください。

  #T14-037 NEW--->
  #<--------------

 (1) 置換
  以下のスクリプトの内容を書き換える作業を行います。

  Game_Interpreter.txt  → Game_Interpreter
  Game_Temp.txt     → Game_Temp
  Scene_Battle.txt    → Scene_Battle
  Scene_Map.txt     → Scene_Map

  上記で示したスクリプトに、以下のコメントで囲まれている部分を
  手動で追加してください。

  #T14-037 ADD--->
  #<--------------

  #T14-037 1.10 ADD--->
  #<-------------------

  変更する箇所を間違えないように注意してください。

 ●注意
 置換作業を行う前に必ずバックアップを取っておくようにしてください。
 元のスクリプトの状況によっては、置換を行うことでスクリプトが
 正常に動作しなくなることがあります。
-----機能説明ここまで-----

この記事へのコメント

この記事へのトラックバック