飞扬 发表于 2024-3-6 15:55:05

碰到个奇怪问题!!!!

下面这段代码,团队里其他成员生命值要是比我高的话,就不生效。要是生命值比我低,就生效。很奇怪,为什么啊?

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

飞扬 发表于 2024-3-6 18:57:11

有知道原因的吗?~~~~~~~

懒动行不行 发表于 2024-3-6 21:38:03

BeeGroupMinScript返回的应该是满足条件的最后一个人
也就是说如果这个人身上没有耐力的BUFF,肯定会加的,和你血无关
但是你设定的条件是血量最少,这个血量最少可能是动态变化的,不一定落到没有耐力BUFF的人身上

z22904220 发表于 2024-3-7 00:42:25

这个问题的关键点在于对BeeUnitHealth()这个函数的理解。
原型是BeeUnitHealth(unit,p,q)
如果p,q均无参数的话,那么BeeUnitHealth(unit)返回的是UnitHealth(unit),当前剩余生命值。然后以一个变量的身份传入BeeGroupMinScript()的第二个参数,也就是说它返回的是团队中“当前剩余生命值”最小的那个单位。
讲道理,你这个从大体上来说,感觉没啥问题。只是后面的BeeRun("坚韧祷言")加上个unit会更为贴切一些,也就是BeeRun("坚韧祷言",RaidDX)


页: [1]
查看完整版本: 碰到个奇怪问题!!!!