Cerca nel Forum
Showing results for tags 'Save compresso'.
Trovato 1 risultato
-
Nome Script: Save compresso Versione: 1.00 Autore/i: kaisouryouiki Informazioni: Lo script comprime i salvataggi in un unico file invece di dividerli ^^ Istruzioni: Inserite semplicemente lo script sopra Main. Script: =begin ★セーブデータ一括管理★ Save1.rvdata, Save2.rvdataのように通常セーブの数だけ生成されていく セーブファイルを、1つのセーブファイルにまとめて管理することができます。 ● 注意 ●========================================================== 再定義が非常に多いです。 -------------------------------------------------------------------- このスクリプトを導入する前のセーブデータは読み込めなくなります。 ==================================================================== ver1.00 Last Update : 2010/08/06 08/06 : 「セーブファイル破棄」に対応 07/30 : 新規(FSMにて。ver0.50) ろかん http://kaisouryouiki.web.fc2.com/ =end $rsi = {} if $rsi == nil $rsi["セーブデータ一括管理"] = true class Window_SaveFile < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 ※ 再定義 #-------------------------------------------------------------------------- def initialize(file_index, data) # 引数が変化しているので注意 super(0, 56 + file_index % 4 * 90, 544, 90) @time_stamp = Time.at(0) @file_index = file_index @file_data = data # 渡されたデータが空(empty)の際にセーブが存在しないとみなします。 @file_exist = ! @file_data.empty? load_gamedata refresh @selected = false end #-------------------------------------------------------------------------- # ● ゲームデータの一部をロード ※ 再定義 #-------------------------------------------------------------------------- def load_gamedata # データそのものが渡されてきているのでファイルをopenする必要なし。 if @file_exist @time_stamp = @file_data[0] @characters = @file_data[1] @frame_count = @file_data[2] @last_bgm = @file_data[3] @last_bgs = @file_data[4] @[member=GamerLog]_system = @file_data[5] @[member=GamerLog]_message = @file_data[6] @[member=GamerLog]_switches = @file_data[7] @[member=GamerLog]_variables = @file_data[8] @total_sec = @frame_count / Graphics.frame_rate end end end class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● コンティニュー有効判定 ※ 再定義 #-------------------------------------------------------------------------- def check_continue @continue_enabled = false return unless File.exist?("Save.rvdata") file = File.open("Save.rvdata", "rb") for data in Marshal.load(file) @continue_enabled = ! data.empty? break if @continue_enabled end file.close end end class Scene_File < Scene_Base #-------------------------------------------------------------------------- # ● ファイル名の取得 #-------------------------------------------------------------------------- def filename return "Save.rvdata" end #-------------------------------------------------------------------------- # ● セーブファイルウィンドウの作成 ※ 再定義 #-------------------------------------------------------------------------- def create_savefile_windows @item_max = 4 @savefile_windows = [] load_data_list # この段階で全てのセーブデータを読み込む @item_max.times do |i| # ウィンドウ生成時にインデックスに該当するセーブデータを渡します。 @savefile_windows.push(Window_SaveFile.new(i, @dataList[i])) end end #-------------------------------------------------------------------------- # ● セーブの実行 ※ 再定義 #-------------------------------------------------------------------------- def do_save write_save_data return_scene end #-------------------------------------------------------------------------- # ● ロードの実行 ※ 再定義 #-------------------------------------------------------------------------- def do_load read_save_data $scene = Scene_Map.new RPG::BGM.fade(1500) Graphics.fadeout(60) Graphics.wait(40) @last_bgm.play @last_bgs.play end #-------------------------------------------------------------------------- # ● 全てのセーブが収まったデータを取得(ウィンドウ生成前に呼ばれるのみ) #-------------------------------------------------------------------------- def load_data_list # ファイルが存在しない場合はデータ取得前にファイルを生成する unless File.exist?(filename) @dataList = [] @item_max.times do @dataList << [] end save_data_list end file = File.open(filename, "rb") @dataList = Marshal.load(file) file.close end #-------------------------------------------------------------------------- # ● 全てのセーブが収まったデータを保存(@dataListの内容変更時に呼ばれる) #-------------------------------------------------------------------------- def save_data_list file = File.open(filename, "wb") Marshal.dump(@dataList, file) file.close end #-------------------------------------------------------------------------- # ● セーブデータの書き込み ※ 再定義 #-------------------------------------------------------------------------- def write_save_data characters = [] for actor in $game_party.members characters.push([actor.character_name, actor.character_index]) end $game_system.save_count += 1 $game_system.version_id = $data_system.version_id @dataList[@index] = [] # クリア @dataList[@index] << Time.now # セーブした時間:タイムスタンプとして利用 @dataList[@index] << characters @dataList[@index] << Graphics.frame_count @dataList[@index] << RPG::BGM::last @dataList[@index] << RPG::BGS::last @dataList[@index] << $game_system @dataList[@index] << $game_message @dataList[@index] << $game_switches @dataList[@index] << $game_variables @dataList[@index] << $game_self_switches @dataList[@index] << $game_actors @dataList[@index] << $game_party @dataList[@index] << $game_troop @dataList[@index] << $game_map @dataList[@index] << $game_player save_data_list # 保存 end #-------------------------------------------------------------------------- # ● セーブデータの読み込み ※ 再定義 #-------------------------------------------------------------------------- def read_save_data Graphics.frame_count = @dataList[@index][2] @last_bgm = @dataList[@index][3] @last_bgs = @dataList[@index][4] $game_system = @dataList[@index][5] $game_message = @dataList[@index][6] $game_switches = @dataList[@index][7] $game_variables = @dataList[@index][8] $game_self_switches = @dataList[@index][9] $game_actors = @dataList[@index][10] $game_party = @dataList[@index][11] $game_troop = @dataList[@index][12] $game_map = @dataList[@index][13] $game_player = @dataList[@index][14] if $game_system.version_id != $data_system.version_id $game_map.setup($game_map.map_id) $game_player.center($game_player.x, $game_player.y) end end #-------------------------------------------------------------------------- # ● ファイル破棄の実行 #-------------------------------------------------------------------------- def file_delete @dataList[@index] = [] # クリア save_data_list end end