Sujet n°4515
Posté par Neptis le 17 Juil - 19:14 (2009)
Titre : [OK]Erreur d'ajout du Pokemon au Pokédex!
Une autre erreur assez étrange qui est survenue.
Comment j'ai fait mon compte, bien... je teste mon
jeu et pour se faire j'ajoute un Pokemon à ma party ex: Bulbasaur et
me dirige vers des haies à Pokémons sauvages.
Un Pokemon apparait ex: Zigzagoon et je le capture avec une Master Ball.
Tout se déroule bien jusqu'à l'ajout du Pokémon dans le Pokédex. En fait, juste avant l'apparition de
la fenêtre d'information sur le Pokémon capturé, cette erreur apparait :
Ps:J'ai activé le Pokédex, donc ce bogue n'est pas dû à la non-activation de ce dernier.
_______
????? 'pokemon_Battle_Wild' ? 643 ??? ArgumentError ????????
wrong number of arguments(5 for 3)
_______
Voici la ligne en question:
scene = POKEMON_S::Pokemon_Detail.new(@enemy.id, false, 0, "combat", 9999)
-------
@ Krosk : Puisque ce bogue survient lors de l'ajout du Pokemon au Pokedex,
se pourrait-il que celui que tu as corrigé dernièrement soit dans l'erreur ?
Je n'ai pas testé avec le vieux script donc j'ignore si... bref!
Voici le rapport Log, s'il peut être utile:
---------- Erreur de script : Pokemon_Battle_Wild ----------
----- Type
ArgumentError
----- Message
wrong number of arguments(5 for 3)
----- Position dans Pokemon_Battle_Wild
Ligne 643
----- Backtrace
Script : Pokemon_Battle_Wild | Ligne : 643 | Méthode : in `initialize'
Script : Pokemon_Battle_Wild | Ligne : 643 | Méthode : in `new'
Script : Pokemon_Battle_Wild | Ligne : 643 | Méthode : in `qu_catch_pokemon'
Script : Fonctions quêtes | Ligne : 47 | Méthode : in `catch_pokemon'
Script : Pokemon_Battle_Wild | Ligne : 369 | Méthode : in `actor_item_use'
Script : Pokemon_Battle_Core 1 | Ligne : 514 | Méthode : in `phase2'
Script : Pokemon_Battle_Core 1 | Ligne : 418 | Méthode : in `update'
Script : Pokemon_Battle_Core 1 | Ligne : 161 | Méthode : in `main'
Script : Pokemon_Battle_Core 1 | Ligne : 158 | Méthode : in `loop'
Script : Pokemon_Battle_Core 1 | Ligne : 165 | Méthode : in `main'
Script : Main | Ligne : 49

Posté par Sphinx le 17 Juil - 19:27 (2009)
tu es sous quelle version PSP et tu as installé quoi comme scripts depuis ?

Posté par Neptis le 17 Juil - 19:38 (2009)
PSP 4G+Correctif 3 mais j'ai apliqué tous les autres correctifs manuellement.

Posté par Sphinx le 17 Juil - 19:44 (2009)
tu as installé quoi comme scripts extérieurs ?

Posté par Neptis le 17 Juil - 19:44 (2009)
Rien...

Posté par Sphinx le 17 Juil - 19:48 (2009)
dans le script Pokemon_Pokedex, cherche la ligne :
Code:
class Pokemon_Pokedex


et donne moi les 10 lignes après stp Imbécile heureux

Posté par Neptis le 17 Juil - 19:50 (2009)
Cette Section?:

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 
     

Posté par Sphinx le 17 Juil - 19:59 (2009)
juste après la ligne :
Code:
class Pokemon_Details


t'as bien :
Code:
def initialize(id, show, mode = 0, appel = "pkdx", z_level = 100)

?

Posté par Neptis le 17 Juil - 20:01 (2009)
Non... J'ai ça:

  class Pokemon_Detail 
    def initialize(id, show, mode = 0) 
      @id = id 
      @show = show 
      @mode = mode 
      @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

Posté par Sphinx le 17 Juil - 20:19 (2009)
t'es sur d'avoir le script Pokemon_Pokedex d'origine ? :?


Celui contenu dans le topic de corrections manuelles est correct pourtant... Bref, reprends ce script :

Code
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

Posté par Neptis le 17 Juil - 20:22 (2009)
Je t'assure que j'ai celui que Krosk a corrigé hier, après que j'ai repéré une erreur. Mollasse enragé

Bon je teste ton script et reviens avec une réponse. Imbécile heureux

Posté par Neptis le 17 Juil - 20:29 (2009)
Le script que tu viens de me donner est celui que Krosk à corrigé hier sauf que l'erreur à été déplacé: Ya une erreur à la ligne 198!

Voir le topic en question:
./4497-Erreur-Syntax-dans-le-Script-du-…
L'erreur que j'obtiens maintenant est de même augure qu'auparavant. sauf à la ligne 198^^

Posté par Krosk le 17 Juil - 21:02 (2009)
J'ai modifié le script que Sphinx t'a envoyé. Il ne s'agit pas d'une erreur de script, mais plutot d'une erreur du forum qui modifie le code de nos scripts. Récupère donc sa version, qui est adaptée pour PSP4G+.

En effet, celui que j'ai corrigé hier n'est que pour PSPv0.7...

Posté par Sphinx le 17 Juil - 21:12 (2009)
rapport de log du nouveau bug ?

>> la ligne 198 c celle là chez moi :
Code:
for i in 0.. @table.length-1

C'est la même chez toi ?

Posté par Krosk le 17 Juil - 21:14 (2009)
C'est le problème du .. @ qui devient ..@ (mailto), Sphinx. Je viens de modifier ton script pour le faire disparaitre, donc il avait juste un syntax error très probablement.

Posté par Neptis le 18 Juil - 20:12 (2009)
Vos efforts sont appréciés, mais je rencontre un nouveau problème de même augure. En effet, je viens de récuré le script que tu as (Krosk) édité sur le post de Sphinx et voici
ce que j'obtiens à l'ouverture du Pokédex :

????? 'Pokemon_Pokedex' ? 676 ??? NoMethodError ????????
undefined method '[]' for nil:NilClass

La ligne en question:     @last = id_list[-1] 



______

Résolu pour l'instant, merci à Changli et Empire.

Posté par Sphinx le 19 Juil - 08:18 (2009)
Code
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, z_level = 100)
      @z_level = z_level
      @index = index
      @show = show
      @table = []
      @list = []
      # Regional
      if POKEMON_S._DEXREG
        for id in 1..$data_pokedex.length-1
          @list.push(Pokemon_Info.id_bis(id)) if $data_pokedex[id][0]
          @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
          @list.push(id) if $data_pokedex[id][0]
          @table.push(id)
        end
      end
    end
   
    def main
      # Fenêtre principale
      # Fond
      @background = Sprite.new
      @background.bitmap = RPG::Cache.picture("PokedexSh.png")
      @background.z = @z_level + 5
      @backbackground = Sprite.new
      @backbackground.bitmap = RPG::Cache.picture("PokedexShback.png")
      @backbackground.z = @z_level
     
      # 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, @z_level)
      @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, @z_level)
        @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, @z_level)
          @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, z_level = 100)
      # 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)
      @z_level = z_level
      @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.z = @z_level + 50
      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


Imbécile heureux Cette fois, je l'ai testé à 100% (en mode tronqué et non tronqué, passage d'une page du pokédex à l'autre) et je n'ai relevé aucun bug ! Imbécile heureux En outre, histoire d'éviter des bugs, j'ai mis un espace entre chaque . et @ ^o^