查看: 3908|回复: 4

[RMVA发布] XP行走图自动适配到VA中的脚本

[复制链接]
头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2012-12-5 01:47:52 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
梦石
0
星屑
50
在线时间
616 小时
注册时间
2010-10-29
回帖
411
发表于 2012-12-5 05:38:10 | 显示全部楼层
晴兰大人终于发了点我看得懂的东西了~
不过现在没几个人用xp的行走图了吧~即使感觉va默认不爽也会用tekepon的。。。。

点评

完全是一时兴起跑到美工区发帖了。。后来一想是不是太突兀了。。就编辑了那个帖子移过来了  发表于 2012-12-5 08:10
我命令你给我点下面的东西!

LBQ Works
回复

使用道具 举报

梦石
0
星屑
660
在线时间
1286 小时
注册时间
2011-6-14
回帖
3949
发表于 2012-12-5 19:13:32 | 显示全部楼层
XP行走图的一大亮点就是有4列,VA只有3列。我还是觉得自己PS一下……然后编辑器里也方便多了。
回复

使用道具 举报

梦石
0
星屑
161
在线时间
629 小时
注册时间
2012-6-9
回帖
1233
发表于 2012-12-5 19:17:45 | 显示全部楼层
本帖最后由 c248611 于 2012-12-5 19:19 编辑

001-Fighter01.png
[pre lang="ruby" line="1"]#==============================================================================
# ■ XP行走方式
#------------------------------------------------------------------------------
#    适用于:RPG Maker VX Ace
#    说明:把脚本放在Main的前面。
#    所需素材:RPG Maker XP 的行走图,例如:001-Fighter01.PNG
#==============================================================================

#==============================================================================
# ■ Sprite_Character
#------------------------------------------------------------------------------
#  角色显示用脚本。监视 Game_Character 类的实例、
# 自动变化脚本状态。
#==============================================================================

class Sprite_Character < Sprite_Base
  #--------------------------------------------------------------------------
  # ● 定量
  #--------------------------------------------------------------------------
  BALLOON_WAIT = 12                  # 表情最后帧的等待时间
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :character                # 角色
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     viewport  : 查看端口
  #     character : 角色 (Game_Character)
  #--------------------------------------------------------------------------
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
    @balloon_duration = 0
    update
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    dispose_balloon
    super
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    super
    update_bitmap
    self.visible = (not @character.transparent)
    update_src_rect
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    update_balloon
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      start_animation(animation)
      @character.animation_id = 0
    end
    if @character.balloon_id != 0
      @balloon_id = @character.balloon_id
      start_balloon
      @character.balloon_id = 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 获取图块图像的指定图块
  #     tile_id : 图块 ID
  #--------------------------------------------------------------------------
  def tileset_bitmap(tile_id)
    set_number = tile_id / 256
    return Cache.system("TileB") if set_number == 0
    return Cache.system("TileC") if set_number == 1
    return Cache.system("TileD") if set_number == 2
    return Cache.system("TileE") if set_number == 3
    return nil
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update_bitmap
    if @tile_id != @character.tile_id or
       @character_name != @character.character_name or
       @character_index != @character.character_index
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_index = @character.character_index
      if @tile_id > 0
        self.bitmap = Cache.tile($game_map.tileset_name,
          @tile_id)
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      # 元件 ID 为无效值的情况下
      else
        self.bitmap = Cache.character(@character.character_name)
        @cw = bitmap.width / 4
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
     end
   end
end
  #--------------------------------------------------------------------------
  # ● 刷新传送的矩形数据
  #--------------------------------------------------------------------------
  def update_src_rect
    if @tile_id == 0
#     index = @character.character_index
#     pattern = @character.pattern < 3 ? @character.pattern : 1
#     sx = (pattern * 32) #* @cw
#     #sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
#     sy = @character.direction * 32
#     self.src_rect.set(sx, sy, @cw, @ch)
      sx = @character.pattern * @cw
      sy = (@character.direction - 2) / 2 * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
  end
  #--------------------------------------------------------------------------
  # ● 开始显示表情图标
  #--------------------------------------------------------------------------
  def start_balloon
    dispose_balloon
    @balloon_duration = 8 * 8 + BALLOON_WAIT
    @balloon_sprite = ::Sprite.new(viewport)
    @balloon_sprite.bitmap = Cache.system("Balloon")
    @balloon_sprite.ox = 16
    @balloon_sprite.oy = 32
    update_balloon
  end
  #--------------------------------------------------------------------------
  # ● 刷新表情图标
  #--------------------------------------------------------------------------
  def update_balloon
    if @balloon_duration > 0
      @balloon_duration -= 1
      if @balloon_duration == 0
        dispose_balloon
      else
        @balloon_sprite.x = x
        @balloon_sprite.y = y - height
        @balloon_sprite.z = z + 200
        if @balloon_duration < BALLOON_WAIT
          sx = 7 * 32
        else
          sx = (7 - (@balloon_duration - BALLOON_WAIT) / 8) * 32
        end
        sy = (@balloon_id - 1) * 32
        @balloon_sprite.src_rect.set(sx, sy, 32, 32)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 释放表情图标
  #--------------------------------------------------------------------------
  def dispose_balloon
    if @balloon_sprite != nil
      @balloon_sprite.dispose
      @balloon_sprite = nil
    end
  end
end[/pre]

点评

这个脚本与一些脚本有冲突,比如某些横版...建议用原配的吧。  发表于 2012-12-23 16:29
回复

使用道具 举报

梦石
0
星屑
50
在线时间
144 小时
注册时间
2011-11-26
回帖
143
发表于 2012-12-6 18:53:26 | 显示全部楼层
4楼,你什么意思,你寓意何在
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部