Aller à la page 1 2
arttroy -
posté le 14/09/2012 à 14:07:23 (2394 messages postés)
| 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 :
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 :
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 (2160 messages postés)
- | | 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)
| Just working | En gros l'idée c'est de faire ça :
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 (2160 messages postés)
- | | 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)
| 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 .
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Mack -
posté le 14/11/2012 à 19:29:23 (2313 messages postés)
- | | 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 (2313 messages postés)
- | | 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)
| 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 (2313 messages postés)
- | | 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 :
|
( 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)
| 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 (2313 messages postés)
- | | 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)
| 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 (2313 messages postés)
- | |
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)
| 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.
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é
1
2
3
| @lvl_actuel = $game_variables[60]
@util_actuel = $game_variables[58]
|
par
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 (2313 messages postés)
- | | 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)
| 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 (2313 messages postés)
- | | 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)
| 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.
http://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 (2313 messages postés)
- | | Ouais, je crois avoir compris.
Dans la def start de ta scene, vires ça :
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)
| 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 (2313 messages postés)
- | | Bah, dans la def update de ta scene tu mets :
En dessous / a la place de :
|
( 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)
| Just working | Non c'est pas ça... Je continue de chercher...
Edit : Alors j'ai fait ça dans l'update de ma fenêtre:
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 (2313 messages postés)
- | | 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)
| 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 (2313 messages postés)
- | | 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 2Index du forum > Entraide > [RESOLU] [Rmvx Ace][Script] Où dois-je créer ma fenêtre ?
|