查看: 4615|回复: 14

[转载发布] 【渣翻】Galv的行走图效果使用方法介绍

[复制链接]
梦石
0
星屑
1078
在线时间
127 小时
注册时间
2017-9-27
回帖
32
发表于 2017-11-16 16:01:11 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 魔法☆梅莉 于 2017-11-16 17:14 编辑

https://galvs-scripts.com/galvs-character-effects/
Galv's Character Effects ↑原文和范例在此处
[pre lang="ruby"]#------------------------------------------------------------------------------#
#  Galv的行走图效果脚本
#------------------------------------------------------------------------------#
#  用于RPGMAKER VX ACE
#  Version 2.1
#------------------------------------------------------------------------------#
#  2014-01-16 - Version 2.1 - 修复了在阴影形态时的双气球/动画的bug
#  2013-12-07 - Version 2.0 - 增补命令,使得添加事件效果更容易
#                           - 修复了影子朝向的bug  
#  2013-02-24 - Version 1.9 - 为反射和影子添加了z轴
#  2013-02-23 - Version 1.8 - 增加多光源光影效果
#  2013-02-22 - Version 1.7 - 修复了一些bug
#  2013-02-22 - Version 1.6 - 增加了附带图标效果
#  2013-02-22 - Version 1.5 - 修复了大地图上镜面效果的bug
#  2013-02-22 - Version 1.4 - 增加了骑乘工具的效果
#  2013-02-21 - Version 1.3 - 修复了跳跃反射和其他的镜面上的微妙的地方
#  2013-02-21 - Version 1.2 - 少于4个角色时的bug(发生中断)
#  2013-02-21 - Version 1.1 - 更新了闪烁效果
#  2013-02-21 - Version 1.0 - 发布
#------------------------------------------------------------------------------#
# 本脚本的功能是给地图上的人物、事件等(包括主角外的队友)提供一些有趣的附加效果。
# 目前包括以下效果:阴影、倒映、镜面反射等。
#
# 阴影:出现在人物和事件的脚下,具体方向取决于你的光源。
#
# 倒映:效果是看上去像水面或玻璃地板的反射一样。
# 你需要先把图块做成半透明的,后面用远景层垫底。
#
# 镜面反射:和“倒映”差不多,就是换成了墙上的镜面而已。
# 两种效果可以同时使用,建议准备一些不同的行走图,可以达成不同效果。
#
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
#  NEW - 事件页的第一条写上注释:
#------------------------------------------------------------------------------#
# 在事件页的第一条插入“注释”栏,并写上如下内容可以达成一些对应效果。
#
# <icon:id,x,y>      # 本事件附近显示一个图标 (图标id,以本事件为基础的x坐标,y坐标)
# <shadow>           # 本事件启用阴影效果。
# <reflect>          # 本事件启用倒映效果。
#
#------------------------------------------------------------------------------#
#  例如:
# <icon:1,0,0><shadow><reflect>   #在某事件同时使用图标(1号)、阴影、倒映三个效果
#------------------------------------------------------------------------------#


#------------------------------------------------------------------------------#
#  脚本指令:
#------------------------------------------------------------------------------#
#
#  char_effects(x,x,x,status)
#
#------------------------------------------------------------------------------#
# 在游戏中每个效果都可以开启和关闭。
# 你可以同时改变复数个效果的开关,数字代表效果代号:
#  # 0 = reflect    1 = shadows    2 = mirror    3 = icons
#------------------------------------------------------------------------------#
#  例如:
#  char_effects(0,true)              # 开启倒映效果
#  char_effects(0,2,true)            # 同时开启倒映和镜面反射效果
#  char_effects(1,3,false)           # 关闭影子和图标效果
#------------------------------------------------------------------------------#
#
#  reflect_sprite(actor_id,filename,pos)    # 改变角色的反射效果行走图
#
#  reflect_esprite(event_id,filename,pos)   # 改变事件的反射效果行走图
#
#  reflect_vsprite(vehicle_id,filename,pos) # 改变骑乘工具的反射效果行走图
#
#------------------------------------------------------------------------------#
#  例如:
#  reflect_sprite(1,"Actor2",2)      # 把1号角色的反射效果行走图换成
#                                    # 行走图Actor2第3个位置的角色图像
#  reflect_esprite(3,"Actor4",5)     # 把3号事件的反射效果行走图换成
#                                    # 行走图Actor2第6个位置的角色图像
#  reflect_vsprite(1,"Vehicle",5)    # 把1号骑乘工具(小船)的反射效果行走图换成
#                                    # 行走图Vehicle第6个位置的图像
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
# 用于打开或关闭指定事件效果的脚本指令
#------------------------------------------------------------------------------#
#
#  reflect(x,x,x,status)   # status填写true或false
#                          # 用于指定镜面反射或倒映效果的开关。
#  shadow(x,x,x,status)    # x你想要改变的事件ID
#                          # 想同时改变所有事件的话就填写:all
#  icon(x,x,x,icon_id)     # icon_id设定角色头上的图标ID。
#                          # 没有的话就写0.
#
#------------------------------------------------------------------------------#
#  例如:
#  reflect(14,17,3,1,true) # 打开事件14, 17, 3 and 1的倒映开关
#  shadow(1,false)         # 关闭事件1的影子开关
#  reflect(:all,true)      # 打开所有事件的开关
#  icon(1,2,3,4,38)        # 在事件1,2,3 and 4头上放上38号图标
#
#   注意:在进图的时候所有事件默认是没效果的。
#   出于某些不可抗力原因,效果开得太多会卡,建议小心使用,只在需要的时候开。
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
# 用于打开或关闭人物和骑乘工具的效果的脚本指令
#------------------------------------------------------------------------------#
#
#  actor_reflect(actor_id,status)  # 对人物和骑乘工具的效果,默认打开状态。
#  actor_shadow(actor_id,status)   # 开关效果对于它们的影响比较持♂久。
#  actor_icon(actor_id,icon_id)    # 在地图之间转移也不会改变。
#
#  v_reflect(x,x,x,status)    # 这种v开头的指令可以用来管理骑乘工具的效果。
#  v_shadow(x,x,x,status)     # 使用方法一样。
#  v_icon(x,x,x,icon_id)
#
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
# 设定阴影效果的脚本指令
#------------------------------------------------------------------------------#
#
#  shadow_source(x,y,id)       # 设置光源的x,y坐标及其ID。如果同一图内有多光源,
#                              # ID可以便于你移动某些光源。
#                              # 切换地图的时候会重置。
#  shadow_source(event_id,id)  # 直接在某事件的坐标处建立一个光源。
#                              # 想要移动光源的话,这需要在平行进程中处理。
#
#  shadow_options(intensity,fade,flicker)    # ↓以下是效果描述
#
#    # intensity = 站在光源附近时影子的不透明度,255是纯黑。
#    # fade = 当逐渐远离光源时,影子以何种程度变浅。
#    # flicker = 只写true或false. 影子是否闪烁。
#
#------------------------------------------------------------------------------#
#  例如:
#  shadow_options(80,10,false)    # 默认设定如此
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
#  设定倒映效果的脚本指令
#------------------------------------------------------------------------------#
#
#  reflect_options(wave_pwr)
#
#    # wave_pwr = 波浪效果的剧烈程度. 设定0就是没有。
#
#------------------------------------------------------------------------------#
#  例如:
#  reflect_options(1) # 设定波浪效果的强度为1.
#------------------------------------------------------------------------------#


#------------------------------------------------------------------------------#
#  人物的备注标签
#------------------------------------------------------------------------------#
#
#  <no_reflect>    # 没影子的人物 (比如吸血鬼,啧)
#
#  <reflect_sprite: FileName,pos>  # 可以把别的行走图当做镜面反射的像来用。
#                                  # 'pos'处填写的是位置。
#
#------------------------------------------------------------------------------#
#  例如:
#  <reflect_sprite: Actor2,0>    # 行走图Actor2第一个位置的角色
#  <reflect_sprite: Actor3,7>    # 行走图Actor3最后一个位置的角色
#------------------------------------------------------------------------------#
=end

($imported ||= {})["Galv_Character_Effects"] = true
module Galv_CEffects

#------------------------------------------------------------------------------#  
#  预设定,可根据需要修改
#------------------------------------------------------------------------------#

  MIRROR_REGION = 1     # 用于镜子墙面判断的区域ID。把区域画在墙上的部分,
                        # 才能出现镜面反射效果。记得设置图块和远景,
                        # 使镜面反射的内容可见。

  ICON_OFFSET = -60     # 显示图标时默认坐标:y坐标在角色坐标的-60处。x坐标不变
   
  REFLECT_Z = -10       # 反射层的高度(z轴坐标)
  SHADOW_Z = 0          # 阴影层的高度(z轴坐标)

#------------------------------------------------------------------------------#  
#  预设定到此为止
#------------------------------------------------------------------------------#
end[/pre]

评分

参与人数 1赞 +1 收起 理由
煎蛋流Kira☆ + 1 精品文章

查看全部评分

我是梅林,人称花之魔术师。
梦石
0
星屑
1592
在线时间
280 小时
注册时间
2017-10-17
回帖
70
发表于 2017-11-16 16:51:19 | 显示全部楼层
感谢翻译

点评

可以,完全ok  发表于 2017-11-16 17:57

评分

参与人数 1赞 +1 收起 理由
魔法☆梅莉 + 1 不要紧的,不知解决了你的问题没…….

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2017-11-16 16:57:23 | 显示全部楼层
地面反射不是水面倒影吗···

评分

参与人数 1赞 +1 收起 理由
魔法☆梅莉 + 1 感谢提醒,已修正

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

杯犬

梦石
1
星屑
5425
在线时间
1274 小时
注册时间
2016-10-28
回帖
581

开拓者

发表于 2017-11-16 20:47:28 | 显示全部楼层
本帖最后由 暮觉 于 2017-11-17 18:18 编辑

这个脚本用得蛮多的,我唯一的怨念就是……镜像和地面(水面)倒影用的是同一张图……
明显他们的像是不同的喂!

感谢楼主的翻译和增补!

点评

↓不哭啦,梅林大哥哥给你买金平糖吃  发表于 2017-11-17 18:13
↓写了个小插件增补了这个功能,见楼下  发表于 2017-11-17 18:09
↓昨天没仔细看,脚本中mirror和reflect两边的sprite是分开写的,所以我误以为支持分开设置了……十分抱歉,应该是潜在支持的,怀疑作者并没有做好  发表于 2017-11-17 16:56
(悲伤的哭泣)  发表于 2017-11-17 16:39
↓抱歉我重新看了一遍,是我弄错了,这个的确不是分别设定的  发表于 2017-11-17 16:35

评分

参与人数 1赞 +1 收起 理由
魔法☆梅莉 + 1 其实可以用不同的喔,只是需要分别设置.

查看全部评分

用脑子来养鱼的杯子。
回复

使用道具 举报

梦石
0
星屑
1078
在线时间
127 小时
注册时间
2017-9-27
回帖
32
 楼主| 发表于 2017-11-17 17:54:43 | 显示全部楼层
本帖最后由 魔法☆梅莉 于 2017-11-17 18:08 编辑

@暮觉
也许可以试试把下面这段脚本插在原插件的后面部分,经测试这边可以把不同效果的对应行走图分开设置了。
要设置不同的镜面倒影,则在事件脚本中书写
mirror_sprite(actor_id,filename,pos) 即可 参数和原来的reflect_sprite相同。
若只设置了reflect_sprite但未设置mirror_sprite,那么仍然会使用reflect_sprite的那张图作为镜面倒影。
只设置mirror但不设置reflect也可以。
应该可以满足需求了。
不知道有没有别的bug?
[pre lang="ruby"]
class Game_Character < Game_CharacterBase
  attr_accessor  :mirror_sprite
end
class Game_Follower < Game_Character
  alias old_galv_reflect_gf_refresh refresh
  def refresh
    galv_reflect_gf_refresh
    return if actor.nil?
    @reflect = actor.reflect
    @reflect_sprite = actor.reflect_sprite
    @mirror_sprite = actor.mirror_sprite
    @icon = actor.icon
    if SceneManager.scene_is?(Scene_Map)
      SceneManager.scene.spriteset.refresh_effects
    end
  end
end # Game_Follower < Game_Character
class Game_Player < Game_Character
  alias old_galv_reflect_gp_refresh refresh
  def refresh
    @mirror_sprite = actor.mirror_sprite
    old_galv_reflect_gp_refresh
  end
end # Game_Player < Game_Character
class Game_Actor < Game_Battler
  attr_accessor  :mirror_sprite
  alias old_galv_reflect_game_actor_initialize initialize
  def initialize(actor_id)
    old_galv_reflect_game_actor_initialize(actor_id)
    @mirror_sprite = $data_actors[actor_id].mirror_sprite
  end
end
class Game_Interpreter
  # Actor mirror sprite change
  def mirror_sprite(actor_id,filename,pos)
    $game_actors[actor_id].mirror_sprite = [filename,pos]
    $game_player.refresh
  end
   
  # Event mirror sprite change
  def mirror_esprite(event_id,filename,pos)
    $game_map.events[event_id].mirror_sprite = [filename,pos]
    $game_map.events[event_id].reflect = true
    SceneManager.scene.spriteset.refresh_characters
  end
   
  # Vehicle mirror sprite change
  def mirror_vsprite(v_id,filename,pos)
    $game_map.vehicles[v_id].mirror_sprite = [filename,pos]
    SceneManager.scene.spriteset.refresh_characters
  end
end
class Sprite_Mirror < Sprite_Character
  alias old_set_character_bitmap set_character_bitmap
  def set_character_bitmap
    if @character.mirror_sprite
      self.bitmap = Cache.character(@character.mirror_sprite[0])
    else
      if @character.reflect_sprite
        self.bitmap = Cache.character(@character.reflect_sprite[0])
      else
        self.bitmap = Cache.character(@character_name)
      end
    end
    self.mirror = true
    self.opacity = 255
    self.z = Galv_CEffects::REFLECT_Z
     
    sign = @character_name[/^[\!\$]./]
    if sign && sign.include?('$')
      @cw = bitmap.width / 3
      @ch = bitmap.height / 4
    else
      @cw = bitmap.width / 12
      @ch = bitmap.height / 8
    end
    self.ox = @cw / 2
    self.oy = @ch
  end
  alias old_update_src_rect update_src_rect
  def update_src_rect
    if @character.mirror_sprite
      index = @character.mirror_sprite[1]
    else
      if @character.reflect_sprite
        index = @character.reflect_sprite[1]
      else
        index = @character.character_index
      end
    end
    pattern = @character.pattern < 3 ? @character.pattern : 1
    sx = (index % 4 * 3 + pattern) * @cw
    sy = (index / 4 * 4 + (10 - @character.direction - 2) / 2) * @ch
    self.src_rect.set(sx, sy, @cw, @ch)
  end
end # Sprite_Mirror < Sprite_Character
class RPG::Actor
  def mirror_sprite
    if @mirror_sprite.nil?
      if @note =~ /<mirror_sprite:[ ](.*),(.*)>/i
        @mirror_sprite = [$1.to_s,$2.to_i]
      else
        @mirror_sprite = nil
      end
    end
    @mirror_sprite
  end
end

[/pre]


点评

讲究细节的话,倒影是可以看见胖次的……(住手)(其实对于侧面画成半侧面的行走图很不亲切就是了233)  发表于 2017-11-17 23:21
↓作者的书写格式原本就是潜在支持分开设置的,可能是认为两种影子一样,为了方便使用者所以弄成了同一种  发表于 2017-11-17 22:46
哇,辛苦了!感谢!  发表于 2017-11-17 18:13
我是梅林,人称花之魔术师。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部