设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1542|回复: 2
打印 上一主题 下一主题

[已经过期] 我加了个显示敌人血槽的脚本,战斗结束后会无法离开战斗

[复制链接]

Lv2.观梦者

梦石
0
星屑
521
在线时间
350 小时
注册时间
2015-10-19
帖子
87
跳转到指定楼层
1
发表于 2015-11-19 12:37:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
应该是与其他脚本冲突,删除最后一段没问题了但是就不会显示敌人扣了多少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

Lv1.梦旅人

梦石
0
星屑
80
在线时间
132 小时
注册时间
2014-5-7
帖子
148
2
发表于 2015-11-20 05:27:22 | 只看该作者
把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
复制代码

点评

没有起作用,但还是谢谢回复了  发表于 2015-11-20 15:30
「私が来た!  私が見た!  ならば次わ買つだけのこと!」
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
521
在线时间
350 小时
注册时间
2015-10-19
帖子
87
3
 楼主| 发表于 2015-11-20 16:57:59 | 只看该作者
本帖最后由 约约v看看 于 2015-11-20 17:04 编辑
Silentever 发表于 2015-11-20 05:27
把MP相关的内容删了,其他地方没变。
HP变0终止战斗这点没看懂...


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

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

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

就是卡在这里

就是卡在这里

点评

比起让这脚本强制结束战斗,更应该找出原因所在,不然只会让更多的BUG出现。  发表于 2015-11-21 00:46
原脚本单独使用没问题的话,是冲突的问题了,这只能一个一个测试看看哪个脚本不兼容。顺便插入顺序也很重要。  发表于 2015-11-21 00:45
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 02:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表