Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ################################################################################
- # Persistence Data Script By Black Mage (Credit required to use)
- # Version : 1.1
- #
- # https://burningwizard.wordpress.com/2015/11/19/persistent-data-script-rmxp-rgss/
- ################################################################################
- # put [p] somewhere in the switches name or variables name.
- # Use script call "$scene = Save_System.new" to store those switches or variables
- # on System.rxdata
- # Each time player enter the game, wether it's on the title screen, new game, or
- # continue, those switches or variables that have [p] in their name will have the
- # same value with those stored in System.rxdata. The value stored can be changed
- # normaly from inside the game. Don't forget to save the value again if changes
- # were made.
- class Persistence_Data
- def initialize
- # Saving the switches
- $game_persistence_switches = []
- @a = 1
- until @a == ($data_system.switches.size - 1)
- if $data_system.variables[@a] == nil
- elsif $data_system.switches[@a].include?("[p]")
- $game_persistence_switches[@a] = $game_switches[@a]
- end
- @a = @a + 1
- end
- @switch = $game_persistence_switches
- @switchlength
- # Saving the variables
- $game_persistence_variables = []
- @a = 1
- until @a == ($data_system.variables.size - 1)
- if $data_system.variables[@a] == nil
- elsif $data_system.variables[@a].include?("[p]")
- $game_persistence_variables[@a] = $game_variables[@a]
- end
- @a = @a + 1
- end
- @variable = $game_persistence_variables
- @variablelength
- end
- def switch(number)
- return @switch[number]
- end
- def switch_length
- return @switchlength
- end
- def variable(number)
- return @variable[number]
- end
- def variable_length
- return @variablelength
- end
- end
- class Save_System
- def main
- file = File.open("System.rxdata", "wb")
- $persistence_data = Persistence_Data.new
- Marshal.dump($persistence_data, file)
- file.close
- $scene = Scene_Map.new
- return
- end
- end
- class Scene_Load < Scene_File
- #--------------------------------------------------------------------------
- # * Read Party Change Data
- # file : file object for reading (opened)
- #--------------------------------------------------------------------------
- def read_save_data(file)
- # Read character data for drawing save file
- characters = Marshal.load(file)
- # Read frame count for measuring play time
- Graphics.frame_count = Marshal.load(file)
- # Read each type of game object
- $game_system = Marshal.load(file)
- $game_switches = Marshal.load(file)
- $game_variables = Marshal.load(file)
- $game_self_switches = Marshal.load(file)
- $game_screen = Marshal.load(file)
- $game_actors = Marshal.load(file)
- $game_party = Marshal.load(file)
- $game_troop = Marshal.load(file)
- $game_map = Marshal.load(file)
- $game_player = Marshal.load(file)
- load_persistent
- # If magic number is different from when saving
- # (if editing was added with editor)
- if $game_system.magic_number != $data_system.magic_number
- # Load map
- $game_map.setup($game_map.map_id)
- $game_player.center($game_player.x, $game_player.y)
- end
- # Refresh party members
- $game_party.refresh
- end
- def load_persistent
- if FileTest.exist?("System.rxdata")
- file = File.open("System.rxdata", "rb")
- $persistence_data = Marshal.load(file)
- file.close
- @a = 1
- until @a == ($data_system.switches.size - 1)
- if $data_system.switches[@a].include?("[p]")
- $game_switches[@a] = $persistence_data.switch(@a)
- end
- @a = @a + 1
- end
- @a = 1
- until @a == ($data_system.variables.size - 1)
- if $data_system.variables[@a].include?("[p]")
- $game_variables[@a] = $persistence_data.variable(@a)
- end
- @a = @a + 1
- end
- end
- end
- end
- class Scene_Title
- alias black_main main
- def main
- $data_system = load_data("Data/System.rxdata")
- $game_switches = Game_Switches.new
- $game_variables = Game_Variables.new
- load_persistent
- black_main
- end
- alias black_new_game command_new_game
- def command_new_game
- black_new_game
- load_persistent
- end
- def load_persistent
- if FileTest.exist?("System.rxdata")
- file = File.open("System.rxdata", "rb")
- $persistence_data = Marshal.load(file)
- file.close
- @a = 1
- until @a == ($data_system.switches.size - 1)
- if $data_system.variables[@a] == nil
- elsif $data_system.switches[@a].include?("[p]")
- $game_switches[@a] = $persistence_data.switch(@a)
- end
- @a = @a + 1
- end
- @a = 1
- until @a == ($data_system.variables.size - 1)
- if $data_system.variables[@a] == nil
- elsif $data_system.variables[@a].include?("[p]")
- $game_variables[@a] = $persistence_data.variable(@a)
- end
- @a = @a + 1
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement