Sujet n°12855
Posté par Carnistus le 20 Juin - 06:41 (2013)
Titre : (Bug script)follow me
Salut,

J'ai un problème avec le script de follow me de Brendan(j'ai déjà posté sur son topic mais aucune réponse...)
Je reçois aucune erreur car ce n'est qu'un bug d'affichage. Il se produit quand je reprendre une sauvegarde(quand je change de maps il redevient normal)
Il a un décalage avec le pokémon il fait les mêmes gestes que moi mais en retard
Exemple;
Quand j'entre dans la partie et que je fais bas il ne bougera pas ensuite si je fais gauche il fera mon ancien bas ensuite si je fais droite il partira à gauche etc...(J'espère avoir été clair dans cet exemple NINJA POWA ! )
Voici le script:
Spoiler
Code:
#==============================================================================         
# ■ Follow Me Pokémon         
# par Brendan75,modifié par Isomir       
#-----------------------------------------------------------------------------         
# Rend le premier pokémon de l'équipe visible sur la map.         
#==============================================================================         
         
PKM_TRANSPARENT_SWITCHES = 50 # Index de l'interrupteur pour rendre invisible         
PKM_SURF_SWITCHES = 51 # Index de l'interrupteur à activer quand vous surfez   
   
   
   
    class Follower_Pkm < Game_Character           
      include POKEMON_S         
               
      def initialize         
        super()         
        @through = true         
        @step_anime = true         
        @id = 0         
        @shiney = false     
        @type = false   
      end         
               
      def update         
        if $pokemon_party.size != 0         
     
          @id = $pokemon_party.actors[0].id         
          @shiney = $pokemon_party.actors[0].shiny     
     
          if @shiney       
            if $game_switches[PKM_SURF_SWITCHES] == false   
              if $data_pokemon[@id][7][4].include?(12)     
               string = ""   
              else   
            #if @id == 72 or @id == 73 or @id == 86 or @id == 87 or @id == 116 or @id == 117 or @id == 118 or @id == 119 or @id == 120 or @id == 121 or @id == 129 or @id == 130 or @id == 131 or @id == 170 or @id == 171 or @id == 211 or @id == 222 or @id == 223 or @id == 318 or @id == 319 or @id == 320 or @id == 321 or @id == 349 or @id == 350 or @id == 363 or @id == 364 or @id == 365 or @id == 366 or @id == 367 or @id == 368 or @id == 369 or @id == 370 or @id == 382 or @id == 456 or @id == 457 or @id == 458     
              #   
            #else   
              string = "PKMN/{sprintf('%03d', @id)}s_0.png"   
            end   
          else   
            if $data_pokemon[@id][7][4].include?(2)   
            #if @id == 72 or @id == 73 or @id == 86 or @id == 87 or @id == 116 or @id == 117 or @id == 118 or @id == 119 or @id == 120 or @id == 121 or @id == 129 or @id == 130 or @id == 131 or @id == 170 or @id == 171 or @id == 211 or @id == 222 or @id == 223 or @id == 318 or @id == 319 or @id == 320 or @id == 321 or @id == 349 or @id == 350 or @id == 363 or @id == 364 or @id == 365 or @id == 366 or @id == 367 or @id == 368 or @id == 369 or @id == 370 or @id == 382 or @id == 456 or @id == 457 or @id == 458     
              string = "PKMN/#{sprintf('%03d', @id)}s_0.png"   
            else   
              string = ""   
            end   
          end   
          else   
            if $game_switches[PKM_SURF_SWITCHES] == false   
            if $data_pokemon[@id][7][4].include?(12)     
               string = ""   
              else   
            #if @id == 72 or @id == 73 or @id == 86 or @id == 87 or @id == 116 or @id == 117 or @id == 118 or @id == 119 or @id == 120 or @id == 121 or @id == 129 or @id == 130 or @id == 131 or @id == 170 or @id == 171 or @id == 211 or @id == 222 or @id == 223 or @id == 318 or @id == 319 or @id == 320 or @id == 321 or @id == 349 or @id == 350 or @id == 363 or @id == 364 or @id == 365 or @id == 366 or @id == 367 or @id == 368 or @id == 369 or @id == 370 or @id == 382 or @id == 456 or @id == 457 or @id == 458     
              #   
            #else   
              string = "PKMN/#{sprintf('%03d', @id)}_0.png"   
            end   
          else   
            if $data_pokemon[@id][7][4].include?(2)   
            #if @id == 72 or @id == 73 or @id == 86 or @id == 87 or @id == 116 or @id == 117 or @id == 118 or @id == 119 or @id == 120 or @id == 121 or @id == 129 or @id == 130 or @id == 131 or @id == 170 or @id == 171 or @id == 211 or @id == 222 or @id == 223 or @id == 318 or @id == 319 or @id == 320 or @id == 321 or @id == 349 or @id == 350 or @id == 363 or @id == 364 or @id == 365 or @id == 366 or @id == 367 or @id == 368 or @id == 369 or @id == 370 or @id == 382 or @id == 456 or @id == 457 or @id == 458     
              string = "PKMN/#{sprintf('%03d', @id)}_0.png"   
            else   
              string = ""   
            end   
            end   
          end         
          if @character_name != string         
            @character_name = string         
            @character_hue = 0         
            @opacity = 255         
            @blend_type = 0         
          end         
        if @opacity != ($game_switches[PKM_TRANSPARENT_SWITCHES] ? 0 : 255)         
           @opacity = ($game_switches[PKM_TRANSPARENT_SWITCHES] ? 0 : 255)         
           end       
        else         
          @character_name = ""         
        end         
           self.move_speed = $game_player.move_speed         
        super         
      end         
           
  def screen_z(height = 0)           
    if $game_player.x == @x and $game_player.y == @y           
      return $game_player.screen_z(height) - 1         
    end         
    super(height)           
  end
 
  def check_event_trigger_touch(x, y) end         
             
  def passable?(x, y, d)         
    new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 1)         
    new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 1)         
    unless $game_map.valid?(new_x, new_y)         
      return false         
    end         
    if @through         
      return true         
    end         
    unless $game_map.passable?(x, y, d, self)         
      return false         
    end         
    unless $game_map.passable?(new_x, new_y, 10 - d)         
      return false         
    end         
    for event in $game_map.events.values         
      if event.x == new_x and event.y == new_y         
        unless event.through         
          if self != $game_player         
            return false         
          end         
          if event.character_name != ""         
            return false         
          end         
        end         
      end         
    end         
    return true         
  end     
end   
   
   
         
#-----------------------------------------------------------------------------         
# ● Spriteset Map         
#-----------------------------------------------------------------------------         
class Spriteset_Map         
  alias follow_me_initialize initialize         
  def initialize         
    follow_me_initialize         
    @character_sprites.push(Sprite_Character.new(@viewport1, $game_party.follower_pkm))         
    update         
  end         
end         
         
#-----------------------------------------------------------------------------         
# ● Scene Map         
#-----------------------------------------------------------------------------         
class Scene_Map         
  alias follow_me_transfer_player transfer_player         
  def transfer_player         
    $game_party.erase_moves         
    follow_me_transfer_player         
  end         
           
  alias follow_me_update update         
  def update         
    follow_me_update         
    $game_party.follower_pkm.update     
  end         
end         
         
#-----------------------------------------------------------------------------         
# ● Game Player         
#-----------------------------------------------------------------------------         
class Game_Player         
  alias follow_me_moveto moveto         
  def moveto(x, y)         
    follow_me_moveto(x, y)         
    $game_party.follower_pkm.moveto(x, y)         
  end         
           
  def move_down(turn_enabled = true)         
    if passable?(@x, @y, 2)         
      $game_party.move_party_actors         
      $game_party.add_move_list(Input::DOWN, turn_enabled)         
    end         
    super(turn_enabled)         
  end         
           
  def move_left(turn_enabled = true)         
    if passable?(@x, @y, 4)         
      $game_party.move_party_actors         
      $game_party.add_move_list(Input::LEFT, turn_enabled)         
    end         
    super(turn_enabled)         
  end         
           
  def move_right(turn_enabled = true)         
    if passable?(@x, @y, 6)         
      $game_party.move_party_actors         
      $game_party.add_move_list(Input::RIGHT, turn_enabled)         
    end         
    super(turn_enabled)         
  end         
           
  def move_up(turn_enabled = true)         
    if passable?(@x, @y, 8)         
      $game_party.move_party_actors         
      $game_party.add_move_list(Input::UP, turn_enabled)         
    end           
    super(turn_enabled)         
  end         
end         
         
#-----------------------------------------------------------------------------         
# ● Game Party         
#-----------------------------------------------------------------------------         
class Game_Party         
  include POKEMON_S         
  attr_accessor :follower_pkm         
           
  alias follow_me_initialize initialize         
  def initialize         
    follow_me_initialize         
    @follower_pkm = Follower_Pkm.new           
    @next_move = nil     
  end         
           
  def move_party_actors         
    case @next_move.type         
    when Input::DOWN         
      @follower_pkm.move_down(@next_move.turn_enabled)         
    when Input::LEFT         
      @follower_pkm.move_left(@next_move.turn_enabled)         
    when Input::RIGHT         
      @follower_pkm.move_right(@next_move.turn_enabled)         
    when Input::UP         
      @follower_pkm.move_up(@next_move.turn_enabled)         
    else         
      return         
    end         
    erase_moves         
  end         
             
  def add_move_list(type, turn_enabled)           
    @next_move = Move_List_Element.new(type, turn_enabled)         
  end         
           
  def erase_moves         
    @next_move = nil         
  end         
end         
         
#-----------------------------------------------------------------------------         
# ● Move List Element         
#-----------------------------------------------------------------------------         
class Move_List_Element           
  attr_reader :type         
  attr_reader :turn_enabled         
           
  def initialize(type, turn_enabled)         
    @type = type         
    @turn_enabled = turn_enabled     
  end         
end


J'espère que quelqu'un sera capable de corriger sa et merci d'avance.