Sujet n°14050
Posté par Eternum le 6 Aoû - 00:26 (2014)
Titre : Problème avec le script MAP
Bonsoir!

J'ai récemment installé un script de Follow-Me. Après quelques petites modifications pour l'adapter au projet, ce script fonctionne parfaitement bien.
Mais depuis que je l'ai installé, je ne peux plus me téléporter d'une map vers une autre. A chaque fois que j'essaie ce message d'erreur apparait avec le Log suivant.

Spoiler


Maintenant voici le script MAP, qui est celui qui bug:

Script
Code:
#==============================================================================
# ■ MAP
# Pokemon Script Project - Krosk
# 21/08/08
#-----------------------------------------------------------------------------
# Scène à ne pas modifier de préférence
#-----------------------------------------------------------------------------
# Gestion de carte du jeu
#-----------------------------------------------------------------------------
# Englobe les fonctions de carte du jeu, de CS Vol, et de localisation Pokédex
#-----------------------------------------------------------------------------

class Game_Temp
  attr_accessor :map_temp
  attr_accessor :back_calling
  attr_accessor :world_map_event_checking
 
  def fly_mode
    return @map_temp[0] == "FLY"
  end
 
end


class Game_Character
  attr_reader :step_anime
  def set_map_character(character_name = self.character_name, character_hue = self.character_hue)
    @character_name = character_name
    @character_hue = character_hue
  end
  def set_through(state = true)
    @through = state
  end
  def set_step_anime(state = true)
    @step_anime = state
  end
  def set_opacity(value)
    @opacity = value
  end
  def set_direction_fix
    @direction_fix = true
  end
  def set_move_speed(value)
    @move_speed = value
  end
  def set_direction(value = 2)
    @direction = value
  end
end


class Game_Player < Game_Character
  def check_world_map
    unless moving? or $game_map.map_id != POKEMON_S::_WMAPID
      if $game_temp.world_map_event_checking
        $scene.clear_map_window
        $game_temp.world_map_event_checking = false
        for event in $game_map.events.values
          if event.x == @x and event.y == @y
            $scene.refresh_map_window(event)
          end
        end
      end
    end
  end
end


class Scene_Map
 
  def initialize_map_window
    @map_window = Window_Base.new(320, 385, 300, 76)
    @map_window.active = true
    @map_window.visible = true
    @map_window.contents = Bitmap.new(300-32, 76-32)
    @map_window.contents.font.name = $fontface
    @map_window.contents.font.size = $fontsize
    @map_window.contents.font.color = Color.new(0, 0, 0)
    @map_window.z = 50000
    clear_map_window
    $game_temp.world_map_event_checking = true
  end
 
  def refresh_map_window(event)
    #clear_map_window
    map_zone = event.event.name.split('/')[0].to_i
    if $data_zone[map_zone] != nil
      zone_name = $data_zone[map_zone][0]
    else
      zone_name = ""
    end
    if $game_player.screen_x > 288 and $game_player.screen_y > 353
      @map_window.y = 20
    else
      @map_window.y = 385
    end
    @map_window.visible = true
    @map_window.contents.draw_text(0, 0, 300-32, 76-32, zone_name, 1)
    @map_window.update
  end
 
  def clear_map_window
    if @map_window != nil
      @map_window.visible = false
      @map_window.contents.clear
      @map_window.update
    end
  end
 
  def call_back_world_map
    Graphics.freeze
    $game_player.straighten
    @map_window.dispose
    $game_temp.back_calling = false
    $game_system.se_play($data_system.cancel_se)
    $game_temp.player_new_map_id = $game_temp.map_temp[2]
    $game_temp.player_new_x = $game_temp.map_temp[3]
    $game_temp.player_new_y = $game_temp.map_temp[4]
    $game_temp.player_new_direction = $game_temp.map_temp[5]
    $game_player.set_map_character($game_temp.map_temp[6], $game_temp.map_temp[7])
    $game_player.set_step_anime($game_temp.map_temp[8])
    $game_system.menu_disabled = $game_temp.map_temp[9]
    POKEMON_S::_MAPLINK = $game_temp.map_temp[10]
    $game_map.setup($game_temp.player_new_map_id)
    $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
    $game_player.set_direction($game_temp.player_new_direction)
    #$game_temp.player_transferring = true
    #$game_temp.transition_processing = true
    #$game_temp.transition_name = ""
    if $game_temp.map_temp[0] == "VIEW" or $game_temp.map_temp[0] == "FLY"
      $game_map.autoplay
      $game_map.update
      $scene = Scene_Map.new
    elsif $game_temp.map_temp[0] == "PKDX"
      $scene = POKEMON_S::Pokemon_Detail.new($game_temp.map_temp[11], $game_temp.map_temp[12], 1)
    end
  end
 
 
  def initialize_world_map
    if $game_temp.map_temp[2]
      return
    end
    $game_temp.map_temp[1] = true
    map_id = $game_temp.map_temp[2]
    map_zone = $data_mapzone[map_id][0]
    $game_system.menu_disabled = true
    found = false
     
    if $game_temp.map_temp[0] == "VIEW" or $game_temp.map_temp[0] == "FLY"
      for element in $game_map.events.values
        # Pre-process
        array_tag = element.event.name.split('/')
        # Position du joueur
        if array_tag.include?(map_zone.to_s) and not array_tag.include?("*")
          found = [element.x, element.y]
        end
        # Character dummy du joueur
        if array_tag.include?('~')
          actor_character = element
        end
        element.set_through
      end
    end
    # ---------------------------------------------------------
    if $game_temp.map_temp[0] == "PKDX"
      pokemon_id = $game_temp.map_temp[11]
     
      for element in $game_map.events.values
        # Pre-process
        array_tag = element.event.name.split('/')
        element.set_through
        # Position du joueur
        if array_tag.include?(map_zone.to_s) and not array_tag.include?("*")
          found = [element.x, element.y]
        end
        # Character dummy du joueur
        if array_tag.include?('~')
          actor_character = element
        end
        # Pokédex
        if POKEMON_S::Pokemon_Info.where(pokemon_id).include?(array_tag[0].to_i)
          element.set_opacity(255)
          element.set_direction_fix
          element.set_step_anime
          element.set_move_speed(6)
        end
      end
    end
   
    if found
      actor_character.set_map_character($game_player.character_name, $game_player.character_hue)
      actor_character.moveto(found[0], found[1])
      actor_character.set_through
      $game_player.moveto(found[0], found[1])
    end
   
    initialize_map_window
   
    $game_player.set_step_anime
    $game_player.set_map_character("MAP.PNG", 0)
  end
 
 
end


class Interpreter
  def call_world_map(mode = "VIEW")
    $game_temp.map_temp = [mode, false, $game_map.map_id, $game_player.x,
      $game_player.y, $game_player.direction, $game_player.character_name,
      $game_player.character_hue, $game_player.step_anime,
      $game_system.menu_disabled, POKEMON_S::_MAPLINK]
    $game_temp.player_new_map_id = POKEMON_S::_WMAPID
    $game_temp.player_transferring = true
    Graphics.freeze
    $game_temp.transition_processing = true
    $game_temp.transition_name = ""
    POKEMON_S::_MAPLINK = false
  end
  alias carte_du_monde call_world_map
 
  def call_back_world_map
    $scene.call_back_world_map
  end
  alias retour call_back_world_map
end


Follow-me
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 = "Pkm #{sprintf('%03d', @id)}.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 = "Pkm #{sprintf('%03d', @id)}.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 : 0)         
    new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)         
    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   

Ce bug ne me gène pas vraiment dans la conception du jeu mais ca m’empêche de tout tester comme il le faudrait.. J'espère que vous m'aiderez a trouver la solution, si vous nécessitez un autre script ou n'importe quoi pour résoudre le problème, n'hésitez pas à me le demander.^^

Bonne soirée et merci d'avance.

EDIT: Cela bug aussi lorsque j'appuie sur échap pour faire apparaître le menu...

Posté par Valken le 6 Aoû - 09:14 (2014)
Je pense qu'il faudrait peut-être le script de follow-me que t'as installé o=.

Posté par Eternum le 6 Aoû - 09:43 (2014)
D'accord je l'ajoute au premier poste. ^^