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

Packs de ressources: Tilesets lumineux / Packs de ressources: Expressions (...) / Tests: Le Guide Machin / Programmes: Tileset Converter MV 2.0 / News: La news des 700 jeux ! / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

174 connectés actuellement

11080419 visiteurs
depuis l'ouverture

99 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

New RPG Maker

ConsoleFun

Le Studio du Chat Vert

Level Up!

Kingdom Ultimate

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [Rmvx Ace][Script] Où dois-je créer ma fenêtre ?

Aller à la page 1 2


arttroy - posté le 14/09/2012 à 14:07:23 (2394 messages postés)

❤ 0

Just working

Domaine concerné: script
Logiciel utilisé: Rmvx Ace
Bonjour j'ai créé une nouvelle fenêtre pour afficher 2 variables dans mon menu comme ça :

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
class Window_Pierre_Niveau < Window_Base
  def initialize(x, y)
    super(420, 180, 220, 150)
    self.opacity = 0
    self.back_opacity = 0
    self.contents.font.size = 20
    self.contents.font.name = "Karate"
    self.contents.font.color = normal_color
    refresh
  end
  def refresh
    self.contents.clear
    @lvl_actuel = $game_variables[60]
    @util_actuel = $game_variables[59]
    self.contents.draw_text(25, 0, 100, contents.height, "Nv :           " + @lvl_actuel.to_s, 2)
    self.contents.draw_text(-50, 20, 200, contents.height, "   Utilisations :       " + @util_actuel.to_s, 2)
  end
  def update
    super
    if $game_variables[60] != @lvl_actuel
      refresh
    end
    if $game_variables[59] != @util_actuel
      refresh
    end
  end
end



Puis dans mon Scene_Skill :

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
  def create_image_pierres
    @sprite_pierre = Sprite.new
    @sprite_pierre.bitmap = Cache.picture("")
    @sprite_pierre.x = 370
    @sprite_pierre.y = 160
    @sprite_pierre.z = 4
    update
  end
  def create_pierre_window
    @niveau_window = Window_Pierre_Niveau.new(0, 308)
  end
  def update
    super
    update_pierre_system
  end
  def update_pierre_system
    if @command_window.index == 0 and $game_party.item_number($data_armors[61])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreFeu")
    end
    if @command_window.index == 1 and $game_party.item_number($data_armors[62])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreEau")
    end
    if @command_window.index == 2 and $game_party.item_number($data_armors[63])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreTerre")
    end
    if @command_window.index == 3 and $game_party.item_number($data_armors[64])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreVent")
    end
    if @command_window.index == 4 and $game_party.item_number($data_armors[65])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreFoudre")
    end
  end
 



J'ai mis l'index en dessous parce que l'idée ce serait de changer les variables montrées selon la valeur de celui-ci.

En parallèle j'ai créé les events qui gèrent les variables, ce sont les suivantes :
Nom variable ID correspondant

Niveau pierre feu game.variables[58]
Util pierrefeu game.variables[60]

Niveau pierre eau game.variables[59]
Util pierreeau game.variables[61]

Niveau pierre terre game.variables[63]
Util pierreterre game.variables[62]

Niveau pierre vent game.variables[65]
Util pierrevent game.variables[64]

Niveau pierre foudre game.variables[67]
Util pierrefoudre game.variables[66]

Edit : bon, je pense avoir identifié une partie du problême. Ma window doit dépendre directement de mon Scene_Skill pour pouvoir utiliser l'index et changer les variables comme je veux...

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Crystal - posté le 20/09/2012 à 23:39:56 (1952 messages postés)

❤ 0

Tu n'as probablement aucune réponse parce que tu ne dis pas ce qui va mal et qu'il n'y a pas de question en soi. Les gens vont être trop flemmards pour analyser ton code, c'est un peu comme aller chez le médecin et dire "Je vais mal" sans précision.


arttroy - posté le 21/09/2012 à 09:55:48 (2394 messages postés)

❤ 0

Just working

En gros l'idée c'est de faire ça :

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
  def update_pierre_system
    if @command_window.index == 0 and $game_party.item_number($data_armors[61])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreFeu")
      @lvl_actuel = $game_variables[60]
      @util_actuel = $game_variables[58]
    end
    if @command_window.index == 1 and $game_party.item_number($data_armors[62])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreEau")
      @lvl_actuel = $game_variables[61]
      @util_actuel = $game_variables[59]
    end
    if @command_window.index == 2 and $game_party.item_number($data_armors[63])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreTerre")
      @lvl_actuel = $game_variables[63]
      @util_actuel = $game_variables[62]
    end
    if @command_window.index == 3 and $game_party.item_number($data_armors[64])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreVent")
      @lvl_actuel = $game_variables[65]
      @util_actuel = $game_variables[64]
    end
    if @command_window.index == 4 and $game_party.item_number($data_armors[65])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreFoudre")
      @lvl_actuel = $game_variables[67]
      @util_actuel = $game_variables[66]
    end
  end



Comme ça quand mon index changera, ça changera les variables affichées à l'écran.

La question c'est où dois-je créer ma fenêtre pour que ça fonctionne ? A l'origine je me suis basé sur le script pour l'affichage du temps de jeu dans le menu, mais ça ne me permet pas d'utiliser l'index de mon Scene_Skill.

Merci pour la précision j'aurais pu rester longtemps à attendre comme ça...

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Crystal - posté le 21/09/2012 à 16:56:52 (1952 messages postés)

❤ 0

Tu peux passer ton index en paramètre de la fonction refresh. Ou mettre @command_window en attr_reader, puis aller chercher sa valeur d'index avec $scene.command_window.index.


arttroy - posté le 23/09/2012 à 14:47:52 (2394 messages postés)

❤ 0

Just working

Ok merci je ne suis pas sûr d'avoir tout saisi mais je vais essayer. Bonne journée à toi.


Edit: Du coup je m'y suis remis un peu et j'y comprends pas grand chose à cette histoire d' "attr reader" est ce que quelqu'un pourrait m'expliquer le principe ?

Ps: Si tu passes par là pour m'expliquer un peu plus ce que tu veux dire Crystal c'est bien aussi :grossourire .

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Mack - posté le 14/11/2012 à 19:29:23 (2027 messages postés)

❤ 0

Pour faire dans le simple, attr_reader :ta_variable permet de faire que t'as variable soit visible depuis une objet différent.
( Genre si tu veux pouvoir récupérer une variable d'une fenêtre depuis une scene. )
Accessor, c'pareil, mais ça te permettra de modifier cette variable.

Donc si j'ai bien compris c'que tu veux faire, tu dois récupérer ta variable dans ta scene, et modifier ta fenêtre.
( En utilisant attr_accessor donc. )

( Je prend note de tout les commentaires, même si je n'y répond pas )


Mack - posté le 14/11/2012 à 21:11:43 (2027 messages postés)

❤ 0

Bah déjà, t'appelles jamais la def update de ta fenêtre donc bon xD.

( Je prend note de tout les commentaires, même si je n'y répond pas )


arttroy - posté le 14/11/2012 à 21:53:39 (2394 messages postés)

❤ 0

Just working

j'ai réédité le message d'avant, plus de message d'erreur mais les variables ne s'actualisent pas.

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Mack - posté le 15/11/2012 à 09:23:20 (2027 messages postés)

❤ 0

La def update doit être appeler en boucle, sinon elle sert à rien.
Là tu l'appelles une seule fois, c'est normal que rien ne change.

Dans la def update de ta scene, tu dois mettre :

Portion de code : Tout sélectionner

1
@niveau_window.update



( Je prend note de tout les commentaires, même si je n'y répond pas )


arttroy - posté le 15/11/2012 à 11:41:58 (2394 messages postés)

❤ 0

Just working

J'ai rajouté ce que tu m'avais dit (j'ai edit le code plus haut), mais ça ne va pas, pas de message d'erreur mais ça ne s'actualise toujours pas.

J'ai vérifié la valeur de ma variable (je fais mes test d'après la pierre de l'eau qui permet de soigner), elle prend bien +1 quand j'utilise mon sort donc côté event et variables, pas de soucis.

Mais du coup je vois vraiment ou ça cloche. B..... je suis nul...

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Mack - posté le 15/11/2012 à 12:12:36 (2027 messages postés)

❤ 0

Essaie de rajouter un refresh dans l'initialize de ta fenêtre.

M'enfin, normalement ça devrait être bon, si ça marche toujours pas, c'est très surement que ça vient de tes variables.
Donc vérifies depuis le menu avec les p $game_variables[X] et p @lvl_actuel.


Par contre, tu sais que dans ta scene tes variables @lvl_actuel, et @util_actuel servent à rien ?

Pour t'en servir depuis ta fenêtre, tu dois faire le lien entre la fenêtre et ta scene.
( En gros, quand tu créais ta fenêtre tu mets self en argument, tu le récupères dans une variable dans ta fenêtre )

( Je prend note de tout les commentaires, même si je n'y répond pas )


arttroy - posté le 15/11/2012 à 13:16:30 (2394 messages postés)

❤ 0

Just working

En fait j'ai vérifié mes variables IG, aucun problème les valeurs sont bien modifiées.

Par contre je ne comprends pas ce que tu veux dire à la fin...

Citation:


Pour t'en servir depuis ta fenêtre, tu dois faire le lien entre la fenêtre et ta scene.
( En gros, quand tu créais ta fenêtre tu mets self en argument, tu le récupères dans une variable dans ta fenêtre )



j'ai re-re-re-edit le code

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Mack - posté le 15/11/2012 à 13:20:54 (2027 messages postés)

❤ 0

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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
class Scene_HWSkill < Scene_ItemBase
  attr_accessor :lvl_actuel
  attr_accessor :util_actuel
  def start
    super
    create_help_window
    create_background
    create_actor_window
    create_command_window
    create_status_window
    create_item_window
    create_background_image
    create_background_image_b
    create_pierre_window
    @command_window.index = 0
    if Input.trigger?(:RIGHT)
      @command_window.index += 1
    elsif Input.trigger?(:LEFT)
      @command_window.index -= 1
    end
    create_image_pierres
  end
  def terminate
    super
    dispose_background
    dispose_background_image
    dispose_background_image_b
    dispose_pierre_system
  end
  def create_background
    @sprite_menu = Sprite.new
    @sprite_menu.bitmap = Cache.picture("fond menu base 4")
    @sprite_menu.x = 270
    @sprite_menu.y = 115
    @sprite_menu.z = 4
  end
  def dispose_background
    @sprite_menu.dispose
  end
    def create_background_image
    @sprite = Sprite.new
    @sprite.bitmap = Cache.picture("fond")
  end
  def dispose_background_image
    @sprite.dispose
  end
  def create_background_image_b
    @sprite_b = Sprite.new
    @sprite_b.bitmap = Cache.picture("fond menu base 3")
    @sprite_b.x = 100
    @sprite_b.y = 115
  end
  def dispose_background_image_b
    @sprite_b.dispose
  end
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    wy = @help_window.height
    @command_window = Window_SkillCommand.new(0, wy)
    @command_window.viewport = @viewport
    @command_window.help_window = @help_window
    @command_window.actor = @actor
    @command_window.set_handler(:skill,    method(:command_skill))
    @command_window.set_handler(:cancel,   method(:return_scene))
    @command_window.set_handler(:pagedown, method(:next_actor))
    @command_window.set_handler(:pageup,   method(:prev_actor))
  end
  #--------------------------------------------------------------------------
  # * Create Status Window
  #--------------------------------------------------------------------------
  def create_status_window
    y = @help_window.height
    @status_window = Window_SkillStatus.new(@command_window.width, y)
    @status_window.opacity = 0
    @status_window.back_opacity = 0
    @status_window.viewport = @viewport
    @status_window.actor = @actor
  end
  #--------------------------------------------------------------------------
  # * Create Item Window
  #--------------------------------------------------------------------------
  def create_item_window
    wx = 0
    wy = @status_window.y + @status_window.height
    ww = Graphics.width
    wh = Graphics.height - wy
    @item_window = Window_SkillList.new(370, 300, 250, wh)
    @item_window.actor = @actor
    @item_window.viewport = @viewport
    @item_window.help_window = @help_window
  #  @help_window.visible = false
    @item_window.set_handler(:ok,     method(:on_item_ok))
    @item_window.set_handler(:cancel, method(:on_item_cancel))
    @command_window.skill_window = @item_window
    @item_window.opacity = 0
    @item_window.back_opacity = 0
  end
  def create_image_pierres
    @sprite_pierre = Sprite.new
    @sprite_pierre.bitmap = Cache.picture("")
    @sprite_pierre.x = 370
    @sprite_pierre.y = 160
    @sprite_pierre.z = 4
    update
  end
  def create_pierre_window
    @niveau_window = Window_Pierre_Niveau.new(0, 308, self)
  end
  def update
    super
    @niveau_window.update
    update_pierre_system
  end
  def update_pierre_system
    if @command_window.index == 0 and $game_party.item_number($data_armors[61])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreFeu")
      @lvl_actuel = $game_variables[60]
      @util_actuel = $game_variables[58]
    end
    if @command_window.index == 1 and $game_party.item_number($data_armors[62])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreEau")
      @lvl_actuel = $game_variables[61]
      @util_actuel = $game_variables[59]
    end
    if @command_window.index == 2 and $game_party.item_number($data_armors[63])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreTerre")
      @lvl_actuel = $game_variables[63]
      @util_actuel = $game_variables[62]
    end
    if @command_window.index == 3 and $game_party.item_number($data_armors[64])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreVent")
      @lvl_actuel = $game_variables[65]
      @util_actuel = $game_variables[64]
    end
    if @command_window.index == 4 and $game_party.item_number($data_armors[65])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreFoudre")
      @lvl_actuel = $game_variables[67]
      @util_actuel = $game_variables[66]
    end
  end
  def dispose_pierre_system
    @sprite_pierre.dispose
  end
  #--------------------------------------------------------------------------
  # * Get Skill's User
  #--------------------------------------------------------------------------
  def user
    @actor
  end
  #--------------------------------------------------------------------------
  # * [Skill] Command
  #--------------------------------------------------------------------------
  def command_skill
    @item_window.activate
    @item_window.select_last
  end
  #--------------------------------------------------------------------------
  # * Item [OK]
  #--------------------------------------------------------------------------
  def on_item_ok
    @actor.last_skill.object = item
    determine_item
  end
  #--------------------------------------------------------------------------
  # * Item [Cancel]
  #--------------------------------------------------------------------------
  def on_item_cancel
    @item_window.unselect
    @command_window.activate
  end
  #--------------------------------------------------------------------------
  # * Play SE When Using Item
  #--------------------------------------------------------------------------
  def play_se_for_item
    Sound.play_use_skill
  end
  #--------------------------------------------------------------------------
  # * Use Item
  #--------------------------------------------------------------------------
  def use_item
    super
    @status_window.refresh
    @item_window.refresh
  end
  #--------------------------------------------------------------------------
  # * Change Actors
  #--------------------------------------------------------------------------
  def on_actor_change
    @command_window.actor = @actor
    @status_window.actor = @actor
    @item_window.actor = @actor
    @command_window.activate
  end
end
 
class Window_Pierre_Niveau < Window_Base
  def initialize(x, y, scene)
    super(420, 180, 220, 150)
    self.opacity = 0
    self.back_opacity = 0
    self.contents.font.size = 20
    self.contents.font.name = "Karate"
    self.contents.font.color = normal_color
    @scene = scene
    update
    refresh
  end
  def refresh
    self.contents.clear
    @scene.lvl_actuel = $game_variables[60]
    @scene.util_actuel = $game_variables[58]
    self.contents.draw_text(25, 0, 100, contents.height, "Nv :           " + @lvl_actuel.to_s, 2)
    self.contents.draw_text(-50, 20, 200, contents.height, "   Utilisations :       " + @util_actuel.to_s, 2)
  end
  def update
    super
    if $game_variables[60] != @scene.lvl_actuel
      refresh
    end
    if $game_variables[58] != @scene.util_actuel
      refresh
    end
  end
end



( Bon, là j'ai mis @scene, mais j'te déconseille de le laisser comme ça. )


Si ça marche toujours pas, bah je sais pas, je vois pas d'où ça viens.

( Je prend note de tout les commentaires, même si je n'y répond pas )


arttroy - posté le 15/11/2012 à 17:19:46 (2394 messages postés)

❤ 0

Just working

Du coup j'avais mis tel quel et l'affichage des variables ne se faisait plus, j'ai fait ça et me revoilà au point de départ. pas de messages d'erreur mais l'actualisation de l'affichage ne se fait pas.

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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
class Scene_HWSkill < Scene_ItemBase
  attr_accessor :lvl_actuel
  attr_accessor :util_actuel
  def start
    super
    create_help_window
    create_background
    create_actor_window
    create_command_window
    create_status_window
    create_item_window
    create_background_image
    create_background_image_b
    create_pierre_window
    @command_window.index = 0
    if Input.trigger?(:RIGHT)
      @command_window.index += 1
    elsif Input.trigger?(:LEFT)
      @command_window.index -= 1
    end
    create_image_pierres
  end
  def terminate
    super
    dispose_background
    dispose_background_image
    dispose_background_image_b
    dispose_pierre_system
  end
  def create_background
    @sprite_menu = Sprite.new
    @sprite_menu.bitmap = Cache.picture("fond menu base 4")
    @sprite_menu.x = 270
    @sprite_menu.y = 115
    @sprite_menu.z = 4
  end
  def dispose_background
    @sprite_menu.dispose
  end
    def create_background_image
    @sprite = Sprite.new
    @sprite.bitmap = Cache.picture("fond")
  end
  def dispose_background_image
    @sprite.dispose
  end
  def create_background_image_b
    @sprite_b = Sprite.new
    @sprite_b.bitmap = Cache.picture("fond menu base 3")
    @sprite_b.x = 100
    @sprite_b.y = 115
  end
  def dispose_background_image_b
    @sprite_b.dispose
  end
  #--------------------------------------------------------------------------
  # * Create Command Window
  #--------------------------------------------------------------------------
  def create_command_window
    wy = @help_window.height
    @command_window = Window_SkillCommand.new(0, wy)
    @command_window.viewport = @viewport
    @command_window.help_window = @help_window
    @command_window.actor = @actor
    @command_window.set_handler(:skill,    method(:command_skill))
    @command_window.set_handler(:cancel,   method(:return_scene))
    @command_window.set_handler(:pagedown, method(:next_actor))
    @command_window.set_handler(:pageup,   method(:prev_actor))
  end
  #--------------------------------------------------------------------------
  # * Create Status Window
  #--------------------------------------------------------------------------
  def create_status_window
    y = @help_window.height
    @status_window = Window_SkillStatus.new(@command_window.width, y)
    @status_window.opacity = 0
    @status_window.back_opacity = 0
    @status_window.viewport = @viewport
    @status_window.actor = @actor
  end
  #--------------------------------------------------------------------------
  # * Create Item Window
  #--------------------------------------------------------------------------
  def create_item_window
    wx = 0
    wy = @status_window.y + @status_window.height
    ww = Graphics.width
    wh = Graphics.height - wy
    @item_window = Window_SkillList.new(370, 300, 250, wh)
    @item_window.actor = @actor
    @item_window.viewport = @viewport
    @item_window.help_window = @help_window
  #  @help_window.visible = false
    @item_window.set_handler(:ok,     method(:on_item_ok))
    @item_window.set_handler(:cancel, method(:on_item_cancel))
    @command_window.skill_window = @item_window
    @item_window.opacity = 0
    @item_window.back_opacity = 0
  end
  def create_image_pierres
    @sprite_pierre = Sprite.new
    @sprite_pierre.bitmap = Cache.picture("")
    @sprite_pierre.x = 370
    @sprite_pierre.y = 160
    @sprite_pierre.z = 4
    update
  end
  def create_pierre_window
    @niveau_window = Window_Pierre_Niveau.new(0, 308, self)
  end
  def update
    super
    @niveau_window.update
    update_pierre_system
  end
  def update_pierre_system
    if @command_window.index == 0 and $game_party.item_number($data_armors[61])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreFeu")
      @lvl_actuel = $game_variables[60]
      @util_actuel = $game_variables[58]
    end
    if @command_window.index == 1 and $game_party.item_number($data_armors[62])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreEau")
      @lvl_actuel = $game_variables[61]
      @util_actuel = $game_variables[59]
    end
    if @command_window.index == 2 and $game_party.item_number($data_armors[63])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreTerre")
      @lvl_actuel = $game_variables[63]
      @util_actuel = $game_variables[62]
    end
    if @command_window.index == 3 and $game_party.item_number($data_armors[64])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreVent")
      @lvl_actuel = $game_variables[65]
      @util_actuel = $game_variables[64]
    end
    if @command_window.index == 4 and $game_party.item_number($data_armors[65])>0
      @sprite_pierre.bitmap = Cache.picture("EcriturePierreFoudre")
      @lvl_actuel = $game_variables[67]
      @util_actuel = $game_variables[66]
    end
  end
  def dispose_pierre_system
    @sprite_pierre.dispose
  end
  #--------------------------------------------------------------------------
  # * Get Skill's User
  #--------------------------------------------------------------------------
  def user
    @actor
  end
  #--------------------------------------------------------------------------
  # * [Skill] Command
  #--------------------------------------------------------------------------
  def command_skill
    @item_window.activate
    @item_window.select_last
  end
  #--------------------------------------------------------------------------
  # * Item [OK]
  #--------------------------------------------------------------------------
  def on_item_ok
    @actor.last_skill.object = item
    determine_item
  end
  #--------------------------------------------------------------------------
  # * Item [Cancel]
  #--------------------------------------------------------------------------
  def on_item_cancel
    @item_window.unselect
    @command_window.activate
  end
  #--------------------------------------------------------------------------
  # * Play SE When Using Item
  #--------------------------------------------------------------------------
  def play_se_for_item
    Sound.play_use_skill
  end
  #--------------------------------------------------------------------------
  # * Use Item
  #--------------------------------------------------------------------------
  def use_item
    super
    @status_window.refresh
    @item_window.refresh
  end
  #--------------------------------------------------------------------------
  # * Change Actors
  #--------------------------------------------------------------------------
  def on_actor_change
    @command_window.actor = @actor
    @status_window.actor = @actor
    @item_window.actor = @actor
    @command_window.activate
  end
end
 
class Window_Pierre_Niveau < Window_Base
  def initialize(x, y, scene)
    super(420, 180, 220, 150)
    self.opacity = 0
    self.back_opacity = 0
    self.contents.font.size = 20
    self.contents.font.name = "Karate"
    self.contents.font.color = normal_color
    @scene = scene
    update
    refresh
  end
  def refresh
    self.contents.clear
    @scene.lvl_actuel = $game_variables[60]
    @scene.util_actuel = $game_variables[58]
    self.contents.draw_text(25, 0, 100, contents.height, "Nv :           " + @scene.lvl_actuel.to_s, 2)
    self.contents.draw_text(-50, 20, 200, contents.height, "   Utilisations :       " + @scene.util_actuel.to_s, 2)
  end
  def update
    super
    if $game_variables[60] != @scene.lvl_actuel
      refresh
    end
    if $game_variables[58] != @scene.util_actuel
      refresh
    end
  end
end



j'ai testé en changeant mon update_pierre_system, j'ai remplacé

Portion de code : Tout sélectionner

1
2
3
      @lvl_actuel = $game_variables[60]
      @util_actuel = $game_variables[58]
 



par

Portion de code : Tout sélectionner

1
2
3
      @scene.lvl_actuel = $game_variables[60]
      @scene.util_actuel = $game_variables[58]
 



pour chaque variable et cette fois j'ai un message d'erreur:

undefined method'lvl_actuel=' for nil:NilClass

Edit : Je viens de penser est ce que le souci ne viendrait pas du refresh de ma fenêtre qui rend @scene.lvl_actuel à la variable [58] et @scene.util_actuel à la variable [60] ? Parce que du coup à chaque refresh ça les rend égales à elles mêmes en fait non?

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Mack - posté le 15/11/2012 à 17:26:24 (2027 messages postés)

❤ 0

nil:NilClass => La classe est égale à nil, donc elle n'existe pas.
Et c'est tout à fait normal, puisque dans ta Scene tu ne définie nulle part à quoi ça pourrait correspondre.



J'ai la flemme de faire des tests approfondi, mais à vue d'oeil ça à l'air d'être correct.
Donc comment tu vérifies tes variables ?

( Questions toute conne, tu sais que les évents marchent pas dans les menus ? )

( Je prend note de tout les commentaires, même si je n'y répond pas )


arttroy - posté le 15/11/2012 à 17:33:02 (2394 messages postés)

❤ 0

Just working

réponse conne : non, j'avais pas fait le rapprochement...

Je vérifie mes variables avec F9 IG. Donc admettons que j'utilise "soin" (du menu) ma variable "util_pierre_eau" ([59]) augmente bien de 1 mais l'affichage reste à 0 lorsque je retourne dans le menu pour vérifier...

Je viens de vérifier si la valeur de ma variable restait bien à 1 si je retournait dans le menu et c'est le cas.

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Mack - posté le 15/11/2012 à 17:37:03 (2027 messages postés)

❤ 0

Ah, alors là c'est pas normal.

( Pour tester dans une scene, pense à utilisé p ta_variable, c'est bien plus pratique pour tester )

Pour ton Edit, si mais ça devrait en même temps actualisé ta page, et t'afficher ce que tu veux.

En faite, plus je regarde ce que t'as fait, moins je comprend ce que tu veux faire x).

( Je prend note de tout les commentaires, même si je n'y répond pas )


arttroy - posté le 15/11/2012 à 17:58:07 (2394 messages postés)

❤ 0

Just working

En gros, dans mon jeu j'aimerais pouvoir équiper le héros avec des pierres magiques.
Si la pierre est équipée, le héros à accès aux sorts de cette catégorie (eau, feu, terre, vent, foudre).
Ces deux choses, tu m'as déjà aidé à les régler.

Les dites pierres auront un niveau (1 de base donc accès aux sorts de lvl1) et à chaque utilisation d'un sort ça augmente une variable utilisation de 1. A un certain nombre d'utilisations la pierre atteint le niveau suivant.

Ça c'est bon aussi j'ai fait des test si le nombre d'utilisation requit est atteint, la pierre passe au niveau 2 (d'ailleurs j'avais utilisé les variables de la pierre eau et ça fonctionnait pour l'affichage mais pas lorsque je changeais la position de l'index/du curseur...). Je viens de revérifier, ça fonctionne en changeant les variables dans la fenêtre et en prenant celle de la pierre eau, la variable utilisation est bien affichée quand je reviens dans le menu.

On en vient donc au point qui coince :

Mon Scene_Skill possède un index (lié au type de compétences de la BDD que j'ai créé cités plus haut).
Lorsque j'appuie sur droite mon index passe donc de "pierre du feu" à "pierre de l'eau" à....
Ce qu'il faudrait c'est que les variables "@lvl_actuel" et "@util_actuel" s'actualisent en conséquence comme ce que j'ai fait dans mon "update_pierre_system".

Voilà j'espère que c'est plus clair.

https://www.youtube.com/watch?v=fxiV9nLp7-A&feature=related

A 4mn25... L'effet de l'apprentissage des scripts sur moi...

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Mack - posté le 15/11/2012 à 18:12:11 (2027 messages postés)

❤ 0

Ouais, je crois avoir compris.
Dans la def start de ta scene, vires ça :

Portion de code : Tout sélectionner

1
2
3
4
5
if Input.trigger?(:RIGHT)
      @command_window.index += 1
    elsif Input.trigger?(:LEFT)
      @command_window.index -= 1
    end


Ça te sers à rien ici.


Perso, j'te conseil simplement d’appeler la def refresh en boucle.
C'pas très propre, mais au moins ça devrait marcher.

( Et si ça marche pas, c'est que t'as foiré autre part. )

( Je prend note de tout les commentaires, même si je n'y répond pas )


arttroy - posté le 15/11/2012 à 18:15:18 (2394 messages postés)

❤ 0

Just working

J'ai viré ce que tu m'as dit, et pour l'appel en boucle de la def refresh??

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Mack - posté le 15/11/2012 à 18:17:19 (2027 messages postés)

❤ 0

Bah, dans la def update de ta scene tu mets :

Portion de code : Tout sélectionner

1
@niveau_window.refresh


En dessous / a la place de :

Portion de code : Tout sélectionner

1
@niveau_window.update



( Je prend note de tout les commentaires, même si je n'y répond pas )


arttroy - posté le 15/11/2012 à 18:28:49 (2394 messages postés)

❤ 0

Just working

Non c'est pas ça... Je continue de chercher...

Edit : Alors j'ai fait ça dans l'update de ma fenêtre:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
  def update
    super
    if $game_variables[61] != @lvl_actuel
      p @lvl_actuel
      refresh
      p @lvl_actuel
    end
    if $game_variables[59] != @util_actuel
      p @util_actuel
      refresh
      p @util_actuel
    end
  end
 



Alors si aucune pierre n'est équipée, ça me renvoie :
Nil
0

Si j'ai les pierres équipées, ça renvoie :

Nil
1

Mais une seule fois lorsque je rentre dans le menu, si je suis dans la partie skill et que je change l'index de position rien ne se passe.

M.... Effectivement c'est super pratique... En appliquant la même chose dans mon "update_pierre_system", ça me détecte bien les bonnes valeurs si je change l'index de position... BWTF??!!

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Mack - posté le 15/11/2012 à 18:41:53 (2027 messages postés)

❤ 0

Encore une fois c'est loin d'être normal.
Mets des p @scene.lvl_actuel dans la def refresh de ta scene pour voir ce qu'il se passe.


Sinon fait peter une démo par MP, j'essaierais de voir directement dans ton jeu, parce que là, j'suis à peu près sur que les scripts sont corrects.

( Je prend note de tout les commentaires, même si je n'y répond pas )


arttroy - posté le 15/11/2012 à 18:48:52 (2394 messages postés)

❤ 0

Just working

En fait le souci c'est l'affichage en lui même, la valeur de la variable change bien mais pas la valeur de l'affichage... Donc en fait ça me laisse constamment les variables [59] et [61] affichées...

Dis moi comment on fait pour la démo et je te l'envoie (ça passe avec 2shared ?)

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Mack - posté le 15/11/2012 à 18:51:57 (2027 messages postés)

❤ 0

Fichier => Compiler le jeu => Décoche toute les cases.

Après tu vas sur un site d'upload, perso, j'utilises Mediafire, et après tu m'envoies le lien qu'il te donne.

( Je prend note de tout les commentaires, même si je n'y répond pas )

Aller à la page 1 2

Index du forum > Entraide > [RESOLU] [Rmvx Ace][Script] Où dois-je créer ma fenêtre ?


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 | Ressources | 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