Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: Les aventures d'un avatar 10 / Jeux: Sentinelles la quête du temps / Jeux: Le secret de vanoiseau / Sorties: Happiness Adventure / Tutos: [RM 2003] Tuto CBS Zelda 2D - (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

149 connectés actuellement

26261281 visiteurs
depuis l'ouverture

16314 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

Alex d'Or

RPG Fusion

Zarok

New RPG Maker

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [vx ace] changer l'image du menu en fonction de l'avancée du jeu


pepette - posté le 06/05/2022 à 22:32:37 (38 messages postés)

❤ 0

Domaine concerné: script
Logiciel utilisé: vx ace
Bonjour

Je souhaiterais faire en sorte que l'image titre (accueil du jeu / menu principal) change si le joueur a déjà vu une des fins du jeu.

En gros, mon jeu a plusieurs fin possible, et je voudrais mettre une image qui rappelle aux joueurs la dernière fin qu'ils ont vu. Et que le jeu s'en souvienne de façon permanente !

J'ai parlé avec un dev qui travaille sur Ren'py, il me dit qu'il utilise les variables "persistant" pour faire ça. Mais à ma connaissance, ça n'existe pas sur RPG.

Je me disais que le plus simple est peut être de créer un fichier txt dans DATA, et de changer la valeur dedans quand une fin est jouée.
A l'ouverture du jeu, le programme lirait cette info et afficherait l'image en fonction.

Est ce que quelqu'un sait si un script existe pour ça ?


pepette - posté le 07/05/2022 à 15:39:54 (38 messages postés)

❤ 0

J'ai trouvé un script qui résout une partie de ma recherche :
création de variables / inter persistent :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
 
=begin
Persistent Data
by Fomar0153
Version 1.0
----------------------
Notes
----------------------
Allows you to preserve the values of selected variables
and switches across all games.
----------------------
Instructions
----------------------
If you wish adjust the strings in the Fomar module.
Then put the PERSISTENT_DATA_STRING in to the names of
the switches or variables that are to be persistent.
E.g.
[p]Talked to mayor
Case 1: Progress [p]
----------------------
Known bugs
----------------------
None
=end
 
module Fomar
 
 # Enter the string below into the names of the switches or variables
 # that are to be persistent
 PERSISTENT_DATA_STRING = "[p]"
 # DO NOT USE SAVE in the string below
 PFILENAME = "PersistentData.rvdata2"
 
end
 
class Game_PersistentSwitches
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
   @data = {}
 end
 #--------------------------------------------------------------------------
 # * Get Switch
 #--------------------------------------------------------------------------
 def [](switch_id)
   @data[switch_id] || false
 end
 #--------------------------------------------------------------------------
 # * Set Switch
 #     value : ON (true) / OFF (false)
 #--------------------------------------------------------------------------
 def []=(switch_id, value)
   @data[switch_id] = value
   DataManager.save_persistent
 end
end
 
class Game_PersistentVariables
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
   @data = {}
 end
 #--------------------------------------------------------------------------
 # * Get Variable
 #--------------------------------------------------------------------------
 def [](variable_id)
   @data[variable_id] || 0
 end
 #--------------------------------------------------------------------------
 # * Set Variable
 #--------------------------------------------------------------------------
 def []=(variable_id, value)
   @data[variable_id] = value
   DataManager.save_persistent
 end
end
 
class Game_Switches
 #--------------------------------------------------------------------------
 # * Get Switch
 #--------------------------------------------------------------------------
 def [](switch_id)
   if $data_system.switches[switch_id] && $data_system.switches[switch_id].include?(Fomar::PERSISTENT_DATA_STRING)
     return $game_persistentswitches[switch_id]
   else
     return @data[switch_id] || false
   end
 end
 #--------------------------------------------------------------------------
 # * Set Switch
 #     value : ON (true) / OFF (false)
 #--------------------------------------------------------------------------
 def []=(switch_id, value)
   if $data_system.switches[switch_id] && $data_system.switches[switch_id].include?(Fomar::PERSISTENT_DATA_STRING)
     $game_persistentswitches[switch_id] = value
   else
     @data[switch_id] = value
   end
   on_change
 end
end
 
class Game_Variables
 #--------------------------------------------------------------------------
 # * Get Variable
 #--------------------------------------------------------------------------
 def [](variable_id)
   if $data_system.variables[variable_id] && $data_system.variables[variable_id].include?(Fomar::PERSISTENT_DATA_STRING)
     return $game_persistentvariables[variable_id]
   else
     return @data[variable_id] || 0
   end
 end
 #--------------------------------------------------------------------------
 # * Set Variable
 #--------------------------------------------------------------------------
 def []=(variable_id, value)
   if $data_system.variables[variable_id] && $data_system.variables[variable_id].include?(Fomar::PERSISTENT_DATA_STRING)
     $game_persistentvariables[variable_id] = value
   else
     @data[variable_id] = value
   end
   on_change
 end
end
 
module DataManager
 #--------------------------------------------------------------------------
 # * Aliases
 #--------------------------------------------------------------------------
 class << self
   alias persistent_create_game_objects create_game_objects
   alias persistent_load_game load_game
 end
 #--------------------------------------------------------------------------
 # * Execute Load
 #--------------------------------------------------------------------------
 def self.load_game(index)
   self.load_persistent
   return self.persistent_load_game(index)
 end
 #--------------------------------------------------------------------------
 # * Create Game Objects
 #--------------------------------------------------------------------------
 def self.create_game_objects
   self.persistent_create_game_objects
   self.load_persistent
 end
 #--------------------------------------------------------------------------
 # * Save Persistent Data
 #--------------------------------------------------------------------------
 def self.save_persistent
   begin
     File.open(Fomar::PFILENAME, "wb") do |file|
       persistent = {}
       persistent[:switches] = $game_persistentswitches
       persistent[:variables] = $game_persistentvariables
       Marshal.dump(persistent, file)
     end
   rescue
     File.delete(Fomar::PFILENAME) rescue nil
   end
 end
 #--------------------------------------------------------------------------
 # * Load Persistent Data
 #--------------------------------------------------------------------------
 def self.load_persistent
   begin
     File.open(Fomar::PFILENAME, "rb") do |file|
       contents = Marshal.load(file)
       $game_persistentswitches  = contents[:switches]
       $game_persistentvariables = contents[:variables]
     end
   rescue
     $game_persistentswitches  = Game_PersistentSwitches.new
     $game_persistentvariables = Game_PersistentVariables.new
     self.save_persistent
   end
 end
end
 



Si quelqu'un sait le modifier pour qu'il charge les données dès l'écran titre. Je suis preneuse !


cortez - posté le 07/05/2022 à 22:20:01 (458 messages postés)

❤ 0

Théoriquement ce code fonctionne :

Script d'écran de titre a placer après le script que tu as trouvé :

Spoiler (cliquez pour afficher)



Pour paramétrer il faut placer ici les valeurs que tu veux dans la partie
#--------------------------------------------------------------------------
# * Create Background
#--------------------------------------------------------------------------

Portion de code : Tout sélectionner

1
2
3
4
    if $game_persistentvariables[1] = 10
      @sprite1.bitmap = Cache.title1("Book")
      @sprite2 = Sprite.new
      @sprite2.bitmap = Cache.title2("Mist")



Si la valeur de la variable persistante 1 vaut 10 alors on affiche le fond "Book" (Book correspond au nom du
fichier a afficher présent dans le dossier /Graphics/Titles1 de ton projet.)
et on affiche aussi l'image Mist qui est une image du dossier /Graphics/Titles2 de ton projet.

Dans l'exemple d'après on fait la même chose mais cette fois on teste la valeur 20.

Portion de code : Tout sélectionner

1
2
3
4
    elsif $game_persistentvariables[1] = 20
      @sprite1.bitmap = Cache.title1("Castle")
      @sprite2 = Sprite.new
      @sprite2.bitmap = Cache.title2("Leaves")



Enfin on termine par une valeur par défaut (si le joueur commence une partie sans que les valeurs persistan-
tes existent)

Portion de code : Tout sélectionner

1
2
3
4
5
    else # Ecran titre par defaut
      @sprite1.bitmap = Cache.title1($data_system.title1_name)
      @sprite2 = Sprite.new
      @sprite2.bitmap = Cache.title2($data_system.title2_name)
    end



Tu peux ajouter des conditions en plus en respectant la syntaxe :

if (début des conditions : condition 1 )

elsif (ou alors : condition 2 )

elsif (ou alors : condition 3 )

.. (ou alors : condition X )

else (sinon : condition X+1 )

end (fin des conditions)

Le else doit rester identique afin de ne pas créer de bug si la variable persistante n'existe pas/ la valeur ne
correspond a aucune condition.

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
    if $game_persistentvariables[1] = 1
      @sprite1.bitmap = Cache.title1("Image1")
      @sprite2 = Sprite.new
      @sprite2.bitmap = Cache.title2("Image2")
    elsif $game_persistentvariables[1] = 2
      @sprite1.bitmap = Cache.title1("Image3")
      @sprite2 = Sprite.new
      @sprite2.bitmap = Cache.title2("Image4")
    elsif $game_persistentvariables[1] = 3
      @sprite1.bitmap = Cache.title1("Image5")
      @sprite2 = Sprite.new
      @sprite2.bitmap = Cache.title2("Image6")
    else # Ecran titre par defaut
      @sprite1.bitmap = Cache.title1($data_system.title1_name)
      @sprite2 = Sprite.new
      @sprite2.bitmap = Cache.title2($data_system.title2_name)
    end
 
 



Par contre il est certainement possible de faire plus simple avec des alias mais ça devrait quand même mar-
cher.
(Peut-être qu'une erreur pourrait aparaitre lorsque le jeu est lancé la 1ere fois sans données persistantes)


pepette - posté le 08/05/2022 à 22:47:52 (38 messages postés)

❤ 0

Merci !

J'ai hâte de tester ça !
ça à l'air de répondre parfaitement à ce que je souhaite !

C'est génial !

Je te dirai si ça fonctionne


pepette - posté le 10/05/2022 à 16:27:45 (38 messages postés)

❤ 0

@Cortez
Malheureusement ton script n'a pas voulu s’insérer dans mon jeu (surement un conflit avec un autre script déjà en place : ça provoquait un crash au lancement)
Merci encore d'avoir proposé ton script (et d'avoir pris le temps de détailler les explications pour que je le comprenne), je suis désolée de ne pas avoir réussi à l'incorporer


Du coup, j'ai changé mon approche.

Je détaille ma solution ci dessous, si d'autres développeurs avaient le même besoin que moi.

J'utilise le script "sauter l'écran titre" (de Erwill & catskart)
que vous pouvez récupérer ici https://www.rpg-maker.fr/scripts-338-sauter-l-ecran-titre.html

J'ai créé une nouvelle MAP qui me sert d'écran TITRE.
sur laquelle je gère les images dans un Event qui se déclenche automatiquement.
Je peux donc superposer les layout d'images comme d'habitude, et sans limitations.

Associé au script "Persistent Data" (de Fomar0153) que j'ai mentionné plus haut, et qui permet de créer des variables et inter permanents, les données des parties précédentes sont maintenant gérables.

Ensuite le menu se résume à un simple choix :
- nouvelle partie :
téléportation dans la MAP de début
- charger une partie :
appel de script

Portion de code : Tout sélectionner

1
SceneManager.call(Scene_Load)




Ça semble fonctionner sans problème même si le fichier "permanentDATA" n'existe pas.


cortez - posté le 10/05/2022 à 21:41:15 (458 messages postés)

❤ 0

Pour ceux ce ça intéresse, j'ai crée un petit script qui change l'écran titre si une sauvegarde est présente.

On a l'écran titre par défaut si on lance le jeu la première fois. Et si une sauvegarde existe (au moins 1 dans le dossier du jeu) on affiche un autre fond et autre cadre.

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#==============================================================================
# ** Surcharge de la méthode create_backgound de la classe Scene_Title
#------------------------------------------------------------------------------
#  Script a placer au dessus de Main. (Aucun credit nécessaire)
#==============================================================================
class Scene_Title
  #--------------------------------------------------------------------------
  # Ici on nomme les 2 parties du fond d'écran custom a afficher.
  # Il faut entrer le nom du fichier sans l'extention déposé 
  # dans /Titles1 pour le fond de l'ecran titre
  # dans /Titles2 pour le cadre de l'ecran titre
  #--------------------------------------------------------------------------
  @@Fond = "Castle"
  @@Cadre = "Mist"
 
  #--------------------------------------------------------------------------
  # * Create Background
  #--------------------------------------------------------------------------
  def create_background
    @sprite1 = Sprite.new
    @sprite2 = Sprite.new
    unless DataManager.save_file_exists?
      @sprite1.bitmap = Cache.title1($data_system.title1_name)
      @sprite2.bitmap = Cache.title2($data_system.title2_name)
    else
      @sprite1.bitmap = Cache.title1("#@@Fond")
      @sprite2.bitmap = Cache.title2("#@@Cadre")
    end
    center_sprite(@sprite1)
    center_sprite(@sprite2)
  end
end



Finalement j'aime bien comprendre le fonctionnement du langage ruby.

Index du forum > Entraide > [RESOLU] [vx ace] changer l'image du menu en fonction de l'avancée du jeu

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers