Bienvenue visiteur !
|
Statistiques
Liste des membres
Contact
Mentions légales
242 connectés actuellement
30732055 visiteurs depuis l'ouverture
2033 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
Nérylis -
posté le 17/02/2016 à 22:54:30 (149 messages postés)
| | Domaine concerné: Script
Logiciel utilisé: RPG Maker VX Ace
Coucou,
J'ai un petit problème d'interface sur ma démo. Il s'agit de l'interface qui permet de lire les pré-requis nécessaires au port des équipements. Il s'agit du script de Fomar intitulé Equipment Requirements présent dans ma démo que voici : http://www.mediafire.com/download/j0952abf5gaibtb/Ace+menu3.exe
Principe : quand on va dans le menu Equipement avec un personnage, lorsqu'on sélectionne les équipements disponibles, si on appuie sur la touche Ctrl, on accède à une interface sur laquelle on peut voir les conditions pour porter l'équipement en question (ça peut être un niveau minimum par exemple).
Voici ce que j'aimerais changer :
- Est-ce qu'il serait possible que le cadre de l'interface actuelle (encadré en bleu sur ma capture ci-dessous) se retrouve centrée en bas à gauche (suivant le cadre jaune) ?
- Est-ce qu'il serait possible que lorsqu'on switch sur cette interface, il n'y ait pas de transparence avec les autres fenêtres et qu'on puisse conserver le background de la même façon que pour l'interface des sets ?
- Est-ce qu'il serait possible, quand on est sur cette interface, de pouvoir revenir en arrière avec la touche dédiée (ici Ctrl) mais aussi avec la touche Annuler, de la même façon que pour l'interface des sets ?
Capture :
http://www.servimg.com/view/11188066/114
L'interface des sets que je cite comme référence est celle que l'on peut accéder en sélectionnant les équipements orange dans ma démo et en appuyant sur la touche D.
Voilà, si vous avez des questions, n'hésitez pas à me demander.
|
arttroy -
posté le 18/02/2016 à 15:32:11 (2394 messages postés)
| Just working | Ok je vois ce que tu veux dire... Ca devrait pas me poser de problèmes ça ^^ C'est juste une histoire d'effacement/affichage de fenêtre et non de transparence pour le second truc que tu veux.
Je te fais ça ce soir en rentrant du taf.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 18/02/2016 à 19:58:16 (149 messages postés)
| | Oki ça marche.
|
arttroy -
posté le 18/02/2016 à 22:40:21 (2394 messages postés)
| Just working |
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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
| =begin
Equipment Requirements
by Fomar0153
modified by Zouzaka
Version 1.3
----------------------
Notes
----------------------
Adds a level requirement to equipment.
----------------------
Instructions
----------------------
Notetag the weapons/armors like so:
<levelreq x>
<mhpreq x>
<mmpreq x>
<atkreq x>
<defreq x>
<matreq x>
<mdfreq x>
<agireq x>
<lukreq x>
<switchreq x>
<variablereq x,y>
<wepreq x>
<armreq x>
----------------------
Change Log
----------------------
1.0 -> 1.1 Added stat requirements
Changed script name from Equipment Level Requirements
to just Equipment Requirements
1.1 -> 1.2 Added switch and other equipment requirements
1.2 -> 1.3 Ajout D'une Window qui affiche les Conditions requises
Réduit le script de base de plus de 50 lignes
1.3 -> 1.4 Optimisation et resolution de bug
----------------------
Known bugs
----------------------
None
=end
#--------------------------------------------------------------------------
# ● If set to true then it compares the requirement with the actor's base
# stat rather than their current.
#--------------------------------------------------------------------------
EQUIPREQ_USE_BASE_STAT = true
#--------------------------------------------------------------------------
# ● Vocab for switch's
# every switch_id in a different line
#--------------------------------------------------------------------------
Switch_Vocab = {
# Switch_ID => "Vocab",
#2 => "Visiter la Campagne",
}
#--------------------------------------------------------------------------
# ● Vocab for variables
# every variable_id in a different line
#--------------------------------------------------------------------------
Variable_Vocab = {
# Variable_ID => "Vocab",
#2 => "Nombre de pierres à casser",
}
class Game_Actor
def optimize_equipments
clear_equipments
equip_slots.size.times do |i|
next if !equip_change_ok?(i)
items = $game_party.equip_items.select do |item|
item.etype_id == equip_slots[i] &&
equippable?(item) && item.performance >= 0 && reqstate?(item)
end
change_equip(i, items.max_by {|item| item.performance })
end
end
def reqstate?(item)
unless item == nil
return false if level < item.levelreq
return false if reqstat(0) < item.mhpreq
return false if reqstat(1) < item.mmpreq
return false if reqstat(2) < item.atkreq
return false if reqstat(3) < item.defreq
return false if reqstat(4) < item.matreq
return false if reqstat(5) < item.mdfreq
return false if reqstat(6) < item.agireq
return false if reqstat(7) < item.lukreq
if item.switchreq > 0
return false unless $game_switches[item.switchreq]
end
if item.variablereq != 0
return false unless $game_variables[item.variablereq[0]] < item.variablereq[1]
end
if item.wepreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Weapon
end
return false unless e.include?(item.wepreq)
end
if item.armreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Armor
end
return false unless e.include?(item.armreq)
end
end
return true
end
#--------------------------------------------------------------------------
# ● New Method
#--------------------------------------------------------------------------
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? param_base(id) : param(id)
end
end
class Window_EquipItem
#--------------------------------------------------------------------------
# ● Check the requirements
#--------------------------------------------------------------------------
def enable?(item)
return @actor.reqstate?(item)
end
end
module RPG
#--------------------------------------------------------------------------
# ● Equip Item is inherited by both Weapon and Armor
#--------------------------------------------------------------------------
class EquipItem
def variablereq
self.note =~ /<variablereq (.*),(.*)>/i ? [$1.to_i,$2.to_i] : 0
end
def levelreq
self.note =~ /<levelreq (.*)>/i ? $1.to_i : 0
end
def mhpreq
self.note =~ /<mhpreq (.*)>/i ? $1.to_i : 0
end
def mmpreq
self.note =~ /<mmpreq (.*)>/i ? $1.to_i : 0
end
def atkreq
self.note =~ /<atkreq (.*)>/i ? $1.to_i : 0
end
def defreq
self.note =~ /<defreq (.*)>/i ? $1.to_i : 0
end
def matreq
self.note =~ /<matreq (.*)>/i ? $1.to_i : 0
end
def mdfreq
self.note =~ /<mdfreq (.*)>/i ? $1.to_i : 0
end
def agireq
self.note =~ /<agireq (.*)>/i ? $1.to_i : 0
end
def lukreq
self.note =~ /<lukreq (.*)>/i ? $1.to_i : 0
end
def switchreq
self.note =~ /<switchreq (.*)>/i ? $1.to_i : 0
end
def wepreq
self.note =~ /<wepreq (.*)>/i ? $1.to_i : 0
end
def armreq
self.note =~ /<armreq (.*)>/i ? $1.to_i : 0
end
end
end
class Window_Requirement < Window_Base
def initialize(x, y)
super(x, y, window_width, window_height)#(x, y, Graphics.width/2, Graphics.height)
self.openness = 0
self.z = 250
@item = nil
@actor = nil
refresh
end
def window_width
return 326
end
def window_height
return 224
end
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? @actor.param_base(id) : @actor.param(id)
end
def item ; return @item ; end
def item=(item)
@item = item
refresh
end
def actor ; return @actor ; end
def actor=(actor)
@actor = actor
refresh
end
def update
super
refresh
end
def refresh
contents.clear
@req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
@vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
@req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
@t = 2
change_color(normal_color)
draw_text(contents.width/8, 0, contents.width, line_height, "Conditions requises")
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
@t += 1
end
end
change_color(normal_color)
if item != nil && item.wepreq != 0 && actor != nil
e = []
for equip in @actor.equips
if equip.class == RPG::Weapon
e.push(equip.id)
end
end
change_color(text_color(2)) unless e.include?(item.wepreq)
draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
@t += 1
end
change_color(normal_color)
if item != nil && item.armreq != 0 && actor != nil
e = []
for equip in @actor.equips
e.push(equip.id) if equip.class == RPG::Armor
end
change_color(text_color(2)) unless e.include?(item.armreq)
draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
@t += 1
end
if item && item.switchreq != 0
$game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
@t += 1
end
if item && item.variablereq != 0
$game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
end
end
end
#~ #==============================================================================
#~ # ** Scene_Equip
#~ #------------------------------------------------------------------------------
#~ # This class performs the equipment screen processing.
#~ #==============================================================================
class Scene_Equip
alias :old_start :start
def start
old_start
@window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
end
alias :old_update :update
def update
old_update
if Input.trigger?(:CTRL)
if @window_req.openness == 0 && @item_window.active && @item_window.item != nil
@window_req.item=@item_window.item
@window_req.actor= @actor
@background = Sprite.new
@background.z = 200
@background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
@window_req.open
@item_window.deactivate
@item_window.visible = false
elsif @window_req.openness == 255
@background.dispose if @background
@window_req.close
@item_window.activate
@item_window.visible = true
end
elsif Input.trigger?(:B)
if @window_req.openness == 255
@background.dispose if @background
@window_req.close
@item_window.activate
@item_window.visible = true
end
end
end
end
class Scene_Item < Scene_ItemBase
alias :old_start :start
def start
old_start
@window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
@window_req.width = 544
end
alias :old_update :update
def update
old_update
if Input.trigger?(:CTRL)
if @window_req.openness == 0 && (@item_window.item.class == RPG::Weapon || @item_window.item.class == RPG::Armor)
@window_req.item=@item_window.item
@window_req.actor= @actor
@background = Sprite.new
@background.z = 200
@background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
@window_req.open
@item_window.deactivate
@item_window.visible = false
elsif @window_req.openness == 255
@background.dispose if @background
@window_req.close
@item_window.activate
@item_window.visible = true
end
elsif Input.trigger?(:B)
if @window_req.openness == 255
@background.dispose if @background
@window_req.close
@item_window.activate
@item_window.visible = true
end
end
end
end |
Et voilà mission accomplie
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 19/02/2016 à 15:50:44 (149 messages postés)
| | Je viens de tester, c'est beaucoup mieux qu'avant. J'ai quelques remarques :
- Est-ce qu'il serait possible d'avoir le son du curseur lorsqu'on appuie sur la touche pour accéder et quitter cette interface ?
- Est-ce qu'il y a une méthode pour centrer "Conditions requises" qui apparait en haut de l'interface ?
- Je ne sais pas si ça te bloque aussi dans ce cas mais lorsqu'on met un certain nombre de conditions, ça sort de la fenêtre. Il faudrait faire un menu déroulant avec les fameuses petites flèches, dans le cas où on a beaucoup de conditions.
Par rapport au fait de pouvoir accéder à cette interface depuis le menu Objets :
- Est-ce qu'il serait possible que la couleur d'écriture soit normale (blanche) pour toutes les conditions ? Parce que dans le menu Objets, on ne fait pas référence à un personnage particulier, donc on ne peut pas dire si les conditions sont vérifiées ou non par rapport à un personnage. C'est plutôt à titre d'information, il faudrait donc une couleur d'écriture normale dans ce cas-là. L'interface des sets d'équipement marche comme ça.
|
arttroy -
posté le 20/02/2016 à 12:12:09 (2394 messages postés)
| Just working | 1 merci non avant les remarques ? un merci ne coute rien et produit beaucoup ne l'oublie pas ^^.
le son du curseur pas de soucis rajoutes juste
sous les ligne
1
2
|
if @window_req.openness == |
et voilà ce sera réglé (tu en as 6 a rajouter dans le Scene_Equip et le Scene_Item).
Pour l'histoire de couleur de texte regardes ton script à partir de la ligne 216 et modifie tous les endroits où il y a
par
Pour le reste j'y arrive pas désolé.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Sou -
posté le 20/02/2016 à 12:23:03 (396 messages postés)
| On a jamais assez de munitions | Citation: 1 merci non avant les remarques ? un merci ne coute rien et produit beaucoup ne l'oublie pas ^^. |
MERCI ! MERCI Arttroy !
Je me retiens depuis trop longtemps de le lui dire à cet homme du UP permanent!
(oui je passais juste pour exprimer mon soulagement)
|
Je suis Sou et c'est tout. |
Nérylis -
posté le 20/02/2016 à 14:11:35 (149 messages postés)
| | Oui, merci pour ton aide (j'ai l'habitude de le dire à la fin quand tout est ok mais ne t'en fais pas, je n'oublie jamais de remercier ceux et celles qui m'aident).^^
C'est bon pour le son du curseur.
Un truc auquel je n'avais pas fais attention, c'est normal s'il y a un effet de transition quand j'ouvre et ferme l'interface ? Ça ne le fait pas sur les autres interfaces.
Pour les couleurs, j'avais bien repéré le text_color(2). Le souci, c'est qu'il y a deux cas à différencier. Le premier, c'est quand on va dans le menu Equiper où là on doit bien voir les conditions requises atteintes en blanc et les non atteintes en rouge. Le second, c'est quand on va dans le menu Objets où là on doit voir toutes les conditions en blanc car ce menu n'est pas rattaché à un personnage particulier. or là actuellement, la partie du script qui gère les couleurs est commun aux deux cas. Il faudrait séparer mais je ne sais pas comment faire.
|
arttroy -
posté le 21/02/2016 à 13:31:01 (2394 messages postés)
| Just working | Ah ok donc il va falloir dupliquer la Window_Requirements et la modifier à convenance pour faire ce que tu veux (en gros on va créer une Window_Requirements_Equip et une Window_Requirements_Item)
Pour ta transition c'est assez simple, c'est dû à cette ligne :
self.openness = 0
et à celle là (elle y est plusieurs fois ) :
@window_req.close
L'ennui c'est qu'il se sert de ça pour détecter l'ouverture de la fenêtre
if @window_req.openness == 0
ou
if @window_req.openness == 255
Donc va falloir modifier ça aussi et honnêtement aujourd'hui j'ai la flemme ('fin disons que la soirée d'hier m'a pas super réussi j'ai mal la tête ^^).
Je te ferais ça demain.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 21/02/2016 à 13:39:19 (149 messages postés)
| | Ok, ça marche. Merci bien.
Edit : Ne t'embête pas, il va y avoir un problème de taille d'interface depuis le menu Objets. Donc, je ne vais pas intégrer cette possibilité.
Pour le menu défilant et l'histoire de la transition, je vais demander à une personne qui a réussi à satisfaire ma demande sur l'autre topic.
Merci en tout cas pour ton aide.
|
arttroy -
posté le 24/02/2016 à 15:08:06 (2394 messages postés)
| Just working | Il a fait ça comment pour les fenêtres ?? non parce que je suis curieux de savoir ^^
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 24/02/2016 à 18:06:04 (149 messages postés)
| | Je te mets le script concerné ci-dessous. Si tu veux essayer le même principe pour voir si tu arrives à un résultat similaire sur le script de ce topic, tu peux mais la personne doit me faire la modif aujourd'hui.
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
| #Modif class Scene_Equip
class Scene_Equip < Scene_MenuBase
#Modification de l'update
alias update_interface update
def update
update_interface
if Input.trigger?(:SHIFT)
return if !@item_window.active && !@slot_window.active && @status_window.menu == 0
if @item_window.item != nil && !@slot_window.active && @item_window.visible
if @status_window.menu == 0
Sound.play_cursor
else
Sound.play_cancel
end
switch_info
end
if @slot_window.visible && @slot_window.item != nil
if @status_window.menu == 0
Sound.play_cursor
else
Sound.play_cancel
end
switch_info
end
elsif Input.trigger?(:UP) && @status_window.menu == 1
@status_window.upStat
#@status_window.refresh(@status_window.item_actuel)
elsif Input.trigger?(:DOWN) && @status_window.menu == 1
@status_window.downStat
#@status_window.refresh(@status_window.item_actuel)
elsif Input.trigger?(:B) && @status_window.menu == 1
Sound.play_cancel
switch_info
end
end
#Switch vers le menu info
def switch_info
if @status_window.menu == 1
@status_window.menu = 0
@status_window.ligne_actuel = 0
@item_window.activate if @item_window.visible
@slot_window.activate if @slot_window.visible
item = nil
else
@status_window.menu = 1
if @item_window.visible
@item_window.deactivate
item = @item_window.item
elsif @slot_window.visible
@slot_window.deactivate
item = @actor.equips[@slot_window.index]
end
end
@status_window.recreate_contents(item)
end
end
#Modif Window_EquipStatus
class Window_EquipStatus < Window_Base
attr_accessor :menu #Ajout de la variable menu
attr_reader :ligne_actuel #Ajout de la variable ligne actuel
#Modification Initialisation
alias initialize_interface initialize
def initialize(*args)
@menu = 0
@ligne_actuel = 0
initialize_interface(*args)
end
#Modification de la ligne actuel
def ligne_actuel=(value)
@ligne_actuel = [0,[value,@max_ligne-8].min].max
end
def recreate_contents(item)
self.oy = 0
if @menu == 0
self.padding = 12
create_contents
else
self.padding = 16
end
refresh(item)
end
#Modifiication du refresh
alias refresh_interface refresh
def refresh(item = nil)
if @menu == 0
refresh_interface
else
draw_interface(item)
end
end
#Récuperation de l'item_actuel
def item_actuel
return @item
end
#Creation de la fenetre d'info
def draw_interface(item)
if item == nil
create_contents
draw_text_ex(0, 0, "")
@max_ligne = 0
@item = nil
else
# compter le nombre de ligne afin de créer le contennts de bonne taille
@max_ligne = 6
for i in 0..7
if item.instance_mult_lvl_bonus(i) != 1 || item.instance_static_lvl_bonus(i) != 0
@max_ligne += 2
end
end
self.contents = Bitmap.new(width - self.padding * 2, @max_ligne * 24)
@item = item
#~ draw_icon(item.icon_index , 0, -@ligne_actuel*24)
#~ contents.font.color = item.rarity_colour
#~ contents.draw_text(24, -88-@ligne_actuel*24, contents.width, contents.height, item.name)
contents.font.color = system_color
contents.draw_text(0, 0, contents.width, 24, "Niveau :")
contents.font.color = normal_color
if item.level != item.max_level
contents.draw_text(0, 24, contents.width, 24, item.level.to_s + " / " + item.max_level.to_s)
else
contents.draw_text(0, 24, contents.width, 24, "-- Max --")
end
contents.font.color = system_color
contents.draw_text(0, 48, contents.width, 24, "Expérience :")
contents.font.color = normal_color
if item.level != item.max_level
contents.draw_text(0, 72, contents.width, 24, item.exp.to_s)
contents.font.color = normal_color
contents.draw_text(0, 96, contents.width, 24, item.exp_to_level.to_s)
else
contents.draw_text(0, 72, contents.width, 24, "-- Max --")
end
contents.font.color = system_color
contents.draw_text(0, 120, contents.width, 24, "Prochains bonus :")
j = 0
for i in 0..7
if item.instance_mult_lvl_bonus(i) != 1 || item.instance_static_lvl_bonus(i) != 0
next_value = item.params[i]*item.instance_mult_lvl_bonus(i)+item.instance_static_lvl_bonus(i)
contents.font.color = normal_color
if item.level != item.max_level
contents.draw_text(0 , 144 + (48 * j), contents.width, 24, Vocab.param(i))
contents.font.color = normal_color
contents.draw_text(0 , 168 + (48 * j), contents.width, 24, item.params[i].to_s+" passe à "+next_value.floor.to_s)
j += 1
end
end
end
end
end
def downStat
dif = (@max_ligne * 24) - (height - self.padding * 2)
save_oy = self.oy
if self.oy + 24 > dif
self.oy = [dif,0].max
else
self.oy += 24
end
if save_oy != self.oy
Sound.play_cursor
end
end
def upStat
save_oy = self.oy
if self.oy - 24 < 0
self.oy = 0
else
self.oy -= 24
end
if save_oy != self.oy
Sound.play_cursor
end
end
end |
|
arttroy -
posté le 25/02/2016 à 14:58:59 (2394 messages postés)
| Just working | Ah ok je vois maintenant, c'est exactement l'idée que j'avais au début et que je ne parvenait pas à faire, faut que je revoie cet aspect des fenêtres. Merci d'avoir pris le temps de remettre le script ici.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 25/02/2016 à 18:03:37 (149 messages postés)
| | La personne en question ne m'a pas fait la modification pour le script du topic. Je veux bien, si tu as du temps, que tu essaies de la faire. En même temps, ça te permettra de voir si tu arrives à reprendre l'idée pour créer l'interface de façon propre.
Sur le script que je te remets ci-dessous, j'ai retiré la partie qui permettait de visualiser l'interface depuis le menu Objets pour les raisons évoquées précédemment. Donc, du coup, il n'y a que à partir du menu Equipement qu'on a accès à cette interface lorsqu'on change d'équipement en appuyant sur la touche Ctrl. Les points à corriger :
- Création du menu déroulant lorsque la liste des pré-requis est longue au point de sortir de la fenêtre.
- Enlever la transition dûe au self.openness pour avoir quelque chose d'instantané.
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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
| =begin
Equipment Requirements
by Fomar0153
modified by Zouzaka
Version 1.3
----------------------
Notes
----------------------
Adds a level requirement to equipment.
----------------------
Instructions
----------------------
Notetag the weapons/armors like so:
<levelreq x>
<mhpreq x>
<mmpreq x>
<atkreq x>
<defreq x>
<matreq x>
<mdfreq x>
<agireq x>
<lukreq x>
<switchreq x>
<variablereq x,y>
<wepreq x>
<armreq x>
----------------------
Change Log
----------------------
1.0 -> 1.1 Added stat requirements
Changed script name from Equipment Level Requirements
to just Equipment Requirements
1.1 -> 1.2 Added switch and other equipment requirements
1.2 -> 1.3 Ajout D'une Window qui affiche les Conditions requises
Réduit le script de base de plus de 50 lignes
1.3 -> 1.4 Optimisation et resolution de bug
----------------------
Known bugs
----------------------
None
=end
#--------------------------------------------------------------------------
# ● If set to true then it compares the requirement with the actor's base
# stat rather than their current.
#--------------------------------------------------------------------------
EQUIPREQ_USE_BASE_STAT = true
#--------------------------------------------------------------------------
# ● Vocab for switch's
# every switch_id in a different line
#--------------------------------------------------------------------------
Switch_Vocab = {
# Switch_ID => "Vocab",
#2 => "Visiter la Campagne",
}
#--------------------------------------------------------------------------
# ● Vocab for variables
# every variable_id in a different line
#--------------------------------------------------------------------------
Variable_Vocab = {
# Variable_ID => "Vocab",
#2 => "Nombre de pierres à casser",
}
class Game_Actor
def optimize_equipments
clear_equipments
equip_slots.size.times do |i|
next if !equip_change_ok?(i)
items = $game_party.equip_items.select do |item|
item.etype_id == equip_slots[i] &&
equippable?(item) && item.performance >= 0 && reqstate?(item)
end
change_equip(i, items.max_by {|item| item.performance })
end
end
def reqstate?(item)
unless item == nil
return false if level < item.levelreq
return false if reqstat(0) < item.mhpreq
return false if reqstat(1) < item.mmpreq
return false if reqstat(2) < item.atkreq
return false if reqstat(3) < item.defreq
return false if reqstat(4) < item.matreq
return false if reqstat(5) < item.mdfreq
return false if reqstat(6) < item.agireq
return false if reqstat(7) < item.lukreq
if item.switchreq > 0
return false unless $game_switches[item.switchreq]
end
if item.variablereq != 0
return false unless $game_variables[item.variablereq[0]] < item.variablereq[1]
end
if item.wepreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Weapon
end
return false unless e.include?(item.wepreq)
end
if item.armreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Armor
end
return false unless e.include?(item.armreq)
end
end
return true
end
#--------------------------------------------------------------------------
# ● New Method
#--------------------------------------------------------------------------
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? param_base(id) : param(id)
end
end
class Window_EquipItem
#--------------------------------------------------------------------------
# ● Check the requirements
#--------------------------------------------------------------------------
def enable?(item)
return @actor.reqstate?(item)
end
end
module RPG
#--------------------------------------------------------------------------
# ● Equip Item is inherited by both Weapon and Armor
#--------------------------------------------------------------------------
class EquipItem
def variablereq
self.note =~ /<variablereq (.*),(.*)>/i ? [$1.to_i,$2.to_i] : 0
end
def levelreq
self.note =~ /<levelreq (.*)>/i ? $1.to_i : 0
end
def mhpreq
self.note =~ /<mhpreq (.*)>/i ? $1.to_i : 0
end
def mmpreq
self.note =~ /<mmpreq (.*)>/i ? $1.to_i : 0
end
def atkreq
self.note =~ /<atkreq (.*)>/i ? $1.to_i : 0
end
def defreq
self.note =~ /<defreq (.*)>/i ? $1.to_i : 0
end
def matreq
self.note =~ /<matreq (.*)>/i ? $1.to_i : 0
end
def mdfreq
self.note =~ /<mdfreq (.*)>/i ? $1.to_i : 0
end
def agireq
self.note =~ /<agireq (.*)>/i ? $1.to_i : 0
end
def lukreq
self.note =~ /<lukreq (.*)>/i ? $1.to_i : 0
end
def switchreq
self.note =~ /<switchreq (.*)>/i ? $1.to_i : 0
end
def wepreq
self.note =~ /<wepreq (.*)>/i ? $1.to_i : 0
end
def armreq
self.note =~ /<armreq (.*)>/i ? $1.to_i : 0
end
end
end
class Window_Requirement < Window_Base
def initialize(x, y)
super(x, y, window_width, window_height)#(x, y, Graphics.width/2, Graphics.height)
self.openness = 0
self.z = 250
@item = nil
@actor = nil
refresh
end
def window_width
return 326
end
def window_height
return 224
end
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? @actor.param_base(id) : @actor.param(id)
end
def item ; return @item ; end
def item=(item)
@item = item
refresh
end
def actor ; return @actor ; end
def actor=(actor)
@actor = actor
refresh
end
def update
super
refresh
end
def refresh
contents.clear
@req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
@vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
@req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
@t = 2
change_color(normal_color)
draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
@t += 1
end
end
change_color(normal_color)
if item != nil && item.wepreq != 0 && actor != nil
e = []
for equip in @actor.equips
if equip.class == RPG::Weapon
e.push(equip.id)
end
end
change_color(text_color(2)) unless e.include?(item.wepreq)
draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
@t += 1
end
change_color(normal_color)
if item != nil && item.armreq != 0 && actor != nil
e = []
for equip in @actor.equips
e.push(equip.id) if equip.class == RPG::Armor
end
change_color(text_color(2)) unless e.include?(item.armreq)
draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
@t += 1
end
if item && item.switchreq != 0
$game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
@t += 1
end
if item && item.variablereq != 0
$game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
end
end
end
#~ #==============================================================================
#~ # ** Scene_Equip
#~ #------------------------------------------------------------------------------
#~ # This class performs the equipment screen processing.
#~ #==============================================================================
class Scene_Equip
alias :old_start :start
def start
old_start
@window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
end
alias :old_update :update
def update
old_update
if Input.trigger?(:CTRL)
if @window_req.openness == 0 && @item_window.active && @item_window.item != nil
Sound.play_cursor
@window_req.item=@item_window.item
@window_req.actor= @actor
@background = Sprite.new
@background.z = 200
@background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
@window_req.open
@item_window.deactivate
@item_window.visible = false
elsif @window_req.openness == 255
Sound.play_cancel
@background.dispose if @background
@window_req.close
@item_window.activate
@item_window.visible = true
end
elsif Input.trigger?(:B)
if @window_req.openness == 255
Sound.play_cancel
@background.dispose if @background
@window_req.close
@item_window.activate
@item_window.visible = true
end
end
end
end |
|
arttroy -
posté le 26/02/2016 à 15:03:54 (2394 messages postés)
| Just working | Ok je vais voir ce que je peux faire ce soir, cet après midi j'ai lod
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 26/02/2016 à 16:22:24 (149 messages postés)
| | D'ac. J'ai voulu refaire comme pour l'autre interface mais je n'arrive même pas à enlever cette transition.
|
arttroy -
posté le 29/02/2016 à 16:10:34 (2394 messages postés)
| Just working |
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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
| =begin
Equipment Requirements
by Fomar0153
modified by Zouzaka
Version 1.3
----------------------
Notes
----------------------
Adds a level requirement to equipment.
----------------------
Instructions
----------------------
Notetag the weapons/armors like so:
<levelreq x>
<mhpreq x>
<mmpreq x>
<atkreq x>
<defreq x>
<matreq x>
<mdfreq x>
<agireq x>
<lukreq x>
<switchreq x>
<variablereq x,y>
<wepreq x>
<armreq x>
----------------------
Change Log
----------------------
1.0 -> 1.1 Added stat requirements
Changed script name from Equipment Level Requirements
to just Equipment Requirements
1.1 -> 1.2 Added switch and other equipment requirements
1.2 -> 1.3 Ajout D'une Window qui affiche les Conditions requises
Réduit le script de base de plus de 50 lignes
1.3 -> 1.4 Optimisation et resolution de bug
----------------------
Known bugs
----------------------
None
=end
#--------------------------------------------------------------------------
# ● If set to true then it compares the requirement with the actor's base
# stat rather than their current.
#--------------------------------------------------------------------------
EQUIPREQ_USE_BASE_STAT = true
#--------------------------------------------------------------------------
# ● Vocab for switch's
# every switch_id in a different line
#--------------------------------------------------------------------------
Switch_Vocab = {
# Switch_ID => "Vocab",
#2 => "Visiter la Campagne",
}
#--------------------------------------------------------------------------
# ● Vocab for variables
# every variable_id in a different line
#--------------------------------------------------------------------------
Variable_Vocab = {
# Variable_ID => "Vocab",
#2 => "Nombre de pierres à casser",
}
class Game_Actor
def optimize_equipments
clear_equipments
equip_slots.size.times do |i|
next if !equip_change_ok?(i)
items = $game_party.equip_items.select do |item|
item.etype_id == equip_slots[i] &&
equippable?(item) && item.performance >= 0 && reqstate?(item)
end
change_equip(i, items.max_by {|item| item.performance })
end
end
def reqstate?(item)
unless item == nil
return false if level < item.levelreq
return false if reqstat(0) < item.mhpreq
return false if reqstat(1) < item.mmpreq
return false if reqstat(2) < item.atkreq
return false if reqstat(3) < item.defreq
return false if reqstat(4) < item.matreq
return false if reqstat(5) < item.mdfreq
return false if reqstat(6) < item.agireq
return false if reqstat(7) < item.lukreq
if item.switchreq > 0
return false unless $game_switches[item.switchreq]
end
if item.variablereq != 0
return false unless $game_variables[item.variablereq[0]] < item.variablereq[1]
end
if item.wepreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Weapon
end
return false unless e.include?(item.wepreq)
end
if item.armreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Armor
end
return false unless e.include?(item.armreq)
end
end
return true
end
#--------------------------------------------------------------------------
# ● New Method
#--------------------------------------------------------------------------
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? param_base(id) : param(id)
end
end
class Window_EquipItem
#--------------------------------------------------------------------------
# ● Check the requirements
#--------------------------------------------------------------------------
def enable?(item)
return @actor.reqstate?(item)
end
end
module RPG
#--------------------------------------------------------------------------
# ● Equip Item is inherited by both Weapon and Armor
#--------------------------------------------------------------------------
class EquipItem
def variablereq
self.note =~ /<variablereq (.*),(.*)>/i ? [$1.to_i,$2.to_i] : 0
end
def levelreq
self.note =~ /<levelreq (.*)>/i ? $1.to_i : 0
end
def mhpreq
self.note =~ /<mhpreq (.*)>/i ? $1.to_i : 0
end
def mmpreq
self.note =~ /<mmpreq (.*)>/i ? $1.to_i : 0
end
def atkreq
self.note =~ /<atkreq (.*)>/i ? $1.to_i : 0
end
def defreq
self.note =~ /<defreq (.*)>/i ? $1.to_i : 0
end
def matreq
self.note =~ /<matreq (.*)>/i ? $1.to_i : 0
end
def mdfreq
self.note =~ /<mdfreq (.*)>/i ? $1.to_i : 0
end
def agireq
self.note =~ /<agireq (.*)>/i ? $1.to_i : 0
end
def lukreq
self.note =~ /<lukreq (.*)>/i ? $1.to_i : 0
end
def switchreq
self.note =~ /<switchreq (.*)>/i ? $1.to_i : 0
end
def wepreq
self.note =~ /<wepreq (.*)>/i ? $1.to_i : 0
end
def armreq
self.note =~ /<armreq (.*)>/i ? $1.to_i : 0
end
end
end
class Window_Requirement < Window_Base
def initialize(x, y)
super(x, y, window_width, window_height)#(x, y, Graphics.width/2, Graphics.height)
self.visible = false
self.z = 250
@item = nil
@actor = nil
refresh
end
def window_width
return 326
end
def window_height
return 224
end
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? @actor.param_base(id) : @actor.param(id)
end
def item ; return @item ; end
def item=(item)
@item = item
refresh
end
def actor ; return @actor ; end
def actor=(actor)
@actor = actor
refresh
end
def update
super
refresh
end
def refresh
contents.clear
@req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
@vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
@req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
@t = 2
change_color(normal_color)
draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
@t += 1
end
end
change_color(normal_color)
if item != nil && item.wepreq != 0 && actor != nil
e = []
for equip in @actor.equips
if equip.class == RPG::Weapon
e.push(equip.id)
end
end
change_color(text_color(2)) unless e.include?(item.wepreq)
draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
@t += 1
end
change_color(normal_color)
if item != nil && item.armreq != 0 && actor != nil
e = []
for equip in @actor.equips
e.push(equip.id) if equip.class == RPG::Armor
end
change_color(text_color(2)) unless e.include?(item.armreq)
draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
@t += 1
end
if item && item.switchreq != 0
$game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
@t += 1
end
if item && item.variablereq != 0
$game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
end
end
end
#~ #==============================================================================
#~ # ** Scene_Equip
#~ #------------------------------------------------------------------------------
#~ # This class performs the equipment screen processing.
#~ #==============================================================================
class Scene_Equip
alias :old_start :start
def start
old_start
@window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
end
alias :old_update :update
def update
old_update
if Input.trigger?(:CTRL)
if @window_req.visible == false && @item_window.active && @item_window.item != nil
Sound.play_cursor
@window_req.item=@item_window.item
@window_req.actor= @actor
@background = Sprite.new
@background.z = 200
@background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
@window_req.visible = true
@item_window.deactivate
@item_window.visible = false
elsif @window_req.visible == true
Sound.play_cancel
@background.dispose if @background
@window_req.visible = false
@item_window.activate
@item_window.visible = true
end
elsif Input.trigger?(:B)
if @window_req.visible == true
Sound.play_cancel
@background.dispose if @background
@window_req.visible = false
@item_window.activate
@item_window.visible = true
end
end
end
end |
Là déjà tu as plus ton souci d'ouverture/fermeture de fenetre ^^. Pour le reste j'y comprend que dalle... Y'a des fonctions qu'il utilise nulle part dans le script... Il a fait des modifications ailleurs?
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 29/02/2016 à 20:06:06 (149 messages postés)
| | Non, il a juste modifié le script que j'ai mis plus haut. Il me semble que c'est le "DownStat" et le "UpStat" qui gèrent le défilement, non ? On les retrouve lignes 27 et 30, et aussi à la fin.
|
arttroy -
posté le 29/02/2016 à 21:45:30 (2394 messages postés)
| Just working |
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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
| =begin
Equipment Requirements
by Fomar0153
modified by Zouzaka
Version 1.3
----------------------
Notes
----------------------
Adds a level requirement to equipment.
----------------------
Instructions
----------------------
Notetag the weapons/armors like so:
<levelreq x>
<mhpreq x>
<mmpreq x>
<atkreq x>
<defreq x>
<matreq x>
<mdfreq x>
<agireq x>
<lukreq x>
<switchreq x>
<variablereq x,y>
<wepreq x>
<armreq x>
----------------------
Change Log
----------------------
1.0 -> 1.1 Added stat requirements
Changed script name from Equipment Level Requirements
to just Equipment Requirements
1.1 -> 1.2 Added switch and other equipment requirements
1.2 -> 1.3 Ajout D'une Window qui affiche les Conditions requises
Réduit le script de base de plus de 50 lignes
1.3 -> 1.4 Optimisation et resolution de bug
----------------------
Known bugs
----------------------
None
=end
#--------------------------------------------------------------------------
# ● If set to true then it compares the requirement with the actor's base
# stat rather than their current.
#--------------------------------------------------------------------------
EQUIPREQ_USE_BASE_STAT = true
#--------------------------------------------------------------------------
# ● Vocab for switch's
# every switch_id in a different line
#--------------------------------------------------------------------------
Switch_Vocab = {
# Switch_ID => "Vocab",
#2 => "Visiter la Campagne",
}
#--------------------------------------------------------------------------
# ● Vocab for variables
# every variable_id in a different line
#--------------------------------------------------------------------------
Variable_Vocab = {
# Variable_ID => "Vocab",
#2 => "Nombre de pierres à casser",
}
class Game_Actor
def optimize_equipments
clear_equipments
equip_slots.size.times do |i|
next if !equip_change_ok?(i)
items = $game_party.equip_items.select do |item|
item.etype_id == equip_slots[i] &&
equippable?(item) && item.performance >= 0 && reqstate?(item)
end
change_equip(i, items.max_by {|item| item.performance })
end
end
def reqstate?(item)
unless item == nil
return false if level < item.levelreq
return false if reqstat(0) < item.mhpreq
return false if reqstat(1) < item.mmpreq
return false if reqstat(2) < item.atkreq
return false if reqstat(3) < item.defreq
return false if reqstat(4) < item.matreq
return false if reqstat(5) < item.mdfreq
return false if reqstat(6) < item.agireq
return false if reqstat(7) < item.lukreq
if item.switchreq > 0
return false unless $game_switches[item.switchreq]
end
if item.variablereq != 0
return false unless $game_variables[item.variablereq[0]] < item.variablereq[1]
end
if item.wepreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Weapon
end
return false unless e.include?(item.wepreq)
end
if item.armreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Armor
end
return false unless e.include?(item.armreq)
end
end
return true
end
#--------------------------------------------------------------------------
# ● New Method
#--------------------------------------------------------------------------
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? param_base(id) : param(id)
end
end
class Window_EquipItem
#--------------------------------------------------------------------------
# ● Check the requirements
#--------------------------------------------------------------------------
def enable?(item)
return @actor.reqstate?(item)
end
end
module RPG
#--------------------------------------------------------------------------
# ● Equip Item is inherited by both Weapon and Armor
#--------------------------------------------------------------------------
class EquipItem
def variablereq
self.note =~ /<variablereq (.*),(.*)>/i ? [$1.to_i,$2.to_i] : 0
end
def levelreq
self.note =~ /<levelreq (.*)>/i ? $1.to_i : 0
end
def mhpreq
self.note =~ /<mhpreq (.*)>/i ? $1.to_i : 0
end
def mmpreq
self.note =~ /<mmpreq (.*)>/i ? $1.to_i : 0
end
def atkreq
self.note =~ /<atkreq (.*)>/i ? $1.to_i : 0
end
def defreq
self.note =~ /<defreq (.*)>/i ? $1.to_i : 0
end
def matreq
self.note =~ /<matreq (.*)>/i ? $1.to_i : 0
end
def mdfreq
self.note =~ /<mdfreq (.*)>/i ? $1.to_i : 0
end
def agireq
self.note =~ /<agireq (.*)>/i ? $1.to_i : 0
end
def lukreq
self.note =~ /<lukreq (.*)>/i ? $1.to_i : 0
end
def switchreq
self.note =~ /<switchreq (.*)>/i ? $1.to_i : 0
end
def wepreq
self.note =~ /<wepreq (.*)>/i ? $1.to_i : 0
end
def armreq
self.note =~ /<armreq (.*)>/i ? $1.to_i : 0
end
end
end
class Window_Requirement < Window_Base
def initialize(x, y)
super(x, y, window_width, window_height)#(x, y, Graphics.width/2, Graphics.height)
self.visible = false
self.z = 250
@item = nil
@actor = nil
@max_ligne = 0
refresh
end
def window_width
return 326
end
def window_height
return 224
end
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? @actor.param_base(id) : @actor.param(id)
end
def item ; return @item ; end
def item=(item)
@item = item
refresh
end
def actor ; return @actor ; end
def actor=(actor)
@actor = actor
refresh
end
def update
super
refresh
end
def refresh
contents.clear
@req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
@vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
@req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
@t = 2
change_color(normal_color)
draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
@t += 1
end
end
change_color(normal_color)
if item != nil && item.wepreq != 0 && actor != nil
@max_ligne = 1
e = []
for equip in @actor.equips
if equip.class == RPG::Weapon
e.push(equip.id)
end
end
change_color(text_color(2)) unless e.include?(item.wepreq)
draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
@t += 1
end
change_color(normal_color)
if item != nil && item.armreq != 0 && actor != nil
@max_ligne = 2
e = []
for equip in @actor.equips
e.push(equip.id) if equip.class == RPG::Armor
end
change_color(text_color(2)) unless e.include?(item.armreq)
draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
@t += 1
end
if item && item.switchreq != 0
@max_ligne = 3
$game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
@t += 1
end
if item && item.variablereq != 0
@max_ligne = 4
$game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
end
end
def downStat
dif = (@max_ligne * 24) - (height - self.padding * 2)
save_oy = self.oy
if self.oy + 24 > dif
self.oy = [dif,0].max
else
self.oy += 24
end
if save_oy != self.oy
Sound.play_cursor
end
end
def upStat
save_oy = self.oy
if self.oy - 24 < 0
self.oy = 0
else
self.oy -= 24
end
if save_oy != self.oy
Sound.play_cursor
end
end
end
#~ #==============================================================================
#~ # ** Scene_Equip
#~ #------------------------------------------------------------------------------
#~ # This class performs the equipment screen processing.
#~ #==============================================================================
class Scene_Equip
alias :old_start :start
def start
old_start
@window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
end
alias :old_update :update
def update
old_update
if Input.trigger?(:CTRL)
if @window_req.visible == false && @item_window.active && @item_window.item != nil
Sound.play_cursor
@window_req.item=@item_window.item
@window_req.actor= @actor
@background = Sprite.new
@background.z = 200
@background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
@window_req.visible = true
@item_window.deactivate
@item_window.visible = false
elsif @window_req.visible == true
Sound.play_cancel
@background.dispose if @background
@window_req.visible = false
@item_window.activate
@item_window.visible = true
end
elsif Input.trigger?(:B)
if @window_req.visible == true
Sound.play_cancel
@background.dispose if @background
@window_req.visible = false
@item_window.activate
@item_window.visible = true
end
elsif Input.trigger?(:UP) && @window_req.visible == true
@window_req.upStat
elsif Input.trigger?(:DOWN) && @window_req.visible == true
@window_req.downStat
end
end
end |
Voilà normalement c'est bon mais je n'ai pas pu tester parce que j'ai pas trouvé d'objet avec assez de trucs a afficher... Dis moi si c'est bon.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 29/02/2016 à 21:56:33 (149 messages postés)
| | Je viens de tester, je n'ai pas vu de changement. Pour la transition, pas de soucis. Mais pas de défilement.
Tu peux configurer un équipement en ajoutant 4-5 conditions en notetag comme par exemple :
<mhpreq 50>
<mmpreq 50>
<atkreq 10>
<defreq 10>
<matreq 10>
<mdfreq 10>
<agireq 10>
<lukreq 10>
Dans le script qui sert d'exemple, il y a un def recreate_contents à la ligne 79 avec le self.oy, ça a sans doute un rapport, non ?
Edit : Voici la solution.^^
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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
| =begin
Equipment Requirements
by Fomar0153
modified by Zouzaka
Version 1.3
----------------------
Notes
----------------------
Adds a level requirement to equipment.
----------------------
Instructions
----------------------
Notetag the weapons/armors like so:
<levelreq x>
<mhpreq x>
<mmpreq x>
<atkreq x>
<defreq x>
<matreq x>
<mdfreq x>
<agireq x>
<lukreq x>
<switchreq x>
<variablereq x,y>
<wepreq x>
<armreq x>
----------------------
Change Log
----------------------
1.0 -> 1.1 Added stat requirements
Changed script name from Equipment Level Requirements
to just Equipment Requirements
1.1 -> 1.2 Added switch and other equipment requirements
1.2 -> 1.3 Ajout D'une Window qui affiche les Conditions requises
Réduit le script de base de plus de 50 lignes
1.3 -> 1.4 Optimisation et resolution de bug
----------------------
Known bugs
----------------------
None
=end
#--------------------------------------------------------------------------
# ● If set to true then it compares the requirement with the actor's base
# stat rather than their current.
#--------------------------------------------------------------------------
EQUIPREQ_USE_BASE_STAT = true
#--------------------------------------------------------------------------
# ● Vocab for switch's
# every switch_id in a different line
#--------------------------------------------------------------------------
Switch_Vocab = {
# Switch_ID => "Vocab",
#2 => "Visiter la Campagne",
}
#--------------------------------------------------------------------------
# ● Vocab for variables
# every variable_id in a different line
#--------------------------------------------------------------------------
Variable_Vocab = {
# Variable_ID => "Vocab",
#2 => "Nombre de pierres à casser",
}
class Game_Actor
def optimize_equipments
clear_equipments
equip_slots.size.times do |i|
next if !equip_change_ok?(i)
items = $game_party.equip_items.select do |item|
item.etype_id == equip_slots[i] &&
equippable?(item) && item.performance >= 0 && reqstate?(item)
end
change_equip(i, items.max_by {|item| item.performance })
end
end
def reqstate?(item)
unless item == nil
return false if level < item.levelreq
return false if reqstat(0) < item.mhpreq
return false if reqstat(1) < item.mmpreq
return false if reqstat(2) < item.atkreq
return false if reqstat(3) < item.defreq
return false if reqstat(4) < item.matreq
return false if reqstat(5) < item.mdfreq
return false if reqstat(6) < item.agireq
return false if reqstat(7) < item.lukreq
if item.switchreq > 0
return false unless $game_switches[item.switchreq]
end
if item.variablereq != 0
return false unless $game_variables[item.variablereq[0]] < item.variablereq[1]
end
if item.wepreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Weapon
end
return false unless e.include?(item.wepreq)
end
if item.armreq > 0
e = []
for equip in equips
e.push(equip.id) if equip.class == RPG::Armor
end
return false unless e.include?(item.armreq)
end
end
return true
end
#--------------------------------------------------------------------------
# ● New Method
#--------------------------------------------------------------------------
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? param_base(id) : param(id)
end
end
class Window_EquipItem
#--------------------------------------------------------------------------
# ● Check the requirements
#--------------------------------------------------------------------------
def enable?(item)
return @actor.reqstate?(item)
end
end
module RPG
#--------------------------------------------------------------------------
# ● Equip Item is inherited by both Weapon and Armor
#--------------------------------------------------------------------------
class EquipItem
def variablereq
self.note =~ /<variablereq (.*),(.*)>/i ? [$1.to_i,$2.to_i] : 0
end
def levelreq
self.note =~ /<levelreq (.*)>/i ? $1.to_i : 0
end
def mhpreq
self.note =~ /<mhpreq (.*)>/i ? $1.to_i : 0
end
def mmpreq
self.note =~ /<mmpreq (.*)>/i ? $1.to_i : 0
end
def atkreq
self.note =~ /<atkreq (.*)>/i ? $1.to_i : 0
end
def defreq
self.note =~ /<defreq (.*)>/i ? $1.to_i : 0
end
def matreq
self.note =~ /<matreq (.*)>/i ? $1.to_i : 0
end
def mdfreq
self.note =~ /<mdfreq (.*)>/i ? $1.to_i : 0
end
def agireq
self.note =~ /<agireq (.*)>/i ? $1.to_i : 0
end
def lukreq
self.note =~ /<lukreq (.*)>/i ? $1.to_i : 0
end
def switchreq
self.note =~ /<switchreq (.*)>/i ? $1.to_i : 0
end
def wepreq
self.note =~ /<wepreq (.*)>/i ? $1.to_i : 0
end
def armreq
self.note =~ /<armreq (.*)>/i ? $1.to_i : 0
end
end
end
class Window_Requirement < Window_Base
def initialize(x, y)
super(x, y, window_width, window_height)#(x, y, Graphics.width/2, Graphics.height)
#self.openness = 0
self.visible = false
self.z = 250
@item = nil
@actor = nil
self.padding = 16
refresh
end
def window_width
return 326
end
def window_height
return 224
end
def reqstat(id)
EQUIPREQ_USE_BASE_STAT ? @actor.param_base(id) : @actor.param(id)
end
def item ; return @item ; end
def item=(item)
@item = item
refresh
end
def actor ; return @actor ; end
def actor=(actor)
@actor = actor
refresh
end
def update
super
#refresh
end
def refresh
self.oy = 0
@req = ["item.levelreq","item.mhpreq","item.mmpreq","item.atkreq","item.defreq","item.matreq","item.mdfreq","item.agireq","item.lukreq"]#,"item.wepreq","item.armreq"]
@vocab_req = [Vocab.level,Vocab.param(0),Vocab.param(1),Vocab.param(2),Vocab.param(3),Vocab.param(4),Vocab.param(5),Vocab.param(6),Vocab.param(7)]#,Vocab.weapon,Vocab.armor]
@req_condition = ["@actor.level","reqstat(0)","reqstat(1)","reqstat(2)","reqstat(3)","reqstat(4)","reqstat(5)","reqstat(6)","reqstat(7)"]
# Calculer la taille du contenu
@t = 2
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
@t += 1
end
end
if item != nil && item.wepreq != 0 && actor != nil
@t += 1
end
if item != nil && item.armreq != 0 && actor != nil
@t += 1
end
if item && item.switchreq != 0
@t += 1
end
if item && item.variablereq != 0
@t += 1
end
self.contents = Bitmap.new(width - self.padding * 2, @t * line_height)
change_color(system_color)
draw_text(contents.width/6, 0, contents.width, line_height, "Conditions requises")
@t = 2
@req.each do |req|
if item != nil && eval(req) != 0 && actor != nil
eval(@req_condition[@req.index(req)]) < eval(req) ? change_color(text_color(2)) : change_color(normal_color)
draw_text(0, line_height*@t, contents.width, line_height, @vocab_req[@req.index(req)]+" requis : "+eval(req).to_s)
@t += 1
end
end
change_color(normal_color)
if item != nil && item.wepreq != 0 && actor != nil
e = []
for equip in @actor.equips
if equip.class == RPG::Weapon
e.push(equip.id)
end
end
change_color(text_color(2)) unless e.include?(item.wepreq)
draw_text(0, line_height*@t, contents.width, line_height, "Arme requise : "+$data_weapons[item.wepreq].name)
@t += 1
end
change_color(normal_color)
if item != nil && item.armreq != 0 && actor != nil
e = []
for equip in @actor.equips
e.push(equip.id) if equip.class == RPG::Armor
end
change_color(text_color(2)) unless e.include?(item.armreq)
draw_text(0, line_height*(@t), contents.width, line_height, "Armure requise : "+$data_armors[item.armreq].name)
@t += 1
end
if item && item.switchreq != 0
$game_switches[item.switchreq] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Switch_Vocab[item.switchreq])
@t += 1
end
if item && item.variablereq != 0
$game_variables[item.variablereq[0]] >= item.variablereq[1] ? change_color(normal_color) : change_color(text_color(2))
draw_text(0, line_height*(@t), contents.width, line_height, Variable_Vocab[item.variablereq[0]]+" "+$game_variables[item.variablereq[0]].to_s+"/"+item.variablereq[1].to_s)
end
end
def downStat
dif = (@t * line_height) - (height - self.padding * 2)
save_oy = self.oy
if self.oy + line_height > dif
self.oy = [dif,0].max
else
self.oy += line_height
end
if save_oy != self.oy
Sound.play_cursor
end
end
def upStat
save_oy = self.oy
if self.oy - line_height < 0
self.oy = 0
else
self.oy -= line_height
end
if save_oy != self.oy
Sound.play_cursor
end
end
end
#~ #==============================================================================
#~ # ** Scene_Equip
#~ #------------------------------------------------------------------------------
#~ # This class performs the equipment screen processing.
#~ #==============================================================================
class Scene_Equip
alias :old_start :start
def start
old_start
@window_req = Window_Requirement.new(0,192)#(Graphics.width/4,0)
end
alias :old_update :update
def update
old_update
if Input.trigger?(:CTRL)
#if @window_req.openness == 0 && @item_window.active && @item_window.item != nil
if !@window_req.visible && @item_window.active && @item_window.item != nil
Sound.play_cursor
@window_req.item=@item_window.item
@window_req.actor= @actor
#@background = Sprite.new
#@background.z = 200
#@background.bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @background.bitmap.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0, 0, 0,128))
#@window_req.open
@window_req.visible = true
@item_window.deactivate
@item_window.visible = false
#elsif @window_req.openness == 255
elsif @window_req.visible
Sound.play_cancel
#@background.dispose if @background
#@window_req.close
@item_window.activate
@item_window.visible = true
@window_req.visible = false
end
elsif Input.trigger?(:B)
#if @window_req.openness == 255
if @window_req.visible
Sound.play_cancel
#@background.dispose if @background
#@window_req.close
@item_window.activate
@item_window.visible = true
@window_req.visible = false
end
elsif Input.trigger?(:UP) && @window_req.visible
@window_req.upStat
#@status_window.refresh(@status_window.item_actuel)
elsif Input.trigger?(:DOWN) && @window_req.visible
@window_req.downStat
end
end
end |
Du coup, ça marche. Merci pour l'aide apportée. Il ne me reste plus qu'un problème sur l'autre topic à solutionner pour ma démo.
|
arttroy -
posté le 01/03/2016 à 16:34:21 (2394 messages postés)
| Just working | Oui j'ai vu mais là c'est juste au delà de ce dont je suis capable désolé mais je m'y aventure même pas ^^.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? | Index du forum > Entraide > [RESOLU] [RPG Maker VX Ace] Ajustement fenêtre
|
|
|