Sujet n°688
Posté par FdRstar/ le 25 Avr - 10:57 (2008)
Titre : ok - Bug avec la balise \N[x] en combat
Alors mon bug est tout simple.
Je veux faire un combat contre la rivale.
J'ai donc mis comme nom "T/RIVALE_\N[2]"
où la rivale est le deuxième héros dans la banque de donnée cependant quand je lance le combat au début
ça écrit : "Un combat est lancé par RIVALE \N[2]."
Or avant ça marchait bien.
Je voudrais de l'aide s'il vous plaît.

Posté par Krosk le 25 Avr - 14:56 (2008)
Ca marchait bien avant, donc à priori, quelque chose a changé dans tes scripts?

Je vérifie ce soir et je reviens.

Posté par Drakhaine le 25 Avr - 15:16 (2008)
Vérifie dans ton script Pokemon_Trainer que vers la ligne 179 tu aies bien ça :

 
Code:
def type(id)
 return $data_trainer[id][1]
end
    
def name(id)
 name_string = $data_trainer[id][2].gsub(/\\[Nn]\[([0-9]+)\]/) {$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""}
 return name_string
end
    
def string(id)
 return (type(id) + " " + name(id))
end
et que dans le script Pokemon_Battle_Trainer tu retrouves ceci :

 
Code:
 draw_text("Un combat est lancé", "par "+ $trainer.string(@trainer_id) + "!")
(moi je l'ai à la ligne 199)

Normalement, si tout est bon ça devrait fonctionner (même si je suis pas trop trop calé en regexp^^)

Posté par FdRstar le 25 Avr - 18:31 (2008)
Merci Drakhaine effectivement le script Pokemon_trainer était un peu différent je vérifie ça et j'édite.

Posté par FdRstar le 25 Avr - 18:41 (2008)
Edit : Alors j'ai essayer de lancer le jeu mais ça m'a mis le message d'erreur:
"????? 'Pokemon_trainer' ? 216 ??? Syntax error ????????"
Voici les dernières lignes du script :

def type(id)
return $data_trainer[id][1]
end

def name(id)
def name(id)
name_string = $data_trainer[id][2].gsub(/\\[Nn]\[([0-9]+)\]/) {$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""}
return name_string
end

def string(id)
return (type(id) + " " + name(id))
end

def money(id)
return $data_trainer[id][5]
end

def pokemon(id, index)
return $data_trainer[id][3][index]
end

def pokemon_list(id)
return $data_trainer[id][3]
end

def string_victory(id)
return $data_trainer[id][6]
end

def string_defeat(id)
return $data_trainer[id][7]
end
end

$trainer = POKEMON_S::Trainer_Info.new

end

PS : désolé du double posts, je n'arrivai pas à éditer.

Posté par Krosk le 25 Avr - 20:30 (2008)
Repère les lignes

Code:
 def name(id)
def name(id)


et

Code:
 end
end



Enleve un de chaque

Posté par FdRstar le 25 Avr - 20:48 (2008)
J'ai essayé mais ça laisse le même message d'erreur(la ligne concerné est toujours la dernière si ça peut vous aider.)

la fin du script après modification :

 def type(id)
  return $data_trainer[id][1]
 end

 def name(id)
  name_string = $data_trainer[id][2].gsub(/\\[Nn]\[([0-9]+)\]/) {$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""}
  return name_string
 end

 def string(id)
  return (type(id) + " " + name(id))
 end

 def money(id)
  return $data_trainer[id][5]
 end

 def pokemon(id, index)
  return $data_trainer[id][3][index]
 end

 def pokemon_list(id)
  return $data_trainer[id][3]
 end

 def string_victory(id)
  return $data_trainer[id][6]
 end

 def string_defeat(id)
  return $data_trainer[id][7]
 end

 $trainer = POKEMON_S::Trainer_Info.new
 
end

Posté par Krosk le 25 Avr - 22:10 (2008)
Peut-tu coller le script entier entre des balises "code"? ([c*de])

C'est un problème de "end" mal placé, ca se corrige vite.

Posté par FdRstar le 25 Avr - 22:24 (2008)
Le voila :

Code:
#==============================================================================
# ● Base de données - Dresseurs
# Pokemon Script Project - Krosk
# 29/07/07
#==============================================================================

module POKEMON_S
  $data_trainer = []
  $data_trainer[0] = ["", "", "", [], [], 0, ["",""], ["",""]]
 
  #$data_trainer[id] = [
  #"battler.png",
  #"TYPE",
  #"Nom"
  #[
  #  [Pokémon 1, niveau, //objet, //[stats avancées], //[skill 1, 2, 3, 4]],
  #  [Pokémon 2, niveau, //objet, //[stats avancées], //[skill 1, 2, 3, 4]],
  #  [Pokémon 3, niveau, //objet, //[stats avancées], //[skill 1, 2, 3, 4]],
  #  [Pokémon 4, niveau, //objet, //[stats avancées], //[skill 1, 2, 3, 4]],
  #  [Pokémon 5, niveau, //objet, //[stats avancées], //[skill 1, 2, 3, 4]],
  #  [Pokémon 6, niveau, //objet, //[stats avancées], //[skill 1, 2, 3, 4]],
  #],
  #[ "Objets" ]
  #Argent,
  #["String Victoire Ligne 1", "String Victoire Ligne 2"] (Joueur gagnant)
  #["String Défaite Ligne 1", "String Défaite Ligne 2"] (Joueur perdant)
  #]
 
  $data_troops       = load_data("Data/Troops.rxdata")
  for i in 1..$data_troops.length-1
    $data_trainer[i] = []
    name = $data_troops[i].name
   
    # Vérification Tag
    tag = (name.split('/'))[0]
    if tag != "T"
      $data_trainer[i] = $data_trainer[0]
      next
    end
   
    # Nom et Type
    data_name = (name.split('/'))[1]
    data_name = data_name.split('_')
   
    if data_name[1] != nil
      $data_trainer[i][1] = data_name[0].to_s
      $data_trainer[i][2] = data_name[1].to_s
    else
      $data_trainer[i][1] = ""
      $data_trainer[i][2] = data_name[0].to_s
    end
   
    # Pokémons
    list = []
    for member in $data_troops[i].members
      list.push([member.enemy_id, 1, nil, nil, nil])
    end
   
    # Vérification page event
    if $data_troops[i].pages == []
      # Effacage car invalide
      $data_trainer[i] = $data_trainer[0]
      next
    end
   
    # Event Page1
    event_list = $data_troops[i].pages[0].list
   
    # Effacage si aucun event
    if event_list == []
      $data_trainer[i] = $data_trainer[0]
      next
    end
   
    for event in event_list
      case event.code
      when 322 # Changer Apparence => Définition battler
        battler = event.parameters[3]
        $data_trainer[i][0] = battler
      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 => ecart // Rien
          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 355 # Script
        index_script = 0
        script = event.parameters[0]
        if script == "Pokemon"
          pokemon_tag = true
        else
          pokemon_tag = false
        end
        if script == "Dresseur"
          trainer_tag = true
        else
          trainer_tag = false
        end
      when 655 # Script suite
        if pokemon_tag
          script = event.parameters[0]
          # type Hash personnalisé
          if eval(script).type == Hash and list[index_script] != nil
            # Niveau
            list[index_script][1] = eval(script)["NV"]
            # Objet
            list[index_script][2] = eval(script)["OBJ"]
            # Stats avancées
            list[index_script][3] = eval(script)["STAT"]
            # Moveset
            list[index_script][4] = eval(script)["MOVE"]
          end
          # type Fixnum réglage de niveau seulement
          if eval(script).type == Fixnum and list[index_script] != nil
            list[index_script][1] = eval(script)
          end
          index_script += 1
        end
        if trainer_tag
          index_script += 1
          script = event.parameters[0]
          case index_script
          when 1 # Argent
            $data_trainer[i][5] = script.to_i
          when 2 # String Victoire / Défaite
            $data_trainer[i][6] = []
            $data_trainer[i][6][0] = script != nil ? script : ""
          when 3
            $data_trainer[i][6][1] = script != nil ? script : ""
          when 4
            $data_trainer[i][7] = []
            $data_trainer[i][7][0] = script != nil ? script : ""
          when 5
            $data_trainer[i][7][1] = script != nil ? script : ""
          end
        end
      end
    end
       
    # Vérification: expulsion des Pokémons sans niveau
    for pokemon in list
      if pokemon[1] == nil or pokemon[0] == nil
        index = list.index(pokemon)
        list[index] = nil
      end
    end
   
    list.compact!
   
    $data_trainer[i][3] = list
  end
 
  class Trainer_Info
    def battler(id)
      return $data_trainer[id][0]
    end
   
 def type(id)
  return $data_trainer[id][1]
 end

 def name(id)
  name_string = $data_trainer[id][2].gsub(/\\[Nn]\[([0-9]+)\]/) {$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""}
  return name_string
 end

 def string(id)
  return (type(id) + " " + name(id))
 end

 def money(id)
  return $data_trainer[id][5]
 end

 def pokemon(id, index)
  return $data_trainer[id][3][index]
 end

 def pokemon_list(id)
  return $data_trainer[id][3]
 end

 def string_victory(id)
  return $data_trainer[id][6]
 end

 def string_defeat(id)
  return $data_trainer[id][7]
 end

 $trainer = POKEMON_S::Trainer_Info.new
 
end

Posté par Krosk le 25 Avr - 23:31 (2008)
Ah, c'est ma faute ici.

Code:
 def string_defeat(id)
  return $data_trainer[id][7]
 end
end


Remet le end que tu as enlevé

Posté par FdRstar le 26 Avr - 10:39 (2008)
Ah !
Ca y est ça marche parfaitement merci beaucoup !