碰到个奇怪问题!!!!
下面这段代码,团队里其他成员生命值要是比我高的话,就不生效。要是生命值比我低,就生效。很奇怪,为什么啊?if GetNumRaidMembers()>0
then grouptype="raid"
else grouptype="party"
end
local RaidDX = BeeGroupMinScript('BeeRange(unit)<=40 and UnitCanAssist("player",unit) and not UnitIsDeadOrGhost(unit)',"BeeUnitHealth(unit)",grouptype)
if BeeRange(RaidDX)<=40 and BeeUnitBuff("坚韧祷言",RaidDX,2,1)<30
then
BeeRun("坚韧祷言")
return
end
有知道原因的吗?~~~~~~~ BeeGroupMinScript返回的应该是满足条件的最后一个人
也就是说如果这个人身上没有耐力的BUFF,肯定会加的,和你血无关
但是你设定的条件是血量最少,这个血量最少可能是动态变化的,不一定落到没有耐力BUFF的人身上 这个问题的关键点在于对BeeUnitHealth()这个函数的理解。
原型是BeeUnitHealth(unit,p,q)
如果p,q均无参数的话,那么BeeUnitHealth(unit)返回的是UnitHealth(unit),当前剩余生命值。然后以一个变量的身份传入BeeGroupMinScript()的第二个参数,也就是说它返回的是团队中“当前剩余生命值”最小的那个单位。
讲道理,你这个从大体上来说,感觉没啥问题。只是后面的BeeRun("坚韧祷言")加上个unit会更为贴切一些,也就是BeeRun("坚韧祷言",RaidDX)
页:
[1]