Sauvegarde automatique [résolu]
Mar 17 Juil 2012 - 18:20
Bonjour à tous,
J'aimerais insérer un système de sauvegarde automatique comme il y a dans The Elder Scrolls V Skyrim, afin de, comme dans ledit jeu, pouvoir sauver et ne pas tout refaire mon intro et après pour d'autres applications (pour ceux le souhaitant).
J'ai donc fait quelques recherches et ai trouvé un script intéressant, qui permet via l'appui d'une touche de sauver. Seulement, il comporte des inconvéniants plutôt énervant, à savoir qu'à l'appui de la touche, un message demande si l'on veut sauver et de plus, le jeu est automatiquement quitté après...
Ma requête est donc la suivante : modifier le script de façon à ce qu'il ne demande pas de message et que le jeu ne soit pas quitté.
EDIT : Voici le script modifié qui permet de rester sur l'ecran titre, que l'on choisisse "Non" ou que l'on décline par la touche "Esc"
J'aimerais insérer un système de sauvegarde automatique comme il y a dans The Elder Scrolls V Skyrim, afin de, comme dans ledit jeu, pouvoir sauver et ne pas tout refaire mon intro et après pour d'autres applications (pour ceux le souhaitant).
J'ai donc fait quelques recherches et ai trouvé un script intéressant, qui permet via l'appui d'une touche de sauver. Seulement, il comporte des inconvéniants plutôt énervant, à savoir qu'à l'appui de la touche, un message demande si l'on veut sauver et de plus, le jeu est automatiquement quitté après...
Ma requête est donc la suivante : modifier le script de façon à ce qu'il ne demande pas de message et que le jeu ne soit pas quitté.
EDIT : Voici le script modifié qui permet de rester sur l'ecran titre, que l'on choisisse "Non" ou que l'on décline par la touche "Esc"
- Spoiler:
- #===============================================================================
# RGSS3: Quicksave v.1.1
#===============================================================================
# par Cryranos/Metatron
#===============================================================================
# Instructions : Coller en-dessous de Materials. Editez les Modules si souhaité.
#===============================================================================
# Le script permet au joueur de sauvegarder rapidement et de recharger cette
# sauvegarde jusqu'à qu'elle ait été supprimée (dès le retour à l'ecran titre).
#===============================================================================
module CryQuicksave
QSFile = "Save.qsav" # Nom de fichier de la sauvegarde.
MenuOp = false # Ajoute un index dans le menu principal
QSVNam = "Quicksave" # Non de l'index si MenuOp = true
# QSVMess : Message d'aide de la sauvegarde rapide Quickload help. Insert the second line
# QSVLoad : Message d'aide du chargement rapide.
# Pour aller à la ligne, utiliser : \n.
QSVMess = "Voulez-vous sauvegarder et quitter ?\n"
QSVLoad = "Charger la sauvegarde automatique ? Ne pas la charger ou appuyer sur Esc\nretournera à l'écran titre."
# Ceux préférant sauvegarder rapidement à l'appui d'une touche plutô que par
# le menu peuvent le faire avec UseKey = true.
UseKey = true # Si true, sauvegarde rapidement à l'appui d'une touche
QSVKey = Input::F5 # Touche utilisée pour la sauvegarde rapide
end
module DataManager
def self.quicksave_file_exists?
!Dir.glob(CryQuicksave::QSFile).empty?
end
def self.make_quicksave_filename
sprintf(CryQuicksave::QSFile)
end
def self.quicksave_game
self.quicksave_game_without_rescue
end
def self.quicksave_game_without_rescue
File.open(make_quicksave_filename, "wb") do |file|
$game_system.on_before_save
Marshal.dump(make_save_header, file)
Marshal.dump(make_save_contents, file)
end
end
def self.quickload_game
self.load_quicksave_without_rescue
self.dispose_quicksave
end
def self.load_quicksave_without_rescue
File.open(make_quicksave_filename, "rb") do |file|
Marshal.load(file)
extract_save_contents(Marshal.load(file))
reload_map_if_updated
end
end
def self.dispose_quicksave
File.delete(make_quicksave_filename) rescue nil
end
end
module SceneManager
def self.first_scene_class
if $BTEST
Scene_Battle
elsif DataManager.quicksave_file_exists?
Scene_QuickLoadTitle
else
Scene_Title
end
end
end
if CryQuicksave::UseKey
class Game_Player < Game_Character
alias quicksave_update update
def update
quicksave_update
if Input.trigger?(CryQuicksave::QSVKey)
SceneManager.call(Scene_Quicksave)
end
end
end
end
class Window_QuicksaveCommand < Window_Command
def initialize
super(0, 0)
update_placement
end
def window_width
return 160
end
def update_placement
self.x = (Graphics.width - width) / 2
self.y = (Graphics.height * 1.6 - height) / 2
end
def make_command_list
add_command("Oui", :confirm)
add_command("Non", :decline)
end
end
class Scene_Quicksave < Scene_MenuBase
def start
super
DataManager.quicksave_game
SceneManager.return
end
end
class Scene_QuickLoadTitle < Scene_Title
def start
super
SceneManager.clear
Graphics.freeze
create_background
create_foreground
create_command_window
play_title_music
create_help_window
end
def help_window_text
CryQuicksave::QSVLoad
end
def create_command_window
@command_window = Window_QuicksaveCommand.new
@command_window.set_handler(:confirm, method(:command_quickload))
@command_window.set_handler(:decline, method(:command_decline))
@command_window.set_handler(:cancel, method(:return_scene))
end
def create_help_window
@help_window = Window_Help.new(2)
@help_window.set_text(help_window_text)
end
def command_quickload
close_command_window
DataManager.quickload_game
Sound.play_load
fadeout_all
$game_system.on_after_load
SceneManager.goto(Scene_Map)
end
def command_decline
DataManager.dispose_quicksave
Scene_Title
SceneManager.call(Scene_Title)
end
def return_scene
DataManager.dispose_quicksave
Scene_Title
SceneManager.call(Scene_Title)
end
end
if CryQuicksave::MenuOp
class Window_MenuCommand
alias add_qsv_command add_save_command
def add_save_command
add_qsv_command
add_command(CryQuicksave::QSVNam, :qsav)
end
end
class Scene_Menu
alias add_qsv_to_commands create_command_window
def create_command_window
add_qsv_to_commands
@command_window.set_handler(:qsav, method(:command_quicksave))
end
def command_quicksave
SceneManager.call(Scene_Quicksave)
end
end
end
Re: Sauvegarde automatique [résolu]
Mer 18 Juil 2012 - 0:07
Merci bien, cela fonctionne sans accroche ! J'ai même pu corriger moi-même un bug quand il nous demande si l'on veut charger la save, si on dit non, ça bug, et j'ai pu modifier pour qu'on atterrisse sur le menu de chargement
Mais le hic, c'est qu'une fois sur ce menu, si l'on appuie sur Esc, le jeu se quitte. Il faudrait donc pouvoir interdire cela au joueur, si tu as encore un peu de temps. J'édite le script, pour mettre le nouveau.
Mais le hic, c'est qu'une fois sur ce menu, si l'on appuie sur Esc, le jeu se quitte. Il faudrait donc pouvoir interdire cela au joueur, si tu as encore un peu de temps. J'édite le script, pour mettre le nouveau.
- SpytjeAdministrateur
- Nombre de messages : 5935
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008
Re: Sauvegarde automatique [résolu]
Mer 18 Juil 2012 - 0:54
Pour enlever le bug qui fait que le jeu se ferme quand tu veux revenir en arrière change :
(Ligne 145)
SceneManager.goto(Scene_Load)
par
SceneManager.call(Scene_Load)
Pour le reste faudra attendre un vrai scripteur
(Ligne 145)
SceneManager.goto(Scene_Load)
par
SceneManager.call(Scene_Load)
Pour le reste faudra attendre un vrai scripteur
Re: Sauvegarde automatique [résolu]
Mer 18 Juil 2012 - 14:10
C'était tout con en fait, mais j'ai simplement modifié SceneManager.call(Scene_Load) par SceneManager.call(Scene_Title) afin de rester sur l'écran titre en cas de refus. Et j'ai copié cette méthode de la commande refus sur celle de la commande décliné afin de rester également sur l'ecran titre en cas d'appui sur Esc !
Je mets en résolu
Je mets en résolu
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|