Aller à la page 1 2
Nérylis -
posté le 31/01/2016 à 20:38:06 (149 messages postés)
| | Domaine concerné: Script Logiciel utilisé: RPG Maker VX Ace Coucou, j'aurais besoin d'une petite modification de script. J'utilise un système pour upgrader mes équipements avec du pex classique et je possède une interface pour vérifier le level et les bonus supplémentaires de mes équipements.
C'est cette interface que je veux légèrement modifier. Je vous mets le script pour commencer :
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
| #Modif class Scene_Equip
class Scene_Equip < Scene_MenuBase
#Modification de l'update
alias update_interface update
def update
update_interface
if Input.trigger?(:A)
return if !@item_window.active && !@slot_window.active && @status_window.menu == 0
Sound.play_cursor
switch_info
elsif Input.trigger?(:UP) && @status_window.menu == 1
Sound.play_cursor
@status_window.ligne_actuel -= 1
@status_window.refresh(@status_window.item_actuel)
elsif Input.trigger?(:DOWN) && @status_window.menu == 1
Sound.play_cursor
@status_window.ligne_actuel += 1
@status_window.refresh(@status_window.item_actuel)
elsif Input.trigger?(:B) && @status_window.menu == 1
Sound.play_cursor
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.refresh(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
#Modifiication du refresh
alias refresh_interface refresh
def refresh(item = nil)
if @menu == 0
refresh_interface
else
contents.clear
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
draw_text_ex(0, 0, "")
@max_ligne = 0
@item = nil
else
@max_ligne = 0
@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, -88-@ligne_actuel*24, contents.width, contents.height, "Niveau :")
contents.font.color = normal_color
contents.draw_text(0, -64-@ligne_actuel*24, contents.width, contents.height, item.level.to_s + " / " + item.max_level.to_s)
contents.font.color = system_color
contents.draw_text(0, -40-@ligne_actuel*24, contents.width, contents.height, "Expérience :")
contents.font.color = normal_color
contents.draw_text(0, -16-@ligne_actuel*24, contents.width, contents.height, item.exp.to_s)
contents.font.color = normal_color
contents.draw_text(0, 8-@ligne_actuel*24, contents.width, contents.height, item.exp_to_level.to_s)
contents.font.color = system_color
contents.draw_text(0, 32-@ligne_actuel*24, contents.width, contents.height, "Prochains bonus :")
@max_ligne = 6
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
contents.draw_text(0 , 56+j*48-@ligne_actuel*24, contents.width, contents.height, Vocab.param(i))
contents.font.color = normal_color
contents.draw_text(0 , 80+j*48-@ligne_actuel*24, contents.width, contents.height, item.params[i].to_s+" passe à "+next_value.floor.to_s)
j += 1
@max_ligne += 2
end
end
end
end
end |
Quand je navigue dans mon menu equipement, cela donne ce que vous voyez sur la Capture 1. Quand j'appuie sur Shift, la fenêtre de droite change et on voit l'interface comme sur la Capture 2. Première chose : est-ce qu'il serait possible de créer une petite flèche pour montrer que le déroulement est possible lorsque le texte des bonus dépasse de la fenêtre ? Actuellement, on peut défiler en appuyant sur les touches Haut et Bas mais on voit une partie du texte et aucune petite flèche.
Ensuite, mon autre souci se trouve lorsque je vais sur la commande Retirer (Capture 3). Si j'appuie sur Shift, j'obtiens mon interface avec rien dedans (Capture 4). Serait-il possible de bloquer l'accès à l'interface quand je suis sur Retirer ? Qu'on ne puisse pas y accéder et qu'on n'entende aucun bruit de validation ou d'erreur.
Capture 1 :
Capture 2 :
Capture 3 :
Capture 4 :
|
arttroy -
posté le 01/02/2016 à 15:14:49 (2394 messages postés)
| Just working | Pour la désactivation essaies ça, remplace les lignes 21 et 22 par ça
1
2
3
4
5
6
|
if @item_window.active == false
Sound.play_cursor
switch_info
end
|
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 01/02/2016 à 18:17:35 (149 messages postés)
| | J'ai testé, ça ne marche pas. Ça switch toujours sur une fenêtre vide.
|
arttroy -
posté le 02/02/2016 à 08:20:15 (2394 messages postés)
| Just working | Ah ^^ j'avais pas fait gaffe aux lignes 9 à 11
essaie en remplaçant par ça la method switch infos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| 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
if @slot_window.visible
@slot_window.deactivate
item = @actor.equips[@slot_window.index]
end
end
@status_window.refresh(item)
end |
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 03/02/2016 à 18:07:11 (149 messages postés)
| | Je viens de tester, ça ne marche pas non plus. Tu veux peut-être une démo ?
|
arttroy -
posté le 03/02/2016 à 21:38:03 (2394 messages postés)
| Just working | ouaip ce sera plus simple, pas évident de spéculer sans pouvoir tester ^^.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 03/02/2016 à 22:00:25 (149 messages postés)
| | Voici ma démo avec l'ensemble de mes scripts de menu : http://www.mediafire.com/download/jm6wqq617y0sq7j/Ace+menu.exe
Donc, dans le menu Equipement, il faut appuyer sur Shift pour switcher avec l'interface.
|
arttroy -
posté le 03/02/2016 à 22:42:28 (2394 messages postés)
| Just working | ok en fait c'est tout con va ligne 9 et enlève le "!" de !@item_window.active
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 04/02/2016 à 18:40:55 (149 messages postés)
| | Le problème, c'est que si j'enlève le ! de !@item_window.active, je ne peux plus vérifier l'interface pour les équipements. Par ailleurs, j'ai aussi le problème de l'interface vide lorsque j'appuie sur Shift alors que je suis sur un emplacement vide (comme au début de ma démo pour les emplacements Ceinture, Collier, Bague et Bracelet).
|
arttroy -
posté le 04/02/2016 à 21:59:59 (2394 messages postés)
| Just working | erf ^^ je vais chercher autre chose alors.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Sou -
posté le 04/02/2016 à 22:41:16 (396 messages postés)
| On a jamais assez de munitions | Je suis débutant dans tout ça, mais ne serait-il pas possible d'identifier le retour via son nom?
Soit genre en lisant la ligne:
If ligne actuel = "retour"
Ou attribuer une valeur arbitraire à retour?
Car au lieu d'avoir 0, 1, 2, ect ... Si j'ai bien compris, là c'est du += 1 ou -=1 car on ne peut pas définir le nombre d'item à la base.
Mais ne serait-il pas possible d’attribuer une valeur très grande genre 99 (pour pas y arriver avec des +=1), et de faire un:
If @status_window.menu = 99 ?
Ou un truc du genre?
Bref si je dis encore des conneries, me jeter pas des pierres trop fort
|
Je suis Sou et c'est tout. |
arttroy -
posté le 05/02/2016 à 15:25:01 (2394 messages postés)
| Just working | Ben ouaip je cherche depuis hier soir mais j'ai rien trouvé de probant... Le souci c'est que je ne trouve pas la def concernant cette fameuse ligne <retour>.
Aaaaah mais attends !! En fait il faudrait trouver le moyen d'enregistrer le nombre de lignes dans une variable et ensuite on vérifie si l'index de la fenêtre @item_window est égal à la variable on bloque le switch_info.
*lâche sa poignée de cailloux*
Bon ben en fait tu m'as mis sur la voie je crois merci ^^.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Sou -
posté le 05/02/2016 à 15:29:07 (396 messages postés)
| On a jamais assez de munitions | Oula ça s'en est joué de peu *souffle*
Aller Arttroy, trouves la solution *_*
|
Je suis Sou et c'est tout. |
arttroy -
posté le 05/02/2016 à 16:00:23 (2394 messages postés)
| Just working | Ben c'est mal barré pour le moment ^^ là je suis à court d'idées parce que la dernière ne fonctionne pas
Faudrait que je trouve un moyen de dire :
si l'item de @item_window est le même que celui équipé sur le personnage
j'ai essayé ça :
if @item_window.item != @actor.equips[@item_window.index]
mais ça ne fonctionne pas...
Si jamais il y a un scripteur plus confirmé que moi qui pouvait y mettre son nez se serait cool svp les coupains.
edit : Mou ha ha !!! J'ai réussi ! (j'en ai profité pour faire la même chose avec la @slot_window comme ça si tu n'as rien d'équipé ça ne fonctionne 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
| #Modif class Scene_Equip
class Scene_Equip < Scene_MenuBase
#Modification de l'update
alias update_interface update
def update
update_interface
if Input.trigger?(:A)
return if !@item_window.active && !@slot_window.active && @status_window.menu == 0
if @item_window.item != nil && !@slot_window.active && @item_window.visible
Sound.play_cursor
switch_info
end
if @slot_window.visible && @slot_window.item != nil
Sound.play_cursor
switch_info
end
elsif Input.trigger?(:UP) && @status_window.menu == 1
Sound.play_cursor
@status_window.ligne_actuel -= 1
@status_window.refresh(@status_window.item_actuel)
elsif Input.trigger?(:DOWN) && @status_window.menu == 1
Sound.play_cursor
@status_window.ligne_actuel += 1
@status_window.refresh(@status_window.item_actuel)
elsif Input.trigger?(:B) && @status_window.menu == 1
Sound.play_cursor
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.refresh(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
#Modifiication du refresh
alias refresh_interface refresh
def refresh(item = nil)
if @menu == 0
refresh_interface
else
contents.clear
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
draw_text_ex(0, 0, "")
@max_ligne = 0
@item = nil
else
@max_ligne = 0
@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, -88-@ligne_actuel*24, contents.width, contents.height, "Niveau :")
contents.font.color = normal_color
contents.draw_text(0, -64-@ligne_actuel*24, contents.width, contents.height, item.level.to_s + " / " + item.max_level.to_s)
contents.font.color = system_color
contents.draw_text(0, -40-@ligne_actuel*24, contents.width, contents.height, "Expérience :")
contents.font.color = normal_color
contents.draw_text(0, -16-@ligne_actuel*24, contents.width, contents.height, item.exp.to_s)
contents.font.color = normal_color
contents.draw_text(0, 8-@ligne_actuel*24, contents.width, contents.height, item.exp_to_level.to_s)
contents.font.color = system_color
contents.draw_text(0, 32-@ligne_actuel*24, contents.width, contents.height, "Prochains bonus :")
@max_ligne = 6
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
contents.draw_text(0 , 56+j*48-@ligne_actuel*24, contents.width, contents.height, Vocab.param(i))
contents.font.color = normal_color
contents.draw_text(0 , 80+j*48-@ligne_actuel*24, contents.width, contents.height, item.params[i].to_s+" passe à "+next_value.floor.to_s)
j += 1
@max_ligne += 2
end
end
end
end
end |
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 05/02/2016 à 17:05:09 (149 messages postés)
| | Effectivement, ça marche bien.
Il reste l'histoire du déroulement lorsqu'un équipement a plusieurs statistiques améliorées. Actuellement, on voit la partie supérieure d'une ligne comme sur ma Capture 2. Est-ce que tu te sens capable de me faire un défilement avec la petite flèche sans qu'on voit des bouts de ligne ?
|
arttroy -
posté le 05/02/2016 à 17:06:58 (2394 messages postés)
| Just working | je suis en train de chercher mais rien pour l'instant de ce côté ^^.
Edit : non désolé mais je vois pas comment faire
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 05/02/2016 à 18:22:09 (149 messages postés)
| | Arf ok, merci pour ton aide en tout cas.
Si quelqu'un est en mesure de faire mon autre demande, ça m'intéresse.^^
|
arttroy -
posté le 06/02/2016 à 00:43:10 (2394 messages postés)
| Just working | Après je pourrais voir pour redéfinir une nouvelle fenêtre plutôt que d'utiliser la Window_EquipStatus (qui elle n'a pas besoin des flêches) mais là je taf ce week end donc chaud ^^. Si personne n'a rien fait d'ici lundi ou mardi je m'y mettrai.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 06/02/2016 à 08:08:24 (149 messages postés)
| | Dans ma démo, il y a plusieurs cas où un défilement a été créé avec la petite flèche en question. Regarde par exemple dans le menu Statut pour le premier personnage, puis le menu Maîtrise. Si tu valides, tu peux te déplacer avec les touches Haut et Bas et on voit les petites flèches indiquant le défilement possible. En script, ça se trouve dans celui de Vincent26 - Weapon's type upgrade si je ne dis pas de bêtises. Tu pourras peut-être trouver comment on fait pour reproduire la même chose.
|
arttroy -
posté le 06/02/2016 à 15:10:08 (2394 messages postés)
| Just working | ouaip je sais tout ça tkt ^^ Seulement là le truc c'est que c'est la Window_EquipStatus qui est utilisée pour afficher tes infos et cette fenêtre ne bénéficie pas des mêmes def que les fenêtres avec les flêches.
Donc en fait ce que je vais faire c'est que je vais te créer une Window_EStats qui affichera la même chose mais sera indépendante de la Window_EquipStatus et je modifierai l'affichage dans le Scene_Equip (sans toucher aux scripts de bases ça évitera les embrouilles avec ce que tu as déjà installé).
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 06/02/2016 à 15:41:46 (149 messages postés)
| | Ok, je crois comprendre ta technique. Hâte de voir ce que ça va donner.
|
arttroy -
posté le 09/02/2016 à 15:06:44 (2394 messages postés)
| Just working | tkt je t'oublie pas c'est juste pas la grande forme ces jours ci ^^.
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 09/02/2016 à 17:57:18 (149 messages postés)
| | Je ne suis pas à un jour près, je up le sujet de temps en temps.
|
arttroy -
posté le 12/02/2016 à 16:54:45 (2394 messages postés)
| Just working | Ah Mert !!!! Mon idée ne marche pas ! FUUCCKKK ! Peut être en redéfinissant la hauteur de la fenêtre...
|
Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ? |
Nérylis -
posté le 12/02/2016 à 16:59:05 (149 messages postés)
| | Le bas de la fenêtre, oui pourquoi pas ?
| Aller à la page 1 2Index du forum > Entraide > [RESOLU] [RPG Maker VX Ace] Petite modification de script
|