Partagez
Aller en bas
avatar
Tink
Membre

Nombre de messages : 407
Age : 27
Localisation : Finistère (Bretagne)
Distinction : aucune
Date d'inscription : 12/08/2008
http://network-rpg-maker.site.voila.fr

[résolu] Curseur de sélection décalé

le Sam 14 Fév 2009 - 20: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 :

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 !


Dernière édition par Tink le Dim 15 Fév 2009 - 21:22, édité 1 fois
avatar
ASHKA
Membre

Nombre de messages : 242
Age : 36
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008

Re: [résolu] Curseur de sélection décalé

le Dim 15 Fév 2009 - 12: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
avatar
Tink
Membre

Nombre de messages : 407
Age : 27
Localisation : Finistère (Bretagne)
Distinction : aucune
Date d'inscription : 12/08/2008
http://network-rpg-maker.site.voila.fr

Re: [résolu] Curseur de sélection décalé

le Dim 15 Fév 2009 - 12: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 !
Contenu sponsorisé

Re: [résolu] Curseur de sélection décalé

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum