LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
楼主: 看看学学

[wowbee] 求助求助UnitBuff

[复制链接]
发表于 2023-6-25 11:43:20 | 显示全部楼层
你把player和ID位置搞错了吧
回复 支持 反对

使用道具 举报

发表于 2023-6-25 12:47:23 | 显示全部楼层
看看学学 发表于 2023-6-24 11:54 AM
那魔蜂函数有没有用ID判断的函数?

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

使用道具 举报

发表于 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信息

好的,大佬!我再研究研究,感谢耐心解答
回复 支持 反对

使用道具 举报

发表于 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顺序不是固定的吧
回复 支持 反对

使用道具 举报

发表于 2023-9-19 22:51:59 来自手机 | 显示全部楼层
        一般的技能同名实际上是加上颜色代码的,你可以试试用/run print(GetSpellInfo(25898)),魔蜂BeeUnitBuffList默认没有返回spellid,但实际是可以返回的,具体看源码里面BeeUnitBuffList的代码,复制换个名,把里面name[k] = c改为name[k] = spellid即可
回复 支持 反对

使用道具 举报

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

好的好的,有点懂了!谢谢大佬,抽空试试
回复 支持 反对

使用道具 举报

发表于 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就能使用,实际应该这样使用
[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来达到目的的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|LUACN论坛

GMT+8, 2024-5-5 08:20 AM , Processed in 0.063292 second(s), 28 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表