Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
Sign in to follow this  
Noob Saibot

Force Save Before Anything

Recommended Posts

Retrieved the following script from the RMXPU.net archive:

 

Requested by Alcaeus.

 

Create a new script, call it Scene_ForceSave2 and paste this script in there.

 

When saving, you cannot cancel out. You must save.

 

#==============================================================================
# ** Scene_ForceSave2
#------------------------------------------------------------------------------
#  This class performs save screen processing and there's no cancelling out.
#==============================================================================

class Scene_ForceSave2 < Scene_File
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super("Which file would you like to save to?")
end
#--------------------------------------------------------------------------
# * Decision Processing
#--------------------------------------------------------------------------
def on_decision(filename)
# Play save SE
$game_system.se_play($data_system.save_se)
# Write save data
file = File.open(filename, "wb")
write_save_data(file)
file.close
# If called from event
if $game_temp.save_calling
# Clear save call flag
$game_temp.save_calling = false
# Switch to map screen
$scene = Scene_Map.new
return
end
# Switch to map screen
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# * Cancel Processing
#--------------------------------------------------------------------------
def on_cancel
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# If called from event
if $game_temp.save_calling
# Clear save call flag
$game_temp.save_calling = false
# Will not go to menu. It will redirect to this scene until the player has saved.
$scene = Scene_ForceSave2.new
return
end
# Will not go to menu.
$scene = Scene_ForceSave2.new
end
#--------------------------------------------------------------------------
# * Write Save Data
#   file : write file object (opened)
#--------------------------------------------------------------------------
def write_save_data(file)
# Make character data for drawing save file
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
# Write character data for drawing save file
Marshal.dump(characters, file)
# Wrire frame count for measuring play time
Marshal.dump(Graphics.frame_count, file)
# Increase save count by 1
$game_system.save_count += 1
# Save magic number
# (A random value will be written each time saving with editor)
$game_system.magic_number = $data_system.magic_number
# Write each type of game object
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
end
end

 

Now when doing an event, use the call script event command and call this.

$scene = Scene_ForceSave2

 

Then after that command, use the wait frames command before anything else after using the call script command to call this script.

 

It's a good idea.

I do however see no reason for using '$scene = Scene_ForceSave2.new' in the on_cancel method.

If you just wanted the cancel sound you should change the on_cancel method to something like this: (Note: I haven't tested)

 

#--------------------------------------------------------------------------
# * Cancel Processing
#--------------------------------------------------------------------------
def on_cancel
  # Play cancel SE
  $game_system.se_play($data_system.cancel_se)
end

 

Bingo Zeriab.

 

And theres no reason for a new scene either. This would work just fine:

class Game_System
attr_accessor :force_save
end

class Scene_Save
alias forcesave_oncancel on_cancel
def on_cancel
  if $game_system.force_save
     Play cancel SE
     $game_system.se_play($data_system.cancel_se)
     return
  end
  forcesave_oncancel
end
end

 

Then, all you have to use is

 

$game_system.force_save = true or false

 

Original Post: RMXPU.net Archive

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...