Diis Demens

Bienvenue sur Diis Demens, bonne visite ! =)
 
AccueilCalendrierFAQRechercherMembresGroupesS'enregistrerConnexion

Partagez | 
 

 Module QuickSave

Aller en bas 
AuteurMessage
nuki
Humain sans histoire
Humain sans histoire


Messages : 9
Date d'inscription : 19/06/2011

MessageSujet: Module QuickSave   Dim 19 Juin - 14:15


Lien Original Blog FunkyWork :: Quicksave
Description
Module permettant de s'affranchir du système de sauvegarde normal. Il s'utilise au moyen de méthodes facilements accessibles.

Installation
Il suffit de coller le script au dessus de la portion de code Main.

Utilisation

Quicksave::load(id) -> Charge une partie sur un slot (id) de 1 à 4
Quicksave::save(id) -> Sauvegarde une partie sur un slot (id) de 1 à 4
Quicksave::copy(to, into) -> Copie un slot(to) de 1 à 4 sur un autre slot (into) de 1 à 4
Quicksave::erase(id) -> Supprime un slot (id) de 1 à 4
Quicksave::exist?(id) -> retourne true ou false si un fichier existe ou pas selon son ID

Il est possible de modifier la valeur de MAX_SLOT pour dépasser le nombre max (par défaut 4) de sauvegardes.

Autuer: Nuki


Code:
#Module complémentaire pour la gestion des sauvegarde
#Auteur: Nuki
#Liste des méthodes utilisables
#=============================================================
# Quicksave::load(id) -> Charge une partie sur un slot (id) de 1 à 4
# Quicksave::save(id) -> Sauvegarde une partie sur un slot (id) de 1 à 4
# Quicksave::copy(to, into) -> Copie un slot(to) de 1 à 4 sur un autre slot (into) de 1 à 4
# Quicksave::erase(id) -> Supprime un slot (id) de 1 à 4
# Quicksave::exist?(id) -> retourne true ou false si un fichier existe ou pas selon son ID
# Quicksave::extract(id) -> retourne un tableau de donnée minimaliste
#=============================================================
#Les méthodes peuvent être appelée à partir d'un Evenement
module Quicksave
  MAX_SLOT = 4
  #charge une partie a partir d'un block
  def self.load(id_save)
      id_save = 1 if id_save < 1
      id_save = Quicksave::MAX_SLOT if id_save > Quicksave::MAX_SLOT
      file = Quicksave::make_filename(id_save)
      file = File.open(file, "rb")
      characters = Marshal.load(file)
      Graphics.frame_count = Marshal.load(file)
      last_bgm = Marshal.load(file)
      last_bgs = Marshal.load(file)
      $game_system = Marshal.load(file)
      $game_message = Marshal.load(file)
      $game_switches = Marshal.load(file)
      $game_variables = Marshal.load(file)
      $game_self_switches = 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)
      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)
      end
      file.close
      $scene = Scene_Map.new
      RPG::BGM.fade(1500)
      Graphics.fadeout(60)
      Graphics.wait(40)
      last_bgm.play
      last_bgs.play
  end
  #sauvegarde une partie sur un block
  def self.save(id_save)
      id_save = 1 if id_save < 1
      id_save = Quicksave::MAX_SLOT if id_save > Quicksave::MAX_SLOT
      file = Quicksave::make_filename(id_save)
      file = File.open(file, "wb")
      characters = []
      for actor in $game_party.members
        characters.push([actor.character_name, actor.character_index])
      end
      $game_system.save_count += 1
      $game_system.version_id = $data_system.version_id
      last_bgm = RPG::BGM::last
      last_bgs = RPG::BGS::last
      Marshal.dump(characters, file)
      Marshal.dump(Graphics.frame_count, file)
      Marshal.dump(last_bgm, file)
      Marshal.dump(last_bgs,  file)
      Marshal.dump($game_system, file)
      Marshal.dump($game_message, file)
      Marshal.dump($game_switches, file)
      Marshal.dump($game_variables, file)
      Marshal.dump($game_self_switches, 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)
      file.close
  end
  #Copie colle une slot sur une autre
  def self.copy(to, into)
      to = 1 if to < 1
      to = Quicksave::MAX_SLOT if to > Quicksave::MAX_SLOT
      into = 1 if into < 1
      into = Quicksave::MAX_SLOT if into > Quicksave::MAX_SLOT
      if to != into
        file = Quicksave::make_filename(to)
        file = File.open(file, "rb")
        characters = Marshal.load(file)
        Graphics.frame_count = Marshal.load(file)
        last_bgm = Marshal.load(file)
        last_bgs = Marshal.load(file)
        game_system = Marshal.load(file)
        game_message = Marshal.load(file)
        game_switches = Marshal.load(file)
        game_variables = Marshal.load(file)
        game_self_switches = 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)
        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)
        end
        file.close
        file = Quicksave::make_filename(into)
        file = File.open(file, "wb")
        characters = []
        for actor in game_party.members
            characters.push([actor.character_name, actor.character_index])
        end
        game_system.save_count += 1
        game_system.version_id = $data_system.version_id
        last_bgm = RPG::BGM::last
        last_bgs = RPG::BGS::last
        Marshal.dump(characters, file)
        Marshal.dump(Graphics.frame_count, file)
        Marshal.dump(last_bgm, file)
        Marshal.dump(last_bgs,  file)
        Marshal.dump(game_system, file)
        Marshal.dump(game_message, file)
        Marshal.dump(game_switches, file)
        Marshal.dump(game_variables, file)
        Marshal.dump(game_self_switches, 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)
        file.close
      end
  end
  #Supprime/vide un slot sauvegarde
  def self.erase(id_save)
      id_save = 1 if id_save < 1
      id_save = Quicksave::MAX_SLOT if id_save > Quicksave::MAX_SLOT
      file = Quicksave::make_filename(id_save)
      File.delete(file)
  end
  #Verifie si une sauvegarde existe
  def self.exist?(id_save)
      id_save = 1 if id_save < 1
      id_save = Quicksave::MAX_SLOT if id_save > Quicksave::MAX_SLOT
      file_name = Quicksave::make_filename(id_save)
      return File.exist?(file_name)
  end
  #Extrait les données a afficher d'un slot
  #retourne un HASH
  def self.extract(id_save)
      id_save = 1 if id_save < 1
      id_save = Quicksave::MAX_SLOT if id_save > Quicksave::MAX_SLOT
      file = Quicksave::make_filename(id_save)
      file = File.open(file, "rb")
      characters = Marshal.load(file)
      frame_count = Marshal.load(file)
      last_bgm = Marshal.load(file)
      last_bgs = Marshal.load(file)
      game_system = Marshal.load(file)
      game_message = Marshal.load(file)
      game_switches = Marshal.load(file)
      game_variables = Marshal.load(file)
      game_self_switches = 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)
      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)
      end
      file.close
      valeur = Hash.new
      total_sec = frame_count/Graphics.frame_rate
      hour = total_sec / 60 / 60
      min = total_sec / 60 % 60
      sec = total_sec % 60
      time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
      valeur["temps"] = time_string
      valeur["lieu"] = game_party.place
      valeur["niveau"] = game_party.members[0].level
      valeur["pas"] = game_party.steps
      return valeur
  end
  #Crée le nom d'un fichier d'une sauvegarde
    # Cette méthode n'est pas à utiliser en dehors de son contexte, elle ne sers que le développement.
  def self.make_filename(id_save)
      return "Save#{id_save}.rvdata"
  end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ninchat
Ninchat
Ninchat


Messages : 316
Date d'inscription : 06/05/2011

Les Âmes
Vos Âmes:
1/100  (1/100)

MessageSujet: Re: Module QuickSave   Lun 20 Juin - 10:27

Merci, ça peut etre pratique.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 
Module QuickSave
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Diis Demens :: Du côté d'RM :: Partage de scripts :: Script de menu-
Sauter vers: