Page 1 sur 2 • 1, 2
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Petite modification de script
Sam 30 Jan 2016 - 14:57
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 :
Edit - Je vous mets la démo : http://www.mediafire.com/download/kayeps07khf830u/Ace+menu2.exe
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 :
C'est cette interface que je veux légèrement modifier. Je vous mets le script pour commencer :
- Code:
#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
Edit - Je vous mets la démo : http://www.mediafire.com/download/kayeps07khf830u/Ace+menu2.exe
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 :
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Ven 5 Fév 2016 - 18:23
Le problème du Retirer a été corrigé. Il reste le problème du défilement si quelqu'un sait faire.
Le script mis à jour :
Le script mis à jour :
- Code:
#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
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Ven 12 Fév 2016 - 14:59
Up
Re: Petite modification de script
Ven 12 Fév 2016 - 16:18
Il faut absolument que tu te mettes à la place des gens qui veulent te donner un coup de main.
Dès le premier post, j'ai pas été plus loin que :
- créer un nouveau projet
- copier le script que tu fournis
- ajouter quelques équipement via un événement
- Lancer le projet
J'ai rien correspondant a ce que tu mentionnes, je passe à un autre sujet.
Dès le premier post, j'ai pas été plus loin que :
- créer un nouveau projet
- copier le script que tu fournis
- ajouter quelques équipement via un événement
- Lancer le projet
J'ai rien correspondant a ce que tu mentionnes, je passe à un autre sujet.
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Ven 12 Fév 2016 - 16:56
Ouh là, j'ai zappé de mettre la démo. La voici : http://www.mediafire.com/download/kayeps07khf830u/Ace+menu2.exe
Il faut aller chercher les équipements avec le cristal du centre (en bas à gauche) et appuyer sur Shift lorsqu'on sélectionne des équipements verts, oranges ou rouges pour constater le problème de ma Capture 2.
Il faut aller chercher les équipements avec le cristal du centre (en bas à gauche) et appuyer sur Shift lorsqu'on sélectionne des équipements verts, oranges ou rouges pour constater le problème de ma Capture 2.
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Mer 17 Fév 2016 - 22:34
Up
Re: Petite modification de script
Jeu 18 Fév 2016 - 10:37
J'essai d'y jeter un coup d'oeil la semaine prochaine, une fois rentré de mon déplacement pro
Re: Petite modification de script
Dim 21 Fév 2016 - 20:00
Je commence à me mettre sur tes modifications. Bon celle-ci, n'est pas simple, car la gestion d'écriture des statuts de l'arme se fait vraiment cradement. C'est à dire que l'on réécris sur le bitmap en décalant l'écriture à chaque descente ou monté ce qui est complètement inadapté.
La bonne solution aurait été de créer une fenêtre Window_Selectable avec un bitmap de contenu plus grand que la fenêtre ce qui aurai géré automatiquement les flèches de scrolling.
Je vais voir ce que je peux faire, mais il y a de forte chance que je sois obliger de recréer cette fenêtre.
La bonne solution aurait été de créer une fenêtre Window_Selectable avec un bitmap de contenu plus grand que la fenêtre ce qui aurai géré automatiquement les flèches de scrolling.
Je vais voir ce que je peux faire, mais il y a de forte chance que je sois obliger de recréer cette fenêtre.
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Dim 21 Fév 2016 - 20:13
Je n'ai pas les compétences pour pouvoir dire si les scripts utilisés sont bien faits ou non, mais si tu vois qu'il y a des améliorations à faire, n'hésite pas si ce n'est pas trop compliqué.
Re: Petite modification de script
Dim 21 Fév 2016 - 20:20
J'suis entrain de rajouter une fenêtre sélectionnable pour que le fonctionnement soit conforme à tes attentes, mais pas sur que je finisse ce soir
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Dim 21 Fév 2016 - 20:21
Ce n'est pas un souci, je ne suis pas à un jour près. Merci pour ton aide.
Re: Petite modification de script
Dim 21 Fév 2016 - 22:49
Ca devrait correspondre à tes attentes :
- Code:
#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.upStat
#@status_window.refresh(@status_window.item_actuel)
elsif Input.trigger?(:DOWN) && @status_window.menu == 1
Sound.play_cursor
@status_window.downStat
#@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.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)
if @menu == 0
create_contents
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)
self.oy = 0
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(contents_width, @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
contents.draw_text(0, 24, contents.width, 24, item.level.to_s + " / " + item.max_level.to_s)
contents.font.color = system_color
contents.draw_text(0, 48, contents.width, 24, "Expérience :")
contents.font.color = normal_color
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)
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
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
def downStat
dif = (@max_ligne * 24) - contents_height
if self.oy + 24 > dif
self.oy = [dif,0].max
else
self.oy += 24
end
end
def upStat
if self.oy - 24 < 0
self.oy = 0
else
self.oy -= 24
end
end
end
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Lun 22 Fév 2016 - 18:22
Oui, c'est bien ça. Merci bien. Juste une chose : comment on peut régler les lignes de texte pour qu'on ne puisse pas voir la ligne du bas qui déborde ? Là, ça fait toujours comme sur ma Capture 2, j'aimerais régler ça, je pense que ce n'est pas un truc sorcier dans le script mais je ne sais pas à quoi il faut toucher.^^
Re: Petite modification de script
Lun 22 Fév 2016 - 18:47
logiquement ça ne devrait pas le faire, la hauteur du conteneur de la fenêtre fait 192 pixel et les lignes font 24pxl ce qui permet d'avoir un nombre de lignes entier sur la hauteur.
ptet une question de taille de police, je sais pas trop.
ptet une question de taille de police, je sais pas trop.
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Lun 22 Fév 2016 - 19:00
Peut-être y a-t-il un décalage à faire au niveau de la première ligne, non ?
Re: Petite modification de script
Lun 22 Fév 2016 - 20:37
non j'ai trouvé, en fait, la fonction retournant la hauteur de la fenêtre de base est modifié dans le script d'origine Window_EquipStatus :
Du coup, comme la fonction contents_height l'utilise, ça retourne 192 à tord, hors notre affichage peut dépasser les 8 lignes. Donc on va le feinter en modifiant le padding :
- Code:
#--------------------------------------------------------------------------
# * Get Window Height
#--------------------------------------------------------------------------
def window_height
fitting_height(visible_line_number)
end
Du coup, comme la fonction contents_height l'utilise, ça retourne 192 à tord, hors notre affichage peut dépasser les 8 lignes. Donc on va le feinter en modifiant le padding :
- Code:
#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
Sound.play_cursor
@status_window.upStat
#@status_window.refresh(@status_window.item_actuel)
elsif Input.trigger?(:DOWN) && @status_window.menu == 1
Sound.play_cursor
@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)
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)
self.oy = 0
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
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)
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
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
def downStat
dif = (@max_ligne * 24) - (height - self.padding * 2)
if self.oy + 24 > dif
self.oy = [dif,0].max
else
self.oy += 24
end
end
def upStat
if self.oy - 24 < 0
self.oy = 0
else
self.oy -= 24
end
end
end
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Lun 22 Fév 2016 - 20:57
Effectivement, c'est corrigé. Par contre, j'ai trouvé un bug. Si on appuie sur la touche de l'interface, qu'on utilise la touche Bas pour descendre la fenêtre, puis qu'on revient sur l'écran normal, il y a un décalage au niveau de l'affichage des stats. Un autre détail aussi : est-ce que c'est possible, dans le cas où le défilement n'est pas disponible, qu'on n'entende pas le bruit du curseur lorsqu'on appuie sur Haut et Bas ?
Re: Petite modification de script
Lun 22 Fév 2016 - 21:10
Voila le tout corrigé :
- Code:
#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
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)
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
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
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
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Lun 22 Fév 2016 - 21:49
Génial, j'ai testé et ça marche à la perfection. Merci beaucoup !
Je profite du sujet puisque ça concerne les menus de défilement. J'ai une autre interface, plus simple cette fois, qui aurait besoin aussi d'un menu de défilement. Il s'agit du script de Fomar0153 - Equipment requirements qui permet de mettre des conditions pour porter les équipements. Tout en bas du script, il y a une interface qui a été rajouté (en plein jeu, on peut y accéder lorsqu'on veut changer d'équipement si on appuie sur la touche Ctrl) mais qui, je crois n'est pas top car j'ai une transition lorsque j'appuie sur Ctrl. Je préfèrerais qu'il n'y ait pas de transition, comme tu m'as fait. Et aussi quand la liste des conditions devient grande, ça sort de la fenêtre, d'où le besoin d'un menu défilement. Avec le même principe, touches Haut et Bas pour naviguer, et pas de son si le menu de défilement n'est pas disponible. Est-ce que tu pourrais me faire la modification s\'il te plaît ?
Je te mets une démo à jour : http://www.mediafire.com/download/0q36vkcauvk54b4/Ace+menu5.exe
Le script ici :
Je profite du sujet puisque ça concerne les menus de défilement. J'ai une autre interface, plus simple cette fois, qui aurait besoin aussi d'un menu de défilement. Il s'agit du script de Fomar0153 - Equipment requirements qui permet de mettre des conditions pour porter les équipements. Tout en bas du script, il y a une interface qui a été rajouté (en plein jeu, on peut y accéder lorsqu'on veut changer d'équipement si on appuie sur la touche Ctrl) mais qui, je crois n'est pas top car j'ai une transition lorsque j'appuie sur Ctrl. Je préfèrerais qu'il n'y ait pas de transition, comme tu m'as fait. Et aussi quand la liste des conditions devient grande, ça sort de la fenêtre, d'où le besoin d'un menu défilement. Avec le même principe, touches Haut et Bas pour naviguer, et pas de son si le menu de défilement n'est pas disponible. Est-ce que tu pourrais me faire la modification s\'il te plaît ?
Je te mets une démo à jour : http://www.mediafire.com/download/0q36vkcauvk54b4/Ace+menu5.exe
Le script ici :
- Code:
=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
Re: Petite modification de script
Mar 23 Fév 2016 - 18:15
Le soucis, c'est que ton projet contient énormément de scripts venant de tout part, et que le rafistolage avec des bouts de scotchs un peu partout, va te nécessiter un scripteur a temps complet.
Au vue des scripts, j'ai l'impression que Vincent26 avait cette charge. Peut-être devrais-tu te rapprocher de lui, pour voir ça.
Au vue des scripts, j'ai l'impression que Vincent26 avait cette charge. Peut-être devrais-tu te rapprocher de lui, pour voir ça.
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Mar 23 Fév 2016 - 18:28
C'est Zouzaka qui m'avait cette interface à la base mais lui comme Vincent ne sont pas dispos depuis plusieurs mois. C'est pour cela que je poste ça ici. Mais si ça peut te rassurer, c'est la dernière interface qui comporte cette lacune du menu défilant.
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Ven 26 Fév 2016 - 16:24
Petit up
J'ai voulu reprendre le principe que tu avais fait mais sans succès. Je n'arrive pas non plus à enlever la transition à chaque ouverture et fermeture de l'interface.
J'ai voulu reprendre le principe que tu avais fait mais sans succès. Je n'arrive pas non plus à enlever la transition à chaque ouverture et fermeture de l'interface.
Re: Petite modification de script
Ven 26 Fév 2016 - 16:49
J'ai un pique de boulot je ne pourrais pas regarder avant samedi soir
- NérylisMembre
- Nombre de messages : 615
Age : 35
Localisation : Seine Maritime
Distinction : aucune
Date d'inscription : 23/11/2014
Re: Petite modification de script
Dim 28 Fév 2016 - 9:31
Ok, pas de soucis. Je ne suis pas à un jour près.
Re: Petite modification de script
Dim 28 Fév 2016 - 10:39
Pour la transition d'ouverture viré :
par contre, pour la gestion du défilement, tu pourrais me paramétrer un objet avec suffisamment de conditions pour que ça dépasse le cadre?
- Code:
=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
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
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
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)
if !@window_req.visible && (@item_window.item.class == RPG::Weapon || @item_window.item.class == RPG::Armor)
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.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
@item_window.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
@item_window.visible = false
end
end
end
end
par contre, pour la gestion du défilement, tu pourrais me paramétrer un objet avec suffisamment de conditions pour que ça dépasse le cadre?
Page 1 sur 2 • 1, 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|