[résolu] Curseur de sélection décalé
Sam 14 Fév 2009 - 21:17
Bonjour ou bonsoir à tous,
le petit soucis que voilà m'a pris pas mal d'heures de recherches infructueuses, à tel point que je m'en remet finalement à la sagesse de la communauté pour tenter d'y remédier :
Je cherche depuis un moment à réorganiser l'interface du GTBS (disponible ici, pour précision) de façon plus personnel, et j'y suis à peu près parvenu si l'on exclu un problème de décalage du curseur de sélection dans la fenêtre d'inventaire et des skills. Comme l'affichage de ces deux fenêtre semble être plus ou moins similaire, je vous envoi ici la section concernant l'inventaire, tirée du Window_Battle du GTBS :
La méthode def item_rect_custom a été rajoutée par mes soins pour servir de substitut à la méthode def item_rect :
Sans cette modification, la fenêtre apparaissait ainsi dans le jeu :
Et avec :
Et voilà le drame, le curseur de sélection n'a pas bougé avec le reste : ça n'empêche pas vraiment de jouer, mais on a plutôt l'habitude de voir le curseur dessous la ligne désignée, et donc, on confond les skills et objets :s
Que faut-il modifier pour remettre le curseur à la bonne place ?
J'avoue avoir tapé des valeurs un peu partout où ça paraissait possible, mais sans résultat...
D'avance, merci du temps que vous accorderez à la question, et bonne soirée à tous !
le petit soucis que voilà m'a pris pas mal d'heures de recherches infructueuses, à tel point que je m'en remet finalement à la sagesse de la communauté pour tenter d'y remédier :
Je cherche depuis un moment à réorganiser l'interface du GTBS (disponible ici, pour précision) de façon plus personnel, et j'y suis à peu près parvenu si l'on exclu un problème de décalage du curseur de sélection dans la fenêtre d'inventaire et des skills. Comme l'affichage de ces deux fenêtre semble être plus ou moins similaire, je vous envoi ici la section concernant l'inventaire, tirée du Window_Battle du GTBS :
- Spoiler:
- Code:
#----------------------------------------------------------------------------
# Draw Item window and contents
#----------------------------------------------------------------------------
#==============================================================================
# ** Window_Item
#------------------------------------------------------------------------------
# This window displays a list of inventory items for the item screen, etc.
#==============================================================================
class TBS_Item < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# x : window x-coordinate
# y : window y-coordinate
# width : window width
# height : window height
#--------------------------------------------------------------------------
def initialize
super(154, 0, 390, 315)
@back = Sprite.new
self.opacity = GTBS::CONTROL_OPACITY
if FileTest.exist?('Graphics/Pictures/Interfaces/Combats/TBS_Item_Skill.png')
self.opacity = 0
@back.bitmap = Cache.picture('Interfaces/Combats/TBS_Item_Skill')
@back.visible = false
@back.z = 99
@back.opacity = GTBS::CONTROL_OPACITY
end
@column_max = 1
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# * Get Item
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Whether or not to include in item list
# item : item
#--------------------------------------------------------------------------
def include?(item)
return false if item == nil
if $game_temp.in_battle
return false unless item.is_a?(RPG::Item)
end
return true
end
#--------------------------------------------------------------------------
# * Whether or not to display in enabled state
# item : item
#--------------------------------------------------------------------------
def enable?(item)
return $game_party.item_can_use?(item)
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
@data = []
for item in $game_party.items
next unless include?(item)
@data.push(item)
if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
self.index = @data.size -1
end
end
@data.push(nil) if include?(nil)
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def item_rect_custom(index)
rect = Rect.new(0, 0, 0, 0)
rect.width = (contents.width + @spacing) / @column_max - @spacing
rect.height = WLH
rect.x = index % @column_max * (rect.width + @spacing) + 17
rect.y = index / @column_max * WLH + 17
return rect
end
def draw_item(index)
rect = item_rect_custom(index)
self.contents.clear_rect(rect)
item = @data[index]
if item != nil
number = $game_party.item_number(item)
enabled = enable?(item)
rect.width -= 35
draw_item_name(item, rect.x, rect.y , enabled)
self.contents.draw_text(rect, sprintf(":%2d", number), 2)
end
end
#--------------------------------------------------------------------------
# * Update Help Text
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(item == nil ? "" : item.description)
end
end
La méthode def item_rect_custom a été rajoutée par mes soins pour servir de substitut à la méthode def item_rect :
- Code:
def item_rect_custom(index)
rect = Rect.new(0, 0, 0, 0)
rect.width = (contents.width + @spacing) / @column_max - @spacing
rect.height = WLH
rect.x = index % @column_max * (rect.width + @spacing) + 17
rect.y = index / @column_max * WLH + 17
return rect
end
Sans cette modification, la fenêtre apparaissait ainsi dans le jeu :
Et avec :
Et voilà le drame, le curseur de sélection n'a pas bougé avec le reste : ça n'empêche pas vraiment de jouer, mais on a plutôt l'habitude de voir le curseur dessous la ligne désignée, et donc, on confond les skills et objets :s
Que faut-il modifier pour remettre le curseur à la bonne place ?
J'avoue avoir tapé des valeurs un peu partout où ça paraissait possible, mais sans résultat...
D'avance, merci du temps que vous accorderez à la question, et bonne soirée à tous !
- ASHKAMembre
- Nombre de messages : 242
Age : 41
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008
Re: [résolu] Curseur de sélection décalé
Dim 15 Fév 2009 - 13:42
Renomme ta methode "item_rect_custom" en "item_rect".
Elle servira à la fois pour l'affichage et le curseur.
Sinon, tu peux aussi modifier "update_cursor" ( voir dans Window_Selectable ) pour qu'elle appelle "item_rect_custom" et non pas "item_rect".
ASHKA
Elle servira à la fois pour l'affichage et le curseur.
Sinon, tu peux aussi modifier "update_cursor" ( voir dans Window_Selectable ) pour qu'elle appelle "item_rect_custom" et non pas "item_rect".
ASHKA
Re: [résolu] Curseur de sélection décalé
Dim 15 Fév 2009 - 13:50
Grand dieux ! Il suffisait juste de faire ça ?!? xO
Ça marche très bien ! Je n'avait pas tenté de la renommer ainsi puisque je pensai que la méthode originale item_rect aurait prévalu sur la "faite maison" >.<'
Merci beaucoup, Ashka ! Problème résolu !
Ça marche très bien ! Je n'avait pas tenté de la renommer ainsi puisque je pensai que la méthode originale item_rect aurait prévalu sur la "faite maison" >.<'
Merci beaucoup, Ashka ! Problème résolu !
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|