本帖最后由 懒动行不行 于 2023-9-21 03:58 PM 编辑
UnitBuff实际上是UnitAura的变形,你看下Woepedia对于这个函数的表述:
name, icon, count, dispelType, duration, expirationTime, source, isStealable, nameplateShowPersonal,
spellId, canApplyAura, isBossDebuff, castByPlayer, nameplateShowAll, timeMod, ...
= UnitAura (unit, index [, filter])
= UnitBuff (unit, index [, filter])
= UnitDebuff(unit, index [, filter])
显然:
1、这个函数第一个值会返回Buff的名称,所以用if not UnitBuff来判断Buff是否存在是可以的
2、注意UnitBuff里面的参数unit和index,并没有提供buff name或者buff ID的参数
所以官方这个函数用起来并不是简单的在UnitBuff中输入buff名称或者ID就能使用,实际应该这样使用
[Lua] 纯文本查看 复制代码
for i=1,40 do
if UnitBuff("payer",i)=="xxx"--注意,XXX是Buff的名称,而非ID
then
do sth
break
end
end
上面是通过for do遍历玩家身上的所有buff槽以发现是否有指定的buff,而不是我们想象中的通过指定buff的名称或者ID来直接判断有无
但是WBE通过对官方函数的重新封装,提供更加便于使用或者符合我们初步认知的方法,比如指定BUFF名称或者ID来判断,但是归根结底,他只是对官方函数的二次加工,说到底还是通过官方的API来达到目的的 |