DT's Autosave
Version: 1.0.0
Author: DoctorTodd
Date: 6/22/2012
Version History
- Version 1.0.0 2012/26/22 - Original Release
Planned Future Versions
- Version 1.1.0 - Change autosave file name to autosave and have an optional window saying the game was autosaved.
Description
Saves the game when transferring the map, before battle, and opening the menu (all optional).
Features
- Call autosave.
- Change max files.
Instructions
Paste above main.
Script
#===============================================================================
#
# 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 = "Autosave"
#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
#--------------------------------------------------------------------------
# * 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
end
Credit
Support
Post here for quickest support, or send an email to Todd@beacongames.com.
Known Compatibility Issues
None known of.
Author's Notes
I hope nothing explodes.
Restrictions
Check the header of the script.