lk47354813 发表于 2023-6-25 11:43:20

你把player和ID位置搞错了吧

vshrd 发表于 2023-6-25 12:47:23

看看学学 发表于 2023-6-24 11:54 AM
那魔蜂函数有没有用ID判断的函数?

方法太多了
官方函数的话
遍历自身buff信息
通过返回值对比id 这是自己做实现过程
魔封的话不知道。太久没用已经忘光了
不过你可以自己做一个spellname转spellid的函数
通过string去解构链接即可得到技能ID。
反之也可以通过id得到name。
这样不管他的参数需要啥你就填啥就行了
当然既然都做到这一步了
那findbuff这个过程一般也是自己做实现了

wxmlovewjx 发表于 2023-6-25 18:01:23

学习学习学习学习学习学习学习学习学习学习1

看看学学 发表于 2023-6-26 12:29:40

lk47354813 发表于 2023-6-25 11:43 AM
你把player和ID位置搞错了吧

没有,我调换一下也不行,不知道咋弄了

看看学学 发表于 2023-6-26 12:31:48

vshrd 发表于 2023-6-25 12:47 PM
方法太多了
官方函数的话
遍历自身buff信息


好的,大佬!我再研究研究,感谢耐心解答

xueying 发表于 2023-9-19 19:22:55

unitbuff后面的那个数字索引指的是你身上的第几个buff,并非buffid

看看学学 发表于 2023-9-19 21:34:53

xueying 发表于 2023-9-19 07:22 PM
unitbuff后面的那个数字索引指的是你身上的第几个buff,并非buffid

额,是这样啊?那这函数没法用啊,buff顺序不是固定的吧

贾维斯117 发表于 2023-9-19 22:51:59

        一般的技能同名实际上是加上颜色代码的,你可以试试用/run print(GetSpellInfo(25898)),魔蜂BeeUnitBuffList默认没有返回spellid,但实际是可以返回的,具体看源码里面BeeUnitBuffList的代码,复制换个名,把里面name = c改为name = spellid即可

看看学学 发表于 2023-9-19 23:55:29

贾维斯117 发表于 2023-9-19 10:51 PM
一般的技能同名实际上是加上颜色代码的,你可以试试用/run print(GetSpellInfo(25898)),魔蜂BeeUnitBuffL ...

好的好的,有点懂了!谢谢大佬,抽空试试:lol

懒动行不行 发表于 2023-9-21 09:31:11

本帖最后由 懒动行不行 于 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就能使用,实际应该这样使用

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来达到目的的
页: 1 [2] 3
查看完整版本: 求助求助UnitBuff