STR22_メッセージウィンドウEXT++ / Message Window Extension

VXのメッセージ機能を大幅に拡張強化追加します。追加される制御文字は37種類。詳しい使用法はSTR22Editのスクリプトファイル内のコメントを参照してください(ページ下部に記載しています)。

このスクリプトは「Core(本体)」と「Edit(設定箇所)」の2つで構成されています。利用する場合は必ず両方のスクリプトを導入してください。

Tips

  • XP風バトルと併用するとメッセージウィンドウがおかしくなる
    STR22Editの BTMESMODE の値を 1 にしてください。

  • 最大選択肢数拡張
    最大行数拡張と同じように、選択肢の最大数を増やすことが出来ます。(たぶん100くらいまで増加可能)
    下の画像のように、最大行数をスクリプトで5以上に指定して、
    選択肢のコマンドを並べるだけで選択肢増加ができます。

str22-02

  • ウィンドウを自動で画面範囲内に収める機能を無効にする
    イベントコマンド等のスクリプトで、以下のどちらかのスクリプトを実行
$game_message.unlock = true  # 収めない
$game_message.unlock = false # 収める(初期値)
  • \P[0]によるウィンドウポップの自動位置指定を無効にする
    イベントコマンド等のスクリプトで、以下のどちらかのスクリプトを実行
$game_message.pos_autoset = true  # 有効(初期値)
$game_message.pos_autoset = false # 無効

Features

  • 制御文字マクロ(テキスト置き換え機能)
  • キャラクターポップアップ+ふきだし
  • 顔グラフィックにアニメーション(ループ可/リアルタイムでの変更も)
  • スリムウィンドウ
  • ネームウィンドウ(+顔グラによる自動指定機能)
  • ポーズサイン位置変更
  • アイコン描画
  • アイテム/スキル置き換え
  • 書式設定強化(ルビ文字・文字揃え・太字・斜体・縁取り等)
  • ウィンドウ位置/サイズ強制指定
  • メッセージ表示中移動
  • タイピングSE
  • フェードタイプ変更
  • スキップ機能強化
  • スイッチ/変数操作
  • 最大行数拡張
  • などなど

Script Preview

STR22Core

#==============================================================================
# ★RGSS2 
# STR22Core_メッセージウィンドウEXT++/本体 v2.2b 09/07/25
#
# ・メッセージ機能を大幅に拡張強化強化します。
#  詳しい使用方法はSTR22Editを参照してください。
# ・2.0以降に追加された機能の設定は本スクリプトで行います。
#
#------------------------------------------------------------------------------
#
# 更新履歴
# ◇2.2→2.2b
# 倍速メッセージの不具合が直っていなかったのを修正
# ◇2.1→2.2
# メッセージ表示移動(\MOVE)機能を一応復活 ※未調整です
#  利用する場合は↓設定項目を参照して、設定を変更してください。
# 倍速メッセージの不具合を修正
# ◇2.0→2.1
# ★全選択肢に、指定した文字を付加する機能を追加(このスクリプト設定項目参照↓)
# ★選択肢のカーソル初期位置を変数で指定できるようになった
# ★ポーズサインを強制的に非表示にする機能を追加
#  イベントコマンド等で以下のスクリプトを実行すると非表示にできます。
#    $game_message.pause_clear = true # true=非表示 false=表示
# 細かいバグ修正・変更
# ・戦闘中の"背景を暗くする"にしたメッセージが消えないことがある不具合を修正
# ・強制位置・サイズ指定の位置設定が行われない不具合を修正
# ・ルビ、ネームウィンドウに半角スペースを含めると機能が働かない不具合を修正
# ・STR05導入時のカーソル位置を調整した
# ・半角/全角スペース描画時と改行時の1フレームウェイトを無くした
# ・本スクリプト導入前のセーブデータからの再開に対応
# ◇1.3a→2.0
# 一部機能が廃止されました。詳しくはSTR22Editを参照
# 少しだけ動作軽量化
# STR05のカーソル滑らか移動に対応
# 細かいバグを修正
# ・ふきだしが表示されたままになることがある不具合を修正
# ・文末ポーズサイン位置が正しくない不具合を修正
# ・いろいろ
#
#==============================================================================
# ■ Window_Message
#==============================================================================
class Window_Message < Window_Selectable
  #-------------------------------------------------------------------------#
  # ★ 基本設定(2.1以降追加分)                                              #
  #-------------------------------------------------------------------------#
  # 全ての選択肢に付加する文字 制御文字OK(\は\\で表します)
  CHOICETEXT  = ["\\>", "\\<"] # ["前に付加する文字列", "後に付加する文字列"]
                # これで全ての選択肢を瞬間表示にできます
  CHOICEINDEX = 14       # ◆選択肢のカーソル初期位置指定に利用する変数IDです。
                         # 指定したIDの変数が1以上の時、カーソル初期位置が
                         # 変数の値に対応する位置*になります。
                         # (*上から1,2,3...と順番に対応)
                         # [仕様]一度選択肢を表示すると、変数は0に戻ります
  # 
  MESMOVE_ENABLE = false # \MOVEを利用するか 利用する場合はtrueにしてください
  # メッセージ表示中移動の際にONにするスイッチID
  MESMOVE     = 12       # ◆

STR22Edit

#==============================================================================
# ★RGSS2 
# STR22Edit_MWEXT++/カスタマイズセクション v2.0 09/06/05
#
# ・メッセージウィンドウEXT++の設定プラグインです(ver2.0以降専用)。
# 
#------------------------------------------------------------------------------
#
# 更新履歴
# ◇1.0→2.0
# STR22Core v2.0の仕様に合わせました。
# ★主な変更点
# ・問題が多かったバトルメッセージモード指定を廃止(v2.0では自動認識します!)
# ・スリムウィンドウ機能を廃止(STR25 v1.0で代用できます)
# ・その他、\MOVE、\FA \FAL \FLC、\VOを廃止
#
#==============================================================================
# ■ Window_Message
#==============================================================================
class Window_Message < Window_Selectable
  #-------------------------------------------------------------------------#
  # ★ 基本設定                                                             #
  #-------------------------------------------------------------------------#
  # 通常サイズ(X(0), Y(0), 幅, 高さ) (デフォ値:Rect.new(0, 0, 544, 128) )
  WINDOW_RECT  = Rect.new(0, 0, 544, 128) 
  # フェードタイプ
  FADE_TYPE    = 1        # 0 = 縦に開閉(デフォルト) 1 = 透明度変化
  # ふきだしファイル名
  POPUP_FILE   = "Window_Popup" # 使用しない場合は""
  # ふきだしタイプ参照先変数
  POPUP_TYPE_V = 12       # ◆指定した変数の値でポップアップのパターンが
                          #  決定されます。
  POPUP_MIRROR = true     # ふきだしをキャラ位置に応じて左右反転
  POPUP_LR     = 0        # ふきだしグラフィックの向き
                          # 0 = 左 1 = 右
  # ネームウィンドウ
  N_WINDOW_FN  = "UmePlus Gothic" # フォント (デフォ値:"UmePlus Gothic")
  N_WINDOW_FS  = 16       # フォントサイズ (デフォ値:16)
  N_WINDOW_ED  = true     # 縁取り (デフォ値:true)
  N_WINDOW_CO  = Color.new(255,255,255) # 通常カラー
  N_WINDOW_CE  = Color.new( 64, 32,128) # 縁取りカラー
  N_WINDOW_WH  = [10, 8]  # 幅,高さ修正[幅, 高さ] (デフォ値:[10, 8])
  N_WINDOW_XY  = [0,-14]  # XY座標修正[X, Y]      (デフォ値:[0,-14])
  N_WINDOW_OPC = 100      # 不透明度(通常ウィンドウに対しての%)
  N_WINDOW_IX  = true     # 顔グラフィックを左側に表示した時、
                          # ネームウィンドウの位置を文章に合わせる
  N_WINDOW_1V  = true     # "背景を暗くする"の時、ネームウィンドウを
                          # 透明にする
  # ポーズサイン位置
  P_WINDOW     = 2        # ポーズサイン位置 0 = 中央下 1 = 右下 2 = 文末
  P_WINDOW_XY  = [-24,-24]# XY座標修正[X, Y]
  # 顔グラフィック
  FACE_SIZE    = [96, 96] # サイズ[幅, 高さ]
  FACE_XY      = [0, 0]   # XY座標修正[X, Y]
  FACE_Y       = 1        # 縦位置 0 = 上 1 = 中央 2 = 下
  FACE_SPACE   = 8        # 顔グラと文章間のスペース
  # メッセージバック
  MESBACK_VA   = 13       # ◆指定した変数の値でメッセージバックが
                          #  決定されます。
  # メッセージバックリスト定義(指定した変数の値に対応するファイル名)
  #   対応する値 => "ファイル名",
  MESBACK_LIST = {0 => "MessageBack", # デフォルト
                  1 => "Window_ext",
                  2 => "",
                  }
  #-------------------------------------------------------------------------#
  # ★ フォント                                                             #
  #-------------------------------------------------------------------------#
  # 基本
  DEFAULT_SIZE = 20       # デフォルトの文字サイズ (デフォ値:20)
  WLH          = 24       # 行間 (デフォ値:24)
  ALIGN        = 0        # 文字揃え 0 = 左 1 = 中央 2 = 右 (デフォ値:0)
  # フォントリスト定義(\F[n]で指定するフォントです)
  FONTLIST = {0 => "UmePlus Gothic",  # ■デフォルトのフォント
              1 => "MS Pゴシック", # XPデフォルト
              2 => "MS P明朝",     # 渋い
              3 => "Arial",           # XPタイマーフォント
              4 => "Arial Black",     # XPダメージポップフォント
              }
  # 縁取りカラーリスト定義(\CE[n]で指定するカラーです)
  EDGE_COLOR = {0 => Color.new( 64, 32,128),   # 青
                1 => Color.new(128, 32, 32),   # 赤
                2 => Color.new( 96, 96, 32),   # 黄
                3 => Color.new( 32, 32, 32),   # 黒
                4 => Color.new(64,32,128,128), # うっすらブルー
                }
  #-------------------------------------------------------------------------#
  # ★ タイピングSE                                                         #
  #-------------------------------------------------------------------------#
  # タイピングSEリスト定義 MESSE_VNUMで指定した変数の値のSEを再生します。
  #  対応する値 => SE 情報
  MESSAGE_SE = {0 => RPG::SE.new("Open1", 60, 150), # カチャチャ
                1 => RPG::SE.new("", 80, 150),      # 無音
                }
  # 基本設定
  MESSE      = true    # タイピングSEを有効にするかどうか(ture/false)
  MESSE_WAIT = 2       # タイピングSEの通常再生間隔 0 で最速
  MESSE_VNUM = 10      # ◆再生するSE番号の参照元変数(ID)
                       #  指定した変数の値で再生するSEが決定されます
  MESSE_VWAI = 11      # ◆タイピングSEの再生間隔の強制指定に参照する変数(ID)
                       #  指定した変数の値が 1 以上の時、再生間隔を
                       #  その値に強制指定します
  #-------------------------------------------------------------------------#
  # ★ スキップ                                                             #
  #-------------------------------------------------------------------------#
  # 基本
  FAST_B = Input::B    # メッセージニ倍速ボタン
  F_AUTO = false       # メッセージニ倍速を標準スピードに
  SKIP_B = Input::A    # メッセージスキップボタン
  F_WAIT = 0           # 文章終了時のウェイト VXデフォルトの値は 10
  # 完全スキップ無効化スイッチID
  PSID = 9             # ◆ここで指定したスイッチがONの時、Cボタン押下を含めた
                       #  全てのメッセージスキップ機能が無効になります
  # スキップ無効化スイッチID
  SSID = 10            # ◆ここで指定したスイッチがONの時、
                       #  メッセージスキップ機能が無効になります
  # ニ倍速無効化スイッチID
  FSID = 11            # ◆ここで指定したスイッチがONの時、
                       #  メッセージニ倍速流し機能が無効になります
  #-------------------------------------------------------------------------#
  # ★ 拡張設定                                                             #
  #-------------------------------------------------------------------------#
  # マクロ定義 \M[n]で置き換えるテキストです。
  # 制御文字の "\" は "\\" と入力する必要があります。
  MACRO = { 0 => "\\c[1]\\f",                   # カラー1番、縁取り切り替え
            1 => "\\c[0]\\f",                   # カラー0番、縁取り切り替え
            2 => "を手に入れた!",              # 手に入れた。
            3 => "\\fs[16]\\eはい\\e\\fs[d]",   # 縁取り小さめのはい
            4 => "\\fs[16]\\eいいえ\\e\\fs[d]", # 縁取り小さめのいいえ
            5 => "\\r[漢,おとこ]",              # 男
            
            10 => "\\na[\\n[1]]",               # ネームウィンドウアクター1番
            11 => "\\na[\\n[2]]",               # ネームウィンドウアクター2番
            }
  # オートネームウィンドウ定義 "Actor[n]"と書くことでn番のアクターの名前に設定可
  # "ファイル名 + _ + フェイスインデックス" => "なまえ",
  # フェイスインデックスの  0123
  # 割り当て図 →      4567
  A_N_WINDOW = {"Actor1_0" => "ラルフ",
                "Actor1_3" => "ウルリカ",
                "Actor2_2" => "ベネット",
                "Actor2_5" => "イルヴァ",
                "Actor1_4" => "Actor[5]",
                "Evil_4"   => "Actor[6]",
                "Actor3_1" => "Actor[7]",
                "Actor3_2" => "Actor[8]",
                }
  #-------------------------------------------------------------------------#
  # ★ システムパラメータ ※変更注意                               #
  #-------------------------------------------------------------------------#
  STR22000 =  5          # 斜体文字幅補正
  STR22001 =  8          # 太字文字幅補正
  STR22002 =  4          # イタリックによるウィンドウ幅補正
  STR22007 =  4          # 打ち消し線/下線の透明度補正
  STR22008 =  4          # ルビのサイズ補正 値が大きいほどサイズが小さくなる
  STR22009 = 24          # アイコンのサイズ(24)
  STR22010 =  8          # ポーズサインのアニメーションスピード
  STR22011 = 48          # メッセージの透明フェードイン/アウトのスピード(48)
  STR22101 = true        # メッセージ開始時にフレームリセットを行うか
  STR22900 = [544,416]   # ゲーム解像度
end
#==============================================================================
# ★ STR22_メッセージウィンドウEXT++ マニュアル
#  一通り目を通しておくことをお勧めします。
#  あと、ここに書いてない機能や仕様があったりして・・・(汗)
#==============================================================================
#
# ◇素材規格
#
# □ふきだし(/Graphics/Systemフォルダ)
#  ウィンドウのフレーム部分にかぶせて、
#  ふきだしのように見せるためのグラフィック。
#
#   幅 = 32 + 32
#  高さ = 64 * 任意のふきだしパターン数
#
#  1パターンの64*64内にふきだし上下のグラフィックを収めます。
#  左32*64に下向きのふきだし、右32*64に上向きのふきだしを、
#  ウィンドウの枠部分と重ねて、違和感がないように配置します。
#
#  サンプルのふきだしグラフィックを見ていただくのが
#  一番分かりやすいと思われます。
#
#  ※ふきだしパターンは上から01234...と順番に割り当てられます。
#   この割り当ては変数でパターン指定する際の対応する値となります。
#
#------------------------------------------------------------------------------
#
# ★追加制御文字 アルファベットは小文字で入力しても可
#
# \* \xxxxx :解説
#
# \  = [カッコ内]には、\N、\V等の制御文字が使用できます。
#  * = テキストが改行されると情報が初期化されます。
#
# ◇エクステンド--------------------------------------------------------◇
#
# \ \M[n]  □テキスト置き換え(マクロ)。
#       設定箇所で定義したリストの n 番のテキストに置き換えます。
#       使い方次第で、様々な文章打ち込みの作業を
#       大幅に簡略化することが可能です。
# \ \P[n]  □キャラクターにポップアップ。
#       n 番のイベントにポップアップ+自動リサイズします。
#       0 で実行元のイベント、-1 でプレイヤーにポップアップします。
#       また、同時にふきだし設定(\PP[n])を行います。
# \  \PP[n] □ふきだしを n 番のイベントに位置指定します。
#       0 で実行元のイベント、-1 でプレイヤー、-2 で非表示に。
#       通常メッセージでふきだしを表示させる場合や
#       逆に、ポップアップのふきだしを非表示にする時に使います。
# \  \NA[t] □ネームウィンドウ表示。t に任意の文字列。
#       例:\NA[ラルフ] ラルフを表示
#         \NA[\N[1]] 1番のアクターの名前を表示
#       また、\NA[] と、何も書かずに制御文字を入れると
#       ネームウィンドウは非表示になります。
#       この機能は、オートネームウィンドウ(後述)による表示を
#       無効にしたい場合に使用します。
#  \NEXT  □文章/選択肢の連続表示。
#       行数拡張(後述)で指定した、最大行数を超えない範囲で
#       メッセージをまとめて表示します。
#       行数拡張の項目も合わせてご覧ください。
# \  \SH[p,s,d]
#      □メッセージウィンドウのシェイク。
#       p に強さ、s にスピード、d に時間(1/60sec)を指定します。
#       シェイクの仕様はイベントコマンドで行える
#       "画面のシェイク"と同じです。
#       例:\sh[6,20,60]うおおお! → 1秒速シェイク
#
# ◇キャラ操作----------------------------------------------------------◇
#
# \ \A[n,m] □キャラクターにアニメーション。
#       n 番のイベントに m 番のアニメーションを再生します。
#       n を 0 にすると実行元のイベント、-1 でプレイヤーに再生します。
# \ \U[n,m] □キャラクターにフキダシアイコン。
#       n 番のイベントに m に対応したフキダシアイコンを表示します。
#       n を 0 にすると実行元のイベント、-1 でプレイヤーに表示します。
#       m = 0:びっくり 1:はてな 2:音符 3:ハート 4:怒り
#         5:汗 6:くしゃくしゃ 7:沈黙 8:電球 9:Zzz
#
# ◇ウェイトコントロール------------------------------------------------◇
#
#  \STOP  □マップ更新ストップ。
#       文章表示中、マップの更新(イベント移動など)が停止します。
# \ \S[n]  □文章スピード。値が大きいほどスピードが遅くなります。
#       n には 0 以上の整数を指定してください。
# \ \W[n]  □詳細ウェイト。n フレームのウェイトを掛けます。(1/60sec)
#
# ◇フェイス------------------------------------------------------------◇
#
#  \FR   □顔グラフィックの位置を右側に設定します。
#  \FM   □顔グラフィックを左右反転表示させます。
# \ \FC[n,m]□顔グラフィック変更。
#       n に"ファイル名"、m にフェイスインデックスを指定します。
#       顔グラフィックが指定されて無い場合は無効になります。
#       例:\fc[Actor2,2] → ベネットさん
#  \FCM  □リアルタイムに顔グラフィックを左右反転させます。
#       ギャグっぽい演出に使えそうですね。
#
# ◇置き換え/描画強化---------------------------------------------------◇
#
# \ \MAP  □現在のマップ名に置き換えます。
#       マップ名の # 以降の文字列は無視されます。
#       例:テストマップ#その1 → テストマップ
#       ※ # を2つ以上含んだマップ名の場合、うまく描画されません
# \ \IC[n] □アイコン。n番のインデックスのアイコンを描画します。
# \ \IN[n,m]□アイテム名。n の種類の m 番のアイテムの名前を描画します。
#       種類(n):0 = アイテム 1 = 武器 2 = 防具 3 = スキル 
# \ \IT[n,m]□アイコン+アイテム名。nの種類のm番のアイテムを描画します
#       種類(n):0 = アイテム 1 = 武器 2 = 防具 3 = スキル 
# \ \SPIX[n]□スペース。nピクセルの空白を挿入します。
#
# ◇フォント------------------------------------------------------------◇
#
# \ \R[t,r] □ルビ振り。t に通常の文字、r にルビ文字を指定します。
#       例:\r[野口英世,1000YEN]
# \* \AL[n] □文字揃え。その行の文字揃えを設定します。
#       n:0 = 左 1 = 中央 2 = 右
#       ○設定箇所でデフォルトの文字そろえを設定できます。
# \* \F[n]  □フォント。設定箇所で定義したリストの
#       n 番のフォントに設定します。
# \* \FS[n] □フォントサイズ。n のサイズに設定します。
#       n に D を入れると、デフォルトのフォントサイズに設定します。
#       \fs[d] この様に、d は小文字でも可。
#       ※小さすぎる値もしくは大きすぎる値を指定するとエラーがでます。
#        ご注意ください。
#  * \B   □太字モードON/OFF
#  * \I   □斜体モードON/OFF
#  * \E   □縁取りモードON/OFF(エッジ)
# \ \CE[n] □縁取りカラー設定。設定箇所で定義したリストの
#       n 番のカラーに設定します。
# * \UND  □アンダーライン(_)ON/OFF
# * \STR  □打ち消し線ON/OFF
#
# ◇スイッチ/変数操作---------------------------------------------------◇
#
# \ \SW[i,f]□スイッチ操作。i に操作するスイッチID、
#       fにON,OFF,RV(ON/OFF/反転)のいずれかを指定します。
#       例:\sw[\v[128],rv] → 変数128番の値のスイッチを反転
# \ \VA[i,n]□変数代入。i に操作する変数ID、n に代入する値を指定します。
#       例:\va[256,-512] → 変数256番に-512を代入
#       ※あくまで補助的な制御文字なので、
#        代入以外の操作は行えません。また、少数の代入も非サポートです。
#
#------------------------------------------------------------------------------
#
# ★その他の機能
#
#
# □行数拡張
# イベントコマンド等のスクリプトで、以下のスクリプトを実行すると
# メッセージの最大行数を拡張することができます。
#
# $game_message.maxlineex = line
#
# line に最大行数を指定します。初期値は 4、推奨値は 4 の倍数です。
# 5 以上に指定した時、\NEXTの制御文字を含めた文章コマンドを並べることで、
# 五行以上のメッセージを流すことが可能です。
# 長い説明(プレイングマニュアル等)に便利。
# ・選択肢も同様に拡張できます。キャンセル時の挙動は、
#  一番最後に組み込まれた選択肢コマンドの設定が適用されます。
#
# □ウィンドウ位置/サイズ強制指定
# イベントコマンド等のスクリプトで、以下のスクリプトを実行すると
# ウィンドウ位置とサイズを強制指定することが出来ます。
#
# $game_message.xywh.set(240, 176, 64, 64)
#
# 括弧には(X座標, Y座標, 幅, 高さ)の順に数値を指定します。
# 初期値は(0, 0, 32, 32)です。幅と高さのどちらかが33未満の場合、
# 位置/サイズ強制指定は無効になります。
#
# □オートネームウィンドウ
# 設定箇所で定義した顔グラフィックが指定された場合、
# 自動でネームウィンドウを表示します。
# この機能によるネームウィンドウ表示をさせたくない時は、
# \NA[]とメッセージに記入してください。
#
# □メッセージ二倍速流し/高速メッセージスキップ
# 設定箇所で指定したボタンが押されている間、
# メッセージを高速でスキップします。
# 設定箇所で指定したスイッチをONにする事で
# 機能を無効にすることが可能です。
#
# □タイピングSE
# メッセージ描画時に効果音を鳴らせるようになります。
# 設定箇所で複数設定する事ができ、変数を使って鳴らす音を
# 変更する事が可能です。
#
# □ポーズサイン位置変更
# ポーズサインの位置をある程度変更出来るようになります。
# (デフォルトのポーズサイン位置は下中央)
# 
# □顔グラフィックサイズ変更
# 顔グラフィック一枚あたりのサイズを変更する事が出来ます。
# 
# □フェードタイプ変更
# 通常の縦開閉タイプに加え、透明度を変化させるタイプの
# フェードイン/アウトに設定する事ができます。
#
# □おまけ機能
# ・ウィンドウを自動で画面範囲内に収める機能の有効/無効を切り替えられます。
#  イベントコマンド等のスクリプトで、以下のどちらかのスクリプトを実行
#  $game_message.unlock = true  # 収めない
#  $game_message.unlock = false # 収める(初期値)
#
# ・\P[0]によるウィンドウポップの自動位置指定の有効/無効を切り替えられます。
#  イベントコマンド等のスクリプトで、以下のどちらかのスクリプトを実行
#  $game_message.pos_autoset = true  # 有効(初期値)
#  $game_message.pos_autoset = false # 無効
#==============================================================================