じぇーそん3のブログ

アクセスカウンタ

zoom RSS [VX] メッセージボックスを表示する

<<   作成日時 : 2013/03/06 01:25   >>

ナイス ブログ気持玉 7 / トラックバック 0 / コメント 8

何らかのメッセージを表示する際に、文章の表示命令を
使用するのは、最もシンプルで簡単な方法ですが、
アイコンを表示したり、長めのメッセージを表示したり、
選択項目を表示したりといった要求があった場合に、それでは
間に合わないことがあります。

今回のスクリプトは、そういった高度なメッセージ表示を
行いたい場合に役立つと思われます。

画像


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

-----機能説明ここから-----
■基本情報■
1.機能概要
 メッセージボックススクリプトは、一つのウィンドウに
 「タイトル」「画像/アイコン」「メッセージ」「選択項目」の
 表示項目を体裁良くレイアウトして一括で表示するためのものです。

 表示項目の表示・非表示、表示のしかたなどはある程度変化させる
 ことができるようになっており、目的に応じたレイアウトで
 プレイヤーに何らかのメッセージを表示したり、選択を要求したり
 できます。


2.メッセージボックスの構成
 メッセージボックスは、4つの項目から構成されます。
 これらの項目の表示・非表示は全て自由に設定することができます。
 下記にメッセージボックスを構成する項目の説明を記載します。

 (1) タイトル
  メッセージボックス上部に1行で表示されるテキストです。
  タイトルの下には白の下線を表示します。
  (タイトルを非表示とした場合、下線は表示されません)

 (2) 画像/アイコン
  メッセージボックス中部の左側に表示されます。
  ここには任意の画像、またはアイコンを表示することができます。

 (3) メッセージ
  メッセージボックス中部の右側に表示されます。
  メッセージは複数行で表示されるテキストです。

 (4) 選択項目
  メッセージボックス下部に表示されるボタン形式の選択項目です。
  選択項目は複数表示することができ、横に並べて表示されます。
  どの項目を選択したかは、変数を介して知ることができます。


3.カスタマイズ項目
 メッセージボックスは、その表示内容をある程度カスタマイズ
 できるようになっています。詳細な設定は、Configモジュールに
 記述されているパラメータを変更することで行います。

 (1) MB_ENABLE
  メッセージボックス機能を有効にするかどうか。
  trueを指定すると本スクリプトの機能を有効化します。
  falseを指定すると本スクリプトの機能は全て無効になります。

 (2) MB_SKIN
  メッセージボックス用ウィンドウスキンのファイル名。
  この値を変更することで通常のウィンドウとは異なる
  ウィンドウスキンを使用することができます。
  ウィンドウスキンの画像ファイルは
  (制作中ゲームフォルダ)\Graphics\System
  に配置してください。

 (3) MB_VARIABLE
  メッセージボックスで選択した項目のインデックス値をを受け取る
  変数の番号。

 (4) MB_BEFORE_POLL
  メッセージボックスを表示してから、決定キーのキー入力を開始
  するまでの時間をフレーム数で指定。
  この値は、メッセージボックスの表示直後、プレイヤーが誤って
  項目を選択しないよう、一定時間だけ決定キーのキー入力を
  無効化する目的で使用します。10〜20フレームが望ましいと
  思われます。

 (5) MB_BTN_WIDTH
  メッセージボックスに表示するボタン(選択項目)の幅。

 (6) MB_SCR_MARGIN_LEFT / MB_SCR_MARGIN_RIGHT /
   MB_SCR_MARGIN_TOP / MB_SCR_MARGIN_BOTTOM
  メッセージボックス配置時に使用するマージン。

 (7) MB_TITLE_MARGIN_LEFT / MB_TITLE_MARGIN_RIGHT /
   MB_TITLE_MARGIN_TOP / MB_TITLE_MARGIN_BOTTOM
  タイトルのマージン。

 (8) MB_PICT_MARGIN_LEFT / MB_PICT_MARGIN_RIGHT /
   MB_PICT_MARGIN_TOP / MB_PICT_MARGIN_BOTTOM
  画像/アイコンのマージン。

 (9) MB_MSG_MARGIN_LEFT / MB_MSG_MARGIN_RIGHT /
   MB_MSG_MARGIN_TOP / MB_MSG_MARGIN_BOTTOM
  メッセージのマージン。

 (10) MB_BTN_MARGIN_LEFT / MB_BTN_MARGIN_RIGHT /
    MB_BTN_MARGIN_TOP / MB_BTN_MARGIN_BOTTOM
  ボタンのマージン。

 画像


4.使用方法
 メッセージボックスの表示は「スクリプト命令」を用いて行います。
 書式は次の通りです。

 Ex.get_msgbox(
  msg,
  title,
  pict,
  btns,
  pos,
  var,
  kpoll
 )


 (1) msg
  表示するメッセージを配列、または文字列で指定します。

  ・配列の場合
   下記のように記述します。
   表示したい行数分だけ何行でも記述できます。
   ["1行目の文章", "2行目の文章", "3行目の文章"]

  ・文字列の場合
   下記のように記述します。
   文字列の中に「\n」を含めると、そこで改行します。
   "表示したい文章\n次の行の文章..."

 (2) title
  表示するタイトルを文字列で指定します。
  このパラメータには複数行指定できません。
  nilを指定すると、タイトルを表示しません。
  titleは省略可能で、省略すると自動的にnilが設定されます。

 (3) pict
  表示する画像/アイコンを文字列、または整数で指定します。
  nilを指定すると、画像/アイコンは表示されません。
  pictは省略可能で、省略すると自動的にnilが設定さます。

  ・文字列の場合
   文字列で指定すると、画像ファイル名が指定されたものと
   見なします。ファイルは、(制作中ゲームフォルダ)\Graphics
   からの相対パスで指定してください。
   例:"Battlers/Succubus"

  ・整数の場合
   整数で指定すると、アイコンのIDが指定されたものと
   見なします。

 (4) btns
  表示する選択項目を配列、または文字列で指定します。
  nilを指定すると、選択項目は表示されません。
  btnsは省略可能で、省略すると自動的にnilが設定されます。

  ・配列の場合
   下記のように記述します。
   表示したい項目数分だけ何個でも記述できます。
   ["OK", "キャンセル", "無視"]

  ・文字列の場合
   表示したい選択項目が1個しかない場合に、文字列で指定します。
   指定した文言が選択項目として1個だけ表示されます。

 (5) pos
  メッセージボックスの表示位置を指定します。
  下記のいずれかの値を指定します。
  posは省略可能で、省略すると自動的にEx::MB_CENTERが設定されます。

  ・Ex::MB_CENTER または 0
   メッセージボックスを画面中央に表示します。

  ・Ex::MB_LTOP または 1
   メッセージボックスを画面左上に表示します。

  ・Ex::MB_RTOP または 2
   メッセージボックスを画面右上に表示します。

  ・Ex::MB_LBOTTOM または 3
   メッセージボックスを画面左下に表示します。

  ・Ex::MB_RBOTTOM または 4
   メッセージボックスを画面右下に表示します。

 (6) var
  メッセージボックスで選択した項目のインデックス値をを受け取る
  変数の番号を指定します。メッセージボックス表示終了後、varで
  指定された変数に選択項目のインデックス値がセットされます。

  選択項目のインデックス値は、最も左の項目を1とする連番に
  なっています。

  varは省略可能で、省略すると自動的にEx::MB_VARIABLEに
  設定されます。

 (7) kpoll
  メッセージボックスを表示してから、決定キーのキー入力を開始
  するまでの時間をフレーム数で指定します。

  kpollは省略可能で、省略すると自動的にEx::MB_BEFORE_POLLに
  設定されます。


5.注意事項
 通常、メッセージボックスは表示する内容に応じて表示すべきサイズを
 自動的に決定しますが、スクリーンのサイズよりも大きくなることは
 ありません。

 移動ルートの設定からメッセージボックスを表示しないでください。
 本スクリプトのメッセージボックスは、イベントコマンドの
 スクリプト命令から表示するよう設計されています。

 一度に表示できるメッセージボックスは1個までです。
 メッセージボックス表示中にEx.msgboxを呼び出しても、
 何も起こりません。


■使用例■
1.確認用メッセージボックス
 画像

 スクリプト:
    Ex.msgbox(
     ["この先に最後のボスがいるぞ!",
      "戦いの準備は整っているかい!?",
      "突撃する?"],
     "最終確認だ!",
     110,
     ["準備OK!", "待って!"],
     Ex::MB_CENTER,
     10,
     60
    )

 条件分岐:変数 [0010] == 0
  〜準備OK!〜選択時
 :それ以外の場合
  〜待って!〜選択時
 :分岐終了


2.おたから入手時
 画像

 変数の操作:[0001:入手アイテムID] = 8
 変数の操作:[0002:増える個数] = 3
 スクリプト:
    Ex.msgbox(
     sprintf("%s を %d個\n手に入れました。",
      $data_items[$game_variables[1]].name,
      $game_variables[2]),
     nil,
     $data_items[$game_variables[1]].icon_index,
     "OK"
    )



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

  Config.txt
  Controller_MessageBox.txt
  Ex.txt
  Window_MessageBox.txt

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

  #T14-047 NEW--->
  #<--------------

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

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

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

  #T14-047 ADD--->
  #<--------------

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

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

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 7
ナイス ナイス ナイス ナイス ナイス
なるほど(納得、参考になった、ヘー)
面白い

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(8件)

内 容 ニックネーム/日時
今RPG作成中なのですが
イベント中に他のキャラを主人公から出現させ
横に並ばせたりがしたいのですが
まったくわからないのですが
どうか伝授してくれませんでしょうか><;
相談です。
2013/03/14 16:36
1.出現させたいキャラを画面外に置いておく
2.「イベントの位置設定」で主人公と同じ位置にそのキャラを移動
3.移動したイベントを「移動ルートの設定」で動かす

これで問題ないかと思います。

スクリプトとはあまり関連のないお話なので簡潔に失礼します。
J-SON
2013/03/14 23:24
こんにちは、以前タイルスクリプトについて質問させて頂いた者です。
おかげさまで快適に使用させて頂いております。

またスクリプトについての質問で恐縮なのですが、
このメッセージボックスを利用させて頂きました。
選択肢は「表示したい項目数分だけ何個でも記述できます」との事ですが、
10個ほど大量に選択肢を表示させようとしたところ、
全て横一列に並べられてしまい、全て表示できませんでした。
そこでbtnsの記述内で任意に改行をする、もしくは
画面端まで文字が届いたら自動改行されるような記述方法を
ご教授頂ければと思い、コメントさせて頂きました。
お忙しいところお手数お掛け致しますが、どうぞ宜しくお願い致します。
しろがね
2013/06/10 07:58
日頃からご愛顧賜り光栄です。

ご質問の件ですが、btnsの数は仕様的には何個でも記述できますが、元々の想定としましては最大でも3〜4個の短い単語を前提としていました。

そのため、あまり項目数が多いと、画面からはみ出てしまいます。また、自動改行ですが、前述の想定があったため実装されていません。

実現したいシステムの詳細が分からず恐縮ですが、代替案として、
・選択項目を複数ページ(※1)にする
・VX標準の選択肢を複数ページに分けて使う
・選択ウィンドウスクリプト(※2)を使う
など、別の方法をご検討いただけますでしょうか?

ご面倒様ですが、よろしくお願いいたします。

※1
[項目1] [項目2] [項目3] [次へ→]
[←前へ] [項目4] [項目5] [項目6] [次へ→]
[←前へ] [項目7] [項目8] [項目9]
のように、項目を複数ページで表現する方式です。

※2
http://lm-t.at.webry.info/201208/article_1.html
J-SON
2013/06/11 00:07
ご回答ありがとうございました。
どうやらご無理を言ってしまったようで申し訳ありません。
にも関わらず、代替案をありがとうございます。
選択肢を大量に表示するスクリプトにて代替させて頂こうと思います。

我儘を言ってしまいましたが、こちらのスクリプトも大変重宝しております。本当にありがとうございます。
今後とも応援しております。
しろがね
2013/06/12 00:31
ツクールを使ったクイズゲームを作っていまして
メッセージボックスのサイズや位置を自由にレイアウト
したくて検索しておりましたところ、こちらの理想的な
表示方法に辿り着き、感激いたしました。

ぜひとも使わせて頂きたかったのですが、VX Aceで
こちらのスクリプトを導入することは不可能でしょうか…?

スクリプトに触れることも初心者なので先ほどから延々と
試しているのですが、スクリプトの置換がうまくいかず、

  #T14-047 ADD--->
  #<--------------

Game_Interpreter等の仕様が違っているようで、こちらを
追加する場所がわかりません。

ぶしつけなお願いで大変恐縮なのですが、どうかご教授
していただけませんでしょうか。
何卒よろしくお願いいたします。
失礼致します。
かなん
2014/06/12 04:09
かなん様

数ある中から当スクリプトを選択いただき、ありがとうございます。

ご質問の件ですが、当スクリプトはVX専用スクリプトとして設計しておりまして、VX Aceでの利用を想定しておりません。

そのため、大変恐縮ですが、当スクリプトはVX Aceには非対応となります。

ご希望に添えず申し訳ありませんが、悪しからずご了承いただきたく、お願いいたします。m(_ _)m
J-SON
2014/06/12 22:43
ご回答いただきましてありがとうございました。
無茶なことを言ってしまいまして申し訳ございませんでした。
他の手段を探して、VXAceでもどうにかこちらのような素晴らしいレイアウトを再現できるようにがんばってみます!
この度はお忙しい中、不躾な質問にご回答下さいましてありがとうございました。
それでは失礼致します。
かなん
2014/06/13 02:21

コメントする help

ニックネーム
本 文
[VX] メッセージボックスを表示する じぇーそん3のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる