Sujet n°11603
Posté par Dark_Ray le 21 Juin - 12:41 (2012)
Titre : [RESOLU] Bug sur un dresseur
Bonjour, Bonsoir,


J'avais crée un dresseur (qui fonctionnait bien à l'origine) mais depuis peu, lorsque je gagne un combat contre lui (j'ai pas essayer de perdre Petit saligaud mal élevé ) fait buger le jeu ...



Je vous met le log :


Log.txt
---------- Erreur de script : Pokemon_Battle_Trainer ----------
----- Type
NoMethodError


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


----- Position dans Pokemon_Battle_Trainer
Ligne 870


----- Backtrace
Script : Pokemon_Battle_Trainer | Ligne : 870 | Méthode : in `end_battle_victory'
Script : Pokemon_Battle_Trainer | Ligne : 385 | Méthode : in `end_battle_check'
Script : Pokemon_Battle_Core 1 | Ligne : 418 | Méthode : in `update'
Script : Pokemon_Battle_Core 1 | Ligne : 153 | Méthode : in `main'
Script : Pokemon_Battle_Core 1 | Ligne : 150 | Méthode : in `loop'
Script : Pokemon_Battle_Core 1 | Ligne : 157 | Méthode : in `main'
Script : Main | Ligne : 53




Ca m'énerve un peu parce que je devais sortir ma DEMO cette semaine --'
Faut toujours que j'ai un imprévu nom de Zeus !


Merci d'avance,
Cordialement Doc Emmett Brown

Posté par Nuri Yuri le 21 Juin - 12:58 (2012)
Le problème est que la ligne 870 n'existe pas dans Battle_Trainner ni dans PSP 0.7 ni dans PSP DS... (L'un vas jusqu'à la ligne 723, l'autre 758.)

Posté par Dark_Ray le 21 Juin - 13:40 (2012)
Oui je sais ...
J'ai modifié il y a longtemps le script ^^


Je vous donne la portion contenant l'erreur :


Pokemon_Battle_Trainer

Citation:
    #------------------------------------------------------------  
    # Fin de combat
    #------------------------------------------------------------      
    def end_battle_victory
      #Audio.bgm_fade(800)
      $battle_var.result_win = true
      #Audio.me_play("Audio/ME/fainted_jingle.mid")
      #Audio.me_play("Audio/ME/trainer_jingle.mid")
      
      if $game_switches[89] == true
      Audio.bgm_play("Audio/BGM/PkmRS-Victory3.mid")
      end
      
     if $game_switches[88] == true
      Audio.bgm_play("Audio/BGM/PkmRS_Victory4.mid")
      end
      
     if $game_switches[87] == true
      Audio.bgm_play("Audio/BGM/PkmRS_Victory2.mid")
      end
    
     if $game_switches[86] == true
      Audio.bgm_play("Audio/BGM/PkmRS_Victory1.mid")
      end
    
     if $game_switches[90] == true
      Audio.bgm_play("Audio/BGM/PkmRS-Victory6.mid")
     end
    
     if $game_switches[95] == true
      Audio.me_play("Audio/ME/47 - Galaxy Team Defeated.mp3")
     end
      
      draw_text("Vous avez battu", Trainer_Info.string(@trainer_id) + "!")
      
      @enemy_sprite.opacity = 255
      @enemy_sprite.zoom_x = 1
      @enemy_sprite.zoom_y = 1
      @enemy_sprite.visible = true
      @enemy_sprite.bitmap = RPG::Cache.battler(@start_enemy_battler, 0)
      @enemy_sprite.ox = @enemy_sprite.bitmap.width / 2
      @enemy_sprite.oy = @enemy_sprite.bitmap.height / 2
      @enemy_sprite.x = 723
      @enemy_sprite.y -= @enemy_sprite.bitmap.height / 2 + 34
      loop do
        @enemy_sprite.x -= 10
        Graphics.update
        if @enemy_sprite.x <= 464
          break
        end
      end
      wait_hit
      
      
      list_string = Trainer_Info.string_victory(@trainer_id)
      draw_text(list_string)
      wait_hit
      
      $pokemon_party.add_money($battle_var.money)
      wait(40)
      
      wait(30)
      end
      $game_system.bgm_play($game_temp.map_bgm)     #Hier c'était ici que ça bloqué
      for actor in @evolve_checklist    #Là où ça m'indique pour l'erreur du log
        info = actor.evolve_check
        if info != false
          scene = Pokemon_Evolve.new(actor, info, @z_level + 200)
          scene.main
          update_sprite
          @actor_status.refresh
        end
      end
      
      end_battle
    end
    
    
  end
  
end


Posté par Nuri Yuri le 21 Juin - 14:26 (2012)
@evolve_checklist n'est pas initialisé il faut voir si le code qui est censé l'initialiser le fait vraiment.

Posté par Dark_Ray le 21 Juin - 14:38 (2012)
Ce qui veut dire ?
Il y a un problème dans le script ? (ce qui serait bizarre puisque seul 1 de mes dresseurs fait ça)

Posté par Nuri Yuri le 21 Juin - 15:35 (2012)
Bah c'est clairement ce que dit l'erreur après ça dépends de ce qu'à lue le script et si ça se trouve c'est peut être ton équipe à ce moment là qui provoque ce bug en l'absence des données je peux rien dire de plus.

Posté par Dark_Ray le 21 Juin - 16:05 (2012)
C'est ce que je pensais que c'était l'équipe mais je ne vois pas d'où provient exactement l'erreur :/
J'ai pas envie que ça le fasse sur d'autres dresseurs pour que ça bloque les joueurs

Je vais faire une copie de script et le bidouiller un peu ...
Je finirais bien par trouver :D

EDIT : Ca me met toujours ce message d'erreur :

????? 'Pokemon_Battle_Trainer' ? 870 ??? NoMethodError ????????
undefined methode 'each' for nil:NilClass

Posté par Nuri Yuri le 21 Juin - 16:30 (2012)
Ce que tu peux faire c'est remplacer ça :
Code:
 for actor in @evolve_checklist    #Là où ça m'indique pour l'erreur du log
        info = actor.evolve_check
        if info != false
          scene = Pokemon_Evolve.new(actor, info, @z_level + 200)
          scene.main
          update_sprite
          @actor_status.refresh
        end
      end

par ça :
Code:
      if @evolve_checklist
        for actor in @evolve_checklist    #Là où ça m'indique pour l'erreur du log
          info = actor.evolve_check
          if info != false
            scene = Pokemon_Evolve.new(actor, info, @z_level + 200)
            scene.main
            update_sprite
            @actor_status.refresh
          end
        end
      end

Mais ça ne fait que cacher le problème...

Posté par Dark_Ray le 21 Juin - 16:57 (2012)
J'ai réussi à résoudre le problème je ne sais comment O.o
J'ai juste restaurer le fichier Script.rxdata du 19 Juin puis copier à nouveau le morceau que j'avais modifié et par un heureux miracle ça marche de nouveau

I'm Happy X'D
En tout cas merci quand même pour ton aide !

EDIT : J'ai trouvé d'ou venait l'erreur (enfin je pense)

sur la partie de script que j'ai mis plus haut
Citation:
#------------------------------------------------------------
# Fin de combat
#------------------------------------------------------------
def end_battle_victory
#Audio.bgm_fade(800)
$battle_var.result_win = true
#Audio.me_play("Audio/ME/fainted_jingle.mid")
#Audio.me_play("Audio/ME/trainer_jingle.mid")

if $game_switches[89] == true
Audio.bgm_play("Audio/BGM/PkmRS-Victory3.mid")
end


Il y avait une ligne qui manquait :

Citation:
#------------------------------------------------------------
# Fin de combat
#------------------------------------------------------------
def end_battle_victory
#Audio.bgm_fade(800)
exp_battle

$battle_var.result_win = true
#Audio.me_play("Audio/ME/fainted_jingle.mid")
#Audio.me_play("Audio/ME/trainer_jingle.mid")

if $game_switches[89] == true
Audio.bgm_play("Audio/BGM/PkmRS-Victory3.mid")
end


C'est le petit "exp_battle" qui est passée je ne sais où quand j'ai copié le script