Sujet n°13221
Posté par Mysterïous le 6 Oct - 09:14 (2013)
Titre : [PSP4G+Résolu] Problème avec transition de combat, sonore.
Bonjour,

J'explique le petit problème sur PSP4G+ lorsqu'on engage un combat.

Quand on engage un combat contre un Dresseur, il y a une transition, avec un son qui fait son apparition, et sa coupe la musique de combat c'est assez problématique.
Pareil contre un simple Pokémon, j'aimerais savoir si il y a un moyen de la désactiver.

Et aussi par hasard, s'il y avait moyen de personnaliser ses transitions pour, par exemple, un combat contre la "Team Aqua" ou un combat contre un "Champion".
Mais dans tous les cas, éviter cet transition sonore qui gâche la musique car elle l'a coupe !






Image Problématique :


 
Merci d'avance, si vous avez une solution, ou plusieurs solutions pour régler ce petit problème, bonne journée à tous.
 
 
 
 
EDIT :J'ai trouvé ceci, dans le script "Pokemon_Battle_Trainer" qui pourrait bien résoudre mon problème :
Spoiler
Code:
#------------------------------------------------------------
# Animations pré-combat
#------------------------------------------------------------
def pre_battle_transition
# Jingle et BGM
#Audio.bgm_play("Audio/BGM/PkmRS-Battle3.mid")
$game_system.bgm_play($game_system.battle_bgm)
Audio.me_play("Audio/ME/battle_jingle.mid")
Graphics.freeze

# Sélection transition
s = (rand(BATTLE_TRANS)+1).to_s
@background.bitmap = RPG::Cache.picture("black.png")
Graphics.transition(100, "Graphics/Transitions/battle"+ s +".png")
Audio.me_stop

# Dessin
Graphics.freeze
@background.bitmap = RPG::Cache.battleback(@battleback_name)
@message_background.bitmap = RPG::Cache.battleback(BATTLE_MSG)
@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 / 3
@enemy_sprite.x -= 782
@enemy_ground.bitmap = RPG::Cache.battleback(@ground_name)
@enemy_ground.ox = @enemy_ground.bitmap.width / 2
@enemy_ground.oy = @enemy_ground.bitmap.height / 2
@enemy_ground.zoom_x = @enemy_ground.zoom_y = 2.0/3
@enemy_ground.x -= 782
@actor_ground.bitmap = RPG::Cache.battleback(@ground_name)
@actor_ground.ox = @actor_ground.bitmap.width / 2
@actor_ground.oy = @actor_ground.bitmap.height
@actor_ground.x += 782
@actor_sprite.bitmap = RPG::Cache.battler(@start_actor_battler, 0)
@actor_sprite.ox = @actor_sprite.bitmap.width / 2
@actor_sprite.oy = @actor_sprite.bitmap.height
@actor_sprite.x += 782
Graphics.transition(50, "Graphics/Transitions/battle0.png")
end










 Cordialement.
NINJA POWA ! Mysterïous NINJA POWA !
Qwerty

Posté par Mysterïous le 6 Oct - 09:42 (2013)
Titre : Peut être la solution ?
En espérant aider d'autre Maker sur PSP4G+ !  Lord teatime

Posté par 'Klysm le 6 Oct - 09:46 (2013)
Titre : [PSP4G+Résolu] Problème avec transition de combat, sonore.
Et visiblement tu ne sais pas non plus que les double post sont interdits. 
Il faut faire un édit visible, c'est a dire copier ton premier message, le supprimer, coller le premier message puis ajouter ton deuxième message.

Posté par TouzaxA le 6 Oct - 09:49 (2013)
Code:
#------------------------------------------------------------
# Animations pré-combat
#------------------------------------------------------------
def pre_battle_transition
# Jingle et BGM
#Audio.bgm_play("Audio/BGM/PkmRS-Battle3.mid")
Audio.me_play("Audio/ME/battle_jingle.mid")
Graphics.freeze

# Sélection transition
s = (rand(BATTLE_TRANS)+1).to_s
@background.bitmap = RPG::Cache.picture("black.png")
Graphics.transition(100, "Graphics/Transitions/battle"+ s +".png")
Audio.me_stop
#Lancement musique combat.
$game_system.bgm_play($game_system.battle_bgm)

# Dessin
Graphics.freeze
@background.bitmap = RPG::Cache.battleback(@battleback_name)
@message_background.bitmap = RPG::Cache.battleback(BATTLE_MSG)
@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 / 3
@enemy_sprite.x -= 782
@enemy_ground.bitmap = RPG::Cache.battleback(@ground_name)
@enemy_ground.ox = @enemy_ground.bitmap.width / 2
@enemy_ground.oy = @enemy_ground.bitmap.height / 2
@enemy_ground.zoom_x = @enemy_ground.zoom_y = 2.0/3
@enemy_ground.x -= 782
@actor_ground.bitmap = RPG::Cache.battleback(@ground_name)
@actor_ground.ox = @actor_ground.bitmap.width / 2
@actor_ground.oy = @actor_ground.bitmap.height
@actor_ground.x += 782
@actor_sprite.bitmap = RPG::Cache.battler(@start_actor_battler, 0)
@actor_sprite.ox = @actor_sprite.bitmap.width / 2
@actor_sprite.oy = @actor_sprite.bitmap.height
@actor_sprite.x += 782
Graphics.transition(50, "Graphics/Transitions/battle0.png")
end

Voici une version qui devrait mieux fonctionner. Sinon, pour les différences de musiques, il me faudrait tout le script...

Et pour le code, c'est [code ] [/code ]. (Sans les espaces)

Posté par Mysterïous le 6 Oct - 09:50 (2013)
Kataklysm a écrit:
Et visiblement tu ne sais pas non plus que les double post sont interdits. 
Il faut faire un édit visible, c'est a dire copier ton premier message, le supprimer, coller le premier message puis ajouter ton deuxième message.




Autant être noob jusqu'au bout, comment je supprime mon second message ?  Lord teatime

Posté par TouzaxA le 6 Oct - 09:51 (2013)
Mysterïous a écrit:
Kataklysm a écrit:
Et visiblement tu ne sais pas non plus que les double post sont interdits. 
Il faut faire un édit visible, c'est a dire copier ton premier message, le supprimer, coller le premier message puis ajouter ton deuxième message.




Autant être noob jusqu'au bout, comment je supprime mon second message ?  Lord teatime
Tu ne peux pas.

Posté par Mysterïous le 6 Oct - 10:08 (2013)
Merci de l'info, je tâcherais d'éviter les conneries d'avantages !  Lord teatime
Voici les fameux scripts "Pokemon_Battle_Wild" :
Spoiler

Code:
#==============================================================================
# ■ Pokemon_Battle_Wild
# Pokemon Script Project - Krosk 
# 20/07/07
#-----------------------------------------------------------------------------
# Scène à ne pas modifier de préférence
#-----------------------------------------------------------------------------
# Système de Combat - Pokémon Sauvage
#-----------------------------------------------------------------------------


#-----------------------------------------------------------------------------
# 0: Normal, 1: Poison, 2: Paralysé, 3: Brulé, 4:Sommeil, 5:Gelé, 8: Toxic
# @confuse (6), @flinch (7)
#-----------------------------------------------------------------------------
# 1 Normal  2 Feu  3 Eau 4 Electrique 5 Plante 6 Glace 7 Combat 8 Poison 9 Sol
# 10 Vol 11 Psy 12 Insecte 13 Roche 14 Spectre 15 Dragon 16 Acier 17 Tenebres
#-----------------------------------------------------------------------------


#-----------------------------------------------------------------------------
# $battle_var.action_id
#   0 : Phase de Sélection
#   1 : Sélection Item
#   2 : Switch Pokémon
#   4 : Switch Fin de Tour
#-----------------------------------------------------------------------------


#-----------------------------------------------------------------------------
# Ordre de déroulement du combat (update)


#-----------------------------------------------------------------------------


module POKEMON_S
  #------------------------------------------------------------  
  # Pokemon_Battle_Wild
  #   scene
  #------------------------------------------------------------  
  class Pokemon_Battle_Wild < Pokemon_Battle_Core
    attr_accessor :z_level
    attr_accessor :actor_status
    attr_accessor :actor
    #------------------------------------------------------------  
    # Fonction d'initialisation
    # Appel: $scene = POKEMON_S::Pokemon_Battle_Wild.new(
    #           party, pokemon, ia)
    #     party: $pokemon_party (classe Pokemon_Party)
    #     pokemon: class Pokemon
    #     ia: Fausse AI
    #------------------------------------------------------------
    def initialize(party, pokemon, ia = false, lose_able = false)
      @z_level = 100
      @ia = ia
      @lose = lose_able
      $sauvage = true
      
      $battle_var.reset
      
      # Assignations données des Pokémons
      @enemy = pokemon
      @enemy.statistic_refresh
      @enemy.hp = @enemy.max_hp
      ###@enemy = $pokemon_party.actors[0].clone
      if not(@enemy.given_name.include?("sauvage"))
        @enemy.given_name += " sauvage"
      end
      $battle_var.enemy_party.actors[0] = @enemy
      @party = party
      
      # Mise à jour Pokedex: Pokémon vu
      $data_pokedex[@enemy.id][0] = true
      
      # Génération ordre de combat
      @battle_order = Array.new(@party.size)
      @battle_order.fill {|i| i}
      
      # Désignation 1er Pokémon au combat
      # @actor désigne le (class) Pokémon
      actor_index = 0
      @actor = @party.actors[actor_index]
      if @actor == nil
        print("Attention, vous n'avez pas de Pokémon dans votre équipe! Réglez ce bug.")
      end
      while @actor.dead?
        actor_index += 1
        @actor = @party.actors[actor_index]
      end
    
      
      # Correction ordre combat (Pokémon vivant en premier)
      @battle_order = switch(@battle_order, 0, actor_index)
      
      # Remise à zéro résultat
      $battle_var.result_flee = false
      $battle_var.result_flee_enemy = false
      $battle_var.result_win = false
      $battle_var.result_defeat = false
      
      # Initialisation des variables de combat
      @phase = 0
      # 0 Non décidé, 1 Attaque, 2 Switch, 3 Item, 4 Fuite
      @actor_action = 0
      @enemy_action = 0
      
      @start_actor_battler = Player.battler # $trainer_battler
      @start_enemy_battler = @enemy.battler_face
      
      $battle_var.have_fought.push(@actor.party_index)
      $battle_var.battle_order = @battle_order
      $battle_var.in_battle = true
      
      @actor.reset_stat_stage
      @enemy.reset_stat_stage
      @actor.skill_effect_reset
      @enemy.skill_effect_reset
      @actor_skill = nil
      @enemy_skill = nil
      @actor.ability_active = false
      @enemy.ability_active = false
      @item_id = 0   # item utilisé
    end
 
        
    #------------------------------------------------------------  
    # Animations pré-combat
    #------------------------------------------------------------  
    def pre_battle_transition
      # Jingle et BGM
      $game_system.bgm_play($game_system.battle_bgm)
      Audio.me_play("Audio/ME/battle_jingle.mid")
      Graphics.freeze
      
      # Sélection transition
      s = (rand(BATTLE_TRANS)+1).to_s
      @background.bitmap = RPG::Cache.picture("black.png")
      Graphics.transition(100, "Graphics/Transitions/battle"+ s +".png") 
      Audio.me_stop
      
      # Dessin
      Graphics.freeze
      @background.bitmap = RPG::Cache.battleback(@battleback_name)
      @message_background.bitmap = $game_variables[5000]["menu_dp"] ? RPG::Cache.battleback("dummy_" + $game_map.battleback_name  + ".png") : RPG::Cache.battleback(BATTLE_MSG)
      @enemy_sprite.bitmap = RPG::Cache.battler(@start_enemy_battler, 0)
      ###@enemy_sprite.bitmap = RPG::Cache.battler("ENEMY.png", 0)
      @enemy_sprite.ox = @enemy_sprite.bitmap.width / 2
      @enemy_sprite.oy = @enemy_sprite.bitmap.height / 2
      @enemy_sprite.x -= 782
      @enemy_sprite.color = Color.new(60,60,60,128)
      @enemy_ground.bitmap = RPG::Cache.battleback(@ground_name)
      @enemy_ground.ox = @enemy_ground.bitmap.width / 2
      @enemy_ground.oy = @enemy_ground.bitmap.height / 2
      @enemy_ground.zoom_x = @enemy_ground.zoom_y = 2.0/3
      @enemy_ground.x -= 782
      @actor_ground.bitmap = RPG::Cache.battleback(@ground_name)
      @actor_ground.ox = @actor_ground.bitmap.width / 2
      @actor_ground.oy = @actor_ground.bitmap.height
      @actor_ground.x += 782
      @actor_sprite.bitmap = RPG::Cache.battler(@start_actor_battler, 0)
      @actor_sprite.ox = @actor_sprite.bitmap.width / 2
      @actor_sprite.oy = @actor_sprite.bitmap.height
      @actor_sprite.x += 782
      Graphics.transition(50, "Graphics/Transitions/battle0.png")
    end
    
    def pre_battle_animation
      # Glissement des sprites
      loop do
        @enemy_sprite.x += 17
        @enemy_ground.x += 17
        @actor_sprite.x -= 17
        @actor_ground.x -= 17
        Graphics.update
        if @enemy_sprite.x == 464
          until @enemy_sprite.color.alpha <= 0
            @enemy_sprite.color.alpha -= 20
            Graphics.update
          end
          break
        end
      end
      
      # Texte
      draw_text("Un " + @enemy.given_name, "apparait!")
      if FileTest.exist?(@enemy.cry)
        Audio.se_play(@enemy.cry)
      end
      
      # Arrivé du panel de l'adversaire
      @enemy_status.x -= 300
      @enemy_status.visible = true
      if @enemy.shiny
        animation = $data_animations[496]
        @enemy_sprite.animation(animation, true)
      end
      loop do
        @enemy_sprite.x -= 3*(-1)**(@enemy_sprite.x)
        @enemy_status.x += 20
        @enemy_sprite.update
        Graphics.update
        if @enemy_status.x == 23
          until not(@enemy_sprite.effect?)
            @enemy_sprite.update
            Graphics.update
          end
          @enemy_sprite.x = 464
          break
        end
      end
      
      # Attente appui de touche
      loop do
        Graphics.update
        Input.update
        if Input.trigger?(Input::C)
          $game_system.se_play($data_system.decision_se)
          break
        end
      end
      
      # Dégagement du sprite dresseur
      loop do
        @actor_sprite.x -= 20
        Graphics.update
        if @actor_sprite.x <= -200
          @actor_sprite.bitmap = RPG::Cache.battler(@actor.battler_back, 0)
          ###@actor_sprite.bitmap = RPG::Cache.battler("ACTOR.png", 0)
          break
        end
      end
      
      # Envoi du pokémon (animation)
      launch_pokemon
      
      @text_window.contents.clear
      Graphics.update
    end
    
    #------------------------------------------------------------  
    # Déroulement
    #------------------------------------------------------------
    def enemy_skill_decision
      action = true
      # ------- ---------- --------- --------
      #    Saut de phase de sélection (ennemi)
      #   action = false  : saut
      #   action = true   : pas de saut
      # ------- ---------- --------- --------
      action = phase_jump(true)
      
      @enemy_action = 1
      
      # Décision skill ennemi
      if not(@actor.dead?) and action
        list = []
        for i in 0..@enemy.skills_set.size - 1
          list.push(i)
        end
        list.shuffle!
        # Skill sans PP // Lutte
        @enemy_skill = Skill.new(165)
        # ----------
        for i in list
          if @enemy.skills_set[i].usable?
            @enemy_skill = @enemy.skills_set[i]
          end
        end
      end
      
      if @ia and not(@actor.dead?) and action
        # Skill sans PP // Lutte
        @enemy_skill = Skill.new(165)
        
        rate_list = {}
        i = 0
        for skill in @enemy.skills_set
          if skill.usable?
            rate_list[i] = ia_rate_calculation(skill, @enemy, @actor)
          else
            rate_list[i] = 0
          end
          i += 1
        end
        
        # Tri dans l'ordre decroissant de valeur
        sorted_list = rate_list.sort {|a,b| b[1]<=a[1]}
        
        #for element in sorted_list
        #  print(@enemy.skills_set[element[0]].name)
        #  print(element[1])
        #end
        
        # Decision prioritaire: max dégat ou soin
        # Valeur seuil: 200
        # si une attaque/défense dépasse ce seuil, il est choisi
        if sorted_list[0][1] > 200 
          @enemy_skill = @enemy.skills_set[sorted_list[0][0]]
        else
          # Decision par pallier
          i = rand(100)
          # Taux de decision
          taux = [100, 25, 5, 0]
          for a in 0..3
            if i <= taux[a] and sorted_list[a] != nil and sorted_list[a][1] != 0
              @enemy_skill = @enemy.skills_set[sorted_list[a][0]]
            end
          end
        end
      end
      
      if not(action) # Reprise du skill précédent
        @enemy_skill = $battle_var.enemy_last_used
      end
    end
    
    #------------------------------------------------------------  
    # Rounds
    #------------------------------------------------------------                
    def end_battle_check
      @actor_status.refresh
      @enemy_status.refresh
      if @enemy.dead? and not(@party.dead?)
        end_battle_victory
      elsif @actor.dead?
        if @party.dead?
          end_battle_defeat
        else
          draw_text("Voulez-vous appeler", "un autre Pokémon?")
          if draw_choice
            $battle_var.window_index = @action_window.index
            scene = POKEMON_S::Pokemon_Party_Menu.new(0)
            scene.main
            return_data = scene.return_data
            # Switch de Pokémon
            if $battle_var.action_id == 4 or $battle_var.action_id == 6
              @switch_id = return_data
              actor_pokemon_switch
            end
          elsif run_able?(@actor, @enemy)
            run
          else
            fail_flee
            $battle_var.window_index = @action_window.index
            scene = POKEMON_S::Pokemon_Party_Menu.new(0)
            scene.main
            return_data = scene.return_data
            # Switch de Pokémon
            if $battle_var.action_id == 4 or $battle_var.action_id == 6
              @switch_id = return_data
              actor_pokemon_switch
            end
          end
        end
      end
    end
    
    #------------------------------------------------------------  
    # Items
    #------------------------------------------------------------     
    def actor_item_use # items à utiliser
      # Item déjà utilisé ie remplacé par 0
      if @item_id == 0
        return
      end
      if Item.data(@item_id)["flee"]
        end_battle_flee
        return
      end
      if Item.data(@item_id)["ball"]
        ball_data = Item.data(@item_id)["ball"]
        if catch_pokemon(ball_data)
          @enemy.given_name = @enemy.name
          @enemy.ball_data = ball_data
          # Changement de surnom
          string1 = "Voulez-vous changer le"
          string2 = "surnom de " + @enemy.given_name + "?"
          draw_text(string1, string2)
          if draw_choice
            draw_text("")
            scene = POKEMON_S::Pokemon_Name.new(@enemy, @z_level + 50)
            scene.main
          end
          # Intégration au PC
          if $pokemon_party.size < 6
            $pokemon_party.add(@enemy)
          else
            $pokemon_party.store_captured(@enemy)
            string1 = @enemy.given_name
            string2 = "est envoyé au PC."
            draw_text(string1, string2)
            wait(40)
          end
          $battle_var.result_win = true
          end_battle
        end
      end
    end


    


    #------------------------------------------------------------  
    # Lancer de pokéball
    #------------------------------------------------------------         
    def catch_pokemon(ball_data)
      # Initialisation des données
      ball_name = ball_data[0]
      ball_rate = ball_data[1]
      ball_sprite = ball_data[2]
      ball_open_sprite = ball_data[3]
      ball_color = ball_data[4]
      if @enemy.asleep? or @enemy.frozen?
        status_multiplier = 2
      elsif @enemy.burn? or @enemy.paralyzed? or 
          @enemy.poisoned? or @enemy.toxic?
        status_multiplier = 1.5
      else
        status_multiplier = 1
      end
      
      if ball_rate.type == Array
        case ball_rate[0]
        when "type"
          if ball_rate[1].include?(@enemy.type1)
            ball_rate = ball_rate[2]
          elsif ball_rate[1].include?(@enemy.type2)
            ball_rate = ball_rate[2]
          elsif ball_rate[3] != nil
            ball_rate = ball_rate[3]
          else
            ball_rate = 1
          end
        when "id"
          if ball_rate[1].include?(@enemy.id)
            ball_rate = ball_rate[2]
          elsif ball_rate[3] != nil
            ball_rate = ball_rate[3]
          else
            ball_rate = 1
          end
        when "level"
          max = 99
          if ball_rate[2] != nil
            
            max = ball_rate[2]
          end
          ball_rate = eval( sprintf( ball_rate[1], @enemy.level ) )
          if ball_rate <= 1
            ball_rate = 1
          end
          if ball_rate >= max
            ball_rate = max
          end
        when "time"
          max = 99
          if ball_rate[2] != nil
            max = ball_rate[2]
          end
          ball_rate = eval( sprintf( ball_rate[1], $battle_var.round ) )
          if ball_rate <= 1
            ball_rate = 1
          end
          if ball_rate >= max
            ball_rate = max
          end
        when "vol"
          if ball_rate[2] != nil
            ball_rate = ball_rate[2]
          else
            ball_rate = 1
          end
        when "genre"
          if ball_rate[1][@actor.gender] != nil
            ball_rate = eval(sprintf(ball_rate[1][@actor.gender], @actor_gender))
          else
            if ball_rate[1][0] != nil
              ball_rate = eval(sprintf(ball_rate[1][0], 0))
            else
              ball_rate = 1
            end
          end
        when "taille"
          height = Pokemon_Info.height(@enemy.id).split(' ')[0].to_i
          ball_rate = eval(sprintf(ball_rate[1], height))
          if ball_rate == nil or ball_rate < 1
            ball_rate = 1
          end
        when "poids"
          weight = Pokemon_Info.weight(@enemy.id).split(' ')[0].to_i
          ball_rate = eval(sprintf(ball_rate[1], weight))
          if ball_rate == nil or ball_rate < 1
            ball_rate = 1
          end
        when "infos"
          ball_rate = eval(ball_rate[2].gsub(/%([0-9]+)d/) { ball_rate[1][$1.to_i - 1] })
        when "formule"
          ball_rate = eval(ball_rate[1])
          ball_rate = 1 if ball_rate.type != Integer
        else
          ball_rate = 1
        end
      end
      
      multiplier = @enemy.rareness * (ball_rate)
      maxhp = @enemy.maxhp_basis
      hp = @enemy.hp
      catch_rate = Integer((((maxhp * 3 - hp * 2)*multiplier).to_f/(maxhp*3).to_f)*status_multiplier)
      catch_value = Integer(1048560 / (Math.sqrt(Math.sqrt(16711680/catch_rate.to_f))))
      list = [rand(65536), rand(65536), rand(65536), rand(65536)]
      j = 4 # nombre de fois que la balle oscille
      for i in list
        j -= i > catch_value ? 1 : 0
      end
      
      # Procédure / Animation
      # Lancer
      draw_text(Player.name + " utilise", ball_name + "!")
      @ball_sprite = Sprite.new
      @ball_sprite.bitmap = RPG::Cache.picture(ball_sprite)
      @ball_sprite.x = -25
      @ball_sprite.y = 270
      @ball_sprite.z = @z_level + 16
      t = 0.0
      pi = Math::PI
      loop do
        t += 16
        @ball_sprite.y = (270.0 - 230.0 * Math.sin(2 * pi / 3.0 * t / 445.0)).to_i
        @ball_sprite.x = -15 + t
        Graphics.update
        if @ball_sprite.x >= 445
          @ball_sprite.bitmap = RPG::Cache.picture(ball_open_sprite)
          break
        end
      end
      
      count = j
      
      # "Aspiration"
      @enemy_sprite.color = ball_color
      @enemy_sprite.color.alpha = 0
      @ball_sprite.z -= 2
      until @enemy_sprite.color.alpha >= 255
        @flash_sprite.opacity += 50
        @enemy_sprite.color.alpha += 50
        Graphics.update
      end
      Audio.se_play("Audio/SE/Pokeopen.wav")
      loop do
        @enemy_sprite.zoom_x -= 0.1
        @enemy_sprite.zoom_y -= 0.1
        @enemy_sprite.opacity -= 25
        @flash_sprite.opacity -= 25
        Graphics.update
        if @enemy_sprite.zoom_x <= 0.1
          @flash_sprite.opacity = 0
          @enemy_sprite.opacity = 0
          break
        end
      end
      @ball_sprite.bitmap = RPG::Cache.picture(ball_sprite)
      
      # Oscillement
      t = 0
      r = 0
      loop do
        t += 1
        @ball_sprite.y = 81 + 50*(1-Math.exp(-t/20.0)*(Math.cos(t*2*pi/30.0)).abs)
        if @ball_sprite.y >= 81+45 and r < 6
          r += 1
          Audio.se_play("Audio/SE/Pokerebond.wav")
        end
        Graphics.update
        if t >= 60
          break
        end
      end
      
      while count > 0
        count -= 1
        t = 0
        Audio.se_play("Audio/SE/Pokemove.wav")
        loop do
          t += 4
          @ball_sprite.angle = 40*Math.sin(2*pi*t/100.0)
          @ball_sprite.x = 449 - 12*Math.sin(2*pi*t/100.0)
          @ball_sprite.y = 131 + 12*Math.sin(2*pi*t/100.0)
          Graphics.update
          if t == 100
            @ball_sprite.angle = 0
            break
          end
        end
      end
      
      if j != 4
        # Echappé
        @ball_sprite.bitmap = RPG::Cache.picture(ball_open_sprite)
        @ball_sprite.z -= 1
        Audio.se_stop
        Audio.se_play("Audio/SE/Pokeopenbreak.wav")
        @enemy_sprite.oy = @enemy_sprite.bitmap.height
        @enemy_sprite.y += @enemy_sprite.bitmap.height / 2 + 34
        loop do
          @enemy_sprite.opacity += 25
          @enemy_sprite.zoom_x += 0.1
          @enemy_sprite.zoom_y += 0.1
          @ball_sprite.opacity -= 25
          @flash_sprite.opacity += 25
          Graphics.update
          if @enemy_sprite.zoom_x >= 1
            @enemy_sprite.oy = @enemy_sprite.bitmap.height / 2
            @enemy_sprite.y -= @enemy_sprite.bitmap.height / 2 + 34
            Graphics.update
            @ball_sprite.dispose
            break
          end
        end
        until @enemy_sprite.color.alpha <= 0
          @enemy_sprite.color.alpha -= 25
          @flash_sprite.opacity -= 25
          Graphics.update
        end
        @enemy_sprite.color.alpha = 0
        @enemy_sprite.opacity = 255
        @flash_sprite.opacity = 0
        Graphics.update
        
        string1 = j == 3 ? "Mince!" : j == 2 ? "Aaaah!" : j == 1 ? "Raah!" : "Oh non!"
        string2 = j == 3 ? "Ca y était presque!" : j == 2 ? "Presque!" : j == 1 ? "Ca y était presque!" : "Le POKéMON s'est libéré!"
        draw_text(string1, string2)
        wait(40)
      else
        # Attrapé
        Audio.me_play("Audio/ME/PkmRS-Caught.mid")
        @enemy_caught = true
        draw_text("Et hop! " + @enemy.given_name , "est attrapé!")
        wait(50)
        wait_hit
        
        if not($data_pokedex[@enemy.id][1])
          draw_text(@enemy.name + " est ajouté", "au pokédex.")
          wait(50)
          wait_hit
          $data_pokedex[@enemy.id][0] = true
          $data_pokedex[@enemy.id][1] = true
          scene = POKEMON_S::Pokemon_Detail.new(@enemy.id, false, 0, "combat", 9999)
          scene.main
          wait_hit
          wait(40)
        end
        
        until @ball_sprite.opacity <= 0
          @ball_sprite.opacity -= 25
          Graphics.update
        end
        $pokemon_party.incr_nb_matchs
        for actor in $pokemon_party.actors
          if $battle_var.have_fought.include?(actor.party_index)
            actor.fight[0] += 1
            if actor.dead? and not(actor.vaudou)
              actor.vaudou = (actor.medaille == nil ? false : $data_medaille[actor.medaille][4])
              if actor.vaudou
                draw_text(actor.name + " subit la","malédiction !")
                wait(40)
                wait_hit
              end
            else
              actor.fight[1] += 1
            end
          end
        end
      end
      if j != 4
        return false
      elsif j == 4
        return true
      end
    end
    
    
    
    #------------------------------------------------------------  
    # Fin de combat
    #------------------------------------------------------------      
    def end_battle_victory
      $pokemon_party.incr_nb_matchs
      for actor in $pokemon_party.actors
        if $battle_var.have_fought.include?(actor.party_index)
          actor.fight[0] += 1
          if actor.dead? and not(actor.vaudou)
            actor.vaudou = actor.medaille == nil ? false : $data_medaille[actor.medaille][4]
            if actor.vaudou
              draw_text(actor.name + " subit la","malédiction !")
              wait(40)
              wait_hit
            end
          else
            actor.fight[1] += 1
          end
        end
      end
      #Audio.bgm_fade(800)
      $battle_var.result_win = true
      @actor_status.z = @z_level + 15
      
      #$game_system.me_play($game_system.battle_end_me)
      Audio.me_play("Audio/ME/fainted_jingle.mid")
      Audio.bgm_play("Audio/BGM/PkmRS-Victory.mid")
      
      # Réduction du nombre de participants
      $battle_var.have_fought.uniq!
      for index in $battle_var.have_fought
        actor = $pokemon_party.actors[index]
        if actor.dead?
          $battle_var.have_fought.delete(index)
        end
      end
      number = $battle_var.have_fought.length
      @enemy.skill_effect_reset
      @enemy.reset_stat_stage
      evolve_checklist = []
      type = 1
      
      # PIECE RUNE/AMULET COIN
      money_rate = 1
      # EXP SHARE/MULTI EXP
      exp_share_number = 0
      for pokemon in $pokemon_party.actors
        if not(pokemon.dead?) and Item.data(pokemon.item_hold)["expshare"]
          exp_share_number += 1
        end
      end
      
      # Exp de bataille
      for actor in $pokemon_party.actors
        if actor.dead?
          next
        end
        
        amount = nil
        if $battle_var.have_fought.include?(actor.party_index)
          amount = actor.exp_calculation(@enemy.battle_list, @enemy.level, number, type, exp_share_number)
          # Tag objet
          if Item.data(actor.item_hold)["amuletcoin"]
            money_rate = 2
          end
        end
        if Item.data(actor.item_hold)["expshare"] and 
            not($battle_var.have_fought.include?(actor.party_index)) and not(actor.dead?)
          amount = actor.exp_calculation(@enemy.battle_list, @enemy.level, number, type, exp_share_number, 0)
        end
        if amount != nil
          actor.skill_effect_reset
          actor.reset_stat_stage
          actor.add_bonus(@enemy.battle_list)
          draw_text(actor.given_name + " a gagné", amount.to_s + " points d'expérience!")
          Graphics.update
          wait_hit
        
          for i in 1..amount
            actor.add_exp_battle(1)
            if actor.level_check
              actor.level_up(self)
              evolve_checklist.push(actor)
            end
            if actor == @actor
              if @actor.exp_list[@actor.level+1] != nil and @actor.level < MAX_LEVEL
                divide = (@actor.exp_list[@actor.level+1]-@actor.exp_list[@actor.level])/192
                if divide == 0
                  divide = 1
                end
                if (@actor.exp - @actor.exp_list[@actor.level])%divide == 0
                  @actor_status.exp_refresh
                  Graphics.update
                end
              end
            end
          end
        end
      end
      
      
      @actor_status.refresh
      Graphics.update
      if $battle_var.money > 0
        $battle_var.money *= money_rate
        draw_text(Player.name + " gagne " + ($battle_var.money).to_s + "$!")
        $pokemon_party.add_money($battle_var.money)
        wait(40)
      end
      
      wait(30)
      $game_system.bgm_play($game_temp.map_bgm)
      for actor in evolve_checklist
        info = actor.evolve_check
        if info != false
          scene = POKEMON_S::Pokemon_Evolve.new(actor, info, @z_level + 200)
          scene.main
        end
      end
      end_battle
    end
    
    
  end
  
end












Et le script "Pokemon_Battle_Trainer" :
Spoiler

Code:
#==============================================================================
# ■ Pokemon_Battle_Trainer
# Pokemon Script Project - Krosk 
# 29/09/07
#-----------------------------------------------------------------------------
# Scène à ne pas modifier de préférence
#-----------------------------------------------------------------------------
# Système de Combat - Pokémon Dresseur
#-----------------------------------------------------------------------------


#-----------------------------------------------------------------------------
# 0: Normal, 1: Poison, 2: Paralysé, 3: Brulé, 4:Sommeil, 5:Gelé, 8: Toxic
# @confuse (6), @flinch (7)
#-----------------------------------------------------------------------------
# 1 Normal  2 Feu  3 Eau 4 Electrique 5 Plante 6 Glace 7 Combat 8 Poison 9 Sol
# 10 Vol 11 Psy 12 Insecte 13 Roche 14 Spectre 15 Dragon 16 Acier 17 Tenebres
#-----------------------------------------------------------------------------


#-----------------------------------------------------------------------------
# $battle_var.action_id
#   0 : Phase de Sélection
#   1 : Sélection Item
#   2 : Switch Pokémon
#   4 : Switch Fin de Tour
#-----------------------------------------------------------------------------


module POKEMON_S
  #------------------------------------------------------------  
  # Pokemon_Battle_Trainer
  #   scene
  #------------------------------------------------------------  
  class Pokemon_Battle_Trainer < Pokemon_Battle_Core
    attr_accessor :z_level
    attr_accessor :actor_status
    attr_accessor :actor
    #------------------------------------------------------------  
    # Fonction d'initialisation
    # Appel: $scene = Pokemon_Battle_Trainer.new(
    #           party, trainer_id, ia)
    #     party: $pokemon_party (classe Pokemon_Party)
    #     trainer_id: L'ID du dresseur dans $data_trainer (groupe de monstres)
    #     ia: Fausse AI
    #     run_able: possible de fuir
    #------------------------------------------------------------
    def initialize(party, trainer_id, ia = false, run_able = false, lose_able = false, capturable = false, niveau = 2)
      @z_level = 100
      @ia = ia
      @trainer_id = trainer_id
      @run = run_able
      @lose = lose_able
      @niveau = niveau
      @capture = niveau > 0 ? true : false 
      $sauvage = false
      
      $battle_var.reset
      
      # Création données des Pokémons adverses
      #$battle_var.enemy_party = Pokemon_Party.new
      for pokemon_data in Trainer_Info.pokemon_list(@trainer_id)
        id = pokemon_data[0]
        level = pokemon_data[1]
        # Shiny
        if pokemon_data[7] != nil
          shiny = pokemon_data[7]
        else
          shiny = false
        end
        pokemon = Pokemon.new(id, level, shiny)
        pokemon.given_name += " ennemi"
        # Paramètres optionnels
        # Objet
        if pokemon_data[2] != nil
          pokemon.item_hold = Item.id(pokemon_data[2])
        end
        # Moveset
        if pokemon_data[4] != nil
          for i in 0...pokemon_data[4].size
            if pokemon_data[4][i] != nil and pokemon_data[4][i] != "AUCUN"
              pokemon.skills_set[i] = Skill.new(Skill_Info.id(pokemon_data[4][i]))
            end
            if pokemon_data[4][i] == "AUCUN"
              pokemon.skills_set[i] = nil
            end
          end
          pokemon.skills_set.compact!
        end
        # Stats avancées
        if pokemon_data[3] != nil and pokemon_data[3].length == 6
          pokemon.dv_modifier(pokemon_data[3])
        end
        # Genre
        if pokemon_data[5] != nil
          pokemon.set_gender(pokemon_data[5])
        end
        # Forme
        if pokemon_data[6] != nil
          pokemon.form = pokemon_data[6]
        end
        if pokemon_data[8] != nil
          pokemon.table_stats = pokemon_data[8]
        end
        # Table types
        if pokemon_data[9] != nil
          pokemon.table_type = pokemon_data[9]
        end
        # Skill types
        if pokemon_data[10] != nil
          pokemon.table_skill_type = pokemon_data[10]
        end
        # Nature
        if pokemon_data[11].type == String
          for i in 0...POKEMON_S::NATURE.size
            if POKEMON_S::NATURE[i][0] == pokemon_data[11]
              pokemon.nature = POKEMON_S::NATURE[i]
              break
            end
          end
        elsif pokemon_data[11].type == Array and pokemon_data[11].size == 6
          pokemon.nature = pokemon_data[11]
        end
        # Bonheur
        if pokemon_data[12] != nil
          pokemon.loyalty = pokemon_data[12]
        end
        # Capturable
        if pokemon_data[13] != nil
          pokemon.capturable = pokemon_data[13]
        end
        # image ball
        if pokemon_data[14] != nil
          pokemon.ball_data = $item.data($item.id(pokemon_data[14]))["ball"]
        end
        # Table stats
        $battle_var.enemy_party.actors.push(pokemon)
      end
      @enemy = $battle_var.enemy_party.actors[0]
      $battle_var.enemy_battle_order = [0,1,2,3,4,5]
      
      @party = party
      
      # Mise à jour Pokedex: Pokémon vu
      $data_pokedex[@enemy.id][0] = true
      
      # Génération ordre de combat
      @battle_order = Array.new(@party.size)
      @battle_order.fill {|i| i}
      
      # Désignation 1er Pokémon au combat
      # @actor désigne le (class) Pokémon
      actor_index = 0
      @actor = @party.actors[actor_index]
      if @actor == nil
        print("Attention, vous n'avez pas de Pokémon dans votre équipe! Réglez ce bug.")
      end
      while @actor.dead?
        actor_index += 1
        @actor = @party.actors[actor_index]
      end
      
      # Correction ordre combat (Pokémon vivant en premier)
      @battle_order = switch(@battle_order, 0, actor_index)
      
      # Remise à zéro résultat
      $battle_var.result_flee = false
      $battle_var.result_flee_enemy = false
      $battle_var.result_win = false
      $battle_var.result_defeat = false
      
      # Initialisation des variables de combat
      @phase = 0
      # 0 Non décidé, 1 Attaque, 2 Switch, 3 Item, 4 Fuite
      @actor_action = 0
      @enemy_action = 0
      
      @start_actor_battler = Player.battler #$trainer_battler
      @start_enemy_battler = $alea ? "trainer" + $no_alea : Trainer_Info.battler(@trainer_id)
      
      $battle_var.have_fought.push(@actor.party_index)
      $battle_var.battle_order = @battle_order
      $battle_var.in_battle = true
      
      @actor.reset_stat_stage
      @enemy.reset_stat_stage
      @actor.skill_effect_reset
      @enemy.skill_effect_reset
      @actor_skill = nil
      @enemy_skill = nil
      @actor.ability_active = false
      @enemy.ability_active = false
      @item_id = 0   # item utilisé
    end
 
        
    #------------------------------------------------------------  
    # Animations pré-combat
    #------------------------------------------------------------  
    def pre_battle_transition
      # Jingle et BGM
      #Audio.bgm_play("Audio/BGM/PkmRS-Battle3.mid")
      $game_system.bgm_play($game_system.battle_bgm)
      Audio.me_play("Audio/ME/battle_jingle.mid")
      Graphics.freeze
      
      # Sélection transition
      s = (rand(BATTLE_TRANS)+1).to_s
      @background.bitmap = RPG::Cache.picture("black.png")
      Graphics.transition(100, "Graphics/Transitions/battle"+ s +".png") 
      Audio.me_stop
      
      # Dessin
      Graphics.freeze
      @background.bitmap = RPG::Cache.battleback(@battleback_name)
      @message_background.bitmap = RPG::Cache.battleback(BATTLE_MSG)
      @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 / 3
      @enemy_sprite.x -= 782
      @enemy_ground.bitmap = RPG::Cache.battleback(@ground_name)
      @enemy_ground.ox = @enemy_ground.bitmap.width / 2
      @enemy_ground.oy = @enemy_ground.bitmap.height / 2
      @enemy_ground.zoom_x = @enemy_ground.zoom_y = 2.0/3
      @enemy_ground.x -= 782
      @actor_ground.bitmap = RPG::Cache.battleback(@ground_name)
      @actor_ground.ox = @actor_ground.bitmap.width / 2
      @actor_ground.oy = @actor_ground.bitmap.height
      @actor_ground.x += 782
      @actor_sprite.bitmap = RPG::Cache.battler(@start_actor_battler, 0)
      @actor_sprite.ox = @actor_sprite.bitmap.width / 2
      @actor_sprite.oy = @actor_sprite.bitmap.height
      @actor_sprite.x += 782
      Graphics.transition(50, "Graphics/Transitions/battle0.png")
    end
    
    def pre_battle_animation
      # Glissement des sprites
      loop do
        @enemy_sprite.x += 17
        @enemy_ground.x += 17
        @actor_sprite.x -= 17
        @actor_ground.x -= 17
        Graphics.update
        if @enemy_sprite.x == 464
          break
        end
      end
      
      # Confrontation des joueurs avec affichage des balls
      draw_text("Un combat est lancé", "par "+ Trainer_Info.string(@trainer_id) + "!")
      @actor_party_status.reset_position
      @enemy_party_status.reset_position
      @actor_party_status.visible = true
      @enemy_party_status.visible = true
      @actor_party_status.active = true
      @enemy_party_status.active = true
      @actor_party_status.x += 400
      @enemy_party_status.x -= 400
      Graphics.update
      
      loop do
        @actor_party_status.x -= 20
        @enemy_party_status.x += 20
        Graphics.update
        if @actor_party_status.x <= 309
          @actor_party_status.reset_position
          @enemy_party_status.reset_position
          break
        end
      end
      wait_hit
      
      # Dégagement sprite dresseur
      loop do
        @enemy_sprite.x += 10
        @enemy_party_status.x -= 20
        Graphics.update
        if @enemy_sprite.x >= 723
          @enemy_party_status.visible = false
          @enemy_party_status.reset_position
          @enemy_sprite.oy = @enemy_sprite.bitmap.height / 2
          break
        end
      end
      
      @enemy_sprite.bitmap = RPG::Cache.battler(@enemy.battler_face, 0)


      # Envoi sprite
      launch_enemy_pokemon
      
      # Attente appui de touche
      wait(40)
      
      # Dégagement du sprite dresseur
      @actor_party_status.reset_position
      loop do
        @actor_sprite.x -= 10
        @actor_party_status.x += 20
        Graphics.update
        if @actor_sprite.x <= -200
          @actor_sprite.bitmap = RPG::Cache.battler(@actor.battler_back, 0)
          @actor_party_status.reset_position
          @actor_party_status.visible = false
          break
        end
      end
      
      # Envoi du pokémon (animation)
      launch_pokemon
      
      @text_window.contents.clear
      Graphics.update
    end
    
    #------------------------------------------------------------  
    # Déroulement
    #------------------------------------------------------------
    def enemy_skill_decision
      @enemy_caught = false
      action = true
      # ------- ---------- --------- --------
      #    Saut de phase de sélection (ennemi)
      #   action = false  : saut
      #   action = true   : pas de saut
      # ------- ---------- --------- --------
      action = phase_jump(true)
      
      @enemy_action = 1
      
      # Décision skill ennemi
      if not(@actor.dead?) and action
        list = []
        for i in 0..@enemy.skills_set.size - 1
          list.push(i)
        end
        list.shuffle!
        # Skill sans PP // Lutte
        @enemy_skill = Skill.new(165)
        # ----------
        for i in list
          if @enemy.skills_set[i].usable?
            @enemy_skill = @enemy.skills_set[i]
          end
        end
      end
      
      
      # Trainer IA
      if @ia and not(@actor.dead?) and action
        # Skill sans PP // Lutte
#        @enemy_skill = Skill.new(165)
        
        rate_list = {}
        i = 0
        for skill in @enemy.skills_set
          if skill.usable?
            rate_list[i] = ia_rate_calculation(skill, @enemy, @actor)
          else
            rate_list[i] = 0
          end
          i += 1
        end
        
        # Tri dans l'ordre decroissant de valeur
        sorted_list = rate_list.sort {|a,b| b[1]<=a[1]}
        
        #for element in sorted_list
        #  print(@enemy.skills_set[element[0]].name)
        #  print(element[1])
        #end
        
        # Decision prioritaire: max dégat ou soin
        # Valeur seuil: 200
        # si une attaque/défense dépasse ce seuil, il est choisi
        if sorted_list[0][1] > 200 
          @enemy_skill = @enemy.skills_set[sorted_list[0][0]]
        else
          # Decision par pallier
          i = rand(100)
          # Taux de decision
          taux = [100, 25, 5, 0]
          for a in 0..3
            if i <= taux[a] and sorted_list[a] != nil and sorted_list[a][1] != 0
              @enemy_skill = @enemy.skills_set[sorted_list[a][0]]
            end
          end
        end
      end
      
      if not(action) # Reprise du skill précédent
        @enemy_skill = $battle_var.enemy_last_used
      end
    end
    
    #------------------------------------------------------------  
    # Rounds
    #------------------------------------------------------------                
    def end_battle_check
      @actor_status.refresh
      @enemy_status.refresh
      if $battle_var.enemy_party.dead? and not(@party.dead?)
        end_battle_victory
      elsif @enemy.dead? and not($battle_var.enemy_party.dead?)
        exp_battle
        
        index = $battle_var.enemy_party.actors.index(@enemy)
        @enemy_switch_id = index+1
        
        alive = 0
        for pokemon in @party.actors
          if not pokemon.dead?
            alive += 1
          end
        end
        
        if alive > 1
          name = $battle_var.enemy_party.actors[index+1].name
          draw_text(name + " va être envoyé", "par " + Trainer_Info.string(@trainer_id) + ".")
          $pokemon_capturer = false
        end
        
        if @enemy_party_status.active
          @enemy_party_status.reset_position
          @enemy_party_status.visible = true
          @enemy_party_status.x -= 400
          until @enemy_party_status.x == -16
            @enemy_party_status.x += 20
            Graphics.update
          end
        end
        
        wait_hit
        if alive > 1
          draw_text("Voulez-vous appeler", "un autre Pokémon?")
          decision = false
          if draw_choice
            $battle_var.window_index = @action_window.index
            scene = Pokemon_Party_Menu.new(0, @z_level + 100)
            scene.main
            return_data = scene.return_data
            decision = true
            Graphics.transition
          end
        
          # Switch de Pokémon
          if ($battle_var.action_id == 4 or $battle_var.action_id == 6) and decision
            @switch_id = return_data
            actor_pokemon_switch
          end
        end
        
        if @enemy_party_status.active
          until @enemy_party_status.x == -416
            @enemy_party_status.x -= 20
            Graphics.update
          end
          @enemy_party_status.visible = false
          @enemy_party_status.reset_position
        end
        
        # Switch enemy
        enemy_pokemon_switch
      end
      if @actor.dead?
        if @party.dead?
          end_battle_defeat
        else
          # Switch forcé
          $battle_var.window_index = @action_window.index
          scene = Pokemon_Party_Menu.new(0, @z_level + 150)
          scene.main
          return_data = scene.return_data
          # Switch de Pokémon
          if $battle_var.action_id == 4 or $battle_var.action_id == 6
            @switch_id = return_data
            actor_pokemon_switch
          end
        end
      end
    end
    
    
    #------------------------------------------------------------  
    # Items
    #------------------------------------------------------------     
    def actor_item_use # items à utiliser
      # Item déjà utilisé ie remplacé par 0
      if @item_id == 0
        return
      end
      if Item.data(@item_id)["flee"] != nil
        end_battle_flee
        return
      end
      if Item.data(@item_id)["ball"] != nil
        ball_data = Item.data(@item_id)["ball"]
        catch_pokemon(ball_data)
      end
    end


    #------------------------------------------------------------  
    # Lancer de pokéball
    #------------------------------------------------------------         
    def catch_pokemon(ball_data)
      # Initialisation des données
      ball_name = ball_data[0]
      ball_rate = ball_data[1]
      ball_sprite = ball_data[2]
      ball_open_sprite = ball_data[3]
      ball_color = ball_data[4]
      chances = rand(@niveau * 2) <= rand($pokemon_party.niveau)
      if $battle_var.enemy_party.actors.index(@enemy) < ($battle_var.enemy_party.size - 1) and ball_rate.type == Array and ball_rate[0] == "vol" and @capture and @enemy.capturable and chances# < 0
        if @enemy.asleep? or @enemy.frozen?
          status_multiplier = 2
        elsif @enemy.burn? or @enemy.paralyzed? or
            @enemy.poisoned? or @enemy.toxic?
          status_multiplier = 1.5
        else
          status_multiplier = 1
        end
        if ball_rate[1].type == Array
          case ball_rate[1][0]
          when "genre"
            if ball_rate[1][@actor.gender] != nil
              ball_rate = eval(ball_rate[1][@actor.gender])
            else
              if ball_rate[1][0] != nil
                ball_rate = eval(ball_rate[1][0])
              else
                ball_rate = 1
              end
            end
          when "taille"
            height = Pokemon_Info.height(@enemy.id).split(' ')[0].to_i
            ball_rate = eval(sprintf(ball_rate[1], height))
            if ball_rate == nil or ball_rate < 1
              ball_rate = 1
            end
          when "poids"
            weight = Pokemon_Info.weight(@enemy.id).split(' ')[0].to_i
            ball_rate = eval(sprintf(ball_rate[1], weight))
            if ball_rate == nil or ball_rate < 1
              ball_rate = 1
            end
          when "type"
            if ball_rate[1][1].include?(@enemy.type1)
              ball_rate = ball_rate[1][2]
            elsif @enemy.type2 != 0 and ball_rate[1].include?(@enemy.type2)
              ball_rate = ball_rate[1][2]
            elsif ball_rate[1][3] != nil
              ball_rate = ball_rate[1][3]
            else
              ball_rate = 1
            end
          when "id"
            if ball_rate[1][1].include?(@enemy.id)
              ball_rate = ball_rate[1][2]
            elsif ball_rate[1][3] != nil
              ball_rate = ball_rate[1][3]
            else
              ball_rate = 1
            end
          when "level"
            max = 99
            if ball_rate[1][2] != nil
              max = ball_rate[1][2]
            end
            ball_rate = eval( sprintf( ball_rate[1][1], @enemy.level ) )
            if ball_rate <= 1
              ball_rate = 1
            end
            if ball_rate >= max
              ball_rate = max
            end
          when "time"
            max = 99
            if ball_rate[1][2] != nil
              max = ball_rate[1][2]
            end
            ball_rate = eval( sprintf( ball_rate[1][1], $battle_var.round ) )
            if ball_rate <= 1
              ball_rate = 1
            end
            if ball_rate >= max
              ball_rate = max
            end
          else
            ball_rate = 1
          end
        else
          ball_rate = ball_rate[1]
        end
        
        multiplier = @enemy.rareness * (ball_rate)
        maxhp = @enemy.maxhp_basis
        hp = @enemy.hp
        catch_rate = Integer((((maxhp * 3 - hp * 2)*multiplier).to_f/(maxhp*3).to_f)*status_multiplier)
        catch_value = Integer(1048560 / (Math.sqrt(Math.sqrt(16711680/catch_rate.to_f))))
        list = [rand(65536), rand(65536), rand(65536), rand(65536)]
        j = 4 # nombre de fois que la balle oscille
        for i in list
          j -= i > catch_value ? 1 : 0
        end
        
        # Procédure / Animation
        # Lancer
        draw_text(Player.name + " utilise", ball_name + "!")
        @ball_sprite = Sprite.new
        @ball_sprite.bitmap = RPG::Cache.picture(ball_sprite)
        @ball_sprite.x = -25
        @ball_sprite.y = 270
        @ball_sprite.z = @z_level + 16
        t = 0.0
        pi = Math::PI
        loop do
          t += 16
          @ball_sprite.y = (270.0 - 230.0 * Math.sin(2 * pi / 3.0 * t / 445.0)).to_i
          @ball_sprite.x = -15 + t
          Graphics.update
          if @ball_sprite.x >= 445
            @ball_sprite.bitmap = RPG::Cache.picture(ball_open_sprite)
            break
          end
        end
        
        count = j
        
        # "Aspiration"
        @enemy_sprite.color = ball_color
        @enemy_sprite.color.alpha = 0
        @ball_sprite.z -= 2
        until @enemy_sprite.color.alpha >= 255
          @flash_sprite.opacity += 50
          @enemy_sprite.color.alpha += 50
          Graphics.update
        end
        Audio.se_play("Audio/SE/Pokeopen.wav")
        loop do
          @enemy_sprite.zoom_x -= 0.1
          @enemy_sprite.zoom_y -= 0.1
          @enemy_sprite.opacity -= 25
          @flash_sprite.opacity -= 25
          Graphics.update
          if @enemy_sprite.zoom_x <= 0.1
            @flash_sprite.opacity = 0
            @enemy_sprite.opacity = 0
            break
          end
        end
        @ball_sprite.bitmap = RPG::Cache.picture(ball_sprite)
        
        # Oscillement
        t = 0
        r = 0
        loop do
          t += 1
          @ball_sprite.y = 81 + 50*(1-Math.exp(-t/20.0)*(Math.cos(t*2*pi/30.0)).abs)
          if @ball_sprite.y >= 81+45 and r < 6
            r += 1
            Audio.se_play("Audio/SE/Pokerebond.wav")
          end
          Graphics.update
          if t >= 60
            break
          end
        end
        
        while count > 0
          count -= 1
          t = 0
          Audio.se_play("Audio/SE/Pokemove.wav")
          loop do
            t += 4
            @ball_sprite.angle = 40*Math.sin(2*pi*t/100.0)
            @ball_sprite.x = 449 - 12*Math.sin(2*pi*t/100.0)
            @ball_sprite.y = 131 + 12*Math.sin(2*pi*t/100.0)
            Graphics.update
            if t == 100
              @ball_sprite.angle = 0
              break
            end
          end
        end
        
        if j != 4
          # Echappé
          @ball_sprite.bitmap = RPG::Cache.picture(ball_open_sprite)
          @ball_sprite.z -= 1
          Audio.se_stop
          Audio.se_play("Audio/SE/Pokeopenbreak.wav")
          @enemy_sprite.oy = @enemy_sprite.bitmap.height
          @enemy_sprite.y += @enemy_sprite.bitmap.height / 2 + 34
          loop do
            @enemy_sprite.opacity += 25
            @enemy_sprite.zoom_x += 0.1
            @enemy_sprite.zoom_y += 0.1
            @ball_sprite.opacity -= 25
            @flash_sprite.opacity += 25
            Graphics.update
            if @enemy_sprite.zoom_x >= 1
              @enemy_sprite.oy = @enemy_sprite.bitmap.height / 2
              @enemy_sprite.y -= @enemy_sprite.bitmap.height / 2 + 34
              Graphics.update
              @ball_sprite.dispose
              break
            end
          end
          until @enemy_sprite.color.alpha <= 0
            @enemy_sprite.color.alpha -= 25
            @flash_sprite.opacity -= 25
            Graphics.update
          end
          @enemy_sprite.color.alpha = 0
          @enemy_sprite.opacity = 255
          @flash_sprite.opacity = 0
          Graphics.update
          
          string1 = j == 3 ? "Mince!" : j == 2 ? "Aaaah!" : j == 1 ? "Raah!" : "Oh non!"
          string2 = j == 3 ? "Ca y était presque!" : j == 2 ? "Presque!" : j == 1 ? "Ca y était presque!" : "Le POKéMON s'est libéré!"
          draw_text(string1, string2)
          wait(40)
        else
          for actor in $pokemon_party.actors
            if $battle_var.have_fought.include?(actor.party_index)
              actor.fight[0] += 1
              if actor.dead? and not(actor.vaudou)
                actor.vaudou = actor.medaille == nil ? false : $data_medaille[actor.medaille][4]
                if actor.vaudou
                  draw_text(actor.name + " subit la","malédiction !")
                  wait(40)
                  wait_hit
                end
              else
                actor.fight[1] += 1
              end
            end
          end
          # Attrapé
          @enemy_caught = true
          Audio.me_play("Audio/ME/Attraper.ogg")
          wait_hit
          until @ball_sprite.opacity <= 0
            @ball_sprite.opacity -= 25
            Graphics.update
          end
        end
        if j != 4
          return false
        elsif j == 4
          draw_text("Mon " + @enemy.name + " ! Voleur !")
          wait(40)
          voler_enemy
          return true
        end
      else
        # Procédure / Animation
        # Lancer
        draw_text(Player.name + " utilise", ball_name + "!")
        @ball_sprite = Sprite.new
        @ball_sprite.bitmap = RPG::Cache.picture(ball_sprite)
        @ball_sprite.x = -25
        @ball_sprite.y = 270
        @ball_sprite.z = @z_level + 16
        t = 0.0
        pi = Math::PI
        loop do
          t += 16
          @ball_sprite.y = (270.0 - 230.0 * Math.sin(2 * pi / 3.0 * t / 445.0)).to_i
          @ball_sprite.x = -15 + t
          Graphics.update
          if @ball_sprite.x >= 445
            break
          end
        end
        
        Graphics.update
        # Rejet
        draw_text(Trainer_Info.string(@trainer_id) + " dévie", "la " + ball_name + " !")
        Audio.se_stop
        Audio.se_play("Audio/SE/Pokeopenbreak.wav")
        
        t = 0
        loop do
          t += 1
          @ball_sprite.x -= -20
          @ball_sprite.y += t
          Graphics.update
          if t == 10
            @ball_sprite.dispose
            break
          end
        end
      end
      
      wait(40)
      draw_text("Tu n'auras jamais", "mon " + @enemy.name + " !")
      wait(40)


      return false
    end
    
    #------------------------------------------------------------  
    # Fuite
    #------------------------------------------------------------           
    def run_able?(runner, opponent)
      if @run
        return super
      end
      return false
    end
    
    def flee_able(actor, enemy)
      if @run
        return super
      end
      @action_window.visible = true
      return false
    end
    
    def end_battle_flee(expulsion = false)
      if @run
        return super
      end
      draw_text("On ne s'enfuit pas", "d'un combat de dresseurs!")
      wait_hit
    end
    
    def end_battle_flee_enemy(expulsion = false)
      if @run
        return super
      end
      draw_text("On ne s'enfuit pas", "d'un combat de dresseurs!")
      wait_hit
    end
    
    #------------------------------------------------------------  
    # Exp en cours de combat
    #------------------------------------------------------------      
    def exp_battle
      @actor_status.z = @z_level + 15
      
      # Réduction de liste
      $battle_var.have_fought.uniq!
      for index in $battle_var.have_fought
        actor = $pokemon_party.actors[index]
        if actor.dead?
          $battle_var.have_fought.delete(index)
        end
      end
      number = $battle_var.have_fought.length
      
      @enemy.skill_effect_reset
      @enemy.reset_stat_stage
      if @evolve_checklist == nil
        @evolve_checklist = []
      end
      if @money_rate == nil
        @money_rate = 1
      end
      
      # Recherche de paramètres
      type = 1.3
      exp_share_number = 0
      for pokemon in $pokemon_party.actors
        if not(pokemon.dead?) and Item.data(pokemon.item_hold)["expshare"]
          exp_share_number += 1
        end
      end
      
      for actor in $pokemon_party.actors
        if actor.dead?
          next
        end
        
        amount = nil
        if $battle_var.have_fought.include?(actor.party_index)
          amount = actor.exp_calculation(@enemy.battle_list, @enemy.level, number, type, exp_share_number)
          # Tag objet
          if Item.data(actor.item_hold)["amuletcoin"]
            @money_rate = 2
          end
        end
        
        if Item.data(actor.item_hold)["expshare"] and 
            not($battle_var.have_fought.include?(actor.party_index)) and not(actor.dead?)
          amount = actor.exp_calculation(@enemy.battle_list, @enemy.level, number, type, exp_share_number, 0)
        end
        
        if amount != nil and not($pokemon_capturer)
          actor.skill_effect_reset
          actor.reset_stat_stage
          actor.add_bonus(@enemy.battle_list)
          draw_text(actor.given_name + " a gagné", amount.to_s + " points d'expérience!")
          Graphics.update
          wait_hit
        
          for i in 1..amount
            actor.add_exp_battle(1)
            if actor.level_check
              actor.level_up(self)
              if not(@evolve_checklist.include?(actor))
                @evolve_checklist.push(actor)
              end
            end
            if actor == @actor
              if @actor.exp_list[@actor.level+1] != nil and @actor.level < MAX_LEVEL
                divide = (@actor.exp_list[@actor.level+1]-@actor.exp_list[@actor.level])/192
                if divide == 0
                  divide = 1
                end
                if (@actor.exp - @actor.exp_list[@actor.level])%divide == 0
                  @actor_status.exp_refresh
                  Graphics.update
                end
              end
            end
          end
        else
          $pokemon_capturer = false
        end
      end
      
      @actor_status.refresh
      Graphics.update
      
      # Reset have_fought
      $battle_var.have_fought = [@actor.party_index]
      
    end
    
    #------------------------------------------------------------  
    # Fin de combat
    #------------------------------------------------------------      
    def end_battle_victory
      $pokemon_party.incr_nb_matchs
      for actor in $pokemon_party.actors
        if $battle_var.have_fought.include?(actor.party_index)
          actor.fight[0] += 1
          if actor.dead? and not(actor.vaudou)
            actor.vaudou = actor.medaille == nil or $data_medaille[actor.medaille] == nil ? false : $data_medaille[actor.medaille][4]
            if actor.vaudou
              draw_text(actor.name + " subit la","malédiction !")
              wait(40)
              wait_hit
            end
          else
            actor.fight[1] += 1
          end
        end
      end
      #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")
      Audio.bgm_play("Audio/BGM/PkmRS_Victory2.mid")
      
      
      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
      @start_enemy_battler = $alea ? "trainer" + $no_alea : Trainer_Info.battler(@trainer_id)
      @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 / 3) - 10
      @enemy_sprite.bitmap = RPG::Cache.battler(@start_enemy_battler, 0)
      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
      
      
      $battle_var.money = Trainer_Info.money(@trainer_id)
      draw_text(Player.name + " remporte " + ($battle_var.money).to_s + "$!")
      interets = 0
      bq = 0
      for i in $game_variables[5000]["banque"]
        i.maj
        if i.du > 0 and interets < $battle_var.money
          int_temp = interets + ($battle_var.money * BANQUE::TAUX / 100.0).round
          interets += int_temp > $battle_var.money ? $battle_var.money : int_temp
          i.du -= interets
          if i.du < 0
            interets += i.du
            i.du -= i.du
          end
          bq += 1
        end
      end
      if bq == 1
        draw_text(interets.to_s + "$ ont été prélevés pour","le remboursement de la banque !")
      elsif bq > 1
        draw_text(interets.to_s + "$ ont été prélevés pour","le remboursement des banques !")
      end
      $battle_var.money -= interets
      $pokemon_party.add_money($battle_var.money)
      wait(40)
      
      wait(30)
      $game_system.bgm_play($game_temp.map_bgm)
      for actor in @evolve_checklist
        info = actor.evolve_check
        if info != false
          scene = Pokemon_Evolve.new(actor, info, @z_level + 200)
          scene.main
        end
      end
      
      end_battle
    end
    
    
  end
  
end












Voilà, les portions de code que tu voulais TouzaxA !  Spiky  (après 1h de galère)



Posté par TouzaxA le 6 Oct - 10:45 (2013)
Script Pokemon_Battle_Trainer:

Code:
#==============================================================================
# ■ Pokemon_Battle_Trainer
# Pokemon Script Project - Krosk
# 29/09/07
#-----------------------------------------------------------------------------
# Scène à ne pas modifier de préférence
#-----------------------------------------------------------------------------
# Système de Combat - Pokémon Dresseur
#-----------------------------------------------------------------------------


#-----------------------------------------------------------------------------
# 0: Normal, 1: Poison, 2: Paralysé, 3: Brulé, 4:Sommeil, 5:Gelé, 8: Toxic
# @confuse (6), @flinch (7)
#-----------------------------------------------------------------------------
# 1 Normal  2 Feu  3 Eau 4 Electrique 5 Plante 6 Glace 7 Combat 8 Poison 9 Sol
# 10 Vol 11 Psy 12 Insecte 13 Roche 14 Spectre 15 Dragon 16 Acier 17 Tenebres
#-----------------------------------------------------------------------------


#-----------------------------------------------------------------------------
# $battle_var.action_id
#   0 : Phase de Sélection
#   1 : Sélection Item
#   2 : Switch Pokémon
#   4 : Switch Fin de Tour
#-----------------------------------------------------------------------------


module POKEMON_S
  #------------------------------------------------------------ 
  # Pokemon_Battle_Trainer
  #   scene
  #------------------------------------------------------------ 
  class Pokemon_Battle_Trainer < Pokemon_Battle_Core
    attr_accessor :z_level
    attr_accessor :actor_status
    attr_accessor :actor
    #------------------------------------------------------------ 
    # Fonction d'initialisation
    # Appel: $scene = Pokemon_Battle_Trainer.new(
    #           party, trainer_id, ia)
    #     party: $pokemon_party (classe Pokemon_Party)
    #     trainer_id: L'ID du dresseur dans $data_trainer (groupe de monstres)
    #     ia: Fausse AI
    #     run_able: possible de fuir
    #------------------------------------------------------------
    def initialize(party, trainer_id, ia = false, run_able = false, lose_able = false, capturable = false, niveau = 2)
      @z_level = 100
      @ia = ia
      @trainer_id = trainer_id
      @run = run_able
      @lose = lose_able
      @niveau = niveau
      @capture = niveau > 0 ? true : false
      $sauvage = false
     
      $battle_var.reset
     
      # Création données des Pokémons adverses
      #$battle_var.enemy_party = Pokemon_Party.new
      for pokemon_data in Trainer_Info.pokemon_list(@trainer_id)
        id = pokemon_data[0]
        level = pokemon_data[1]
        # Shiny
        if pokemon_data[7] != nil
          shiny = pokemon_data[7]
        else
          shiny = false
        end
        pokemon = Pokemon.new(id, level, shiny)
        pokemon.given_name += " ennemi"
        # Paramètres optionnels
        # Objet
        if pokemon_data[2] != nil
          pokemon.item_hold = Item.id(pokemon_data[2])
        end
        # Moveset
        if pokemon_data[4] != nil
          for i in 0...pokemon_data[4].size
            if pokemon_data[4][i] != nil and pokemon_data[4][i] != "AUCUN"
              pokemon.skills_set[i] = Skill.new(Skill_Info.id(pokemon_data[4][i]))
            end
            if pokemon_data[4][i] == "AUCUN"
              pokemon.skills_set[i] = nil
            end
          end
          pokemon.skills_set.compact!
        end
        # Stats avancées
        if pokemon_data[3] != nil and pokemon_data[3].length == 6
          pokemon.dv_modifier(pokemon_data[3])
        end
        # Genre
        if pokemon_data[5] != nil
          pokemon.set_gender(pokemon_data[5])
        end
        # Forme
        if pokemon_data[6] != nil
          pokemon.form = pokemon_data[6]
        end
        if pokemon_data[8] != nil
          pokemon.table_stats = pokemon_data[8]
        end
        # Table types
        if pokemon_data[9] != nil
          pokemon.table_type = pokemon_data[9]
        end
        # Skill types
        if pokemon_data[10] != nil
          pokemon.table_skill_type = pokemon_data[10]
        end
        # Nature
        if pokemon_data[11].type == String
          for i in 0...POKEMON_S::NATURE.size
            if POKEMON_S::NATURE[i][0] == pokemon_data[11]
              pokemon.nature = POKEMON_S::NATURE[i]
              break
            end
          end
        elsif pokemon_data[11].type == Array and pokemon_data[11].size == 6
          pokemon.nature = pokemon_data[11]
        end
        # Bonheur
        if pokemon_data[12] != nil
          pokemon.loyalty = pokemon_data[12]
        end
        # Capturable
        if pokemon_data[13] != nil
          pokemon.capturable = pokemon_data[13]
        end
        # image ball
        if pokemon_data[14] != nil
          pokemon.ball_data = $item.data($item.id(pokemon_data[14]))["ball"]
        end
        # Table stats
        $battle_var.enemy_party.actors.push(pokemon)
      end
      @enemy = $battle_var.enemy_party.actors[0]
      $battle_var.enemy_battle_order = [0,1,2,3,4,5]
     
      @party = party
     
      # Mise à jour Pokedex: Pokémon vu
      $data_pokedex[@enemy.id][0] = true
     
      # Génération ordre de combat
      @battle_order = Array.new(@party.size)
      @battle_order.fill {|i| i}
     
      # Désignation 1er Pokémon au combat
      # @actor désigne le (class) Pokémon
      actor_index = 0
      @actor = @party.actors[actor_index]
      if @actor == nil
        print("Attention, vous n'avez pas de Pokémon dans votre équipe! Réglez ce bug.")
      end
      while @actor.dead?
        actor_index += 1
        @actor = @party.actors[actor_index]
      end
     
      # Correction ordre combat (Pokémon vivant en premier)
      @battle_order = switch(@battle_order, 0, actor_index)
     
      # Remise à zéro résultat
      $battle_var.result_flee = false
      $battle_var.result_flee_enemy = false
      $battle_var.result_win = false
      $battle_var.result_defeat = false
     
      # Initialisation des variables de combat
      @phase = 0
      # 0 Non décidé, 1 Attaque, 2 Switch, 3 Item, 4 Fuite
      @actor_action = 0
      @enemy_action = 0
     
      @start_actor_battler = Player.battler #$trainer_battler
      @start_enemy_battler = $alea ? "trainer" + $no_alea : Trainer_Info.battler(@trainer_id)
     
      $battle_var.have_fought.push(@actor.party_index)
      $battle_var.battle_order = @battle_order
      $battle_var.in_battle = true
     
      @actor.reset_stat_stage
      @enemy.reset_stat_stage
      @actor.skill_effect_reset
      @enemy.skill_effect_reset
      @actor_skill = nil
      @enemy_skill = nil
      @actor.ability_active = false
      @enemy.ability_active = false
      @item_id = 0   # item utilisé
    end
 
       
    #------------------------------------------------------------ 
    # Animations pré-combat
    #------------------------------------------------------------ 
    def pre_battle_transition
      # Jingle et BGM
      #Audio.bgm_play("Audio/BGM/PkmRS-Battle3.mid")
      Audio.me_play("Audio/ME/battle_jingle.mid")
      Graphics.freeze
     
      # Sélection transition
      s = (rand(BATTLE_TRANS)+1).to_s
      @background.bitmap = RPG::Cache.picture("black.png")

      #Personnalisation transition
      #Utilisation: créer des elsif en mettant le nom du dresseur entre guillemets, et remplacer les <fichier> par le nom des fichiers avec extension et chemin complet
      if Trainer_Info.string(@trainer_id) == "Team Aqua"
            $game_system.bgm_play("Audio/BGM/<fichier>")
            Graphics.transition(100, "Graphics/Transitions/<fichier>")
      elsif Trainer_Info.string(@trainer_id) == "Autre truc 1"
            $game_system.bgm_play("Audio/BGM/<fichier>")
            Graphics.transition(100, "Graphics/Transitions/<fichier>")
      elsif Trainer_Info.string(@trainer_id) == "Autre truc 2"
            $game_system.bgm_play("Audio/BGM/<fichier>")
            Graphics.transition(100, "Graphics/Transitions/<fichier>")
      else #Si rien de tout ce qui est au dessus...
            $game_system.bgm_play($game_system.battle_bgm)
            Graphics.transition(100, "Graphics/Transitions/battle"+ s +".png")
      end

      Audio.me_stop
     
      # Dessin
      Graphics.freeze
      @background.bitmap = RPG::Cache.battleback(@battleback_name)
      @message_background.bitmap = RPG::Cache.battleback(BATTLE_MSG)
      @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 / 3
      @enemy_sprite.x -= 782
      @enemy_ground.bitmap = RPG::Cache.battleback(@ground_name)
      @enemy_ground.ox = @enemy_ground.bitmap.width / 2
      @enemy_ground.oy = @enemy_ground.bitmap.height / 2
      @enemy_ground.zoom_x = @enemy_ground.zoom_y = 2.0/3
      @enemy_ground.x -= 782
      @actor_ground.bitmap = RPG::Cache.battleback(@ground_name)
      @actor_ground.ox = @actor_ground.bitmap.width / 2
      @actor_ground.oy = @actor_ground.bitmap.height
      @actor_ground.x += 782
      @actor_sprite.bitmap = RPG::Cache.battler(@start_actor_battler, 0)
      @actor_sprite.ox = @actor_sprite.bitmap.width / 2
      @actor_sprite.oy = @actor_sprite.bitmap.height
      @actor_sprite.x += 782
      Graphics.transition(50, "Graphics/Transitions/battle0.png")
    end
   
    def pre_battle_animation
      # Glissement des sprites
      loop do
        @enemy_sprite.x += 17
        @enemy_ground.x += 17
        @actor_sprite.x -= 17
        @actor_ground.x -= 17
        Graphics.update
        if @enemy_sprite.x == 464
          break
        end
      end
     
      # Confrontation des joueurs avec affichage des balls
      draw_text("Un combat est lancé", "par "+ Trainer_Info.string(@trainer_id) + "!")
      @actor_party_status.reset_position
      @enemy_party_status.reset_position
      @actor_party_status.visible = true
      @enemy_party_status.visible = true
      @actor_party_status.active = true
      @enemy_party_status.active = true
      @actor_party_status.x += 400
      @enemy_party_status.x -= 400
      Graphics.update
     
      loop do
        @actor_party_status.x -= 20
        @enemy_party_status.x += 20
        Graphics.update
        if @actor_party_status.x <= 309
          @actor_party_status.reset_position
          @enemy_party_status.reset_position
          break
        end
      end
      wait_hit
     
      # Dégagement sprite dresseur
      loop do
        @enemy_sprite.x += 10
        @enemy_party_status.x -= 20
        Graphics.update
        if @enemy_sprite.x >= 723
          @enemy_party_status.visible = false
          @enemy_party_status.reset_position
          @enemy_sprite.oy = @enemy_sprite.bitmap.height / 2
          break
        end
      end
     
      @enemy_sprite.bitmap = RPG::Cache.battler(@enemy.battler_face, 0)


      # Envoi sprite
      launch_enemy_pokemon
     
      # Attente appui de touche
      wait(40)
     
      # Dégagement du sprite dresseur
      @actor_party_status.reset_position
      loop do
        @actor_sprite.x -= 10
        @actor_party_status.x += 20
        Graphics.update
        if @actor_sprite.x <= -200
          @actor_sprite.bitmap = RPG::Cache.battler(@actor.battler_back, 0)
          @actor_party_status.reset_position
          @actor_party_status.visible = false
          break
        end
      end
     
      # Envoi du pokémon (animation)
      launch_pokemon
     
      @text_window.contents.clear
      Graphics.update
    end
   
    #------------------------------------------------------------ 
    # Déroulement
    #------------------------------------------------------------
    def enemy_skill_decision
      @enemy_caught = false
      action = true
      # ------- ---------- --------- --------
      #    Saut de phase de sélection (ennemi)
      #   action = false  : saut
      #   action = true   : pas de saut
      # ------- ---------- --------- --------
      action = phase_jump(true)
     
      @enemy_action = 1
     
      # Décision skill ennemi
      if not(@actor.dead?) and action
        list = []
        for i in 0..@enemy.skills_set.size - 1
          list.push(i)
        end
        list.shuffle!
        # Skill sans PP // Lutte
        @enemy_skill = Skill.new(165)
        # ----------
        for i in list
          if @enemy.skills_set[i].usable?
            @enemy_skill = @enemy.skills_set[i]
          end
        end
      end
     
     
      # Trainer IA
      if @ia and not(@actor.dead?) and action
        # Skill sans PP // Lutte
#        @enemy_skill = Skill.new(165)
       
        rate_list = {}
        i = 0
        for skill in @enemy.skills_set
          if skill.usable?
            rate_list[i] = ia_rate_calculation(skill, @enemy, @actor)
          else
            rate_list[i] = 0
          end
          i += 1
        end
       
        # Tri dans l'ordre decroissant de valeur
        sorted_list = rate_list.sort {|a,b| b[1]<=a[1]}
       
        #for element in sorted_list
        #  print(@enemy.skills_set[element[0]].name)
        #  print(element[1])
        #end
       
        # Decision prioritaire: max dégat ou soin
        # Valeur seuil: 200
        # si une attaque/défense dépasse ce seuil, il est choisi
        if sorted_list[0][1] > 200
          @enemy_skill = @enemy.skills_set[sorted_list[0][0]]
        else
          # Decision par pallier
          i = rand(100)
          # Taux de decision
          taux = [100, 25, 5, 0]
          for a in 0..3
            if i <= taux[a] and sorted_list[a] != nil and sorted_list[a][1] != 0
              @enemy_skill = @enemy.skills_set[sorted_list[a][0]]
            end
          end
        end
      end
     
      if not(action) # Reprise du skill précédent
        @enemy_skill = $battle_var.enemy_last_used
      end
    end
   
    #------------------------------------------------------------ 
    # Rounds
    #------------------------------------------------------------               
    def end_battle_check
      @actor_status.refresh
      @enemy_status.refresh
      if $battle_var.enemy_party.dead? and not(@party.dead?)
        end_battle_victory
      elsif @enemy.dead? and not($battle_var.enemy_party.dead?)
        exp_battle
       
        index = $battle_var.enemy_party.actors.index(@enemy)
        @enemy_switch_id = index+1
       
        alive = 0
        for pokemon in @party.actors
          if not pokemon.dead?
            alive += 1
          end
        end
       
        if alive > 1
          name = $battle_var.enemy_party.actors[index+1].name
          draw_text(name + " va être envoyé", "par " + Trainer_Info.string(@trainer_id) + ".")
          $pokemon_capturer = false
        end
       
        if @enemy_party_status.active
          @enemy_party_status.reset_position
          @enemy_party_status.visible = true
          @enemy_party_status.x -= 400
          until @enemy_party_status.x == -16
            @enemy_party_status.x += 20
            Graphics.update
          end
        end
       
        wait_hit
        if alive > 1
          draw_text("Voulez-vous appeler", "un autre Pokémon?")
          decision = false
          if draw_choice
            $battle_var.window_index = @action_window.index
            scene = Pokemon_Party_Menu.new(0, @z_level + 100)
            scene.main
            return_data = scene.return_data
            decision = true
            Graphics.transition
          end
       
          # Switch de Pokémon
          if ($battle_var.action_id == 4 or $battle_var.action_id == 6) and decision
            @switch_id = return_data
            actor_pokemon_switch
          end
        end
       
        if @enemy_party_status.active
          until @enemy_party_status.x == -416
            @enemy_party_status.x -= 20
            Graphics.update
          end
          @enemy_party_status.visible = false
          @enemy_party_status.reset_position
        end
       
        # Switch enemy
        enemy_pokemon_switch
      end
      if @actor.dead?
        if @party.dead?
          end_battle_defeat
        else
          # Switch forcé
          $battle_var.window_index = @action_window.index
          scene = Pokemon_Party_Menu.new(0, @z_level + 150)
          scene.main
          return_data = scene.return_data
          # Switch de Pokémon
          if $battle_var.action_id == 4 or $battle_var.action_id == 6
            @switch_id = return_data
            actor_pokemon_switch
          end
        end
      end
    end
   
   
    #------------------------------------------------------------ 
    # Items
    #------------------------------------------------------------     
    def actor_item_use # items à utiliser
      # Item déjà utilisé ie remplacé par 0
      if @item_id == 0
        return
      end
      if Item.data(@item_id)["flee"] != nil
        end_battle_flee
        return
      end
      if Item.data(@item_id)["ball"] != nil
        ball_data = Item.data(@item_id)["ball"]
        catch_pokemon(ball_data)
      end
    end


    #------------------------------------------------------------ 
    # Lancer de pokéball
    #------------------------------------------------------------         
    def catch_pokemon(ball_data)
      # Initialisation des données
      ball_name = ball_data[0]
      ball_rate = ball_data[1]
      ball_sprite = ball_data[2]
      ball_open_sprite = ball_data[3]
      ball_color = ball_data[4]
      chances = rand(@niveau * 2) <= rand($pokemon_party.niveau)
      if $battle_var.enemy_party.actors.index(@enemy) < ($battle_var.enemy_party.size - 1) and ball_rate.type == Array and ball_rate[0] == "vol" and @capture and @enemy.capturable and chances# < 0
        if @enemy.asleep? or @enemy.frozen?
          status_multiplier = 2
        elsif @enemy.burn? or @enemy.paralyzed? or
            @enemy.poisoned? or @enemy.toxic?
          status_multiplier = 1.5
        else
          status_multiplier = 1
        end
        if ball_rate[1].type == Array
          case ball_rate[1][0]
          when "genre"
            if ball_rate[1][@actor.gender] != nil
              ball_rate = eval(ball_rate[1][@actor.gender])
            else
              if ball_rate[1][0] != nil
                ball_rate = eval(ball_rate[1][0])
              else
                ball_rate = 1
              end
            end
          when "taille"
            height = Pokemon_Info.height(@enemy.id).split(' ')[0].to_i
            ball_rate = eval(sprintf(ball_rate[1], height))
            if ball_rate == nil or ball_rate < 1
              ball_rate = 1
            end
          when "poids"
            weight = Pokemon_Info.weight(@enemy.id).split(' ')[0].to_i
            ball_rate = eval(sprintf(ball_rate[1], weight))
            if ball_rate == nil or ball_rate < 1
              ball_rate = 1
            end
          when "type"
            if ball_rate[1][1].include?(@enemy.type1)
              ball_rate = ball_rate[1][2]
            elsif @enemy.type2 != 0 and ball_rate[1].include?(@enemy.type2)
              ball_rate = ball_rate[1][2]
            elsif ball_rate[1][3] != nil
              ball_rate = ball_rate[1][3]
            else
              ball_rate = 1
            end
          when "id"
            if ball_rate[1][1].include?(@enemy.id)
              ball_rate = ball_rate[1][2]
            elsif ball_rate[1][3] != nil
              ball_rate = ball_rate[1][3]
            else
              ball_rate = 1
            end
          when "level"
            max = 99
            if ball_rate[1][2] != nil
              max = ball_rate[1][2]
            end
            ball_rate = eval( sprintf( ball_rate[1][1], @enemy.level ) )
            if ball_rate <= 1
              ball_rate = 1
            end
            if ball_rate >= max
              ball_rate = max
            end
          when "time"
            max = 99
            if ball_rate[1][2] != nil
              max = ball_rate[1][2]
            end
            ball_rate = eval( sprintf( ball_rate[1][1], $battle_var.round ) )
            if ball_rate <= 1
              ball_rate = 1
            end
            if ball_rate >= max
              ball_rate = max
            end
          else
            ball_rate = 1
          end
        else
          ball_rate = ball_rate[1]
        end
       
        multiplier = @enemy.rareness * (ball_rate)
        maxhp = @enemy.maxhp_basis
        hp = @enemy.hp
        catch_rate = Integer((((maxhp * 3 - hp * 2)*multiplier).to_f/(maxhp*3).to_f)*status_multiplier)
        catch_value = Integer(1048560 / (Math.sqrt(Math.sqrt(16711680/catch_rate.to_f))))
        list = [rand(65536), rand(65536), rand(65536), rand(65536)]
        j = 4 # nombre de fois que la balle oscille
        for i in list
          j -= i > catch_value ? 1 : 0
        end
       
        # Procédure / Animation
        # Lancer
        draw_text(Player.name + " utilise", ball_name + "!")
        @ball_sprite = Sprite.new
        @ball_sprite.bitmap = RPG::Cache.picture(ball_sprite)
        @ball_sprite.x = -25
        @ball_sprite.y = 270
        @ball_sprite.z = @z_level + 16
        t = 0.0
        pi = Math::PI
        loop do
          t += 16
          @ball_sprite.y = (270.0 - 230.0 * Math.sin(2 * pi / 3.0 * t / 445.0)).to_i
          @ball_sprite.x = -15 + t
          Graphics.update
          if @ball_sprite.x >= 445
            @ball_sprite.bitmap = RPG::Cache.picture(ball_open_sprite)
            break
          end
        end
       
        count = j
       
        # "Aspiration"
        @enemy_sprite.color = ball_color
        @enemy_sprite.color.alpha = 0
        @ball_sprite.z -= 2
        until @enemy_sprite.color.alpha >= 255
          @flash_sprite.opacity += 50
          @enemy_sprite.color.alpha += 50
          Graphics.update
        end
        Audio.se_play("Audio/SE/Pokeopen.wav")
        loop do
          @enemy_sprite.zoom_x -= 0.1
          @enemy_sprite.zoom_y -= 0.1
          @enemy_sprite.opacity -= 25
          @flash_sprite.opacity -= 25
          Graphics.update
          if @enemy_sprite.zoom_x <= 0.1
            @flash_sprite.opacity = 0
            @enemy_sprite.opacity = 0
            break
          end
        end
        @ball_sprite.bitmap = RPG::Cache.picture(ball_sprite)
       
        # Oscillement
        t = 0
        r = 0
        loop do
          t += 1
          @ball_sprite.y = 81 + 50*(1-Math.exp(-t/20.0)*(Math.cos(t*2*pi/30.0)).abs)
          if @ball_sprite.y >= 81+45 and r < 6
            r += 1
            Audio.se_play("Audio/SE/Pokerebond.wav")
          end
          Graphics.update
          if t >= 60
            break
          end
        end
       
        while count > 0
          count -= 1
          t = 0
          Audio.se_play("Audio/SE/Pokemove.wav")
          loop do
            t += 4
            @ball_sprite.angle = 40*Math.sin(2*pi*t/100.0)
            @ball_sprite.x = 449 - 12*Math.sin(2*pi*t/100.0)
            @ball_sprite.y = 131 + 12*Math.sin(2*pi*t/100.0)
            Graphics.update
            if t == 100
              @ball_sprite.angle = 0
              break
            end
          end
        end
       
        if j != 4
          # Echappé
          @ball_sprite.bitmap = RPG::Cache.picture(ball_open_sprite)
          @ball_sprite.z -= 1
          Audio.se_stop
          Audio.se_play("Audio/SE/Pokeopenbreak.wav")
          @enemy_sprite.oy = @enemy_sprite.bitmap.height
          @enemy_sprite.y += @enemy_sprite.bitmap.height / 2 + 34
          loop do
            @enemy_sprite.opacity += 25
            @enemy_sprite.zoom_x += 0.1
            @enemy_sprite.zoom_y += 0.1
            @ball_sprite.opacity -= 25
            @flash_sprite.opacity += 25
            Graphics.update
            if @enemy_sprite.zoom_x >= 1
              @enemy_sprite.oy = @enemy_sprite.bitmap.height / 2
              @enemy_sprite.y -= @enemy_sprite.bitmap.height / 2 + 34
              Graphics.update
              @ball_sprite.dispose
              break
            end
          end
          until @enemy_sprite.color.alpha <= 0
            @enemy_sprite.color.alpha -= 25
            @flash_sprite.opacity -= 25
            Graphics.update
          end
          @enemy_sprite.color.alpha = 0
          @enemy_sprite.opacity = 255
          @flash_sprite.opacity = 0
          Graphics.update
         
          string1 = j == 3 ? "Mince!" : j == 2 ? "Aaaah!" : j == 1 ? "Raah!" : "Oh non!"
          string2 = j == 3 ? "Ca y était presque!" : j == 2 ? "Presque!" : j == 1 ? "Ca y était presque!" : "Le POKéMON s'est libéré!"
          draw_text(string1, string2)
          wait(40)
        else
          for actor in $pokemon_party.actors
            if $battle_var.have_fought.include?(actor.party_index)
              actor.fight[0] += 1
              if actor.dead? and not(actor.vaudou)
                actor.vaudou = actor.medaille == nil ? false : $data_medaille[actor.medaille][4]
                if actor.vaudou
                  draw_text(actor.name + " subit la","malédiction !")
                  wait(40)
                  wait_hit
                end
              else
                actor.fight[1] += 1
              end
            end
          end
          # Attrapé
          @enemy_caught = true
          Audio.me_play("Audio/ME/Attraper.ogg")
          wait_hit
          until @ball_sprite.opacity <= 0
            @ball_sprite.opacity -= 25
            Graphics.update
          end
        end
        if j != 4
          return false
        elsif j == 4
          draw_text("Mon " + @enemy.name + " ! Voleur !")
          wait(40)
          voler_enemy
          return true
        end
      else
        # Procédure / Animation
        # Lancer
        draw_text(Player.name + " utilise", ball_name + "!")
        @ball_sprite = Sprite.new
        @ball_sprite.bitmap = RPG::Cache.picture(ball_sprite)
        @ball_sprite.x = -25
        @ball_sprite.y = 270
        @ball_sprite.z = @z_level + 16
        t = 0.0
        pi = Math::PI
        loop do
          t += 16
          @ball_sprite.y = (270.0 - 230.0 * Math.sin(2 * pi / 3.0 * t / 445.0)).to_i
          @ball_sprite.x = -15 + t
          Graphics.update
          if @ball_sprite.x >= 445
            break
          end
        end
       
        Graphics.update
        # Rejet
        draw_text(Trainer_Info.string(@trainer_id) + " dévie", "la " + ball_name + " !")
        Audio.se_stop
        Audio.se_play("Audio/SE/Pokeopenbreak.wav")
       
        t = 0
        loop do
          t += 1
          @ball_sprite.x -= -20
          @ball_sprite.y += t
          Graphics.update
          if t == 10
            @ball_sprite.dispose
            break
          end
        end
      end
     
      wait(40)
      draw_text("Tu n'auras jamais", "mon " + @enemy.name + " !")
      wait(40)


      return false
    end
   
    #------------------------------------------------------------ 
    # Fuite
    #------------------------------------------------------------           
    def run_able?(runner, opponent)
      if @run
        return super
      end
      return false
    end
   
    def flee_able(actor, enemy)
      if @run
        return super
      end
      @action_window.visible = true
      return false
    end
   
    def end_battle_flee(expulsion = false)
      if @run
        return super
      end
      draw_text("On ne s'enfuit pas", "d'un combat de dresseurs!")
      wait_hit
    end
   
    def end_battle_flee_enemy(expulsion = false)
      if @run
        return super
      end
      draw_text("On ne s'enfuit pas", "d'un combat de dresseurs!")
      wait_hit
    end
   
    #------------------------------------------------------------ 
    # Exp en cours de combat
    #------------------------------------------------------------     
    def exp_battle
      @actor_status.z = @z_level + 15
     
      # Réduction de liste
      $battle_var.have_fought.uniq!
      for index in $battle_var.have_fought
        actor = $pokemon_party.actors[index]
        if actor.dead?
          $battle_var.have_fought.delete(index)
        end
      end
      number = $battle_var.have_fought.length
     
      @enemy.skill_effect_reset
      @enemy.reset_stat_stage
      if @evolve_checklist == nil
        @evolve_checklist = []
      end
      if @money_rate == nil
        @money_rate = 1
      end
     
      # Recherche de paramètres
      type = 1.3
      exp_share_number = 0
      for pokemon in $pokemon_party.actors
        if not(pokemon.dead?) and Item.data(pokemon.item_hold)["expshare"]
          exp_share_number += 1
        end
      end
     
      for actor in $pokemon_party.actors
        if actor.dead?
          next
        end
       
        amount = nil
        if $battle_var.have_fought.include?(actor.party_index)
          amount = actor.exp_calculation(@enemy.battle_list, @enemy.level, number, type, exp_share_number)
          # Tag objet
          if Item.data(actor.item_hold)["amuletcoin"]
            @money_rate = 2
          end
        end
       
        if Item.data(actor.item_hold)["expshare"] and
            not($battle_var.have_fought.include?(actor.party_index)) and not(actor.dead?)
          amount = actor.exp_calculation(@enemy.battle_list, @enemy.level, number, type, exp_share_number, 0)
        end
       
        if amount != nil and not($pokemon_capturer)
          actor.skill_effect_reset
          actor.reset_stat_stage
          actor.add_bonus(@enemy.battle_list)
          draw_text(actor.given_name + " a gagné", amount.to_s + " points d'expérience!")
          Graphics.update
          wait_hit
       
          for i in 1..amount
            actor.add_exp_battle(1)
            if actor.level_check
              actor.level_up(self)
              if not(@evolve_checklist.include?(actor))
                @evolve_checklist.push(actor)
              end
            end
            if actor == @actor
              if @actor.exp_list[@actor.level+1] != nil and @actor.level < MAX_LEVEL
                divide = (@actor.exp_list[@actor.level+1]-@actor.exp_list[@actor.level])/192
                if divide == 0
                  divide = 1
                end
                if (@actor.exp - @actor.exp_list[@actor.level])%divide == 0
                  @actor_status.exp_refresh
                  Graphics.update
                end
              end
            end
          end
        else
          $pokemon_capturer = false
        end
      end
     
      @actor_status.refresh
      Graphics.update
     
      # Reset have_fought
      $battle_var.have_fought = [@actor.party_index]
     
    end
   
    #------------------------------------------------------------ 
    # Fin de combat
    #------------------------------------------------------------     
    def end_battle_victory
      $pokemon_party.incr_nb_matchs
      for actor in $pokemon_party.actors
        if $battle_var.have_fought.include?(actor.party_index)
          actor.fight[0] += 1
          if actor.dead? and not(actor.vaudou)
            actor.vaudou = actor.medaille == nil or $data_medaille[actor.medaille] == nil ? false : $data_medaille[actor.medaille][4]
            if actor.vaudou
              draw_text(actor.name + " subit la","malédiction !")
              wait(40)
              wait_hit
            end
          else
            actor.fight[1] += 1
          end
        end
      end
      #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")
      Audio.bgm_play("Audio/BGM/PkmRS_Victory2.mid")
     
     
      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
      @start_enemy_battler = $alea ? "trainer" + $no_alea : Trainer_Info.battler(@trainer_id)
      @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 / 3) - 10
      @enemy_sprite.bitmap = RPG::Cache.battler(@start_enemy_battler, 0)
      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
     
     
      $battle_var.money = Trainer_Info.money(@trainer_id)
      draw_text(Player.name + " remporte " + ($battle_var.money).to_s + "$!")
      interets = 0
      bq = 0
      for i in $game_variables[5000]["banque"]
        i.maj
        if i.du > 0 and interets < $battle_var.money
          int_temp = interets + ($battle_var.money * BANQUE::TAUX / 100.0).round
          interets += int_temp > $battle_var.money ? $battle_var.money : int_temp
          i.du -= interets
          if i.du < 0
            interets += i.du
            i.du -= i.du
          end
          bq += 1
        end
      end
      if bq == 1
        draw_text(interets.to_s + "$ ont été prélevés pour","le remboursement de la banque !")
      elsif bq > 1
        draw_text(interets.to_s + "$ ont été prélevés pour","le remboursement des banques !")
      end
      $battle_var.money -= interets
      $pokemon_party.add_money($battle_var.money)
      wait(40)
     
      wait(30)
      $game_system.bgm_play($game_temp.map_bgm)
      for actor in @evolve_checklist
        info = actor.evolve_check
        if info != false
          scene = Pokemon_Evolve.new(actor, info, @z_level + 200)
          scene.main
        end
      end
     
      end_battle
    end
   
   
  end
 
end










Pour l'autre script, il suffit de modifier la partie que tu avais trouvé.

Je pense que ça devrait fonctionner, tu peux avoir le détail d'utilisation dans le script. Imbécile heureux

Posté par Mysterïous le 6 Oct - 11:34 (2013)
Merci, tous fonctionne correctement à présent ! Imbécile heureux 
Mais bon j'ai pleins de nouveaux problèmes à post ! (sauf que ce sera graphiquement)  Bouche extensible

Posté par Pαlвσlѕку le 6 Oct - 11:42 (2013)
Mysterïous a écrit:
Kataklysm a écrit:
Et visiblement tu ne sais pas non plus que les double post sont interdits. 
Il faut faire un édit visible, c'est a dire copier ton premier message, le supprimer, coller le premier message puis ajouter ton deuxième message.




Autant être noob jusqu'au bout, comment je supprime mon second message ?  Lord teatime


Tu peux supprimer ton dernier message posté uniquement si personne n'a posté après. Imbécile heureux

Posté par TouzaxA le 6 Oct - 13:09 (2013)
Mysterïous a écrit:
Merci, tous fonctionne correctement à présent ! Imbécile heureux 
Mais bon j'ai pleins de nouveaux problèmes à post ! (sauf que ce sera graphiquement)  Bouche extensible


Mais de rien. Imbécile heureux