| 
 
| 赞 | 0 |  
| VIP | 10 |  
| 好人卡 | 0 |  
| 积分 | 1 |  
| 经验 | 1741 |  
| 最后登录 | 2020-7-14 |  
| 在线时间 | 91 小时 |  
 Lv1.梦旅人 
	梦石0 星屑75 在线时间91 小时注册时间2013-7-7帖子53 | 
2楼
 
 
 楼主|
发表于 2013-8-20 03:06:18
|
只看该作者 
| #==============================================================================# 功能:战斗中显示敌人血和蓝于敌人脚下# 适用: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.size = 20self.contents.font.color = system_colorself.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像素enddef draw_enemy_name(enemy, x, y)self.contents.font.size = 15self.contents.font.color = normal_colorself.contents.draw_text(x, y,104, line_height, enemy.name)end#--------------------------------------------------------------------------# ● 绘制敌人MP #--------------------------------------------------------------------------def draw_enemy_mp(enemy, x, y, width = 80)self.contents.font.size = 20draw_gauge(x, y, width, enemy.mp_rate, mp_gauge_color1, mp_gauge_color2)self.contents.font.color = system_colorself.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)endend#==============================================================================# ■ 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*3 #边距12*2+line_height*2x = @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@enemy_hpmp_window.draw_enemy_name(@battler, 0, 48)@old_name = nilendend#--------------------------------------------------------------------------# ● 释放#--------------------------------------------------------------------------def disposeif self.bitmap != nilself.bitmap.dispose@enemy_hpmp_window.disposeendsuperend#--------------------------------------------------------------------------# ● 更新画面#--------------------------------------------------------------------------def updatesuperif @battler == nilself.bitmap = nilelse@use_sprite = @battler.use_sprite?if @use_spriteupdate_bitmapupdate_originupdate_positionendsetup_new_effectsetup_new_animationupdate_effectif @enemy_hpmp_window != nil and (@old_hp != @battler.hp or @old_mp != @battler.mp)if @battler.hp == 0@enemy_hpmp_window.hideelse@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.draw_enemy_name(@battler, 0, 48)@old_mp = @battler.name@enemy_hpmp_window.show #怪物死后再被复活end #if battler.hp == 0endend #if @battler == nilend 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.size = 20 
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 
def draw_enemy_name(enemy, x, y) 
self.contents.font.size = 15 
self.contents.font.color = normal_color 
self.contents.draw_text(x, y,104, line_height, enemy.name) 
end 
#-------------------------------------------------------------------------- 
# ● 绘制敌人MP  
#-------------------------------------------------------------------------- 
def draw_enemy_mp(enemy, x, y, width = 80) 
self.contents.font.size = 20 
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*3 #边距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 
@enemy_hpmp_window.draw_enemy_name(@battler, 0, 48) 
@old_name = nil 
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.draw_enemy_name(@battler, 0, 48) 
@old_mp = @battler.name 
@enemy_hpmp_window.show #怪物死后再被复活 
end #if battler.hp == 0 
end 
end #if @battler == nil 
end 
  
end 
 
 这个用了人物会消失,而且战斗画面会卡住没反映
 
 求大神给个能用的显血脚本
   | 
 |