查看: 2284|回复: 2

[已经解决] 神思走路幻影腳本怎么弄成事件也有效

[复制链接]
梦石
0
星屑
14720
在线时间
2175 小时
注册时间
2016-9-20
回帖
777
发表于 2018-7-28 14:01:35 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
[pre lang="ruby"]#幻影by 66rpg 神思 不知为什么在原点(大慨要在scene_map下
#__END__
class Game_Player < Game_Character

  def mirage(opacity)

    $scene.spriteset.mirage(self, opacity)

  end

  alias update_naiyoudadangao update

    def update

    update_naiyoudadangao

    if Input.dir8 != 0

    mirage(120)  

    end

    end

  end
  class Game_Event < Game_Character
  def mirage(opacity)
    $scene.spriteset.mirage(self, opacity)
  end
end

class Sprite_MirageCharacter < RPG::Sprite

  attr_accessor :character            

  def initialize(viewport, opacity, character = nil)

    super(viewport)

    @character = character

    self.opacity = opacity

    update

  end

  def update

    super

    if @tile_id != @character.tile_id or

       @character_name != @character.character_name or

       @character_hue != @character.character_hue

      @tile_id = @character.tile_id

      @character_name = @character.character_name

      @character_hue = @character.character_hue

      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

      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

        self.x = @character.screen_x

        self.y = @character.screen_y

      end

    end

    self.visible = (not @character.transparent)

    if @tile_id == 0 and !@t

      sx = @character.pattern * @cw

      sy = (@character.direction - 2) / 2 * @ch

      self.src_rect.set(sx, sy, @cw, @ch)

      @t = true

    end

    self.z = @character.screen_z(@ch)

    self.color.set(0,0,170,120)

    self.opacity -= 8 #b残像减少(大就没有)小效果多

    self.blend_type = 0

    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

  end

end



class Spriteset_Map

  alias initialize_naiyoudadangao  initialize

  def initialize

    @mirage = {}

    initialize_naiyoudadangao   

  end

  def mirage(obj, opacity)

    @mirage[obj] ||= []
   
    smc = Sprite_MirageCharacter.new(@viewport1, opacity, obj)
   
    @mirage[obj] << Mirage.new(obj.real_x, obj.real_y, smc)#(Sprite_MirageCharacter.new(@viewport1, opacity, obj))

  end



alias update_naiyoudadangao update

def update

   update_naiyoudadangao

    for value in @mirage.values

      for v in value

        
        v.smc.x = (v.x - $game_map.display_x + 3) / 4 + 16
        
        v.smc.y = (v.y - $game_map.display_y + 3) / 4 + 32
        
        
        v.smc.update

        if v.smc.opacity <= 0

          v.smc.dispose

          value.delete(v)

        end

      end

    end

  end

end

class Scene_Map

  attr_reader   :spriteset

end

Mirage = Struct.new(:x, :y, :smc)
[/pre]

  class Game_Event < Game_Character
  def mirage(opacity)
    $scene.spriteset.mirage(self, opacity)
  end
end
这个是我加的貌似加了也没效

点评

多加点,把下面的update也一起复制了试试看  发表于 2018-7-28 20:53
贴子只供参考我贴子内容有很多只是我自己标识的内容代指不是原来意思,偏向发贴当时的想法(后来回看贴发现有很多错误,会造成误导 ),如果想靠谱点应 找相关正确的文章   -- 2025/4/19
梦石
0
星屑
14720
在线时间
2175 小时
注册时间
2016-9-20
回帖
777
 楼主| 发表于 2018-8-21 16:04:34 | 显示全部楼层
$game_player.mirage(120)就行了,
事件就$game_map.event_id[XX].mirage(120)
@guoxiaomi

评分

参与人数 1赞 +1 收起 理由
guoxiaomi + 1 塞糖

查看全部评分

贴子只供参考我贴子内容有很多只是我自己标识的内容代指不是原来意思,偏向发贴当时的想法(后来回看贴发现有很多错误,会造成误导 ),如果想靠谱点应 找相关正确的文章   -- 2025/4/19
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部