Da solche Fragen öfters kommen, hab ich auch noch ein Script von einer früheren Anfrage parat:
Code:
#===============================================================
# ** Game_Save (Modul)
#---------------------------------------------------------------
# Speichert Spieldaten ab und lädt diese wieder.
#===============================================================
module Game_Save
FILENAME = "./save" #Dateiname für Spielstand
FILE_EXTENSION = ".rxdata"
#Modul kann in Klassen als mixin eingefügt werden um verschiedene
#Save-Klassen (Autosave, Schnellspeichern, ...) zu definieren
module_function()
#---------------------------------------------------------------
# * save :: (filename :: String || Numeric)
# Wird aufgerufen um Spielstand in Datei filename zu speichern
#---------------------------------------------------------------
def save(filename=FILENAME+FILE_EXTENSION)
filename = make_filename(filename) if filename.kind_of?(Numeric)
before_save()
File.open(filename, "wb") {|output|
saved_objects.each {|obj|
Marshal.dump(obj, output)
}
}
after_save()
end
#---------------------------------------------------------------
# * load :: (filename :: String || Numeric)
# Wird aufgerufen um Spielstand in Datei filename zu laden
#---------------------------------------------------------------
def load(filename=FILENAME)
filename = make_filename(filename) if filename.kind_of?(Numeric)
before_load()
obj=[]
File.open(filename, "rb") {|input|
until input.eof? do
obj << Marshal.load(input)
end
}
loaded_objects(*obj)
after_load()
end
#---------------------------------------------------------------
# * saved_objects :: () -> Array
# Enthält eine Liste aller abzuspeichernden Objekte
# Alle Elemente müssen per Marshal#dump speicherbar sein
# um Liste zu erweitern aliase die Methode und erweitere den Array
#---------------------------------------------------------------
def saved_objects()
[
$game_party.actors.collect {|a| [a.character_name, a.character_hue]},
$game_system,
$game_switches,
$game_variables,
$game_self_switches,
$game_screen,
$game_actors,
$game_party,
$game_troop,
$game_map,
$game_player
]
end
#---------------------------------------------------------------
# * loaded_objects :: (args :: Array)
# Enthält eine Zuweisung der geladenen Objekte zu Variablen
# Kann per aliasing erweitert werden
#---------------------------------------------------------------
def loaded_objects(*args)
chars, $game_system, $game_switches, $game_variables,
$game_self_switches, $game_screen, $game_actors, $game_party, $game_troop,
$game_map, $game_player = *args
end
#---------------------------------------------------------------
# * before_save, before_load
# Wird aufgerufen, bevor Spielstand gespeichert/geladen wird
#---------------------------------------------------------------
def before_save
$game_system.magic_number = $data_system.magic_number
$game_system.save_count += 1
end
def before_load
#do nothing
end
#---------------------------------------------------------------
# * after_save, after_load
# Wird aufgerufen, nachdem Spielstand gespeichert/geladen wird
#---------------------------------------------------------------
def after_save
#do nothing
end
def after_load
#Wenn Map geändert wurde, lade Map neu
if $game_system.magic_number != $data_system.magic_number then
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
#Aktualisiere Spieldaten und starte die Map-Szene
$game_party.refresh()
$game_map.update
$scene = Scene_Map.new()
end
#---------------------------------------------------------------
# * make_filename :: (n :: Numeric) -> String
# erzeugt einen standardmäßigen Dateinamen mit einer Nummer
#---------------------------------------------------------------
def make_filename(n)
FILENAME + filename.to_s + FILE_EXTENSION
end
end
#===============================================================
# ** Game_Start (Modul)
#---------------------------------------------------------------
# Initialisiert Spieldaten
#===============================================================
module Game_Start
# Alle Methoden dürfen auch als Singletonmethoden ausgeführt werden
module_function()
#--------------------------------------------------------------------------
# * Öffne alle Dateien aus der Database und speichere ihren Inhalt
#--------------------------------------------------------------------------
def load_database
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
end
#--------------------------------------------------------------------------
# * Initialisiere die Elemente des Spiels
#--------------------------------------------------------------------------
def initialize_global_variables
Graphics.frame_count = 0 #Resete Spielzeit
# Erstelle die globalen Variablen
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
end
#--------------------------------------------------------------------------
# * Initialisiere die Heldentruppe und starte das Spiel
#--------------------------------------------------------------------------
def start_game
# Initialisiere die Heldentruppe
$game_party.setup_starting_members
# Starte die Anfangsmap
$game_map.setup($data_system.start_map_id)
$game_player.moveto($data_system.start_x, $data_system.start_y)
# Starte Spiel
$game_player.refresh
$game_map.autoplay
$game_map.update
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# * Wenn per Testkampf gestartet wird, starte Kampf
#--------------------------------------------------------------------------
def start_battle
#Initialisiere Heldentruppe des Testkampfes
$game_party.setup_battle_test_members
# Einstellungen des Testkampfes
$game_temp.battle_troop_id = $data_system.test_troop_id
$game_temp.battle_can_escape = true
$game_map.battleback_name = $data_system.battleback_name
# Musik abspielen
$game_system.se_play($data_system.battle_start_se)
$game_system.bgm_play($game_system.battle_bgm)
# Starte Kampf
$scene = Scene_Battle.new
end
def start
self.load_database
self.initialize_global_variables
if $BTEST then self.start_battle else self.start_game end
end
end
#===============================================================
# ** Scene_Title (Klasse)
#---------------------------------------------------------------
# Überspringt Titel und lädt sofort Spielstand
#===============================================================
class << Scene_Title
include Game_Start
def new()
start #Gib aktuelle Szene (Map) zurück
end
end
Einfach in Scripteditor einfügen. Startmenü wird automatisch übersprungen. Mit dem "Script..." Befehl stehen dir zusätzlich diese Möglichkeiten zur Verfügung:
Code:
Game_Save.save(1) #=> speichert Spielstand auf Slot 1
Game_Save.load(1) #=> Lädt Spielstand auf diesen Slot wieder
Womit du nicht mehr auf das Speicher/Lade-Menü angewiesen bist, falls du das ebenfalls neu machen möchtest.