Sujet n°11780
Posté par TouzaxA le 28 Juil - 09:03 (2012)
Titre : [Erreur] Script Pokemon_Pokedex [En partie Résolu]
Bonjour à tous,
J'ai un problème avec le script du pokedex (que je n'ai absolument pas modifié) et qui plante dès que je veux y accéder...

Je vous met ici le log:
Code:

---------- Erreur de script : Pokemon_Pokedex ----------
----- Type
NoMethodError

----- Message
- ARGS - [-1]
undefined method `[]' for nil:NilClass

----- Position dans Pokemon_Pokedex
Ligne 676

----- Backtrace
Script : Pokemon_Pokedex | Ligne : 676 | Méthode : in `initialize'
Script : Pokemon_Pokedex | Ligne : 52 | Méthode : in `new'
Script : Pokemon_Pokedex | Ligne : 52 | Méthode : in `main'
Script : Main | Ligne : 49


Et le script:
Spoiler

Code:

#==============================================================================
# ■ Pokemon_Pokedex
# Pokemon Script Project - Krosk
# 18/07/07
# 07/09/08 - révision v0.7, Pokédex de Shaolan (PSP4G) simplifié et optimisé
#             (crédits : Shaolan, Slash)
# 03/01/09 - révision
#-----------------------------------------------------------------------------
# Scène modifiable
#-----------------------------------------------------------------------------
# Pokédex
#-----------------------------------------------------------------------------

module POKEMON_S
  class Pokemon_Pokedex #(Numérique)
    def initialize(index = 0, show = true)
      @index = index
      @show = show
      @table = []
      # Regional
      if POKEMON_S._DEXREG
        for id in 1..$data_pokedex.length-1
          @table[Pokemon_Info.id_bis(id)] = id
        end
        @table.shift # débarasser l'élément 0
        @table.compact!
      else
      # National
        for id in 1..$data_pokedex.length-1
          @table.push(id)
        end
      end
    end
   
    def main
      # Fenêtre principale
      # Fond
      @background = Sprite.new
      @background.bitmap = RPG::Cache.picture("PokedexSh.png")
      @background.z = 5
      @backbackground = Sprite.new
      @backbackground.bitmap = RPG::Cache.picture("PokedexShback.png")
      @backbackground.z = 0
     
      # Liste
      $game_variables[5000]["pokedex"]["vus"] = 0
      $game_variables[5000]["pokedex"]["captures"] = 0
      for i in 1...$data_pokemon.length
        $game_variables[5000]["pokedex"]["vus"] += 1 if $data_pokedex[i][0]
        $game_variables[5000]["pokedex"]["captures"] += 1 if $data_pokedex[i][1]
      end
      @pokemon_list = POKEMON_S::Pokemon_List.new(@table, @list, @index, @show)
      @pokemon_list.active = true
     
      # Vu/Capture
      #@pokemon_amount = Window_Base.new(27 - 16, 432 - 16, 420 + 32, 48 + 32)
      @pokemon_amount = Window_Base.new(27 - 16, 70, 155, 400)
      @pokemon_amount.contents = Bitmap.new(155-32, 400-32)
      #@pokemon_amount.contents = Bitmap.new(420, 48)
      @pokemon_amount.contents.font.name = $fontface
      @pokemon_amount.contents.font.size = $fontsize
      @pokemon_amount.contents.font.italic = true
      @pokemon_amount.opacity = 0
      #@pokemon_amount.contents.draw_text(0, 0, 420, 48, "VUS " + viewed, 0)
      #@pokemon_amount.contents.draw_text(0, 0, 420, 48, "CAPTURéS " + captured.to_s, 2)
      @pokemon_amount.contents.draw_text(0, 0, 155-32, 35, "VUS", 1)# + viewed, 1)
      @pokemon_amount.contents.draw_text(0, 78, 155-32, 35, "PRIS", 1)# + captured.to_s, 1)
      rect = Rect.new (32, 35, 120, 3)
      @pokemon_amount.contents.fill_rect(rect, Color.new(0, 0, 0))
      rect = Rect.new (30, 33, 120, 3)
      @pokemon_amount.contents.fill_rect(rect, Color.new(255, 255, 255))
      rect = Rect.new (32, 78 + 35, 120, 3)
      @pokemon_amount.contents.fill_rect(rect, Color.new(0, 0, 0))
      rect = Rect.new (30, 78 + 33, 120, 3)
      @pokemon_amount.contents.fill_rect(rect, Color.new(255, 255, 255))
      string_viewed = sprintf("% 3s", $game_variables[5000]["pokedex"]["vus"].to_s)
      string_captured = sprintf("% 3s", $game_variables[5000]["pokedex"]["captures"].to_s)
      @pokemon_amount.contents.draw_text(0, 37, 155-32, 35, string_viewed, 1)
      @pokemon_amount.contents.draw_text(0, 78 + 37, 155-32, 35, string_captured, 1)
     
      @pokemon_list.update
      @pokemon_list.refresh
      # Fin Fenêtre principale

     
      Graphics.transition
      loop do
        Graphics.update
        Input.update
        update
        if $scene != self
          break
        end
      end
      Graphics.freeze
      @pokemon_list.dispose
      @pokemon_amount.dispose
      @background.dispose
      @backbackground.dispose
    end
   
    def update
      @pokemon_list.update
      @index = @pokemon_list.index
     
      if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        $scene = POKEMON_S::Pokemon_Menu.new(0)
        return
      end
     
      if Input.trigger?(Input::C)
        if @show
          pokemon_id = @table[@index]
        else
          pokemon_id = @list[@index]
        end
        seen = $data_pokedex[pokemon_id][0]
        if seen == false
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $scene = Pokemon_Detail.new(pokemon_id, @show)
        return
      end
     
      if Input.trigger?(Input::A)
        @show = @show ? false : true
        @index = 0
        @pokemon_list.dispose
        @pokemon_list = POKEMON_S::Pokemon_List.new(@table, @list, @index, @show)
        @pokemon_list.active = true
        @pokemon_list.update
        @pokemon_list.refresh
      end
    end
  end
 
 
  class Pokemon_Detail
    def initialize(id, show, mode = 0, appel = "pkdx", z_level = 100)
      @id = id
      @show = show
      @mode = mode
      @appel = appel
      @z_level = z_level
      @table = []
      # Regional
      if POKEMON_S._DEXREG
        for id in 1..$data_pokedex.length-1
          @table[Pokemon_Info.id_bis(id)] = id
        end
        @table.shift # débarasser l'élément 0
        @table.compact!
      else
      # National
        for id in 1..$data_pokedex.length-1
          @table.push(id)
        end
      end
    end
   
    def main
      # Fenêtre détail
      @background = Sprite.new
      @background.bitmap = RPG::Cache.picture("PokedexShfond1.png")
      @background.z = @z_level
     
      # Sprite
      @pokemon_sprite = Sprite.new
      @pokemon_sprite.x = 26
      @pokemon_sprite.y = 71
      @pokemon_sprite.z = 10 + @z_level
      @pokemon_sprite.visible = false
     
      # Identité
      @data_window = Window_Base.new(233-16, 76-16, 370+32, 196+32)
      @data_window.contents = Bitmap.new(370, 196)
      color = Color.new(60,60,60)
      @data_window.contents.font.name = $fontface
      @data_window.contents.font.size = $fontsizebig
      @data_window.contents.font.color = color
      @data_window.opacity = 0
      @data_window.z = 10 + @z_level
      @data_window.visible = false
     
      # Descr
      @text_window = Window_Base.new(60 - 16, 252 - 16 + 51, 550 + 32, 160 + 32)
      @text_window.contents = Bitmap.new(550 , 160)
      @text_window.contents.font.name = $fontface
      @text_window.contents.font.size = $fontsize
      @text_window.contents.font.color = color
      @text_window.opacity = 0
      @text_window.z = 10 + @z_level
      @text_window.visible = false
     
      @list = []
      for i in 0..@table.length-1
        if $data_pokedex[@table[i]][0]
          @list.push(@table[i])
        end
      end
     
      if @mode == 0
        filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
        if FileTest.exist?(filename)
          Audio.se_play(filename)
        end
      end
     
      data_refresh
      @background.visible = false
      @pokemon_sprite.visible = false
      @data_window.visible = false
      @text_window.visible = false
      case @mode
      when 0
        @background.visible = true
        @pokemon_sprite.visible = true
        @data_window.visible = true
        @text_window.visible = true
      when 1
        refresh_zone
      when 2
        refresh_cri
      when 3
        refresh_tail
      end
       
      Graphics.transition
      loop do
        Graphics.update
        Input.update
        update
        if $scene != self
          break
        end
      end
      Graphics.freeze
      @background.dispose
      @data_window.dispose
      @pokemon_sprite.dispose
      @text_window.dispose
    end
   
    def update
      case @appel
      when "pkdx"
        if Input.trigger?(Input::B)
          $game_system.se_play($data_system.cancel_se)
          Graphics.freeze
          hide
          if @show
            index = @table.index(@id)
          else
            index = @list.index(@id)
          end
          $scene = Pokemon_Pokedex.new(index, @show)
          return
        end
       
        if Input.trigger?(Input::C) and @mode == 1
          Graphics.freeze
          hide
          $game_system.se_play($data_system.decision_se)
          $game_temp.map_temp = ["PKDX", false, $game_map.map_id, $game_player.x,
            $game_player.y, $game_player.direction, $game_player.character_name,
            $game_player.character_hue, $game_player.step_anime,
            $game_system.menu_disabled, POKEMON_S::_MAPLINK, @id, @show]
          $game_temp.transition_processing = true
          $game_temp.transition_name = ""
          POKEMON_S::_MAPLINK = false
          $scene = Scene_Map.new
          $game_map.setup(POKEMON_S::_WMAPID)
          $game_player.moveto(9, 7)
          $game_map.autoplay
          $game_map.update
          return
        end
       
        if Input.trigger?(Input::C) and @mode == 2
          filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
          if FileTest.exist?(filename)
            Audio.se_play(filename)
          end
        end
       
        if Input.trigger?(Input::DOWN)
          Graphics.freeze
          index = @list.index(@id)
          if @id == @list.last
            @id = @list.first
          else
            @id = @list[index+1]
          end
          hide
          Graphics.transition(5)
          Graphics.freeze
          @mode = 0
          data_refresh
          Graphics.transition
          filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
          if FileTest.exist?(filename)
            Audio.se_play(filename)
          end
        end
       
        if Input.trigger?(Input::UP)
          Graphics.freeze
          index = @list.index(@id)
          if @id == @list.first
            @id = @list.last
          else
            @id = @list[index-1]
          end
          hide
          Graphics.transition(5)
          Graphics.freeze
          @mode = 0
          data_refresh
          Graphics.transition
          filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
          if FileTest.exist?(filename)
            Audio.se_play(filename)
          end
        end
       
        if Input.trigger?(Input::A) and @pokemon_sprite.visible == false
          @show = @show ? false : true
          @index = 0
          @pokemon_list.dispose
          @pokemon_list = POKEMON_S::Pokemon_List.new(@list, @index, @show)
          @pokemon_list.active = true
          @pokemon_list.update
          @pokemon_list.refresh
        end
       
        if Input.trigger?(Input::LEFT)
          if @mode > 0
            Graphics.freeze
            hide
            #Graphics.transition(1)
            @mode -= 1
            #Graphics.freeze
            case @mode
            when 0
              data_refresh
            when 1
              refresh_zone
            when 2
              refresh_cri
            when 3
              refresh_tail
            end
            Graphics.transition(1)
          end
        end
       
        if Input.trigger?(Input::RIGHT)
          if @mode < 3
            Graphics.freeze
            hide
            #Graphics.transition(1)
            @mode += 1
            #Graphics.freeze
            case @mode
            when 0
              data_refresh
            when 1
              refresh_zone
            when 2
              refresh_cri
            when 3
              refresh_tail
            end
            Graphics.transition(1)
          end
        end
      when "map"
        if Input.trigger?(Input::B)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::C)
          $game_system.se_play($data_system.cancel_se)
          Graphics.freeze
          $scene = Scene_Map.new
          return
        end
       
        if Input.trigger?(Input::DOWN)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::UP)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::A)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::LEFT)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::RIGHT)
          $game_system.se_play($data_system.buzzer_se)
        end
      when "combat"
        if Input.trigger?(Input::B)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::C)
          $game_system.se_play($data_system.cancel_se)
          Graphics.freeze
          self.dispose
          Graphics.transition
          return
        end
       
        if Input.trigger?(Input::DOWN)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::UP)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::A)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::LEFT)
          $game_system.se_play($data_system.buzzer_se)
        end
       
        if Input.trigger?(Input::RIGHT)
          $game_system.se_play($data_system.buzzer_se)
        end
      end
    end
   
    def hide
      @background.visible = false
      @pokemon_sprite.visible = false
      case @mode
      when 0
        @data_window.visible = false
        @text_window.visible = false
      when 1
        @text.dispose
      when 2
        @data_window.visible = false
        @text_window.visible = false
      when 3
        @trainer.dispose
        @pokemon_new_sprite.dispose
        @text.dispose
      end
    end
       
   
    def data_refresh
      @background.bitmap = RPG::Cache.picture("PokedexShfond1.png")
      @pokemon_sprite.x = 26
      @pokemon_sprite.y = 71
      @data_window.x = 233-16
      @data_window.y = 76-16
      @pokemon_sprite.visible = true
      @background.visible = true
      @data_window.visible = true
      @text_window.visible = true
     
      @pokemon = $data_pokemon[@id]
      show = $data_pokedex[@id][1]
      ida = sprintf("%03d", @id)
      @pokemon_sprite.bitmap = RPG::Cache.battler("Front_Male/" + ida + ".png", 0)

      if POKEMON_S._DEXREG
        name = "N." + sprintf("%03d", Pokemon_Info.id_bis(@id)) + "  " + @pokemon[0]
      else
        name = "N." + ida + "  " + @pokemon[0]
      end

      if show # Descr accessible
        species = @pokemon[9][1]
        height_data = @pokemon[9][2]
        weight = @pokemon[9][3]
      else
        species = "???"
        height_data = "???"
        weight = "???  "
      end
     
      @data_window.contents.clear
      @data_window.contents.draw_text(15, 0, 370, 47, name)
      @data_window.contents.draw_text(15, 41, 370, 47, "Pokémon " + species)
      @data_window.contents.draw_text(41, 95, 230, 47, "Taille: ")
      @data_window.contents.draw_text(41, 95, 212, 47, height_data, 2)
      @data_window.contents.draw_text(41, 148, 230, 47, "Poids: ")
      @data_window.contents.draw_text(41, 148, 230, 47, weight, 2)
     
      @text_window.contents.clear
      if show
        text = @pokemon[9][0]
        string = string_builder(text, 51)
        string1 = string[0]
        string2 = string[1]
        string3 = string[2]
        string4 = string[3]
        @text_window.contents.draw_text(0, 0, 550, 40, string1)
        @text_window.contents.draw_text(0, 40, 550, 40, string2)
        @text_window.contents.draw_text(0, 80, 550, 40, string3)
        @text_window.contents.draw_text(0, 120, 550, 40, string4)
      end
    end
   
    def refresh_zone
      @background.bitmap = RPG::Cache.picture("PokedexShfond2.png")
      @background.visible = true
      @text = Window_Base.new(32-16, 223-16, 576+32, 47+32)
      @text.contents = Bitmap.new(576, 47)
      @text.contents.font.name = $fontface
      @text.contents.font.size = $fontsizebig
      @text.contents.font.color = Color.new(60,60,60)
      @text.contents.draw_text(0, 0, 576, 47, "OUVRIR LA CARTE", 1)
      @text.opacity = 0
    end
   
    def refresh_cri
      @background.bitmap = RPG::Cache.picture("PokedexShfond3.png")
      @pokemon_sprite.visible = true
      @background.visible = true
      @data_window.visible = true
      @pokemon_sprite.x = 51
      @pokemon_sprite.y = 75
      @data_window.x = 211 - 16
      @data_window.y = 75 - 5
      @data_window.contents.clear
      @data_window.contents.draw_text(0, 0, 339, 47, "CRI DE")
      @data_window.contents.draw_text(0, 41, 339, 47, @pokemon[0])
    end
   
    def refresh_tail
      @background.bitmap = RPG::Cache.picture("PokedexShfond4.png")
      @background.visible = true
      @pokemon_new_sprite = Sprite.new
      ida = sprintf("%03d", @id)
      @pokemon_new_sprite.bitmap = RPG::Cache.battler("Front_Male/" + ida + ".png", 0)
      @pokemon_new_sprite.color = Color.new(0, 0, 0, 255)
     
      @trainer = Sprite.new
      @trainer.bitmap = RPG::Cache.battler("trainer000.png", 0)
      @trainer.color = Color.new(0, 0, 0, 255)
     
      sizes = []
      for sprite in [@trainer, @pokemon_new_sprite]
        i = j = 0
        while sprite.bitmap.get_pixel(i,j).alpha == 0
          i += 1
          if i > sprite.bitmap.width
            i = 0
            j += 1
          end
        end
        up_pix = j
        i = 0
        j = sprite.bitmap.height
        while sprite.bitmap.get_pixel(i,j).alpha == 0
          i += 1
          if i > sprite.bitmap.width
            i = 0
            j -= 1
          end
        end
        down_pix = j
        sizes.push( down_pix-up_pix + 0.0 )
        sizes.push( down_pix )
      end
     
      if $data_pokemon[@id][9][2].to_f > 1.50
        zoom_pok = 1.00
        zoom_dre = 1.50 / $data_pokemon[@id][9][2].to_f * sizes[2] / sizes[0]
      else
        zoom_pok = $data_pokemon[@id][9][2].to_f/1.50 * sizes[0] / sizes[2]
        zoom_dre = 1.00
      end
     
      @pokemon_new_sprite.ox = @pokemon_new_sprite.bitmap.width/2
      @pokemon_new_sprite.oy = sizes[3]#@pokemon_new_sprite.bitmap.height
      @pokemon_new_sprite.x = 141 + @pokemon_new_sprite.ox
      @pokemon_new_sprite.y = 92 + 160#@pokemon_new_sprite.oy
     
      @trainer.ox = @trainer.bitmap.width/2
      @trainer.oy = sizes[1]#@trainer.bitmap.height
      @trainer.x = 339 + @trainer.ox
      @trainer.y = 92 + 160 #@trainer.oy
     
      @pokemon_new_sprite.zoom_x = @pokemon_new_sprite.zoom_y = zoom_pok
      @trainer.zoom_x = @trainer.zoom_y = zoom_dre
     
      @text = Window_Base.new(32-16, 367-16, 576+32, 47+32)
      @text.contents = Bitmap.new(576, 47)
      @text.contents.font.name = $fontface
      @text.contents.font.size = $fontsizebig
      @text.contents.font.color = Color.new(60,60,60)
      @text.contents.draw_text(0, 0, 576, 47, "TAILLE COMPARE A #{Player.name}", 1)
      @text.opacity = 0
    end
   
    def string_builder(text, limit)
      length = text.length
      full1 = false
      full2 = false
      full3 = false
      full4 = false
      string1 = ""
      string2 = ""
      string3 = ""
      string4 = ""
      word = ""
      for i in 0..length
        letter = text[i..i]
        if letter != " " and i != length
          word += letter.to_s
        else
          word = word + " "
          if (string1 + word).length < limit and not(full1)
            string1 += word
            word = ""
          else
            full1 = true
          end
         
          if (string2 + word).length < limit and not(full2)
            string2 += word
            word = ""
          else
            full2 = true
          end
         
          if (string3 + word).length < limit and not(full3)
            string3 += word
            word = ""
          else
            full3 = true
          end
         
          if (string4 + word).length < limit and not(full4)
            string4 += word
            word = ""
          else
            full4 = true
          end
        end
      end
      return [string1, string2, string3, string4]
    end
   
   
  end
 
 
  class Pokemon_List < Window_Selectable
    def initialize(table, id_list = [], menu_index = 0, show = true)
      # show montre les pokémons intermédiaires
      # id_list liste des pokémons vu/attrapés
      #super(50-16, 48-16, 560+32, 387+32, 43)
      @hauteur = 35
      super(340, 32, 560+32, 384+32, @hauteur)#(640 - 320, 48-16, 560+32, 387+32, 43)
      @index = menu_index
      @table = table
      @id_list = id_list
      @last = id_list[-1]
      @show = show
      self.opacity = 0
      if @show
        value = @table.index(@last)
        value += 1 if value != nil
      else
        value = id_list.length
      end
      if value == nil
        value = 1
        @last = 1
      end
      @flag_up = 0
      @flag_down = 0
      @item_max = value
      @pokeball = Sprite.new
      @pokeball.bitmap = RPG::Cache.picture("PokedexShBall.png")
      @pokeball.ox = 150
      @pokeball.oy = 150
      @pokeball.y = 240
      @pokeball.z = 6 + @z_level
      self.contents = Bitmap.new(width - 32, value * @hauteur)
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
      @sprite_array = []
      for i in 1..5
        sprite = Sprite.new
        sprite.z = 4 + @z_level
        sprite.x = 185
        sprite.y = -4 + 160*(i-2)
        @sprite_array.push(sprite)
      end
      sprite_refresh
      @pokeball.angle = - @index * 22.5
    end
   
    def dispose
      super
      for sprite in @sprite_array
        sprite.dispose
      end
      @pokeball.dispose
    end
   
    def update
      if @flag_up > 0
        @flag_up -= 1
        self.oy -= 7
        #self.oy += 1 if @flag_up == 0
        @pokeball.angle += 4.5
        for sprite in @sprite_array
          sprite.y += 32
        end
        if @flag_up == 0
          @sprite_array.unshift(@sprite_array.pop)
          @sprite_array[0].y -= 800
          sprite_refresh
        end
        return
      end
      if @flag_down > 0
        @flag_down -= 1
        self.oy += 7
        #self.oy -= 1 if @flag_down == 0
        @pokeball.angle -= 4.5
        for sprite in @sprite_array
          sprite.y -= 32
        end
        if @flag_down == 0
          @sprite_array.push(@sprite_array.shift)
          @sprite_array[4].y += 800
          sprite_refresh
        end
        return
      end
      if self.active and @item_max > 0 and @index >= 0
        if Input.repeat?(Input::DOWN)
          if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
             @index < @item_max - @column_max
            $game_system.se_play($data_system.cursor_se)
            @index = (@index + @column_max) % @item_max
            @flag_down += 5
            return
          end
        end
       
        if Input.repeat?(Input::UP)
          if (@column_max == 1 and Input.trigger?(Input::UP)) or
             @index >= @column_max
            $game_system.se_play($data_system.cursor_se)
            @index = (@index - @column_max + @item_max) % @item_max
            @flag_up += 5
            return
          end
        end

        if Input.repeat?(Input::RIGHT)
          if @column_max >= 2 and @index < @item_max - 1
            $game_system.se_play($data_system.cursor_se)
            @index += 1
          end
        end

        if Input.repeat?(Input::LEFT)
          if @column_max >= 2 and @index > 0
            $game_system.se_play($data_system.cursor_se)
            @index -= 1
          end
        end

        if Input.repeat?(Input::R)
          if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
            $game_system.se_play($data_system.cursor_se)
            @index = [@index + self.page_item_max - 2, @item_max - 1].min
            self.top_row += self.page_row_max
            sprite_refresh
          end
        end

        if Input.repeat?(Input::L)
          if self.top_row > 0
            $game_system.se_play($data_system.cursor_se)
            @index = [@index - self.page_item_max + 2, 0].max
            self.top_row -= self.page_row_max
            sprite_refresh
          end
        end
      end
     
      if self.active and @help_window != nil
        update_help
      end
     
      update_cursor_rect
   
      if @index < 6 and self.oy != 35 + (4-@index) * @hauteur
        self.oy = -(35 + (4-@index) * @hauteur)
      end
    end
   
    def update_cursor_rect
      self.cursor_rect.empty
      row = @index / @column_max
      if row < self.top_row + 5
        self.top_row = row - 5
      end
      if row > self.top_row + (self.page_row_max - 5)
        self.top_row = row - (self.page_row_max - 5)
      end
    end
   
    def sprite_refresh
      for i in 0..4
        if not @show and $data_pokedex[@id_list[(@index+i-2)%@id_list.length]][0]
          @sprite_array[i].bitmap = RPG::Cache.battler("Front_Male/#{sprintf('%03d', @id_list[(@index+i-2)%@id_list.length])}.png", 0)
        elsif @show
          if $data_pokedex[@table[(@index+i-2)%(@table.index(@last)+1)]][0] #(@index+i-2)%@last + 1)
            @sprite_array[i].bitmap = RPG::Cache.battler("Front_Male/#{sprintf('%03d', @table[(@index+i-2)%@last])}.png", 0)
          else
            @sprite_array[i].bitmap = RPG::Cache.battler("Front_Male/000.png", 0)
          end
        end
      end
    end
   
    def refresh
      self.contents.clear
      normal_color = Color.new(60,60,60)
      self.contents.font.color = normal_color
      i = 0 # désigne l'entrée
     
      for value in @table
        if @id_list.include?(value)
          i += 1
          ida = sprintf("%03d", @table.index(value) + 1)
          string = "  N." + ida
          self.contents.draw_text(10, @hauteur * (i-1), 480, @hauteur, string)
          string = Pokemon_Info.name(value)
          self.contents.draw_text(110, @hauteur * (i-1), 300, @hauteur, string)
          if $data_pokedex[value][1]
            bitmap = RPG::Cache.picture("Pokedexball.png")
            self.contents.blt(80, 5 + @hauteur * (i-1), bitmap, Rect.new(0, 0, 24, 24))
          end
        elsif @show and i < @table.index(@last) + 1
          i += 1
          ida = sprintf("%03d", @table.index(value) + 1)
          string = "  N." + ida
          self.contents.draw_text(10, @hauteur * (i-1), 480, @hauteur, string)
          string = "-------"
          self.contents.draw_text(110, @hauteur * (i-1), 300, @hauteur, string)
        elsif i >= @table.index(@last) + 1
          break
        else
          next
        end
       
      end
    end
   
  end
end



Merci beaucoup,
TouzaxA.

Posté par Pαlвσlѕку le 28 Juil - 09:05 (2012)
Il te faut au moins un Pokémon pour accéder au Pokédex.

Posté par TouzaxA le 28 Juil - 09:15 (2012)
Et mon personnage en a un...

Posté par Pαlвσlѕку le 28 Juil - 10:16 (2012)
Tu as quelle version de PSP ?

Posté par TouzaxA le 28 Juil - 10:24 (2012)
J'utilise PSP 4G+ (correctif 4)

Posté par Pαlвσlѕку le 28 Juil - 10:27 (2012)
PSP 4G+ a toujours été un peu instable.

Je te propose une solution, qui j'espère fonctionnera.

Ajoute après ceci :
Code:
# National 
        for id in 1..$data_pokedex.length-1 
          @table.push(id) 
        end 
      end

Ces lignes de code :

Code:
      @list = []
      for i in 0..@table.length-1
        if $data_pokedex[@table[i]][0]
          @list.push(@table[i])
        end
      end


PS : Cite mon message pour récupérer le code pour ne pas avoir d'erreur de syntaxe.

Posté par TouzaxA le 28 Juil - 10:38 (2012)
Maintenant, j'ai une erreur à la ligne 703:
Code:

---------- Erreur de script : Pokemon_Pokedex ----------
----- Type
TypeError

----- Message
nil can't be coerced into Fixnum

----- Position dans Pokemon_Pokedex
Ligne 703

----- Backtrace
Script : Pokemon_Pokedex | Ligne : 703 | Méthode : in `+'
Script : Pokemon_Pokedex | Ligne : 703 | Méthode : in `initialize'
Script : Pokemon_Pokedex | Ligne : 58 | Méthode : in `new'
Script : Pokemon_Pokedex | Ligne : 58 | Méthode : in `main'
Script : Main | Ligne : 49

Posté par Pαlвσlѕку le 28 Juil - 10:51 (2012)
Tu peux me citer la ligne s'il te plait.

Posté par TouzaxA le 28 Juil - 10:52 (2012)
Voici la ligne:
Code:
@pokeball.z = 6 + @z_level

Posté par Pαlвσlѕку le 28 Juil - 10:58 (2012)
Après les lignes :
Code:
  class Pokemon_List < Window_Selectable 
    def initialize(table, id_list = [], menu_index = 0, show = true) 
      # show montre les pokémons intermédiaires 
      # id_list liste des pokémons vu/attrapés 
      #super(50-16, 48-16, 560+32, 387+32, 43) 
      @hauteur = 35 
      super(340, 32, 560+32, 384+32, @hauteur)#(640 - 320, 48-16, 560+32, 387+32, 43) 
      @index = menu_index 
      @table = table 
      @id_list = id_list 
      @last = id_list[-1] 
      @show = show

Ajoute cette ligne :
Code:
@z_level = 100

Posté par TouzaxA le 28 Juil - 11:11 (2012)
Cela fonctionne !
Merci !

PS: Par contre, le pokedex s'arrête à 390...