Sujet n°1654
Posté par Speed le 2 Sep - 08:16 (2008)
Titre : Erreur d'argument et impossibilité d'ouvrir le menu Débug
Me voilà plutôt embêté avec deux bugs que je ne sais pas localiser.

Erreur d'Argument :



Selon les bugs connus, cela viendrait d'une erreur dans le fichier pokémon_data, mais j'ai vérifié plusieurs fois et ce n'est pas le cas. Je tiens aussi à préciser que cela se produit lors de l'utilisation du script 'draw_choice'.
Et malheureusement, RMXP ne pointe aucune ligne de script, ni même un script.


?????????????????

Autre bug lorsque j'essaye d'ouvrir le menu Débug, une fenêtre m'affiche ça :




Que faire ?

Merci d'avance.

Posté par Krosk le 2 Sep - 09:40 (2008)
Dans le script config panel, colle ce morceau de code :
Code:
module EXC
  def self.error_handler(exception, file_arg = nil)
    if exception.type == SystemExit
      return
    end
   
    if exception.message == "" # Reset
      raise
    end
   
    script = load_data("Data/Scripts.rxdata")
   
    source = script[exception.backtrace[0].split(":")[0].sub("Section", "").to_i][1]
    source_line = exception.backtrace[0].split(":")[1]
   
    if file_arg != nil
      file = file_arg
      source = file.path
    end
    if source == "Interpreter Bis" and source_line == "444"
      source = "évènement"
    end
     
    print("Erreur dans le script #{source}, inspectez le rapport Log.txt.")
   
    logfile = File.open("Log.txt", "w")
   
    # Entete
    logfile.write("---------- Erreur de script : #{source} ----------\n")
   
    # Type
    logfile.write("----- Type\n")
    logfile.write(exception.type.to_s + "\n\n")
   
    # Message
    logfile.write("----- Message\n")
    if exception.type == NoMethodError
      logfile.write("- ARGS - #{exception.args.inspect}\n")
    end
    logfile.write(exception.message + "\n\n")
   
    # Position en fichier
    if file_arg != nil
      logfile.write("----- Position dans #{file.path}\n")
      logfile.write("Ligne #{file.lineno}\n")
      logfile.write(IO.readlines(file.path)[file.lineno-1] + "\n")
    elsif source == "évènement"
      logfile.write("----- Position de l'évènement\n")
      logfile.write($running_script + "\n\n")
    else
      logfile.write("----- Position dans #{source}\n")
      logfile.write("Ligne #{source_line}\n\n")
    end
   
    # Backtrace
    logfile.write("----- Backtrace\n")   
    for trace in exception.backtrace
      location = trace.split(":")
      script_name = script[location[0].sub("Section", "").to_i][1]
      logfile.write("Script : #{script_name} | Ligne : #{location[1]}")
      if location[2] != nil
        logfile.write(" | Méthode : #{location[2]}")
      end
      logfile.write("\n")
    end
    logfile.close
   
    raise
  end
end


A la fin du script main, colle les 2 lignes suivantes
Code:
rescue Exception => exception
  EXC::error_handler(exception)


juste avant
Code:
rescue Errno::ENOENT




Ca va générer un rapport de bug pour l'un ou les 2 bugs, que tu va me copier coller ici.


Pour le bug du draw_choice, tu l'utilise où?

Posté par Sphinx le 2 Sep - 09:55 (2008)
le "?????????????????????", moi ca me le faisait avant, lorsque l'ordi devait trop réfléchir Clin d'œil foireux La plupart du temps, redémarrer le jeu 2-3 fois suffisait =)


Pour le second, ca m'est aussi déjà arrivé, tu as utilisé une commande scriptée qui nécessite aucun argument dans un évent / script qui se déclenche juste avant le bug, & tu y as intégré 2 arguments. Possible que le système que tu as n'aime pas l'utilisation de draw_choice avec des arguments différents ?

Posté par Krosk le 2 Sep - 10:38 (2008)
Oui c'est fort possible, je sais qu'à une époque, il y avait un draw_choice parmis les autres qui ne prenait pas d'arguments. Ca dépend donc de l'endroit ou il la utilisé.

Posté par Speed le 2 Sep - 18:29 (2008)
Pour le bug du menu Débug, j'ai réussi à l'ouvrir, Sphinx avait sûrement raison, il se produit lorsqu'il y a trop de trucs à calculer en même temps, et pour cause, je l'utilisais à chaque fois lors de l'intro avec toutes les images à la fois. Mais maintenant il me le fait lors d'une MAJ BBD... Ce qui est tout aussi dérangeant.
J'ai donc copié ton code, je l'ai mit à la fin du script Config Panel, je ne savais pas où le mettre sinon.
Est-ce la bonne place ? Parce que je n'ai aucun rapport de bug qui est sorti. Je suppose qu'il devait apparaître dans le dossier data..?

Pour le bug d'argument, voici le début de l'event où il se trouve :




C'est le premier choix, pour demander le genre du héros.

Posté par Pαlвσlѕку le 2 Sep - 19:55 (2008)
C'est bien bizarre en effet. Mais le script draw_choice mais sans ("Oui, Non Merci)

Posté par Krosk le 2 Sep - 22:41 (2008)
Le rapport de bug est censé etre écrit dans le dossier du jeu, sous le nom Log.txt. Mais si durant le jeu, on ne ta rien dit, c'est que le bug n'a pas été généré, OU c'est un bug comme le tien (manque de ressources).

En fait, je suis interessé par ce bug que tu as. Tu vois dans mon code ?
Code:
    if exception.message == "" # Reset
      raise
    end

Mets les en commentaire, et génère ton bug. Le fichier Log.txt sera généré, et tu pourra fermer ton projet. (attention, si tu fais un reset avec F12, le fichier Log.txt sera écrasé car le reset va générer un rapport de bug).
Tu pourra réécrire ces lignes après, ou supprimer ce script.

--------------
draw_choice dans les évènements ne marche pas dans ta version.

--------------
Et pour ton bug, je pense le connaître. C'est parce que ton pc est un peu lent. J'ai une solution par contre, dans le script Scene_Debug, autour de la ligne 1200, repère ce morceau
Code:
    # Conversion
    for id in 1..$data_pokemon.length-1

Ajoute un Graphics.update juste après ce morceau.

Posté par Sphinx le 3 Sep - 06:48 (2008)
je profite de ce topic pour poser une toute petite question Lordork chez mémé

Graphics.update limiterait il les lags de script ?

Posté par Krosk le 3 Sep - 08:12 (2008)
Un bug ?????????????????? survient quand l'affichage du jeu n'a pas rafraichit pendant un certain temps.

Graphics.update... limite CE bug.
EDIT: j'avais lu en diagonale, vient de me lever >_<. Ca ne limite pas les lags de script à ma connaissance, ca les maquille juste en faisant croire que ton script tourne en arrière plan. Si tu met un Graphics.update, ca va moins "freezer", mais ca prendra plus de temps pour faire la tache.

Posté par Sphinx le 3 Sep - 09:49 (2008)
^_^" ah ok, donc pas le bon plan pour limiter les lags dont souffre mon jeu, alors :mrgreen:

Posté par Krosk le 3 Sep - 10:00 (2008)
En fait, en y réfléchissant plus profond, mettre des Graphics.update alors que tu est dans un script qui fait beaucoup d'opérations ne sert à rien, puisque le jeu "freeze" quand même. Donc en fait, ca sert doublement à rien et ca ne change pas la condition.