#============================================================================== # ■ Numset #------------------------------------------------------------------------------ #  数のモジュールです。 #============================================================================== module Numset #-------------------------------------------------------------------------- # ● 定数 #-------------------------------------------------------------------------- SAVE_DEFINE = 0 SAVE_MASSAGE = "上書きすることになります。それでもよろしいですか?" end #============================================================================== # ■ Game_System #------------------------------------------------------------------------------ #  システム周りのデータを扱うクラスです。BGM などの管理も行います。このクラス # のインスタンスは $game_system で参照されます。 #============================================================================== class Game_System #-------------------------------------------------------------------------- # ● 公開インスタンス変数追加 #-------------------------------------------------------------------------- attr_accessor :game_code # ゲームコード attr_accessor :save_data # セーブ元のデータ #-------------------------------------------------------------------------- # ● オブジェクト初期化(再定義) #-------------------------------------------------------------------------- alias base_initialize initialize def initialize base_initialize @game_code = 0 @save_data = nil end end #============================================================================== # ■ Scene_File #------------------------------------------------------------------------------ #  セーブ画面およびロード画面のスーパークラスです。 #============================================================================== class Scene_File #-------------------------------------------------------------------------- # ● フレーム更新(再定義) #-------------------------------------------------------------------------- alias :base_update :update def update if @help_text != Numset::SAVE_MASSAGE base_update else # ウィンドウを更新 @help_window.update for i in @savefile_windows i.update end # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) @help_text = "どのファイルにセーブしますか?" @help_window.set_text(@help_text) return end # C ボタンが押された場合 if Input.trigger?(Input::C) # メソッド save_update (継承先で定義) を呼ぶ save_update(make_filename(@file_index)) return end end end end #============================================================================== # ■ Scene_Save #------------------------------------------------------------------------------ #  セーブ画面の処理を行うクラスです。 #============================================================================== class Scene_Save < Scene_File #-------------------------------------------------------------------------- # ● 決定時の処理 #-------------------------------------------------------------------------- def on_decision(filename) # セーブデータの書き込み if FileTest.exist?("#{filename}") file = File.open("#{filename}", "r") game_system = Marshal.load(file) game_system = Marshal.load(file) game_system = Marshal.load(file) file.close else game_system = $game_system end # ゲームコードが設定されていない場合、設定する if $game_system.game_code == 0 srand($data_system.magic_number + Graphics.frame_count) $game_system.game_code = rand(4294967295) end if game_system.game_code != $game_system.game_code # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) @help_text = Numset::SAVE_MASSAGE @help_window.set_text(@help_text) elsif Numset::SAVE_DEFINE == 1 and game_system.save_data != $game_system.save_data # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) @help_text = Numset::SAVE_MASSAGE @help_window.set_text(@help_text) elsif Numset::SAVE_DEFINE == 2 # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) @help_text = Numset::SAVE_MASSAGE @help_window.set_text(@help_text) else # セーブデータを更新 save_update(filename) end end #-------------------------------------------------------------------------- # ● セーブデータ更新 #-------------------------------------------------------------------------- def save_update(filename) # セーブ SE を演奏 $game_system.se_play($data_system.save_se) file = File.open(filename, "wb") write_save_data(file) file.close # イベントから呼び出されている場合 if $game_temp.save_calling # セーブ呼び出しフラグをクリア $game_temp.save_calling = false # マップ画面に切り替え $scene = Scene_Map.new end # メニュー画面に切り替え $scene = Scene_Menu.new(6) end end #============================================================================== # ■ Scene_Load #------------------------------------------------------------------------------ #  ロード画面の処理を行うクラスです。 #============================================================================== class Scene_Load < Scene_File #-------------------------------------------------------------------------- # ● セーブデータの読み込み # file : 読み込み用ファイルオブジェクト (オープン済み) #-------------------------------------------------------------------------- alias :base_read_save_data :read_save_data def read_save_data(file) base_read_save_data(file) $game_system.save_data = $game_temp.last_file_index end end