赞 | 2 |
VIP | 0 |
好人卡 | 0 |
积分 | 14 |
经验 | 0 |
最后登录 | 2023-7-27 |
在线时间 | 153 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1356
- 在线时间
- 153 小时
- 注册时间
- 2019-5-31
- 帖子
- 68
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 664145107 于 2019-10-16 14:18 编辑
-----这段脚本是尝试把芯☆淡茹水和miantouchi提供的相关功能脚本写在一起,在此先对两位大佬表示感谢-----
想制作人物战斗图(头像)随HP残量或者异常状态而改变的功能,但是现在的问题是战斗图不显示了
(看动画位置感觉似乎是战斗图被移到了屏幕外)
还有没来得及写的己方角色死亡时不变透明而是亮度变暗
如果想完美实现这几个效果的话脚本还需要如何改进?
工程文件我得再整理一下再发(如果需要的话)
-------------------2019.10.16更新-------------------------
编辑了,借用了miantouchi的脚本进行了少许修改
现在可以随状态改变战斗图并且己方队友死亡时战斗图不会渐变消失了,敌方死亡效果不变
不过这个效果只是我根据自己的需要改的,我自己RUBY也不熟练肯定还有优化的空间
脚本附上(结果只是因为没注意到collapse那块是直接用的日文假名注音所以死亡效果一直改不到位)
#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
# 战斗显示用活动块。Game_Battler 类的实例监视、
# 活动块的状态的监视。
#==============================================================================
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_accessor :battler # 战斗者
#--------------------------------------------------------------------------
# ● 初始化对像
# viewport : 显示端口
# battler : 战斗者 (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@battler_visible = false
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
super
# 战斗者为 nil 的情况下
if @battler == nil
self.bitmap = nil
loop_animation(nil)
return
end
name = @battler.battler_name
if @battler.state?(6) #石化
name += "_status"
elsif @battler.state?(3) #中毒
name += "_status"
elsif @battler.state?(1) #催眠
name += "_dead"
elsif @battler.hp <= @battler.maxhp / 3
name += "_status"
end
# 文件名和色相与当前情况有差异的情况下
if @battler.is_a?(Game_Enemy)
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue
# 获取、设置位图
@battler_name = @battler.battler_name
@battler_hue = @battler.battler_hue
self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
@width = bitmap.width
@height = bitmap.height
self.ox = @width / 2
self.oy = @height
# 如果是战斗不能或者是隐藏状态就把透明度设置成 0
if @battler.dead? or @battler.hidden
self.opacity = 0
end
end
end
if @battler.is_a?(Game_Actor) and (@battler.damage == nil or @battler.damage_pop)
if name != @battler_name or
@battler.battler_hue != @battler_hue
# 获取、设置位图
@battler_name = name
@battler_hue = @battler.battler_hue
self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
@width = bitmap.width
@height = bitmap.height
self.ox = @width / 2
self.oy = @height
# 如果是战斗不能或者是隐藏状态就把透明度设置成 0
if @battler.hidden
self.opacity = 0
elsif @battler.dead?
self.opacity = 255
end
end
end
# 动画 ID 与当前的情况有差异的情况下
if @battler.damage == nil and
@battler.state_animation_id != @state_animation_id
@state_animation_id = @battler.state_animation_id
if @battler.is_a?(Game_Enemy)
loop_animation($data_animations[@state_animation_id])
end
end
# 应该被显示的角色的情况下
if @battler.is_a?(Game_Actor) and @battler_visible
# 不是主状态的时候稍稍降低点透明度
if $game_temp.battle_main_phase
self.opacity += 3 if self.opacity < 255
else
self.opacity -= 3 if self.opacity > 207
end
end
# 明灭
if @battler.blink
blink_on
else
blink_off
end
# 不可见的情况下
unless @battler_visible
# 出现
if not @battler.hidden and not @battler.dead? and
(@battler.damage == nil or @battler.damage_pop)
appear
@battler_visible = true
end
end
# 可见的情况下
if @battler_visible
# 逃跑
if @battler.hidden
$game_system.se_play($data_system.escape_se)
escape
@battler_visible = false
end
# 白色闪烁
if @battler.white_flash
whiten
@battler.white_flash = false
end
# 动画
if @battler.animation_id != 0
animation = $data_animations[@battler.animation_id]
animation(animation, @battler.animation_hit)
@battler.animation_id = 0
end
# 伤害
if @battler.damage_pop
damage(@battler.damage, @battler.critical)
@battler.damage = nil
@battler.critical = false
@battler.damage_pop = false
end
# 战斗不能
if @battler.damage == nil and @battler.dead?
if @battler.is_a?(Game_Enemy)
$game_system.se_play($data_system.enemy_collapse_se)
collapse
@battler_visible = false
else
$game_system.se_play($data_system.actor_collapse_se)
name += "_dead"
end
#collapse
#@battler_visible = false
end
end
# 设置活动块的坐标
self.x = @battler.screen_x
self.y = @battler.screen_y
self.z = @battler.screen_z
end
end
|
|