Project1

标题: 我加了个显示敌人血槽的脚本,战斗结束后会无法离开战斗 [打印本页]

作者: 约约v看看    时间: 2015-11-19 12:37
标题: 我加了个显示敌人血槽的脚本,战斗结束后会无法离开战斗
应该是与其他脚本冲突,删除最后一段没问题了但是就不会显示敌人扣了多少HP和MP了
我的想法是能不能小小修改一下脚本当hp为0时中止战斗,另外能不能把显示MP去掉
所用的脚本如下
#==============================================================================
# 功能:战斗中显示敌人血和蓝于敌人脚下
# 适用: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)
@battler = 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
作者: Silentever    时间: 2015-11-20 05:27
把MP相关的内容删了,其他地方没变。
HP变0终止战斗这点没看懂...
  1. #==============================================================================
  2. # *删除MP显示相关
  3. #==============================================================================
  4. # 功能:战斗中显示敌人血和蓝于敌人脚下
  5. # 适用:RMVX Ace
  6. # 作者:殇殃 2012.3.10
  7. # 使用方法:复制整个脚本插入到Main之前
  8. # 注意:由于血条是显示在敌人脚下,所以敌群的位置不能太靠底部,不然会被挡住。
  9. # 可以自行更改坐标修改显示位置、血条的颜色等。
  10. #==============================================================================
  11. # ■ Window_Base
  12. #------------------------------------------------------------------------------
  13. #  游戏中全部窗口的超级类。
  14. #==============================================================================

  15. class Window_Base < Window
  16. #--------------------------------------------------------------------------
  17. # ● 描绘敌人HP
  18. #--------------------------------------------------------------------------
  19.   def draw_enemy_hp(enemy, x, y, width = 80)
  20.     draw_gauge(x, y, width, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2)
  21.     self.contents.font.color = system_color
  22.     self.contents.draw_text(x, y, 30, line_height, Vocab::hp_a)
  23.     self.contents.font.color = hp_color(enemy)
  24.     self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.hp, 2)
  25.     #一个数字占16像素
  26.   end
  27. end
  28. #==============================================================================
  29. # ■ Sprite_Battler
  30. #------------------------------------------------------------------------------
  31. #  战斗显示用活动块。Game_Battler 类的实例监视、
  32. # 活动块的状态的监视、活动块状态自动变化。
  33. #==============================================================================

  34. class Sprite_Battler < Sprite_Base
  35. #--------------------------------------------------------------------------
  36. # ● 初始化对象
  37. # viewport : 视区
  38. # battler : 战斗者 (Game_Battler)
  39. #--------------------------------------------------------------------------
  40.   def initialize(viewport, battler = nil)
  41.     super(viewport)
  42.     @battler = battler
  43.     @battler_visible = false
  44.     @effect_type = nil
  45.     @effect_duration = 0
  46.     if @battler.is_a?(Game_Enemy)
  47.       width = 24 + 80 #边距12*2+血条的长度(在draw_enemy_hp中定义)
  48.       height = 24 + 24*2 #边距12*2+line_height*2
  49.       x = @battler.screen_x - width/2 #screen_x是怪物图片水平方向上的中点位置
  50.       y = @battler.screen_y - 12 #边距12,显示HP/MP的窗口无边框
  51.       @enemy_hpmp_window = Window_Base.new(x, y, width, height)
  52.       @enemy_hpmp_window.opacity = 0
  53.       @enemy_hpmp_window.contents = Bitmap.new(width - 24, height - 24)#位图比窗口小24像素取消边框
  54.       @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
  55.       @old_hp = -1
  56.     end
  57.   end
  58. #--------------------------------------------------------------------------
  59. # ● 释放
  60. #--------------------------------------------------------------------------
  61.   def dispose
  62.     if self.bitmap != nil
  63.       self.bitmap.dispose
  64.       @enemy_hpmp_window.dispose
  65.     end
  66.     super
  67.   end
  68. #--------------------------------------------------------------------------
  69. # ● 更新画面
  70. #--------------------------------------------------------------------------
  71.   def update
  72.     super
  73.     if @battler == nil
  74.       self.bitmap = nil
  75.     else
  76.       @use_sprite = @battler.use_sprite?
  77.       if @use_sprite
  78.         update_bitmap
  79.         update_origin
  80.         update_position
  81.       end
  82.       setup_new_effect
  83.       setup_new_animation
  84.       update_effect
  85.       if @enemy_hpmp_window != nil and @old_hp != @battler.hp
  86.         if @battler.hp == 0
  87.           @enemy_hpmp_window.hide
  88.         else
  89.           @enemy_hpmp_window.contents.clear
  90.           @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
  91.           @old_hp = @battler.hp
  92.           @enemy_hpmp_window.show #怪物死后再被复活
  93.         end #if battler.hp == 0
  94.       end
  95.     end #if @battler == nil
  96.   end

  97. end
复制代码

作者: 约约v看看    时间: 2015-11-20 16:57
本帖最后由 约约v看看 于 2015-11-20 17:04 编辑
Silentever 发表于 2015-11-20 05:27
把MP相关的内容删了,其他地方没变。
HP变0终止战斗这点没看懂...


对不起,脚本没问题它又生效了,而且我家程序貌似脚本插进去换一个再换回来就突然有效了,明明是一样的东西,之前没有效果,之后就突然有效果了,明明什么也没再变化啊

另外我第一个问题想说的是战斗结束后或异常状态的时候它总是会卡在战斗界面出不来(卡死在那了)

捕获.PNG (531.16 KB, 下载次数: 13)

就是卡在这里

就是卡在这里





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1