Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 3 messages ] 
Auteur Message
 Sujet du message: Utilitaire de sauvegarde
MessagePublié: 05 Fév 2008, 01:02 
Membre VIP
Membre VIP
Avatar de l’utilisateur

Inscrit le: 14 Avr 2007, 00:00
Messages: 1729
Localisation: ENS Rennes
Niveau RPG Maker: +∞
Point(s) Fort(s): Ruby
Sexe: Masculin
Points d'aide: 60/60

Créations :

Voir ses créations

Bon je pense que j'ai fait le tour du sujet concernant les sauvegardes.
Les deux autres topics sont... inutiles maintenant, ce script regroupe toute les fonctions.

Pour les explication, tout est dans l'entête.

Code: Tout sélectionner
#====================================================================
# ■ Module Sauvegarde
#====================================================================
# Auteur : Darkleo
# Script : Utilitaire de sauvegarde
#====================================================================
#    ==> Dans la commande "inserez un script" <==
# Sauvegarde : sauver(X)
# Chargement : charger(X)
# Sauvegarde automatique (invisible) : autosave ou autoload
# Copier une sauvegarde : copier(a,b)
# --> copie le slot a dans le slot b
# Supprimer une sauvegarde : supprimer(X)
#    ==> Dans une condition "Si script :" <==
# Verifier une sauvegarde : testfile(X)
#
# "X" correspond au slot de sauvegarde voulu
# Utilisez 0 pour l'autosave
#
# Exemples :
# charger(2) --> charge le slot 2
# autosave --> fait une sauvegarde automatique
# copier(0,4) --> copier la sauvegarde automatique dans le slot 4
#====================================================================
module Sauvegarde
  module_function
  #--------------------------------------------------------------------------
  # ● testfile(file)
  #--------------------------------------------------------------------------
  def testfile(file)
    filename = (file == 0 ? "Autosave.rxdata" : "Save#{file}.rxdata")
    FileTest.exist?(filename)
  end
  #--------------------------------------------------------------------------
  # ● sauver(file)
  #--------------------------------------------------------------------------
  def sauver(file)
    file = File.open("Save#{file}.rxdata", "wb")
    write_save_data(file) ; file.close
  end
  #--------------------------------------------------------------------------
  # ● charger(file)
  #--------------------------------------------------------------------------
  def charger(file)
    return if not FileTest.exist?("Save#{file}.rxdata")
    file = File.open("Save#{file}.rxdata", "rb")
    read_save_data(file) ; file.close
    $game_system.bgm_play($game_system.playing_bgm)
    $game_system.bgs_play($game_system.playing_bgs)
    $game_map.update
    $scene = Scene_Map.new
  end 
  #--------------------------------------------------------------------------
  # ● def autosave
  #--------------------------------------------------------------------------
  def autosave
    file = File.open("Autosave.rxdata", "wb")
    write_save_data(file) ; file.close
  end
  #--------------------------------------------------------------------------
  # ● def autoload
  #--------------------------------------------------------------------------
  def autoload
    return if not FileTest.exist?("Autosave.rxdata")
    file = File.open("Autosave.rxdata", "rb")
    read_save_data(file) ; file.close
    $game_system.bgm_play($game_system.playing_bgm)
    $game_system.bgs_play($game_system.playing_bgs)
    $game_map.update
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # ● def copier(a,b)
  #--------------------------------------------------------------------------
  def copier(a,b)
    return if a == b
    filename = (a == 0 ? "Autosave.rxdata" : "Save#{a}.rxdata")
    return if testfile(filename)
    source = File.open(filename, "rb")
    filename2 = (b == 0 ? "Autosave.rxdata" : "Save#{b}.rxdata")
    destination = File.open(filename2, "wb")
    destination.write(source.read)
    source.close ; destination.close
  end
  #--------------------------------------------------------------------------
  # ● def supprimer(file)
  #--------------------------------------------------------------------------
  def supprimer(file)
    filename = (file == 0 ? "Autosave.rxdata" : "Save#{file}.rxdata")
    File.delete(filename) if testfile(filename)
  end
  #--------------------------------------------------------------------------
  # ● def write_save_data(file)
  #--------------------------------------------------------------------------
  def write_save_data(file)
    characters = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      characters.push([actor.character_name, actor.character_hue])
    end
    $game_system.save_count += 1
    $game_system.magic_number = $data_system.magic_number
    [characters, Graphics.frame_count, $game_system,
    $game_switches, $game_variables, $game_self_switches,
    $game_screen, $game_actors, $game_party, $game_troop,
    $game_map, $game_player].each {|v| Marshal.dump(v, file)}
  end
  #--------------------------------------------------------------------------
  # ● read_save_data(file)
  #--------------------------------------------------------------------------
  def read_save_data(file)
    list = %Q(characters, Graphics.frame_count, $game_system,
    $game_switches, $game_variables, $game_self_switches,
    $game_screen, $game_actors, $game_party, $game_troop,
    $game_map, $game_player) ; list.gsub!(/ /, "")
    list.gsub!(/
/, "") ; list = list.split(',')
    list.each {|n| eval "#{n} = Marshal.load(file)"}
    if $game_system.magic_number != $data_system.magic_number
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    $game_party.refresh
  end
end

class Interpreter
  include Sauvegarde
end


Dernière précision, chez moi ça marche, mais si chez vous, ça ne marche pas, changez tout les "Save" en "Sauvegarde" ("Remplacer" (Ctrl+H) puis "tout remplacer")
PS: le bug qui pouvait survenir lors d'un chargement est corrigé ^^

Enjoy, and give me credits ^^
PS : merci Lordryk pour m'avoir optimisé un peu le code.
Ce script ne doit pas être partagé sans mon autorisation, demandez moi par MP.

_________________
Image
Projets
> ORAGE (Alternative 2D library) (#=> voir sur Github)
> &Co (#=> http://darkleo.alwaysdata.net/)


Haut
 Profil  
 
 Sujet du message: Re: Utilitaire de sauvegarde
MessagePublié: 05 Juin 2009, 20:43 
Membre royal(e)

Inscrit le: 11 Aoû 2006, 00:00
Messages: 620
Points d'aide: 6/60

Créations :

Voir ses créations

Bonjour, je sais que cela date un peu mais j'ai un petit problème au niveau de ton script avec la fonction testfile.

Voilà entre autre ce que cela m'affiche ...

Image

A noté que Save/Load est le nom que j'ai donné à ton script ...

Merci d'avance de ton aide !


Haut
 Profil  
 
 Sujet du message: Re: Utilitaire de sauvegarde
MessagePublié: 05 Juin 2009, 21:48 
Membre VIP
Membre VIP
Avatar de l’utilisateur

Inscrit le: 14 Avr 2007, 00:00
Messages: 1729
Localisation: ENS Rennes
Niveau RPG Maker: +∞
Point(s) Fort(s): Ruby
Sexe: Masculin
Points d'aide: 60/60

Créations :

Voir ses créations

Bin ça montre le nombre de gens qui ont testé mon script (=> 0)
Évidemment que ça marche pas, j'ai 'oublié' de corriger mon copié collé.

Je corrige tout de suite dans le script.
Pour toi, remplace juste "{a}" ligne 31 par "{file}".

_________________
Image
Projets
> ORAGE (Alternative 2D library) (#=> voir sur Github)
> &Co (#=> http://darkleo.alwaysdata.net/)


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 3 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 3 invités


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728