#=============================================================================== ## DT's Autosave # Author: DoctorTodd # Date (06/22/2012) # Edited by: ArkLennard # Date (01/13/2013) # Version: (1.0.0) (VXA) # Level: (Simple) # Email: Todd@beacongames.com ##=============================================================================== ## NOTES: 1)This script will only work with ace. ##=============================================================================== ## Description: Saves the game when transferring the map, before battle, # and opening the menu (all optional). ## Credits: Me (DoctorTodd), ArkLennard ##=============================================================================== ## Instructions# Paste above main. ##=============================================================================== ## Free for any use as long as I'm credited. ##=============================================================================== ## Editing begins 37 and ends on 50. ##=============================================================================== module ToddAutoSaveAce #Max files (without autosave). MAXFILES = 16 #Autosave file name. AUTOSAVEFILENAME = "자동 저장" #Switch to activate autosave before battle? AUTOSAVEBB = 1 #Switch to activate autosave when menu opened? AUTOSAVEM = 2 #Switch to activate autosave when changing map? AUTOSAVETM = 3 #Variable ID that contains the number where the sutosave file will be saved. VARIABLE = 1 end #============================================================================== # ** Autosave #------------------------------------------------------------------------------ # This module contains the autosave method. This allows you to use the # "Autosave.call" ans "Autosave.load" commands. #============================================================================== module Autosave #-------------------------------------------------------------------------- # * Save header writer #-------------------------------------------------------------------------- def self.make_save_header header = {} header[:characters] = $game_party.characters_for_savefile header[:playtime_s] = $game_system.playtime_s header end #-------------------------------------------------------------------------- # * Save contents writer #-------------------------------------------------------------------------- def self.make_save_contents contents = {} contents[:system] = $game_system contents[:timer] = $game_timer contents[:message] = $game_message contents[:switches] = $game_switches contents[:variables] = $game_variables contents[:self_switches] = $game_self_switches contents[:actors] = $game_actors contents[:party] = $game_party contents[:troop] = $game_troop contents[:map] = $game_map contents[:player] = $game_player contents end #-------------------------------------------------------------------------- # * Save contents extractor #-------------------------------------------------------------------------- def self.extract_save_contents(contents) $game_system = contents[:system] $game_timer = contents[:timer] $game_message = contents[:message] $game_switches = contents[:switches] $game_variables = contents[:variables] $game_self_switches = contents[:self_switches] $game_actors = contents[:actors] $game_party = contents[:party] $game_troop = contents[:troop] $game_map = contents[:map] $game_player = contents[:player] end #-------------------------------------------------------------------------- # * Map reloader #-------------------------------------------------------------------------- def self.reload_map_if_updated 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) $game_player.make_encounter_count end end #-------------------------------------------------------------------------- # * Total fade out #time : duration (milliseconds) #-------------------------------------------------------------------------- def self.fadeout_all(time = 1000) RPG::BGM.fade(time) RPG::BGS.fade(time) RPG::ME.fade(time) Graphics.fadeout(time * Graphics.frame_rate / 1000) RPG::BGM.stop RPG::BGS.stop RPG::ME.stop end #-------------------------------------------------------------------------- # * Call method #-------------------------------------------------------------------------- def self.call File.open('Autosave.rvdata2', "wb") do |file| $game_system.on_before_save Marshal.dump(make_save_header, file) Marshal.dump(make_save_contents, file) end end def self.load fadeout_all File.open('Autosave.rvdata2', "rb") do |file| Marshal.load(file) extract_save_contents(Marshal.load(file)) reload_map_if_updated end $game_system.on_after_load SceneManager.goto(Scene_Map) end end #============================================================================== # ** DataManager #------------------------------------------------------------------------------ # This module manages the database and game objects. Almost all of the # global variables used by the game are initialized by this module. #============================================================================== module DataManager #-------------------------------------------------------------------------- # * Maximum Number of Save Files #-------------------------------------------------------------------------- def self.savefile_max return ToddAutoSaveAce::MAXFILES + 1 end end #============================================================================== # ** Scene_Map #------------------------------------------------------------------------------ # This class performs the map screen processing. #============================================================================== class Scene_Map < Scene_Base #-------------------------------------------------------------------------- # * Preprocessing for Battle Screen Transition #-------------------------------------------------------------------------- def pre_battle_scene Graphics.update Graphics.freeze @spriteset.dispose_characters BattleManager.save_bgm_and_bgs BattleManager.play_battle_bgm Sound.play_battle_start Autosave.call if $game_switches[ToddAutoSaveAce::AUTOSAVEBB] == true end #-------------------------------------------------------------------------- # * Call Menu Screen #-------------------------------------------------------------------------- def call_menu Sound.play_ok SceneManager.call(Scene_Menu) Window_MenuCommand::init_command_position Autosave.call if $game_switches[ToddAutoSaveAce::AUTOSAVEM] == true end #-------------------------------------------------------------------------- # * Preprocessing for Transferring Player #-------------------------------------------------------------------------- def pre_transfer @map_name_window.close case $game_temp.fade_type when 0 fadeout(fadeout_speed) when 1 white_fadeout(fadeout_speed) end end #-------------------------------------------------------------------------- # * Post Processing for Transferring Player #-------------------------------------------------------------------------- def post_transfer case $game_temp.fade_type when 0 Graphics.wait(fadein_speed / 2) fadein(fadein_speed) when 1 Graphics.wait(fadein_speed / 2) white_fadein(fadein_speed) end @map_name_window.open Autosave.call if $game_switches[ToddAutoSaveAce::AUTOSAVETM] == true end end