#============================================================================== # ■ RGSS3 超簡易センターメッセージウィンドウ Ver2.00 by 星潟 #------------------------------------------------------------------------------ # 設定した文字列に合わせて、画面中央部に # メッセージを表示するウィンドウを生成することが出来るようになります。 # このウィンドウが表示されている間は # 特定キーを押すまでは、イベントのウェイトと同じ扱いになります。 # # ウィンドウの呼び出しはイベントコマンドのスクリプトを以て行います。 # これはマップ/戦闘中共に呼び出すことが可能です。 # # 通常のメッセージウィンドウと違い、制御文字は使えませんが # 改行及び、行別の文字色は指定する事ができます。 #------------------------------------------------------------------------------ # イベントコマンドのスクリプトでt_wを用います。 # # 最初の引数に文字列を指定します。 # (文字列の為、必ず""で囲んでください) # 文字列内で改行を行うか、「|」(鍵括弧は除く)を記入する事で改行が行われます。 # # 次の引数で各行の文字色を指定します。 # 設定しない場合、全て白文字となります。 # 配列での指定となり、配列の要素の順番が # それぞれの行の順番となっており、その要素の数が文字色となります。 # # ピンと来ない方は下記の設定例をお読みください。 #------------------------------------------------------------------------------ # 設定例 # 1. # 1行目あいうえお 2行目かきくけこ # これらを全部白文字で表示する場合、イベントコマンドのスクリプトで # # t_w("あいうえお|かきくけこ") # # 上記のように入力する事で実現できます。 # # 2. # 1行目あいうえ 2行目おかきくけこ 3行目さしすせそたちつてと # これらを1行目を白、2行目を緑、3行目を赤文字で表示する場合 # イベントコマンドのスクリプトで # # t_w("あいうえ|おかきくけこ # さしすせそたちつてと",[0,3,10]) # # 上記のように入力する事で # 最長行である3行目の「さしすせそたちつてと」に合わせた幅の # それぞれ違う文字色のウィンドウの表示が実現できます。 #============================================================================== module CMWSetting #超簡易センターメッセージウィンドウの表示を終える際のキーシンボルを指定。 Keys = [:C,:B] end class Game_Interpreter #-------------------------------------------------------------------------- # 超簡易センターメッセージウィンドウ呼び出し #-------------------------------------------------------------------------- def t_w(text,c = []) return if !(text && SceneManager.scene.center_message_display(text,c)) w = SceneManager.scene.center_message_window wait(1) while !(w.open? && CMWSetting::Keys.any? {|k| Input.trigger?(k)}) w.close wait(1) while !w.close? end end class Window_CenterMessage < Window_Base #-------------------------------------------------------------------------- # 初期化 #-------------------------------------------------------------------------- def initialize super(0,0,32,32) self.openness = 0 end #-------------------------------------------------------------------------- # リフレッシュ #-------------------------------------------------------------------------- def refresh(text,c) a = text.split(/\s*[\n |]\s*/) w = text_size(a.max_by {|t| contents.text_size(t).width}).width + standard_padding * 3 h = a.size * line_height + standard_padding * 2 x = (Graphics.width - w) / 2 y = (Graphics.height - h) / 2 move(x,y,w,h) create_contents a.each_with_index {|t,i| contents.font.color = text_color(c[i] ? c[i] : 0) draw_text(0,line_height * i,contents_width,line_height,t,1)} open end end class Scene_Base #-------------------------------------------------------------------------- # 超簡易センターメッセージウィンドウ作成 #-------------------------------------------------------------------------- def create_center_message_window @center_message_window = Window_CenterMessage.new end #-------------------------------------------------------------------------- # 超簡易センターメッセージウィンドウ表示 #-------------------------------------------------------------------------- def center_message_display(text,c) false end end module CMWDefine attr_accessor :center_message_window #-------------------------------------------------------------------------- # 超簡易センターメッセージウィンドウ表示 #-------------------------------------------------------------------------- def center_message_display(text,c) @center_message_window.refresh(text,c) end end class Scene_Map < Scene_Base include(CMWDefine) #-------------------------------------------------------------------------- # 全ウィンドウ作成 #-------------------------------------------------------------------------- alias create_all_windows_center_message_window create_all_windows def create_all_windows create_all_windows_center_message_window create_center_message_window end end class Scene_Battle < Scene_Base include(CMWDefine) #-------------------------------------------------------------------------- # 全ウィンドウ作成 #-------------------------------------------------------------------------- alias create_all_windows_center_message_window create_all_windows def create_all_windows create_all_windows_center_message_window create_center_message_window end end