查看: 2809|回复: 6

[已经解决] 战斗显示敌人生命

[复制链接]
梦石
0
星屑
3850
在线时间
1899 小时
注册时间
2010-6-19
回帖
917
发表于 2022-7-25 23:00:01 | 显示全部楼层 |阅读模式

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

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

×
在论坛找了个战斗显示敌人的脚本,发现敌人逃跑的时候,队伍没敌人了,就显示脚本错误~,大佬帮忙看下怎么解决~

1.png

[pre lang="ruby"]#------------------------------------------------------------------------------
# 显示敌方剩余战斗力
#==============================================================================
#--------------------------------------------------------------------------
# □ 常数设置
#--------------------------------------------------------------------------
module ZENITH4
  EG_WIDTH = 165+100    # 长度
  EG_COLOR = Color.new(255,0,0,255) #(255, 180, 0, 255)   # 战力颜色(黄色)
  EW_NAME = "敌方剩余生命"
  EW_COLOR = Color.new(255, 255, 255, 255) # 文字颜色
end

#==============================================================================
# ■ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ● 对象初始化
#--------------------------------------------------------------------------
alias zenith4_initialize initialize
def initialize
  @enemy_force = Sprite.new
  @enemy_force.bitmap = Bitmap.new(8 + ZENITH4::EG_WIDTH+100, 45)
  @enemy_force.x = 185 - (12 + ZENITH4::EG_WIDTH)+200
  @enemy_force.y = 6#115
  @enemy_force.z = 250
  @nrbj = true
  zenith4_initialize
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
alias zenith4_dispose dispose
def dispose
  zenith4_dispose
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
alias zenith4_refresh refresh
def refresh
  zenith4_refresh
  if @nrbj
    @enemy_force.visible = true
    @enemy_force.bitmap.clear
    x = 4
    y = 4
    width = ZENITH4::EG_WIDTH
    @enemy_force.bitmap.font.size = 18
   
    # 描绘字体样式
    @enemy_force.bitmap.font.name = (["黑体"])
   
    @enemy_force.bitmap.font.color = Color.new(0, 0, 0, 255)
    # 描绘文字黑底
    @enemy_force.bitmap.draw_text(x+1+3+24+50+100, y+1, width, 22, ZENITH4::EW_NAME)
    @enemy_force.bitmap.draw_text(x-1+3+24+50+100, y-1, width, 22, ZENITH4::EW_NAME)
    @enemy_force.bitmap.draw_text(x+1+3+24+50+100, y-1, width, 22, ZENITH4::EW_NAME)
    @enemy_force.bitmap.draw_text(x-1+3+24+50+100, y+1, width, 22, ZENITH4::EW_NAME)
    @enemy_force.bitmap.font.color = ZENITH4::EW_COLOR
    # 描绘文字
    @enemy_force.bitmap.draw_text(x+3+24+50+100, y, width, 22, ZENITH4::EW_NAME)
    @item_max = $game_troop.enemies.size
    enemy_mh = 0
    enemy_h = 0
    for i in 0...@item_max
     enemy = $game_troop.enemies
     next if enemy.hidden
     enemy_mh += enemy.maxhp
     enemy_h += enemy.hp
    end
     # 底部描绘
     @enemy_force.bitmap.fill_rect(x-2+100, y+24, width+2,1, Color.new(152, 160, 88, 255))  
     @enemy_force.bitmap.fill_rect(x-1+100, y+26, width,3, Color.new(149,149,149,255))
     @enemy_force.bitmap.fill_rect(x-2+100, y+30, width+2,1, Color.new(152, 160, 88, 255))
     @enemy_force.bitmap.fill_rect(x-3+100, y+24, 1,7, Color.new(152, 160, 88, 255))
     @enemy_force.bitmap.fill_rect(x+165+100+100, y+24, 1,7, Color.new(152, 160, 88, 255))

     w = width * enemy_h / enemy_mh
     # 战力描绘
     @enemy_force.bitmap.fill_rect(x-1+100, y+26, w,3, ZENITH4::EG_COLOR)
   end
end
  def nrxc
    @nrbj = false
    @enemy_force.bitmap.dispose
    @enemy_force.dispose
  end
end
[/pre]
梦石
0
星屑
8003
在线时间
1184 小时
注册时间
2007-7-29
回帖
2014
发表于 2022-7-26 00:32:38 | 显示全部楼层
我没装RM所以不记得 enemy.hidden 是什么了。不过如果你的敌人队伍都匹配这个的话那 enemy_mh 就会是 0。
用一个不靠谱的解决方法可以把第65行改成:
  1. enemy_mh = 1
复制代码
回复

使用道具 举报

梦石
0
星屑
3850
在线时间
1899 小时
注册时间
2010-6-19
回帖
917
 楼主| 发表于 2022-7-26 18:40:05 | 显示全部楼层
enghao_lim 发表于 2022-7-26 00:32
我没装RM所以不记得 enemy.hidden 是什么了。不过如果你的敌人队伍都匹配这个的话那 enemy_mh 就会是 0。
...


会出现一个问题,血量显示不正常

1.png

回复

使用道具 举报

梦石
0
星屑
8003
在线时间
1184 小时
注册时间
2007-7-29
回帖
2014
发表于 2022-7-26 22:08:43 | 显示全部楼层
黑米馒头 发表于 2022-7-26 18:40
会出现一个问题,血量显示不正常

因为强行加了1啊。
最正确的做法应该是检查那个hidden是什么,要是你有能力就检查吧,不然就只好改80估计也行:
  1. w = (enemy_mh == 0) ? 0 : (width * enemy_h / enemy_mh)
复制代码


手头上无RM,只能推测性给出思路,要是LZ能够顺着思路解决那是最好的了。

点评

可以了 感谢!  发表于 2022-7-27 11:10

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2022-7-27 00:28:15 | 显示全部楼层
为什么是0,因为你在绘制的时候还没有敌人。在79行加个if判断,如果敌人数量为0,则暂时不绘制:
  1.   if enemy_mh > 0
  2.     w = width * enemy_h / enemy_mh
  3.     # 战力描绘
  4.     @enemy_force.bitmap.fill_rect(x-1+100, y+26, w,3, ZENITH4::EG_COLOR)
  5.   end
复制代码

点评

可以了 感谢!  发表于 2022-7-27 11:08

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部