赞 | 0 |
VIP | 0 |
好人卡 | 5 |
积分 | 1 |
经验 | 7181 |
最后登录 | 2015-11-28 |
在线时间 | 116 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 116 小时
- 注册时间
- 2009-7-17
- 帖子
- 139
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
请教一下大大们,这个血条脚本与sideview冲突,一战斗就会卡主不动,也是老问题了,请问大大好解决吗?
#============================================================================== # 功能:战斗中显示敌人血和蓝于敌人脚下 # 适用:RMVX Ace # 作者:殇殃 2012.3.10 # 使用方法:复制整个脚本插入到Main之前 # 注意:由于血条是显示在敌人脚下,所以敌群的位置不能太靠底部,不然会被挡住。 # 可以自行更改坐标修改显示位置、血条的颜色等。 #============================================================================== # ■ Window_Base #------------------------------------------------------------------------------ # 游戏中全部窗口的超级类。 #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # ● 描绘敌人HP #-------------------------------------------------------------------------- def draw_enemy_hp(enemy, x, y, width = 80) draw_gauge(x, y, width, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, line_height, Vocab::hp_a) self.contents.font.color = hp_color(enemy) self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.hp, 2) #一个数字占16像素 end #-------------------------------------------------------------------------- # ● 绘制敌人MP #-------------------------------------------------------------------------- def draw_enemy_mp(enemy, x, y, width = 80) draw_gauge(x, y, width, enemy.mp_rate, mp_gauge_color1, mp_gauge_color2) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, line_height, Vocab::mp_a) self.contents.font.color = mp_color(enemy) self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.mp, 2) end end #============================================================================== # ■ Sprite_Battler #------------------------------------------------------------------------------ # 战斗显示用活动块。Game_Battler 类的实例监视、 # 活动块的状态的监视、活动块状态自动变化。 #============================================================================== class Sprite_Battler < Sprite_Base #-------------------------------------------------------------------------- # ● 初始化对象 # viewport : 视区 # battler : 战斗者 (Game_Battler) #-------------------------------------------------------------------------- def initialize(viewport, battler = nil) super(viewport) [url=home.php?mod=space&uid=133701]@battler[/url] = battler @battler_visible = false @effect_type = nil @effect_duration = 0 if @battler.is_a?(Game_Enemy) width = 24 + 80 #边距12*2+血条的长度(在draw_enemy_hp中定义) height = 24 + 24*2 #边距12*2+line_height*2 x = @battler.screen_x - width/2 #screen_x是怪物图片水平方向上的中点位置 y = @battler.screen_y - 12 #边距12,显示HP/MP的窗口无边框 @enemy_hpmp_window = Window_Base.new(x, y, width, height) @enemy_hpmp_window.opacity = 0 @enemy_hpmp_window.contents = Bitmap.new(width - 24, height - 24)#位图比窗口小24像素取消边框 @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0) @old_hp = -1 @enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24) @old_mp = -1 end end #-------------------------------------------------------------------------- # ● 释放 #-------------------------------------------------------------------------- def dispose if self.bitmap != nil self.bitmap.dispose @enemy_hpmp_window.dispose end super end #-------------------------------------------------------------------------- # ● 更新画面 #-------------------------------------------------------------------------- def update super if @battler == nil self.bitmap = nil else @use_sprite = @battler.use_sprite? if @use_sprite update_bitmap update_origin update_position end setup_new_effect setup_new_animation update_effect if @enemy_hpmp_window != nil and (@old_hp != @battler.hp or @old_mp != @battler.mp) if @battler.hp == 0 @enemy_hpmp_window.hide else @enemy_hpmp_window.contents.clear @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0) @old_hp = @battler.hp @enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24) @old_mp = @battler.mp @enemy_hpmp_window.show #怪物死后再被复活 end #if battler.hp == 0 end end #if @battler == nil end end
#==============================================================================
# 功能:战斗中显示敌人血和蓝于敌人脚下
# 适用:RMVX Ace
# 作者:殇殃 2012.3.10
# 使用方法:复制整个脚本插入到Main之前
# 注意:由于血条是显示在敌人脚下,所以敌群的位置不能太靠底部,不然会被挡住。
# 可以自行更改坐标修改显示位置、血条的颜色等。
#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
# 游戏中全部窗口的超级类。
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 描绘敌人HP
#--------------------------------------------------------------------------
def draw_enemy_hp(enemy, x, y, width = 80)
draw_gauge(x, y, width, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, line_height, Vocab::hp_a)
self.contents.font.color = hp_color(enemy)
self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.hp, 2)
#一个数字占16像素
end
#--------------------------------------------------------------------------
# ● 绘制敌人MP
#--------------------------------------------------------------------------
def draw_enemy_mp(enemy, x, y, width = 80)
draw_gauge(x, y, width, enemy.mp_rate, mp_gauge_color1, mp_gauge_color2)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, line_height, Vocab::mp_a)
self.contents.font.color = mp_color(enemy)
self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.mp, 2)
end
end
#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
# 战斗显示用活动块。Game_Battler 类的实例监视、
# 活动块的状态的监视、活动块状态自动变化。
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# ● 初始化对象
# viewport : 视区
# battler : 战斗者 (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
[url=home.php?mod=space&uid=133701]@battler[/url] = battler
@battler_visible = false
@effect_type = nil
@effect_duration = 0
if @battler.is_a?(Game_Enemy)
width = 24 + 80 #边距12*2+血条的长度(在draw_enemy_hp中定义)
height = 24 + 24*2 #边距12*2+line_height*2
x = @battler.screen_x - width/2 #screen_x是怪物图片水平方向上的中点位置
y = @battler.screen_y - 12 #边距12,显示HP/MP的窗口无边框
@enemy_hpmp_window = Window_Base.new(x, y, width, height)
@enemy_hpmp_window.opacity = 0
@enemy_hpmp_window.contents = Bitmap.new(width - 24, height - 24)#位图比窗口小24像素取消边框
@enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
@old_hp = -1
@enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
@old_mp = -1
end
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
@enemy_hpmp_window.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
if @battler == nil
self.bitmap = nil
else
@use_sprite = @battler.use_sprite?
if @use_sprite
update_bitmap
update_origin
update_position
end
setup_new_effect
setup_new_animation
update_effect
if @enemy_hpmp_window != nil and (@old_hp != @battler.hp or @old_mp != @battler.mp)
if @battler.hp == 0
@enemy_hpmp_window.hide
else
@enemy_hpmp_window.contents.clear
@enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
@old_hp = @battler.hp
@enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
@old_mp = @battler.mp
@enemy_hpmp_window.show #怪物死后再被复活
end #if battler.hp == 0
end
end #if @battler == nil
end
end
|
|