Page 1 sur 2 • 1, 2
- zidoMembre
- Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
[Résolu] Sauvegarde à la fermeture
Dim 26 Aoû 2012 - 14:00
Bonjour!
Type de script: Script d'auto-save un peu spécifique.
Explication complete: J'aurais besoin d'un script qui sauvegarde automatiquement dès la fermeture de la partie/du jeu quelle que soit la manière dont celui-ci est fermé (ecran-titre, alt-f4, fin de tâche, etc...)
Spécificités: Expliquées plus haut
Schéma très clair: Non nécessaire.
Ressources supplémentaires: Aucune.
Exemples dans un jeu video: Jamais vu...
Scripts déjà possédés: En ce qui concerne la sauvegarde j'ai le Ace Save Engine de Yanfly
Merci d'avance !
(J'espère que c'est possible...)
Type de script: Script d'auto-save un peu spécifique.
Explication complete: J'aurais besoin d'un script qui sauvegarde automatiquement dès la fermeture de la partie/du jeu quelle que soit la manière dont celui-ci est fermé (ecran-titre, alt-f4, fin de tâche, etc...)
Spécificités: Expliquées plus haut
Schéma très clair: Non nécessaire.
Ressources supplémentaires: Aucune.
Exemples dans un jeu video: Jamais vu...
Scripts déjà possédés: En ce qui concerne la sauvegarde j'ai le Ace Save Engine de Yanfly
Merci d'avance !
(J'espère que c'est possible...)
- cator. lolMembre
- Nombre de messages : 164
Age : 32
Localisation : Cherche pas, tu me trouveras jamais.
Distinction : Zoophile à ses heures perdues, au torse poilu et qui chante YMCA
Frère de poils!
[Mist' ]
Maître du plantage d'arbres à femme : pour la sauvegarde des arbres et des petits oiseaux, vive la nature. [Balb' ]
crefadet le violeur du bois [Balb' ]
Date d'inscription : 02/02/2012
Re: [Résolu] Sauvegarde à la fermeture
Dim 26 Aoû 2012 - 18:57
Un peu exigeant, pas sûr que la lib RGSS3 offre ces possibilités.zido a écrit:Explication complete: J'aurais besoin d'un script qui sauvegarde automatiquement dès la fermeture de la partie/du jeu quelle que soit la manière dont celui-ci est fermé (ecran-titre, alt-f4, fin de tâche, etc...)
En revanche via une fermeture standard, y implémenter une autosave peut être réalisable.
Mais quel en est l'intérêt réel, si je peux me permettre, en dehors de faire plaisir aux joueurs fainéants ?
- zidoMembre
- Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
Re: [Résolu] Sauvegarde à la fermeture
Dim 26 Aoû 2012 - 20:52
C'est pour éviter au joueur de tricher en rechargeant la partie dès qu'il a fait un choix qu'il regrette ou dès qu'il perd au combat.
Une fermeture standard? C'est la commande quitter du menu?
Une fermeture standard? C'est la commande quitter du menu?
- cator. lolMembre
- Nombre de messages : 164
Age : 32
Localisation : Cherche pas, tu me trouveras jamais.
Distinction : Zoophile à ses heures perdues, au torse poilu et qui chante YMCA
Frère de poils!
[Mist' ]
Maître du plantage d'arbres à femme : pour la sauvegarde des arbres et des petits oiseaux, vive la nature. [Balb' ]
crefadet le violeur du bois [Balb' ]
Date d'inscription : 02/02/2012
Re: [Résolu] Sauvegarde à la fermeture
Dim 26 Aoû 2012 - 21:01
Mets un autosave en event après les passages "risqués"
Oui.Une fermeture standard? C'est la commande quitter du menu?
Re: [Résolu] Sauvegarde à la fermeture
Dim 26 Aoû 2012 - 21:16
La fenêtre du jeu n'est pas géré par l'interpreteur Ruby, mais part le moteur graphique codé en C, l'événement de fermeture de la fenêtre de jeu par la croix ou Alt-F4, ferme la fenêtre directement sans continuer l'interprétation du code ruby. Quant à la fermeture par le gestionnaire des taches, cela kill le programme net, donc même la partie en C n'est pas exécuté jusqu'au bout.
Pour résumer, ta demande n'est pas réalisable.
La meilleure solution est celle citée ci-dessus
Pour résumer, ta demande n'est pas réalisable.
La meilleure solution est celle citée ci-dessus
- zidoMembre
- Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
Re: [Résolu] Sauvegarde à la fermeture
Dim 26 Aoû 2012 - 22:00
Bon d'accord merci.
(Et merci pour les explications techniques de Tonyryu)
(Et merci pour les explications techniques de Tonyryu)
Le problème c'est que si le joueur perd un combat, il peut appuyer F12 et recharger la partie avant le combat au lieu de perdre tout son argent et perdre un niveau (vous comprenez maintenant pourquoi j'avais besoin de ça? )Mets un autosave en event après les passages "risqués"
- cator. lolMembre
- Nombre de messages : 164
Age : 32
Localisation : Cherche pas, tu me trouveras jamais.
Distinction : Zoophile à ses heures perdues, au torse poilu et qui chante YMCA
Frère de poils!
[Mist' ]
Maître du plantage d'arbres à femme : pour la sauvegarde des arbres et des petits oiseaux, vive la nature. [Balb' ]
crefadet le violeur du bois [Balb' ]
Date d'inscription : 02/02/2012
Re: [Résolu] Sauvegarde à la fermeture
Dim 26 Aoû 2012 - 22:06
Oui enfin c'est quand même du peaufinage pour pas grand chose, c'est juste son problème à lui, pas besoin de t'enquiquiner pour ça XD
A ta place je ne m'en soucierais pas.
A ta place je ne m'en soucierais pas.
- zidoMembre
- Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
Re: [Résolu] Sauvegarde à la fermeture
Dim 26 Aoû 2012 - 22:19
Mouais... Je vais sûrement faire ça. Merci!
- BalbereithStaffeux retraité
- Nombre de messages : 4129
Age : 31
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires ) [Coco' ]
Date d'inscription : 13/05/2009
Re: [Résolu] Sauvegarde à la fermeture
Dim 26 Aoû 2012 - 23:53
Et si tu supprimais via un script la sauvegarde avant chaque début de combat (autant faire sadique jusqu'à la fin) la sanction serait pire de quitter le jeu que de perdre le combat car si tu ferme, plus de partie et tu resauvegarde après la fin du combat. Après il faut sensibiliser le joueur XD pour qu'il ne dise : "OH P*t*i*, elle est où c'te sauvegarde !!!"
- zidoMembre
- Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
Re: [Résolu] Sauvegarde à la fermeture
Lun 27 Aoû 2012 - 11:00
Très bonne idéeBalbereith a écrit:Et si tu supprimais via un script la sauvegarde avant chaque début de combat (autant faire sadique jusqu'à la fin) la sanction serait pire de quitter le jeu que de perdre le combat car si tu ferme, plus de partie et tu resauvegarde après la fin du combat. Après il faut sensibiliser le joueur XD pour qu'il ne dise : "OH P*t*i*, elle est où c'te sauvegarde !!!"
Mais je sais pas comment on fait
- cator. lolMembre
- Nombre de messages : 164
Age : 32
Localisation : Cherche pas, tu me trouveras jamais.
Distinction : Zoophile à ses heures perdues, au torse poilu et qui chante YMCA
Frère de poils!
[Mist' ]
Maître du plantage d'arbres à femme : pour la sauvegarde des arbres et des petits oiseaux, vive la nature. [Balb' ]
crefadet le violeur du bois [Balb' ]
Date d'inscription : 02/02/2012
Re: [Résolu] Sauvegarde à la fermeture
Lun 27 Aoû 2012 - 11:37
Il y a normalement une commande d'événement "interdire l'accès aux sauvegardes". Du moins il me semble.
- zidoMembre
- Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
Re: [Résolu] Sauvegarde à la fermeture
Lun 27 Aoû 2012 - 11:54
Non ce n'est pas vraiment ça que je cherchais mais plutôt supprimer le fichier rvdata2 de la sauvegarde.
Re: [Résolu] Sauvegarde à la fermeture
Lun 27 Aoû 2012 - 13:04
Pour supprimer le dernier fichier de sauvegarde utilisé, ajouter ce code dans une commande script :
DataManager.delete_save_file(DataManager.last_savefile_index)
J'ai pas testé, je suis en pleine reprise au boulot, et j'ai déjà de quoi bien m'occuper.
Et puis, attention c'est over bourin, si ya coupure de courant juste après le delete, c'est mort, ya pas moyen de récupérer le fichier supprimé.
DataManager.delete_save_file(DataManager.last_savefile_index)
J'ai pas testé, je suis en pleine reprise au boulot, et j'ai déjà de quoi bien m'occuper.
Et puis, attention c'est over bourin, si ya coupure de courant juste après le delete, c'est mort, ya pas moyen de récupérer le fichier supprimé.
- cator. lolMembre
- Nombre de messages : 164
Age : 32
Localisation : Cherche pas, tu me trouveras jamais.
Distinction : Zoophile à ses heures perdues, au torse poilu et qui chante YMCA
Frère de poils!
[Mist' ]
Maître du plantage d'arbres à femme : pour la sauvegarde des arbres et des petits oiseaux, vive la nature. [Balb' ]
crefadet le violeur du bois [Balb' ]
Date d'inscription : 02/02/2012
Re: [Résolu] Sauvegarde à la fermeture
Lun 27 Aoû 2012 - 19:19
Je plussoie l'idée de frère de poils, ou alors l'ouvrir et y insérer un caractère à la fin histoire de la planter et le supprimer ensuite.
Re: [Résolu] Sauvegarde à la fermeture
Lun 27 Aoû 2012 - 20:17
je m'en occupe ce soir
Mist' : Pas de problème, merci
Mist' : Pas de problème, merci
- zidoMembre
- Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
Re: [Résolu] Sauvegarde à la fermeture
Lun 27 Aoû 2012 - 20:32
Merci de vous en occuper mais je n'ai absolument rien compris des derniers posts
Re: [Résolu] Sauvegarde à la fermeture
Lun 27 Aoû 2012 - 21:32
J'ai une autre solution éventuellement, moins bourine mais assez interressante :
l'ajout d'une données dans la sauvegarde correspondant à une sorte de témoin de risque. En ajoutant 2 méthodes à DataManager, l'une modifiant la dernière sauvegarde utilisé afin de modifier le témoin de risque en le passant à 1, et une méthode faisant la même chose en métant le témoin à 0. Au chargement de la sauvegarde, si le témoin vaut 1, on peut sanctionner le joueur par une perte d'exp ou d'or.
Dit moi si ça te convient, histoire que je commence à réfléchir comment mettre en place la gesiton de malus au chargement de la sauvegarde.
l'ajout d'une données dans la sauvegarde correspondant à une sorte de témoin de risque. En ajoutant 2 méthodes à DataManager, l'une modifiant la dernière sauvegarde utilisé afin de modifier le témoin de risque en le passant à 1, et une méthode faisant la même chose en métant le témoin à 0. Au chargement de la sauvegarde, si le témoin vaut 1, on peut sanctionner le joueur par une perte d'exp ou d'or.
Dit moi si ça te convient, histoire que je commence à réfléchir comment mettre en place la gesiton de malus au chargement de la sauvegarde.
- zidoMembre
- Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
Re: [Résolu] Sauvegarde à la fermeture
Lun 27 Aoû 2012 - 22:05
C'est une très bonne idée mais dans ce cas, il faut que le malus soit supérieur au malus de gameover (0G et -1 niveau)... Ca pourrait peut-être être une perte de 2 niveaux et de tous les G voire éventuellement perte de l'équipement
Re: [Résolu] Sauvegarde à la fermeture
Mar 28 Aoû 2012 - 0:01
Oki, je fais ça demain, avec la possibilité de paramétrer les pertes (équippement, tunes, exp, level), là, j'étais sur mes GUI de saisie, j'ai pas vu le temps passer.
- zidoMembre
- Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
Re: [Résolu] Sauvegarde à la fermeture
Mar 28 Aoû 2012 - 0:16
Ok merci!
Re: [Résolu] Sauvegarde à la fermeture
Mar 28 Aoû 2012 - 22:32
C'est fini
Ajout d'une sanction avec une perte de 2000 exp :
si la valeur -1 est utilisée, tout est perdu, exemple pour perdre tout l'argent :
Suppression de lla sanction :
Sachant que lors d'une sauvegarde classique la sanction est automatiquement annulée
les différents type de sanction :
:exp
:gold
:level
Edit Gummy : Du grand Tonyryu, encore mieux qu'à l'époque. +5pts de participation.
Ajout d'une sanction avec une perte de 2000 exp :
- Code:
DataManager.ajouter_sanction({:exp => 2000})
si la valeur -1 est utilisée, tout est perdu, exemple pour perdre tout l'argent :
- Code:
DataManager.ajouter_sanction({:gold => -1})
Suppression de lla sanction :
- Code:
DataManager.annuler_sanction
Sachant que lors d'une sauvegarde classique la sanction est automatiquement annulée
les différents type de sanction :
:exp
:gold
:level
- Code:
#==============================================================================
# ■ Systeme de gestion de sanction lors d'une fermeture sans sauvegare
#------------------------------------------------------------------------------
# Ce script a pour but de sanctionner le joueur quittant la partie sans avoir sauvegarder normalement
#
# Version Date Auteur Commentaires
# 0.01 28/08/2012 Tonyryu Première release
#
# Attention : Ce script est ma propriété en tant que création et il est donc
# soumis au droit de la propriété intellectuelle.
# En aucun cas, il ne doit être copié ou publié vers un autre forum sans en
# avoir reçu mon accord au préalable.
#
#==============================================================================
#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
# Ajout de d'une nouvelle propriété permettant de stocker la sanction
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Game_System
attr_accessor :sanctions
#--------------------------------------------------------------------------
# * Constructeur (surcharge)
#--------------------------------------------------------------------------
alias sanction_initialize initialize
def initialize
sanction_initialize
@sanctions = {}
end
end
#==============================================================================
# ■ DataManager
#------------------------------------------------------------------------------
# Ajout de méthodes permettant d'ajouter ou retirer une sanction à la sauvegarde
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
module DataManager
#--------------------------------------------------------------------------
# ● modifier_sauvegarde
#--------------------------------------------------------------------------
def self.modifier_sauvegarde(pSanctions = {})
if $game_system.save_count > 0
header = {}
contents = {}
File.open(make_filename(last_savefile_index), "rb") do |file|
header = Marshal.load(file)
contents = Marshal.load(file)
end
contents[:system].sanctions = pSanctions
File.open(make_filename(last_savefile_index), "wb") do |file|
Marshal.dump(header, file)
Marshal.dump(contents, file)
end
end
end
#--------------------------------------------------------------------------
# ● ajouter_sanction
#--------------------------------------------------------------------------
def self.ajouter_sanction(pSanctions)
modifier_sauvegarde(pSanctions)
end
#--------------------------------------------------------------------------
# ● annuler_sanction
#--------------------------------------------------------------------------
def self.annuler_sanction
modifier_sauvegarde
end
end
#==============================================================================
# ■ Scene_Load
#------------------------------------------------------------------------------
# Modification de la sortie de Scene_Load lors de la réussite du chargement de la sauvegarde
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Scene_Load
#--------------------------------------------------------------------------
# * on_load_success (Surcharge)
#--------------------------------------------------------------------------
alias sanction_load_success on_load_success
def on_load_success
sanction_load_success
if $game_system.sanctions.size > 0
SceneManager.goto(Scene_Sanction)
end
end
end
#==============================================================================
# ■ Sanction_Window
#------------------------------------------------------------------------------
# Fenêtre d'affichage de la sanction
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Sanction_Window < Window_Base
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize
super(0, (Graphics.height / 2) - 150, Graphics.width, 300)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
texte = "Vous avez quitté le jeu lors d'une section à risque\n"+
"Voici la liste des pertes que vous subissez :\n\n"
$game_system.sanctions.each do |key,value|
case key
when :exp
if value == -1
texte += "Expérience" + " => " + "Tout" + "\n"
else
texte += "Expérience" + " => " + value.to_s + "\n"
end
when :gold
if value == -1
texte += Vocab::currency_unit + " => " + "Tout" + "\n"
else
texte += Vocab::currency_unit + " => " + value.to_s + "\n"
end
when :level
if value == -1
texte += Vocab::level + " => " + "Tous" + "\n"
else
texte += Vocab::level + " => " + value.to_s + "\n"
end
end
end
tabLigne = texte.split("\n")
idxLigne = -1
tabLigne.each do |ligne|
idxLigne += 1
contents.draw_text(0,32 * idxLigne,contents.width, 30, ligne,1)
end
end
end
#==============================================================================
# ■ Scene_Sanction
#------------------------------------------------------------------------------
# Modification de la sortie de Scene_Load lors de la réussite du chargement de la sauvegarde
#
# Version Date Auteur Commentaires
# 1.00 28/08/2012 Tonyryu Création
#
#==============================================================================
class Scene_Sanction < Scene_MenuBase
#--------------------------------------------------------------------------
# * Start Processing
#--------------------------------------------------------------------------
def start
super
SceneManager.clear
@sanction_window = Sanction_Window.new
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
goto_map if Input.trigger?(:C)
end
#--------------------------------------------------------------------------
# * Input [OK]
#--------------------------------------------------------------------------
def goto_map
$game_system.sanctions.each do |key,value|
case key
when :exp
$game_party.members.each do |actor|
if value == -1
value = actor.exp
end
actor.change_exp(actor.exp - value, false)
end
when :gold
if value == -1
value = $game_party.gold
end
$game_party.lose_gold(value)
when :level
$game_party.members.each do |actor|
if value == -1
value = actor.level + 1
end
actor.change_level([1,actor.level-value].max, false)
end
end
end
$game_system.sanctions.clear
SceneManager.goto(Scene_Map)
end
end
Edit Gummy : Du grand Tonyryu, encore mieux qu'à l'époque. +5pts de participation.
- zidoMembre
- Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
Re: [Résolu] Sauvegarde à la fermeture
Mar 28 Aoû 2012 - 23:19
Merci beaucoup!
Alors si j'ai bien compris je dois définir la sanction avant le déclenchement du combat et l'annuler après?
Alors si j'ai bien compris je dois définir la sanction avant le déclenchement du combat et l'annuler après?
Re: [Résolu] Sauvegarde à la fermeture
Mer 29 Aoû 2012 - 9:11
oui, c'est exactement ça. Le système modifie la dernière sauvegarde chargée sans incorporer les données du jeu en cours. Ce qui fait que lorsque l'on quitte violemment pour tenter de recharger la dernière sauvegarde, afin d'éviter de perdre un combat, et bien la sanction est présente dans la sauvegarde et est appliqué.
visuel :
visuel :
- zidoMembre
- Nombre de messages : 67
Age : 28
Localisation : France
Distinction : aucune
Date d'inscription : 19/05/2012
Re: [Résolu] Sauvegarde à la fermeture
Mer 29 Aoû 2012 - 11:46
C'est bon j'ai essayé mais y a-t-il un moyen de mettre plusieurs sanctions? Car j'ai essayé mais il n'y a que la deuxième qui est appliquée...
Re: [Résolu] Sauvegarde à la fermeture
Mer 29 Aoû 2012 - 11:50
Oui, j'ai omis de le préciser, je suppose que tu as du ajouter 2 commandes scripts DataManager.ajouter_sanction.
Le paramètre à la méthode ajouter_sanction est une liste, d'où les {}, on peut donc y spécifier plusieurs sanctions comme ceci :
Le paramètre à la méthode ajouter_sanction est une liste, d'où les {}, on peut donc y spécifier plusieurs sanctions comme ceci :
- Code:
DataManager.ajouter_sanction({:exp => 2000, :gold => 3000})
Page 1 sur 2 • 1, 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|