=begin
-----------
AUTOSAVE SCRIPT v1.0
par Corwin
yann@pellissier.ch12.06.2006
Suite à une demande, voici un script qui va permettre
de faire une sauvegarde automatique, dans le slot voulu.
Pour cela, il suffit :
- créer un nouveau script et y coller le présent script
- créer un évènement parallèle, à lancer sur Appel
Dans cet évènement, y mettre un script ainsi :
<> call_autosave(X)
et mettre à la place du X le numéro du slot désiré
- lorsque vous voulez sauvegarder une partie automatiquement,
il suffit d'appeler cet évènement parallèle
Dans ce script vous pouvez tout modifier, il est suffisament commenté pour cela.
Bon dév !
----------------------------------
=end
# pour informer l'utilisateur qu'il y a eu une sauvegarde
$autosave_userYP = false
# à mettre true si vous voulez que le joueur soit informé
# à mettre false si vous ne voulez pas que le joueur soit informé
class Scene_Auto_Saving
def main
if $autosave_userYP # si c'est true, alors le joueur est informé...
# lancement de la fenêtre d'info de l'autosave
@autosaving_window = Window_autosaving.new
# on lance la fonction de sauvegarde
autosaving_fct
else # l'info ne doit pas être fournie au joueur
# on lance la fonction de sauvegarde UNIQUEMENT
autosaving_fct
end
# Boucle de transition, mise à jour graphique et entré clavier
Graphics.transition
# boucle
loop do
# Mise à jour graphique
Graphics.update
# Mise à jour des entrées clavier
Input.update
# Mise à jour de la class
update
# Si la scene n'existe plus, alors sortir de la boucle
if $scene != self
break
end
end
# figer les graphiques
Graphics.freeze
# destruction des objets
if $autosave_userYP
if @autosaving_window.dispose != nil
@autosaving_window.dispose
end
end
end
#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
def update
if $autosave_userYP # si c'est true, alors le joueur est informé...
# on force d'attendre 2 secondes
sleep(2)
end
# puis on réaffiche le tout...
$scene = Scene_Map.new
return
end
end #fin class
# ----------------------------------------
# on définit la fonction à appeler,
# avec la variable alpha qui représente le
# slot de sauvegarde à utiliser
# ----------------------------------------
def call_autosave(alpha)
if alpha != nil
$autosave_slot = alpha
else
$autosave_slot = 1
end
# on lance la scene en question
$scene = Scene_Auto_Saving.new
end
def autosaving_fct # fonction de sauvegarde :
autosave_point = Scene_Save.new # on appelle la class de save
autosave_filename="Sauvegarde#{$autosave_slot}.rxdata" # on définit le fichier de save
# /!\ attention... vous DEVEZ mettre le nom par défaut de vos sauvegardes
# dans la version sur laquelle le script est fait, c'est "Sauvegarde"
# pour savoir quel est le nom exact, regardez dans le script Scene_File
# et dans la fonction make_filename (normalement ligne 109)
# et adapter la ligne ci-dessus en conséquent
autosave_file = File.open(autosave_filename, "wb") # on ouvre le fichier de save
autosave_point.write_save_data(autosave_file) # on y inscrit les données de save
autosave_file.close # on ferme le fichier de save
end
#--------------------------------------------------------------------------
class Window_autosaving < Window_Base
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640,480)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.clear
self.back_opacity = 160
self.opacity = 160
self.visible = true
refresh
end
def refresh
# calcul de la largeur du texte
self.contents.font.name = $fontface
self.contents.font.size = $fontsize+6
self.contents.font.color = system_color
autosave_txt = "Partie sauvée sur slot #{$autosave_slot}"
autosave_txt_wh = contents.text_size(autosave_txt).width
self.contents.clear
# écriture d'un petit texte qui va dire que la partie a été sauvée
self.contents.font.size = $fontsize+6
self.contents.draw_text(150, 200, autosave_txt_wh, 32, autosave_txt, 2)
end
end # end class