Sujet n°14128
Posté par elric54 le 16 Sep - 11:25 (2014)
Titre : [Resolu] Erreur lors de compilation du projet
Bonjour !
Alors voilà mon problème : lorsque que je compile mon projet après avoir fait la MAJ BDD et tout ce qui va avec quand je le decompresse pour accéder au contenu il y a un bug au démarrage du jeu que voici :



Pour le moment je n'ai trouvé aucune solution donc si quelqu'un pouvait me venir en aide ce serait fort sympathique !

Posté par Schneitizel le 16 Sep - 17:04 (2014)
Le pokémon affronté est peut etre mal renseigné (Erreur dans le nom etc...)

Posté par elric54 le 16 Sep - 20:06 (2014)
Ce n'est pas ca ca rle bug survient DES le lancement du jeu...

Posté par Nuri Yuri le 16 Sep - 21:12 (2014)
Justement, les groupes dans PSP sont évalués pendant le démarrage du jeu et non pendant l'utilisation de ces dits groupes.

Posté par joeyw le 16 Sep - 21:22 (2014)
Vérifie que tes groupes commencent bien par X/ (X = tag terrain) ou T/ pour les dresseurs et qu'ils aient bien des Pokémon Imbécile heureux

Posté par elric54 le 17 Sep - 07:36 (2014)
J'ai bien vérifié tout ça et appremment tout semble en règle^^.
Ce qui est étrange c'est que quand je lance le jeu sans l'avoir compile cela fonctionne très bien. Mais dès que je lance la compilation du jeu ensuite la ça ne fonctionne plus...

Posté par joeyw le 17 Sep - 11:59 (2014)
Tu peux faire un screen de ta page dresseurs ? Imbécile heureux

Posté par elric54 le 17 Sep - 13:24 (2014)
Oui bien sur la voici



Elle n'est pas entière mais c'est la même chose tout du long.

Posté par joeyw le 17 Sep - 13:58 (2014)
Retente tes manips en enlevant les groupes qui commencent par -- Imbécile heureux

Posté par elric54 le 17 Sep - 14:02 (2014)
Je l'ai deja fais et malheureusement ce n'est pas concluant :(

Posté par joeyw le 17 Sep - 15:46 (2014)
A tout hasard, est ce que pourrais remplacer ça :

Code:
          if $data_pokemon[pokemon[0]][9][4] == nil
            $data_pokemon[pokemon[0]][9][4] = []
          end


par

Code:
          if $data_pokemon[pokemon[0]][9][4] == nil
            $data_pokemon[pokemon[0]][9][4] = []
else
p $data_pokemon[pokemon[0]][9][4]
          end


Ca devrait t'afficher une valeur problème Imbécile heureux

Posté par Nuri Yuri le 17 Sep - 16:03 (2014)
Code:
for id in map.encounter_list
        for pokemon in $data_encounter[id][2]
          if pokemon.type == Array
            if $data_pokemon[pokemon[0]][9][4] == nil
              $data_pokemon[pokemon[0]][9][4] = []
            end
            $data_pokemon[pokemon[0]][9][4].push(zone)
            $data_pokemon[pokemon[0]][9][4].uniq!
          end
        end
      end

A remplacer par :
Code:
for id in map.encounter_list
        begin
          for pokemon in $data_encounter[id][2]
            if pokemon.type == Array
              begin
                if $data_pokemon[pokemon[0]][9][4] == nil
                  $data_pokemon[pokemon[0]][9][4] = []
                end
                $data_pokemon[pokemon[0]][9][4].push(zone)
                $data_pokemon[pokemon[0]][9][4].uniq!
              rescue Exception
                print("Erreur dans le groupe #{id}.\nLe Pokémon \##{pokemon[0]} n'existe pas !")
                raise
              end
            end
          end
        rescue Exception
          print("Erreur dans le groupe #{id}.")
          raise
        end
      end

Ca va te dire quel groupe est planté et quel ID de Pokémon ça demande alors que ça ne devrait pas.

Posté par elric54 le 17 Sep - 16:15 (2014)
Alors yuri ton script il me dit qu'il y a un problème de synthaxe au niveau de la ligne 230 c'est à dire sur l'avant-dernier end.

Et pour joew t'as solution : le jeu m'affiche 6fois ceci



Puis de nouveau la fenetre du bug

Posté par Nuri Yuri le 17 Sep - 16:35 (2014)
Soit y'a un end en trop, soit un en moins, à toi de voir :p

Posté par elric54 le 17 Sep - 16:40 (2014)
Alors c'ets bon j'ai géré le truc maintenant il affiche ça ce qui m'avance beaucoup :p


Posté par Nuri Yuri le 17 Sep - 18:08 (2014)
C'est pas normal, id doit valoir autre chose que nil donc le rescue est pas dans la bonne boucle ou alors c'est le end qui est pas bon. Normalement le code que j'ai donné est correcte alors essaie de remplacer raise par next pour voir ce que ça fait.

Posté par elric54 le 17 Sep - 21:10 (2014)
Je pense que ce sera plus simple voici l'état actuel de mon script

Spoiler
Code:
#==============================================================================
# ● Base de données - Pokémons sauvages
# Pokemon Script Project - Krosk
# 29/09/07
#==============================================================================


module POKEMON_S
  $data_encounter = []
  $data_encounter[0] = [0, 0, [0], 0]
 
  # id = Groupe de monstre
  #$data_encounter[id] = [
  #tag terrain,
  #tag jour/nuit, 0 = jour/nuit, J = jour, N = nuit
  #[
  #  écart,
  #  [Pokémon 1, niveau, rareté locale],
  #  [Pokémon 2, niveau, rareté locale],
  #  [Pokémon 3, niveau, rareté locale],
  #  [Pokémon 4, niveau, rareté locale],
  #  [Pokémon 5, niveau, rareté locale],
  #  [Pokémon 6, niveau, rareté locale]
  #],
  # condition numéro de switch, 0 si rien
  #]
 
  $data_troops       = load_data("Data/Troops.rxdata")
  for i in 1..$data_troops.length-1
    $data_encounter[i] = []
    name = $data_troops[i].name
    data = (name.split('/'))[0]
    if data == nil # Sans nom
      $data_encounter[i] = [0, 0, [0], 0]
      next
    end
    data = data.split(',')
   
    # Tag terrain
    t_tag = data[0].to_i
    if [1,2,3,4,5,6,7].include?(t_tag)
      $data_encounter[i][0] = t_tag
    else
      $data_encounter[i] = $data_encounter[0]
      next
    end
   
    # Tag jour/nuit
    if data[1] != nil
      case data[1]
      when "J" # Jour
        dn_tag = 1
      when "N" # Nuit
        dn_tag = 2
      else # Indifferent
        dn_tag = 0
      end
    else # Indifferent
      dn_tag = 0
    end
    $data_encounter[i][1] = dn_tag
   
    # Ennemi
    list = [3] # Ecart de 3 niveaux par défaut
    for member in $data_troops[i].members
      list.push([member.enemy_id])
    end
   
    # Vérification page event
    if $data_troops[i].pages == []
      # Effacage car invalide
      $data_encounter[i] = [0, 0, [0], 0]
      next
    end
   
    # Event Page1
    event_list = $data_troops[i].pages[0].list
   
    # Effacage si aucun event
    if event_list == []
      $data_encounter[i] = [0, 0, [0], 0]
      next
    end
   
    # Condition par switch
    if $data_troops[i].pages[0].condition.switch_valid
      $data_encounter[i][3] = $data_troops[i].pages[0].condition.switch_id
    else
      $data_encounter[i][3] = 0
    end
   
    for event in event_list
      case event.code
      when 331 # Ajout de PV => Ecart level
        target = event.parameters[0]
        operation = event.parameters[1]
        operand_type = event.parameters[2]
        operand = event.parameters[3]
        if operand_type == 0
          value = operand
        else
          if $game_variables == nil or $game_variables[operand] == nil
            value = 5
          else
            value = $game_variables[operand]
          end
        end
       
        value = value.abs
       
        case target
        when -1 # Tous les ennemis => ecart
          list[0] = -value
        end
      when 332 # Ajout de MP => Définition Level
        target = event.parameters[0]
        operation = event.parameters[1]
        operand_type = event.parameters[2]
        operand = event.parameters[3]
        if operand_type == 0
          value = operand
        else
          if $game_variables == nil or $game_variables[operand] == nil
            value = 5
          else
            value = $game_variables[operand]
          end
        end
       
        value = value.abs
       
        case target
        when -1 # Tous les ennemis
          for element in list
            element[1] = value
          end
        else # Ennemi défini
          if list[target+1] != nil
            list[target+1][1] = value
          end
        end
      when 338 # Rareté locale
        target = event.parameters[1]
        operand_type = event.parameters[2]
        operand = event.parameters[3]
        if operand_type == 0
          value = operand
        else
          if $game_variables[operand] == nil
            value = 0
          else
            value = $game_variables[operand]
          end
        end
        value = value.abs
       
        if target != -1 and list[target+1] != nil
          list[target+1][2] = value
        end
       
      # Ecriture script:
      #   Ecart
      #   [ Niveau, rareté locale ]
      #   [ Niveau, rareté locale ]
      #   [ Niveau, rareté locale ]
      #   etc
      when 355 # Script
        index_script = 0
        script = event.parameters[0]
        if eval(script).type == Fixnum
          list[0] = eval(script)
        end
      when 655 # Script suite
        index_script += 1
        script = event.parameters[0]
        if eval(script).type == Array and list[index_script] != nil
          list[index_script][1] = eval(script)[0]
          list[index_script][2] = eval(script)[1]
        end
      end
    end
       
    # Vérification: expulsion des Pokémons sans niveau
    for pokemon in list
      if pokemon.type != Array
        next
      end
      if pokemon[1] == nil or pokemon[0] == nil
        index = list.index(pokemon)
        list[index] = nil
      end
    end
   
    list.compact!
   
    $data_encounter[i][2] = list
  end
 
 
  map_infos = load_data("Data/MapInfos.rxdata")
  map_infos.each { |key, value|
    zone = (value.name.split('/'))
    if zone.length == 1
      next
    end
    zone = eval(zone[0])
    if zone.type == Array
      zone = zone[0]
    end
    map = load_data(sprintf("Data/Map%03d.rxdata", key))
for id in map.encounter_list
        begin
          for pokemon in $data_encounter[id][2]
            if pokemon.type == Array
              begin
                if $data_pokemon[pokemon[0]][9][4] == nil
                  $data_pokemon[pokemon[0]][9][4] = []
                end
                $data_pokemon[pokemon[0]][9][4].push(zone)
                $data_pokemon[pokemon[0]][9][4].uniq!
              rescue Exception
                print("Erreur dans le groupe #{id}.\nLe Pokémon \##{pokemon[0]} n'existe pas !")
                raise
              end
            end
          end
        rescue Exception
          print("Erreur dans le groupe #{id}.")
          raise
  }
 
 
 
end

Posté par Nuri Yuri le 17 Sep - 21:31 (2014)
Manque un voir deux end entre raise et }
Faut que t'apprennes le ruby sinon tu pourras jamais rien faire avec PSP ou d'autres SK...

Posté par elric54 le 18 Sep - 12:42 (2014)
Justement quand je met un ou deux end entre le raise et le } il me met syntaxe error :(

EDIT : Allez comprendre pourquoi cela marche maintenant. En tout cas merci pour votre aide et désole de vous avoir fait perdre du temps !

Posté par Nuri Yuri le 18 Sep - 12:47 (2014)
Nuri Yuri a écrit:
Manque un voir deux end entre raise et }
Faut que t'apprennes le ruby sinon tu pourras jamais rien faire avec PSP ou d'autres SK...

Si t'en met aucun c'est censé aussi te dire erreur de syntaxe, si t'en met deux, ça évalue correctement la boucle :

Posté par elric54 le 18 Sep - 13:00 (2014)
Ouais bah euh... je sais pas pourquoi ca faisait ca :s