求助关于延迟施法的函数
研究了很久之前下载的第四版WOWBEE函数手册,只找了一个关于延迟施法的函数 BeeUnitCastSpellDelay(Spell,Time,Unit) 但是这个函数是释放技能后延迟释放下一个技能主要是为了避免重复施法。请教各位大佬有没有释放技能前的延迟施法函数,比如条件满足后,延迟几秒释放技能的函数呢?我找了一个函数手册的例子,代码如下:[*]if BeeUnitBuffInfo("target",2,"Magic",1)>=2 and BeeIsRun("驅散魔法","target") then
[*]
[*]BeeRun("驅散魔法","target")
[*]
[*]return
[*]end
當目標身上有2個以上有益Buff時驅散它
这段代码如何修改就能变成当IF里的条件满足,延迟一段自定义的时间释放驱散魔法的技能?
还请大佬们不吝赐教,谢谢。
新人前来学习,拒绝零回复 tanyaoiii 发表于 2022-5-23 10:12 AM
直接复制bee函数手册内容给你参考吧
BeeUnitCastSpellDelay
谢谢 这个我知道 这个是释放技能后延迟一定时间 再释放下一个技能。
我想要是释放技能前的延迟函数。 本帖最后由 blxyz521 于 2022-5-24 09:30 AM 编辑
LUA语言没有延时函数,移植其他语言的也不好用。
用GetTime()函数获取时间做对比。
例如:
if BeeUnitBuffInfo("target",2,"Magic",1)>=2 and BeeIsRun("驅散魔法","target") then
if ta==nil then
ta=GetTime()
end
tb=GetTime()
if tb-ta>2 then
BeeRun("驅散魔法","target")
ta=nil
end
end
當目標身上有2個以上有益Buff時,给ta、tb赋值时间。ta只赋值一次,tb一直更新,当tb>ta 2秒时,使用驱散魔法,再给ta赋值空。
借用这个帖子,谈论下这个函数的作用:
下面这个函数是我从wowbee里面拷贝出来的,接的像是你所说的延迟释放技能的函数,
function DelayCast(spellid, dtime) -- SpellID of Spell To Check, delay time
if not CheckCastTime thenCheckCastTime = {} end
local mtime = dtime + 5 --max expire time
local spellexist = false
if dtime > 0 then
if #CheckCastTime >0 then
for i=1, #CheckCastTime do
if CheckCastTime.SpellID == spellid then
spellexist = true
if ((GetTime() - CheckCastTime.CastTime) > mtime) then
CheckCastTime.CastTime = GetTime()
return false
elseif ((GetTime() - CheckCastTime.CastTime) > dtime) then
CheckCastTime.CastTime = GetTime()
return true
else
return false
end
end
end
if not spellexist then
table.insert(CheckCastTime, { SpellID = spellid, CastTime = GetTime() } )
return false
end
else
table.insert(CheckCastTime, { SpellID = spellid, CastTime = GetTime() } )
return false
end
else
return true
end
end
我觉得这个函数像你所说的函数,参数应该是技能ID和延迟释放时间。(我看代码猜的,哈哈)你可以试试看。
aoyq2007 发表于 2022-5-24 09:50 AM
借用这个帖子,谈论下这个函数的作用:
下面这个函数是我从wowbee里面拷贝出来的,接的像是你所说的延迟释 ...
这个好像不行,看意思是,距离上次施放这个技能多长时间。
例如
if BeeUnitBuffInfo("target",2,"Magic",1)>=2 and BeeIsRun("驱散魔法") then
if DelayCast(“驱散”,3) then
BeeRun("驱散魔法")
end
end
当目标身上有两个以上有益魔法时。就会出现4种情况
1如果这个循环是第一次执行,就会延时3秒施放驱散,
2如果这个循环是不是第一次执行,与上一次执行时间相差大于3+5秒,也会延时3秒施放驱散。
3如果这个循环是不是第一次执行,与上一次执行时间相差小于3秒,就会延时(3-时间差)施放驱散。
4如果这个循环是不是第一次执行,并且与上一次执行时间相差大于3秒小于3+5秒,就会立即施放驱散。
可以将第3行的5-max expire time改小,这样会减少第4种情况出现的几率。
以上是我的理解,一直想搞个可靠并且占用内存小的延时函数,有大佬愿意分享下吗? 果然都是大拿,我看到这些代码头都晕了 blxyz521 发表于 2022-5-24 09:29 AM
LUA语言没有延时函数,移植其他语言的也不好用。
用GetTime()函数获取时间做对比。
例如:
感谢这位大佬的分析 非常受用 谢谢 aoyq2007 发表于 2022-5-24 09:50 AM
借用这个帖子,谈论下这个函数的作用:
下面这个函数是我从wowbee里面拷贝出来的,接的像是你所说的延迟释 ...
感谢您提供的参考 非常有意义 谢谢
页:
[1]
2