Sujet n°6788
Posté par PiVa le 13 Mai - 11:28 (2010)
Titre : Défilement sac.
Bonjour, je repose mon problème.

Voici le morceau de script qui gère la liste des quêtes, mais quand il y a trop de quete à afficher ça sort de la fenêtre, le curseur et les quetes avec, je voudrais qu'il y est un défilement comme avec les objets dans le sac, on arrive à la limiter on fais encore fleche du bas et miracle ça défile, je voudrais pareil pour les quêtes.


J'illustre (faites pas attention aux textes mais au cadre rouge)


 
Spoiler
Code:



  #==============================================================================
  # ¦ Window_Listequete
  #------------------------------------------------------------------------------
  #  Fenêtre de la liste des quetes
  #   Version   Date          Auteur        Commentaires
  #   1.00      12/09/2007    Tonyryu       Création
  #
  #==============================================================================
  class Window_Listequete < Window_Selectable
    
    
    #--------------------------------------------------------------------------
    # ? initialize
  
    #-------------------------------------------------------------------------- 
    def initialize
      super(20, 60, 240, 145)
      self.contents = Bitmap.new(width - 32, height - 32)
      self.back_opacity = 0
      self.opacity = 0
      self.contents.font.name = $fontface
      self.contents.font.size = 16

      self.active = false
      self.index = -1
      
      @column_max = 1
      
      
      refresh
    end
    
    #--------------------------------------------------------------------------
    # ? refresh
    #--------------------------------------------------------------------------
    def refresh(etat_quete = 1)
      if self.contents != nil
        self.contents.dispose
        self.contents = nil
      end
      
      @tab_quete = []
      
      # Parcourir la liste des quete en cours
      $pokemon_party.tab_quete.each_key { |id_quete_party|
       # Si la quete est en cours
        if $pokemon_party.tab_quete[id_quete_party][0] == etat_quete
          #@tab_quete.push(id_quete_party)
          @tab_quete.insert(0,id_quete_party)
        end
      }
      
      @item_max = @tab_quete.size
      
      if @item_max > 0
        self.contents = Bitmap.new(width - 32, row_max * 20 -3)
        self.contents.font.name = $fontface
        self.contents.font.size = 16
        self.contents.font.color = Color.new(0,0,0,255)

        @tab_quete.sort!
        for i in 0...@tab_quete.size
          id_quete_party = @tab_quete[i]
          # Afficher le nom de la quete
          self.contents.draw_text(16, (i * 20) - 4, 250, 20, $data_quete.tab_def_quete[id_quete_party]["nom"])
        end
      end

      
    #--------------------------------------------------------------------------
    # ? nb_quete
    #--------------------------------------------------------------------------
      def nb_quete()
        return @tab_quete.size
      end
  
    #--------------------------------------------------------------------------
    # ? id_quete
    #--------------------------------------------------------------------------
      def id_quete()
        return @tab_quete[@index]
      end
  
      
    end
    
    #--------------------------------------------------------------------------
    # ? update_cursor_rect
    #    - Permet de modifier la position du rectangle de sélection à chaque cycle
    #--------------------------------------------------------------------------
      def update_cursor_rect

      # Si l'index de focus est inferieur à 0
      if @index < 0
        # Alors effacer le rectangle de sélection
        self.cursor_rect.empty
      else
        # Sinon afficher le rectangle à la position du focus
        self.cursor_rect.set(0, -4 + (20 * @index), 20, 20)
      end
    end
  end





Merci d'avance.

Posté par Mack le 15 Mai - 14:17 (2010)
J'me permet de Upper (même si c'est pas mon topic =P ) car j'ai plus ou moins le même problème =/.
Sauf que moi c'est pour mon adaptation du script de Shop, passer un certain nombre d'item, il passe sur l'écran inférieur ...

Posté par PiVa le 11 Juin - 10:57 (2010)
Merci bcp de l'intérêt que vous portez à ceci. :(

Posté par Mortenkein le 11 Juin - 12:37 (2010)
Ta liste n'est pas renouvelée quand elle atteint la limite affichable. Pour régler ton problème, tu pourrais t'inspirer de ce bout de code tiré de Pokemon_Item_Bag :

def refresh_list
@item_list.refresh_list
end

Désolé de ne pas pouvoir t'aider plus, les scripts ne sont pas ma tasse de thé Yeux motorisés .

Posté par PiVa le 12 Juin - 13:29 (2010)
Je vois pas du tous comment l'utiliser.

Mais ça peut être un début, merci quand même. ^^'

Je ne sais pas comment créer la limite affichable (si elle est pas déjà crée, j'en sais rien, pour ça que je demande de l'aide ^^") que tu voudrais que j'actualise avec un truc dans le style :
def refresh_list
@item_list.refresh_list
end

J'attends donc tjrs de l'aide pour savoir quoi faire de tous ça. =/