Sujet n°4253
Posté par Jordan le 25 Juin - 12:58 (2009)
Titre : combat perdu = bug
Bonjour, j'ai voulu faire un test lorsque l'on perd et voici ce qui s'est passé:
(j'ai sauvegardé le point de retour au préalable dans un pokécentre...)


Je perds et voici ce qu'on m'affiche: 


Spoiler



log



Spoiler

---------- Erreur de script : Window_Base ----------
----- Type
TypeError


----- Message
cannot convert nil into String


----- Position dans Window_Base
Ligne 24


----- Backtrace
Script : Window_Base | Ligne : 24 | Méthode : in `draw_text'
Script : Window_Base | Ligne : 24 | Méthode : in `draw_text'
Script : Pokemon_Battle_Core 1 | Ligne : 592 | Méthode : in `draw_text'
Script : Pokemon_Battle_Trainer | Ligne : 701 | Méthode : in `end_battle_defeat'
Script : Pokemon_Battle_Trainer | Ligne : 423 | Méthode : in `end_battle_check'
Script : Pokemon_Battle_Core 1 | Ligne : 413 | 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








pour vous avancer je vais répondre au questions simples: non je n'ai pas déplacé les events de retour, ou j'ai sauvegardé le point retour.

Posté par Evilmad le 25 Juin - 14:17 (2009)
Je ne sais pas trop ce que c'est, il y avait des conditions de victoires ou défaite ? 

Posté par Sphinx le 25 Juin - 17:35 (2009)
Je dirai plutôt :

montre la config de ton dresseur stp ^o^ Ce qui m'intéresse bien plus particulièrement, c'est la partie où tu paramètres les données du dresseur (gains, phrases de victoire / défaite ...)


>> Ca ne te le fait QUE pour ce dresseur là où ca te le fait pour tous ? Poste moi le paramétrage de tous les dresseurs qui buggent stp =)

Posté par Jordan le 27 Juin - 11:42 (2009)
Je ne vais pas te le mettre vu que ça le fait pour tous ^^"


Edit: J AI TROUVE C EST PAR CE QUE JE MET PAS DE MESSAGES QUAND ON PERD.
Mais normalement ce n'est pas indispensable dans les jeux pokémons, les dresseurs ne disent rien quand on perds --"

Posté par Sphinx le 27 Juin - 12:30 (2009)
sisi, ils disent, parfois Clin d'œil foireux

En plus, dans le manuel, il est indiqué qu'il faut laisser des lignes vides s'il n'y a rien =)

Posté par Jordan le 27 Juin - 13:18 (2009)
je les laisse vide mais il faut impérativement sauter des lignes pour?

Posté par Sphinx le 27 Juin - 13:23 (2009)
ouaip Imbécile heureux

Lorsque le script lit une ligne vide mais existante, il lira "", en ce qui concerne les phrases de victoire / défaite. Une ligne qui n'existe pas laissera un vide (nil) à la place, dans la variable $data_trainer[...] correspondante. Et si le script est adapté pour passer l'étape si la phrase de défaite est "", il ne l'est apparemment pas si la phrase de défaite est nil =)

A l'occas, je regarderai pour corriger ces petits soucis techniques, ca me prendra quelques secondes mais là j'ai pas PSP sous les yeux (il est sur un autre ordi) donc là tout de suite je ne peux rien te donner. Remarque, je crois savoir que tu as qques connaissances en scripts, non ? Si je ne fais pas erreur, alors tu dois être en mesure d'installer ce petit contrôle =)

c'est un return ... if ... = nil (les ... c'est parce que je n'ai pas les variables en tête) juste avant le return ... contenu dans la classe Trainer_Info (méthode string_defeat ou un truc de ce genre) pour contourner ca

Posté par Jordan le 27 Juin - 20:59 (2009)
j'ai trouvé ce qu'il faut faire, si vous voulez enlever les lignes de défaites enlever ceci dans le script pokemon_battle_trainer
   
lignes 698 enlevez ce qui est après      $battle_var.result_defeat = true


def end_battle_defeat
      $battle_var.result_defeat = true

      list_string = Trainer_Info.string_defeat(@trainer_id)
      draw_text(list_string)
      wait_hit
      

Posté par Sphinx le 27 Juin - 23:19 (2009)
pas du tout ! Là tu vires l'affichage de la phrase de défaite !

Dans la classe Trainer_Info (faites ctrl + shift + F pour rechercher dans tous les scripts 'class Trainer_Info' et vous trouverez sans mal) tu dois avoir une ligne avec marqué 'def string_defeat(id)' ou qque chose d'approchant. A la ligne du dessous, tu dois avoir qque chose du genre 'return $data_trainer[id][...]'. Juste avant cette ligne, faut rajouter 'return ["", ""] if $data_trainer[id][...] == nil' et ca marchera nickel.

Posté par Jordan le 28 Juin - 09:32 (2009)
Sphinx a écrit:
pas du tout ! Là tu vires l'affichage de la phrase de défaite !





oui je vire la phrase de défaite je le sais je ne suis pas bête sphinx --"

Et c'est exactement ça que je voulais faire

Posté par Denis Bros le 3 Juil - 20:50 (2009)
sphinx tu peut donner un exemple par ce que moi je comprend que dale et sa ne marche pas.

edit: c'est j'ai reussi il faut quand même un exemple si d'autre corriger ce bug pour les nul en scripte.

Posté par Drakhaine le 14 Juil - 10:20 (2009)
 
Code:

    list_string = Trainer_Info.string_defeat(@trainer_id)
    draw_text(list_string)
    wait_hit

Et pourquoi ne pas faire simplement

 
Code:

    list_string = Trainer_Info.string_defeat(@trainer_id)
    if list_string.is_a?(String)
      draw_text(list_string)
      wait_hit
    end


comme ça vous pouvez mettre des phrases de défaites de temps en temps, mais ça ne vous oblige à rien...