查看: 2511|回复: 3

[已经过期] VA如何用XP的比例的行走图

[复制链接]
梦石
0
星屑
706
在线时间
183 小时
注册时间
2012-4-21
回帖
100
发表于 2016-1-30 19:00:29 | 显示全部楼层 |阅读模式

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

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

×
现有一个VA行走图,但是是像XP那种2头身的行走图(没有最右边那一列),然后+$导入就会多出来一截周围行走图的图像,然后这要如何解决?
如图请看
QQ图片20160130185938.jpg
QQ图片20160130185855.jpg
梦石
0
星屑
254
在线时间
316 小时
注册时间
2015-7-2
回帖
1629

开拓者

发表于 2016-1-30 19:57:05 | 显示全部楼层
本帖最后由 落雪鸦杀 于 2016-1-30 20:40 编辑


有2个已知的解决方案:
1.自行修改行走图,用PS等工具去掉一列后做成VA行走图格式,但是会有些麻烦。
2.使用VIPArcher大大的自行识别行走图帧数脚本(无需前置脚本,放在main前就好),需要用的行走图前加上$符号。缺点在于在存档的时候如果主角使用了XP行走图,会出现显示的Bug,虽然不影响游戏的正常运行……需要再插入cinderelmini的另一个脚本
注:以下脚本是直接从R考场第五期的考试工程中复制过来的……
这是VA大大的脚本
下载地址:https://github.com/VIPArcher/RGS ... «行走图帧数.rb
[pre lang="ruby"]#==============================================================================
# ■ 自动识别行走图帧数
# By :VIPArcher [email: VIPArcher@sina.com]
#  -- 本脚本来自 https://rpg.blue 使用或转载请保留以上信息。
# 说明:
#   使用这个脚本可以自动识别行走图的帧数,并且设置角色使用该行走图时的默认动作,使用
#   方法是在行走图文件名里加上@帧数#默认动作的帧。事件的默认帧可以在事件里直接设置
#   例如XP的素材就命名为: "$喵喵喵_@4#0.png"
#==============================================================================
$VIPArcherScript ||= {};$VIPArcherScript[:characters_frame] = 20150122
#-------------------------------------------------------------------------------
class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # ● 矫正姿势
  #--------------------------------------------------------------------------
  def straighten
    return super unless @fix
    @pattern = @fix if @walk_anime || @step_anime
    @anime_count = 0
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  alias characters_frame_refresh refresh
  def refresh
    characters_frame_refresh
    @original_pattern = @fix = $1.to_i if @character_name =~ /#(\d+)/
    @frame = $1.to_i if @character_name =~ /@(\d+)/
  end
  #--------------------------------------------------------------------------
  # ● 更新动画图案
  #--------------------------------------------------------------------------
  def update_anime_pattern
    return super unless @frame
    if !@step_anime && @stop_count > 0
      @pattern = @original_pattern
    else
      @pattern = (@pattern + 1) % @frame
    end
  end
end
#-------------------------------------------------------------------------------
class Sprite_Character < Sprite_Base
  #--------------------------------------------------------------------------
  # ● 设置角色的位图
  #--------------------------------------------------------------------------
  alias characters_frame_set_character_bitmap set_character_bitmap
  def set_character_bitmap
    if @character_name =~ /@(\d+)/
      @frame = $1.to_i
      self.bitmap = Cache.character(@character_name)
      sign = @character_name[/^[\!\$]./]
      if sign && sign.include?('$')
        @cw = bitmap.width / @frame
        @ch = bitmap.height / 4
      else
        @cw = bitmap.width / @frame * 4
        @ch = bitmap.height / 8
      end
      self.ox = @cw / 2
      self.oy = @ch
    else
      characters_frame_set_character_bitmap
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新源矩形
  #--------------------------------------------------------------------------
  alias characters_frame_update_src_rect update_src_rect
  def update_src_rect
    return characters_frame_update_src_rect unless @frame
    if @tile_id == 0
      index = @character.character_index
      pattern = @character.pattern < @frame ? @character.pattern : 1
      sx = (index % 4 * 3 + pattern) * @cw
      sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
  end
end[/pre]

cinderelmini的脚本
并没有找到下载链接……
[pre lang="ruby"]# by - cinderelmini
class Window_SaveFile < Window_Base
  #--------------------------------------------------------------------------
  # ● 绘制人物行走图
  #--------------------------------------------------------------------------
  alias sn_160124_draw_character draw_character
  def draw_character(character_name, character_index, x, y)
    return unless character_name
    if character_name =~ /@(\d+)/
      frame = $1.to_i
      bitmap = Cache.character(character_name)
      sign = character_name[/^[\!\$]./]
      if sign && sign.include?('$')
        cw = bitmap.width / frame
        ch = bitmap.height / 4
      else
        cw = bitmap.width / frame * 4
        ch = bitmap.height / 8
      end
      n = character_index
      src_rect = Rect.new((n%4*3+0)*cw, (n/4*4)*ch, cw, ch)
      contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
    else
      sn_160124_draw_character(character_name, character_index, x, y)
    end
  end
end[/pre]
测试你的东方project认知程度?那就来玩[url=https://store.steampowered.com/app/930840/TouHouAsked/]《东方百问》[/url]吧!
东方风自作曲认知企划绝赞咕咕咕中
回复

使用道具 举报

梦石
0
星屑
706
在线时间
183 小时
注册时间
2012-4-21
回帖
100
 楼主| 发表于 2016-1-30 20:37:36 | 显示全部楼层
落雪鸦杀 发表于 2016-1-30 19:57
有2个已知的解决方案:
1.自行修改行走图,用PS等工具去掉一列后做成VA行走图格式,但是会有些麻烦。
2.使 ...

不,我的意思是显示的范围大了而不是XP行走图用在VA上的差异

点评

这样只能用PS做调整了吧……估计那个自动分辨行走图帧数可能也可以用,最好实验一下  发表于 2016-1-30 20:42
回复

使用道具 举报

梦石
0
星屑
1297
在线时间
995 小时
注册时间
2014-12-14
回帖
2939

开拓者

发表于 2016-1-31 11:33:27 | 显示全部楼层
本帖最后由 Vortur 于 2016-1-31 11:42 编辑

修改方法·使用PS:
根据图示,将面向下的人物图像向上移动3像素(目测是这么多)


病灶:
这种情况只能是行走图 间距 错误!!
这不是 显示范围 变大了,而是间距不足的原因。

系统在识别va的行走图时,会默认依据总长度平均将宽分为3列,长分为4行。如果有某2行或3行的间距过小,就会出现楼主的情况。

@853861078
追加40经验,在下操刀给您办好!~
刚去开水区水了一下,得赚回来。
PS:千万不要轻易回这个人的帖子→欧买歌



【RMVA教程】
---------------------
欲买桂花同载酒,终不似,少年游.
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部