#============================================================================== # ■ RGSS3 終了確認 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # メニュー画面のゲーム終了コマンドから # 「タイトルへ」や「シャットダウン」を選択した際に # 本当にそれでいいかどうかの確認をするウィンドウを表示し、誤操作を防止します。 # # なお、デフォルトの終了画面での動作を想定していますのでご了承ください。 #============================================================================== module AddCautionInEnd #空のハッシュと配列を用意。(変更不要) Text = {} Command = {} Text[:title] = [] Text[:shutdown] = [] #警告ウィンドウ表示時のSEを指定。 #SE名前、音量、ピッチの順。 #SE名を""にすると無音になります。 SE = ["Attack1",80,100] #ウィンドウ最上部に表示するテキストを指定。 #番号順に設定していく事で複数行に渡ってテキストを表示できます。 #「タイトルへ」の場合 Text[:title][0] = "本当にタイトルに戻ってよろしいですか?" Text[:title][1] = "セーブしていない場合、データは失われます。" #「シャットダウン」の場合 Text[:shutdown][0] = "本当にシャットダウンしてよろしいですか?" Text[:shutdown][1] = "セーブしていない場合、データは失われます。" #警告ウィンドウのコマンド名を指定。 #「タイトルへ」の場合。確定する場合とキャンセルする場合を順に指定。 Command[:title] = ["タイトルへ(確定)","やっぱりやめる"] #「シャットダウン」の場合。確定する場合とキャンセルする場合を順に指定。 Command[:shutdown] = ["シャットダウン(確定)","やっぱりやめる"] #警告ウィンドウの幅を指定。 Width = 420 #警告ウィンドウの背景不透明度を指定。 BackOpacity = 255 #コマンドの順番の形式を指定。 #trueで確定 キャンセルの順。 #falseでキャンセル 確定の順。 Order = true end class Scene_End < Scene_MenuBase #-------------------------------------------------------------------------- # 開始処理 #-------------------------------------------------------------------------- alias start_add_caution_in_end start def start start_add_caution_in_end create_add_caution_window end #-------------------------------------------------------------------------- # 警告ウィンドウの作成 #-------------------------------------------------------------------------- def create_add_caution_window @add_caution_window = Window_AddCautionInEnd.new @add_caution_window.set_handler(:ok,method(:add_caution_ok)) @add_caution_window.set_handler(:cancel,method(:add_caution_cancel)) end #-------------------------------------------------------------------------- # コマンド[タイトルへ] #-------------------------------------------------------------------------- alias command_to_title_add_caution_in_end command_to_title def command_to_title @add_caution_window.caution_refresh(:title) end #-------------------------------------------------------------------------- # コマンド[シャットダウン] #-------------------------------------------------------------------------- alias command_shutdown_add_caution_in_end command_shutdown def command_shutdown @add_caution_window.caution_refresh(:shutdown) end #-------------------------------------------------------------------------- # 警告モード変更 #-------------------------------------------------------------------------- def add_caution_execute(type) @add_caution_window.caution_refresh(type) end #-------------------------------------------------------------------------- # 警告からの決定 #-------------------------------------------------------------------------- def add_caution_ok @add_caution_window.close case @add_caution_window.type when :title ;command_to_title_add_caution_in_end when :shutdown;command_shutdown_add_caution_in_end end end #-------------------------------------------------------------------------- # 警告からのキャンセル #-------------------------------------------------------------------------- def add_caution_cancel @add_caution_window.caution_refresh(nil) @command_window.activate end end class Window_AddCautionInEnd < Window_Command attr_accessor :type #-------------------------------------------------------------------------- # オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0,0) deactivate hide self.back_opacity = AddCautionInEnd::BackOpacity end #-------------------------------------------------------------------------- # 表示行数の取得 #-------------------------------------------------------------------------- def visible_line_number text = AddCautionInEnd::Text 2 + (text[@type] ? text[@type].size : 0) end #-------------------------------------------------------------------------- # ウィンドウ幅の取得 #-------------------------------------------------------------------------- def window_width AddCautionInEnd::Width end #-------------------------------------------------------------------------- # 項目を描画する矩形の取得 #-------------------------------------------------------------------------- def item_rect(index) text = AddCautionInEnd::Text add = (text[@type] ? text[@type].size : 0) rect = super(index) rect.y += item_height * add rect end #-------------------------------------------------------------------------- # コマンドリストの作成 #-------------------------------------------------------------------------- def make_command_list return unless @type c = AddCautionInEnd::Command[@type] if AddCautionInEnd::Order add_command(c[0],:ok) add_command(c[1],:cancel) else add_command(c[1],:cancel) add_command(c[0],:ok) end end #-------------------------------------------------------------------------- # リフレッシュ #-------------------------------------------------------------------------- def refresh super return unless @type AddCautionInEnd::Text[@type].each_with_index {|t,i| draw_text_ex(4,line_height * i,t)} end #-------------------------------------------------------------------------- # 警告リフレッシュ #-------------------------------------------------------------------------- def caution_refresh(type) @type = type self.height = window_height refresh if @type select(0) a = AddCautionInEnd::SE RPG::SE.new(a[0],a[1],a[2]).play if !a.empty? && !a[0].empty? self.x = (Graphics.width - self.width) / 2 self.y = (Graphics.height - self.height) / 2 show open activate else hide close deactivate end end end