Sujet n°6421
Posté par Ninzu le 5 Avr - 11:25 (2010)
Titre : Problèmes MapLink
Bonjour, j'ai voulu installer le script d'ombres pour mon Projet Pokemon sous PSP4G
Et voici l'erreur :


 
Code:

 ---------- Erreur de script : MAPLINK ----------
----- Type
NameError

----- Message
uninitialized constant Spriteset_Map::Sprite_Character

----- Position dans MAPLINK
Ligne 124

----- Backtrace
Script : MAPLINK | Ligne : 124 | Méthode : in `initialize'
Script : MAPLINK | Ligne : 123 | Méthode : in `each'
Script : MAPLINK | Ligne : 123 | Méthode : in `initialize'
Script : Scene_Map | Ligne : 13 | Méthode : in `new'
Script : Scene_Map | Ligne : 13 | Méthode : in `main'
Script : Main | Ligne : 49





 
Code:
 sprite = Sprite_Character.new(@viewport1, $game_map.events[i]) 


 
Code:

 # #==============================================================================   
#  # ■ Sprite_Character modifié (voir Sprite_Ombre)   
#  #------------------------------------------------------------------------------   
#  #  キャラクター表示用のスプライトです。 Game_Character クラスのインスタンスを   
#  # 監視し、スプライトの状態を自動的に変化させます。   
#  #==============================================================================   
#     
#  class Sprite_Character < RPG::Sprite   
#    #--------------------------------------------------------------------------   
#    # ● 公開インスタンス変数   
#    #--------------------------------------------------------------------------   
#    attr_accessor :character                # キャラクター   
#    #--------------------------------------------------------------------------   
#    # ● オブジェクト初期化   
#    #     viewport  : ビューポート   
#    #     character : キャラクター (Game_Character)   
#    #--------------------------------------------------------------------------   
#    def initialize(viewport, character = nil)   
#      super(viewport)   
#      @character = character   
#      @ombrelist=[]   
#      if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["s"])   
#        if (character.list[1]!=nil and character.list[1].code == 108)   
#          @anglemin=character.list[1].parameters.to_s   
#        end   
#        if (character.list[2]!=nil and character.list[2].code == 108)   
#          @anglemax=character.list[2].parameters.to_s   
#        end   
#        if (character.list[3]!=nil and character.list[3].code == 108)   
#          @distancemax=character.list[3].parameters.to_s   
#        end    
#       for i in $game_map.events.keys.sort   
#       if ($game_map.events[i].is_a?(Game_Event) and $game_map.events[i].list!=nil and $game_map.events[i].list[0].code == 108 and $game_map.events[i].list[0].parameters == ["o"])   
#          @ombrelist[i+1] = Sprite_Ombre.new(viewport, $game_map.events[i],self,@anglemin,@anglemax,@distancemax)   
#        end   
#      end   
#      @ombrelist[1] = Sprite_Ombre.new(viewport, $game_player,self,@anglemin,@anglemax,@distancemax)   
#      end   
#      update   
#    end   
#    #--------------------------------------------------------------------------   
#    # ● フレーム更新   
#    #--------------------------------------------------------------------------   
#    def update   
#      super   
#      # タイル ID、ファイル名、色相のどれかが現在のものと異なる場合   
#      if @tile_id != @character.tile_id or   
#         @character_name != @character.character_name or   
#         @character_hue != @character.character_hue   
#        # タイル ID とファイル名、色相を記憶   
#        @tile_id = @character.tile_id   
#        @character_name = @character.character_name   
#        @character_hue = @character.character_hue   
#        # タイル ID が有効な値の場合   
#        if @tile_id >= 384   
#          self.bitmap = RPG::Cache.tile($game_map.tileset_name,   
#            @tile_id, @character.character_hue)   
#          self.src_rect.set(0, 0, 32, 32)   
#          self.ox = 16   
#          self.oy = 32   
#        # タイル ID が無効な値の場合   
#        else   
#          self.bitmap = RPG::Cache.character(@character.character_name,   
#            @character.character_hue)   
#          @cw = bitmap.width / 4   
#          @ch = bitmap.height / 4   
#          self.ox = @cw / 2   
#          self.oy = @ch   
#        end   
#      end   
#      # 可視状態を設定   
#      self.visible = (not @character.transparent)   
#      # グラフィックがキャラクターの場合   
#      if @tile_id == 0   
#        # 転送元の矩形を設定   
#        sx = @character.pattern * @cw   
#        sy = (@character.direction - 2) / 2 * @ch   
#        self.src_rect.set(sx, sy, @cw, @ch)   
#      end   
#      # スプライトの座標を設定   
#      self.x = @character.screen_x   
#      self.y = @character.screen_y   
#      self.z = @character.screen_z(@ch)   
#      # 不透明度、合成方法、茂み深さを設定   
#      self.opacity = @character.opacity   
#      self.blend_type = @character.blend_type   
#      self.bush_depth = @character.bush_depth   
#      # アニメーション   
#      if @character.animation_id != 0   
#        animation = $data_animations[@character.animation_id]   
#        animation(animation, true)   
#        @character.animation_id = 0   
#      end   
#      if @ombrelist!=[]   
#      for i in 1..@omberlist.size  
#      if @ombrelist[i]!=nil   
#          @ombrelist[i].update   
#      end   
#      end   
#      end   
#    end   
#  end


 
Code:

 # #==============================================================================   
#  # ■ Sprite_Ombre   
#  # Base par Genzai Kawakami, dynamisme par Rataime, améliorations par Boushy   
#  #------------------------------------------------------------------------------   
#  #  キャラクター表示用のスプライトです。 Game_Character クラスのインスタンスを   
#  # 監視し、スプライトの状態を自動的に変化させます。   
#  #==============================================================================   
#     
#  class Sprite_Ombre < RPG::Sprite   
#    #--------------------------------------------------------------------------   
#    # ● 公開インスタンス変数   
#    #--------------------------------------------------------------------------   
#    attr_accessor :character                # キャラクター   
#    #--------------------------------------------------------------------------   
#    # ● オブジェクト初期化   
#    #     viewport  : ビューポート   
#    #     character : キャラクター (Game_Character)   
#    #--------------------------------------------------------------------------   
#    def initialize(viewport, character = nil,source = nil,anglemin=0,anglemax=0,distancemax=0)   
#      super(viewport)   
#      @anglemin=anglemin.to_f   
#      @anglemax=anglemax.to_f   
#      @distancemax=distancemax.to_f   
#      @character = character   
#      @source = source   
#      update   
#    end   
#    #--------------------------------------------------------------------------   
#    # ● フレーム更新   
#    #--------------------------------------------------------------------------   
#    def update   
#      super   
#      # タイル ID、ファイル名、色相のどれかが現在のものと異なる場合   
#      if @tile_id != @character.tile_id or   
#         @character_name != @character.character_name or   
#         @character_hue != @character.character_hue   
#        # タイル ID とファイル名、色相を記憶   
#        @tile_id = @character.tile_id   
#        @character_name = @character.character_name   
#        @character_hue = @character.character_hue   
#        # タイル ID が有効な値の場合   
#        if @tile_id >= 384   
#          self.bitmap = RPG::Cache.tile($game_map.tileset_name,   
#            @tile_id, @character.character_hue)   
#          self.src_rect.set(0, 0, 32, 32)   
#          self.ox = 16   
#          self.oy = 32   
#        # タイル ID が無効な値の場合   
#        else   
#          self.bitmap = RPG::Cache.character(@character.character_name,   
#            @character.character_hue)   
#          @cw = bitmap.width / 4   
#          @ch = bitmap.height / 4   
#          self.ox = @cw / 2   
#          self.oy = @ch   
#        end   
#      end   
#      # 可視状態を設定   
#      self.visible = (not @character.transparent)   
#      # グラフィックがキャラクターの場合   
#      if @tile_id == 0   
#        # 転送元の矩形を設定   
#        sx = @character.pattern * @cw   
#       @direct=@character.direction   
#          
#        if self.angle>90 or angle<-90   
#        
#          if @direct== 6   
#                 sy = ( 4- 2) / 2 * @ch#@character.direction   
#        end   
#        if @direct== 4   
#                 sy = ( 6- 2) / 2 * @ch   
#          end   
#          if @direct != 4 and @direct !=6   
#          sy = (@character.direction - 2) / 2 * @ch   
#            end   
#          else   
#       sy = (@character.direction - 2) / 2 * @ch   
#       end   
#         self.src_rect.set(sx, sy, @cw, @ch)   
#      end   
#      # スプライトの座標を設定   
#      self.x = @character.screen_x   
#      self.y = @character.screen_y-5   
#      self.z = @character.screen_z(@ch)-1   
#      # 不透明度、合成方法、茂み深さを設定   
#      self.opacity = @character.opacity   
#      self.blend_type = @character.blend_type   
#      self.bush_depth = @character.bush_depth   
#      # アニメーション   
#      if @character.animation_id != 0   
#        animation = $data_animations[@character.animation_id]   
#        animation(animation, true)   
#        @character.animation_id = 0   
#      end   
#      @deltax=@source.x-self.x   
#      @deltay= @source.y-self.y   
#      self.angle = 57.3*Math.atan2(@deltax, @deltay )   
#      @angle_trigo=self.angle+90   
#      if @angle_trigo<0   
#        @angle_trigo=360+@angle_trigo   
#      end   
#      self.color = Color.new(0, 0, 0)   
#      @distance = ((@deltax ** 2) + (@deltay ** 2))   
#      self.opacity = 1200000/(@distance+6000)   
#      @distance = @distance ** 0.5   
#      if @distancemax !=0 and @distance>=@distancemax   
#        self.opacity=0   
#      end   
#      if @anglemin !=0 or @anglemax !=0   
#         if @angle_trigo<@anglemin or @angle_trigo>@anglemax   
#           self.opacity=0   
#         end            
#      end   
#    end   
#  end



Si vous pourriez m'éclairez d'avantage.
Merci d'avance.

Posté par Pαlвσlѕку le 5 Avr - 15:27 (2010)
Je n'ai aucune idée de l'origine du bug, mais au lieu de mettre plein de # pour mettre toutes les lignes en commentaire, il suffit de mettre =begin au début du script et =end à la fin pour que ça fasse la même chose. Clin d'œil foireux

Posté par Ninzu le 5 Avr - 16:30 (2010)
Merci beaucoup =D

Posté par Sphinx le 5 Avr - 17:52 (2010)
Justement, Palbol, ce ne sont pas des lignes de commentaires, tous ces # devant Clin d'œil foireux Et c'est parce que la définition de la classe Sprite_Character est en commentaire que ca te fait ce bug

Tu n'as pas 36 solutions : tu dois retirer un # au début de chacune de tes lignes Imbécile heureux (Les lignes où tu as 2 #, ce sont déjà des commentaires à la base, donc surtout, faut au moins leur en laisser un Clin d'œil foireux)