Sujet n°2741
Posté par Dark' le 31 Jan - 12:08 (2009)
Titre : Erreur de Script - Méthode non reconnue <OK>
Voilà, j'ai modifier le script Scene_Map dans le but de faire apparaitre en permanence sur la carte certaines informations sur les Pokémons.
Pour sortir les informations, j'ai utiliser la technique suivante :
Code:


$game_variables[numero_variable][/td] = $pokemon_party.actors[numero_du_pokemon - 1].option


 En remplacant option par:

id : ID du Pokémon
hp : PV
max_hp : PV Max

Voici les lignes de code de Scene_Map que j'ai modifié en test. Fonction d'affichage de PV MAX du Pokémon 1 :

Code:


  def update
    loop do
      $game_map.update
      $game_system.map_interpreter.update
      $game_player.update
      $game_system.update
      $game_screen.update
      unless $game_temp.player_transferring
        break
      end
      transfer_player
      if $game_temp.transition_processing
        break
      end
    end
-->   @pokemon_1_hpmax = POKEMON_S::Pokemon_Window_Help.new
-->   @pokemon_1_hpmax.x = 600
-->   @pokemon_1_hpmax.y = 25
-->   @pokemon_1_hpmax.z = 50000
-->   @pokemon_1_hpmax.opacity = 0
-->   @pokemon_1_hpmax.dispose
-->ICI-->   $game_variables[401] = $pokemon_party.actors[0].max_hp
-->   @pokemon_1_hpmax.draw_text("\/" + $game_variables[pokemon_1_hpmax].to_s)




Les lignes concernées sont indiquées par "-->". La ligen buggante par "-->ICI-->"

Et voici le message d'erreur, ou plutôt le rapport Log.txt :

Log.txt a écrit:


---------- Erreur de script : Scene_Map ----------
----- Type
NoMethodError

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

----- Position dans Scene_Map
Ligne 83

----- Backtrace
Script : Scene_Map | Ligne : 83 | Méthode : in `alias_update'
Script : MAPPANEL | Ligne : 89 | Méthode : in `update'
Script : Scene_Map | Ligne : 25 | Méthode : in `main'
Script : Scene_Map | Ligne : 19 | Méthode : in `loop'
Script : Scene_Map | Ligne : 30 | Méthode : in `main'
Script : Main | Ligne : 53




Quelqu'un saurait-il comment faire pour parer ce bug ?

Merci d'avance à qui me répondra !

Posté par Sphinx le 31 Jan - 12:15 (2009)
t'as des pokés dans ton équipe, au moins ? Clin d'œil foireux


Sans quoi, $pokemon_party.actors[0] = nil, et de fait, $pokemon_party.actors[0].max_hp est impossible ^o^

Posté par Dark' le 31 Jan - 12:39 (2009)
Oulà !

Purée ! Pas bête !

Tu connaitrais la condition pour vérifier au préalable chacun des emplacements ?

Merci Sphinx ! 99% sûr que c'était ça !

Posté par Lén le 31 Jan - 12:45 (2009)
oui presque sur que c'est ça aussi car dans mon menu j'avais essayer d'afficher des infos sur les pokémons et tant que j'avais pas mis de condition(s) pour tester != nil ben ça plantait.
Essaye de répondre vite darkange ça m'intéresse de savoir si c'est ça qui buggait avant chez moi ! (en fait j'avais pas réfléchis a pourquoi ça marchais pas j'avais juste copié/collé des lignes de Pokemon_Menu xD).

Posté par Sphinx le 31 Jan - 13:16 (2009)
faut tester si l'index du poké dont les infos sont affichées est supérieur / égal ou non à la taille de l'équipe Clin d'œil foireux

Posté par Dark' le 31 Jan - 13:33 (2009)
Euh... tu saurais comment faire... concrètement ? ^^ *flemme*

Posté par Krosk le 31 Jan - 14:06 (2009)
tu peux encapsuler toutes tes modifications dans
Code:
if $pokemon_party.size > 0
  ...
end

avec autant de bloc nécessaires que de modifs.

En gros, on vérifie la taille de l'équipe avant de faire ça.

Posté par Sphinx le 31 Jan - 15:24 (2009)
Code:
if $pokemon_party.size >= TON_INDEX
  ...
end


j'aurais plutôt mis ca (puisque tu choisis l'index) mais je ne sais pas comment tu le définis, donc... ^_^'

Si tu le choisis en passant par le menu de l'équipe, alors ce qu'a donné krosk suffit, si c'est un évent ou n'importe quoi d'autre, alors là faut vérifier si ton index existe dans l'équipe

Posté par Dark' le 31 Jan - 15:56 (2009)
Ok, c'était bien ça !

merci beaucoup tout les deux !