chenbaiyi 发表于 2023-2-20 23:28:39

关于有读条的DOT技能(比如献祭)重复释放的无损解决方法

新人一枚,分享下关于需要读条的DOT技能(比如献祭)重复释放的无损解决方法,不止献祭,其他需要buff判定还有读条或者有飞行弹道延迟的技能都可以,今天写恶魔术脚本的时候发现即使用BeeUnitCastSpellDelay("獻祭",1.5)也解决不了放两次献祭的问题,作为新人只知道手册上和几个大佬的新手教程贴子里面的函数,实在不知道该用哪个函数解决,所以我研究了下游戏机制,发现原因是在献祭debuff出现之前会多次执行命令导致第二次献祭被加入了施法序列,用游戏自带的序列宏可解,但是使用序列宏加入其他技能的话会损失gcd,因为情况不同,总是绑定一个相同的技能并不是个好的选择,这时我想起来生存猎的gse一键宏刚开始为了荷枪实弹期间不吞连发爆炸射击的dot,在三次爆炸射击之间插入大量的追踪野兽用作占位符和充当计时功能,同时由于WLK版本所有追踪系列技能都是独立gcd的,不会影响下个技能的衔接,而刚好术士有个感知恶魔的追踪技能,将感知恶魔加入序列宏可以完美卡住施法序列还不占用释放下个技能的gcd,于是就成了这样if BeeTargetDeBuffTime("献祭")<=1 and BeeTargetDeBuffTime("腐蚀术")>=1 then    BeeRun("/castsequence 献祭,感知恶魔")

end
PS:所有的追踪技能都可以用作占位符,包括但不限于SS的追踪恶魔、猎人的一大堆追踪、德莱尼的寻找宝藏、采集业的寻矿寻药等等都可以作为占位追踪使用


vshrd 发表于 2023-2-21 02:49:29

支持下顺便来个通用解
local casttime=select(7,getspellinfo(spellname))/1000+0.1
local lastcast=beegetvariable("lastcast")
if not lastcast or gettime()>lastcast then
beerun(spn)
beesetvariable("lastcast",gettime())
end
读条技能在读条完毕后的0.1秒内不允许重复施法
如果服务器延时高或弹道飞行速度慢可以适当延长

chenbaiyi 发表于 2023-2-21 18:05:17

vshrd 发表于 2023-2-21 02:49 AM
支持下顺便来个通用解
local casttime=select(7,getspellinfo(spellname))/1000+0.1
local lastcast=be ...

感谢版主答疑,就是这函数基本都没见过{:5_168:},普通区的解锁器能用么

vshrd 发表于 2023-2-21 19:26:05

这是官方的函数。开放的
不解释都能用

CHRIS123 发表于 2023-6-27 14:52:59

vshrd 发表于 2023-2-21 02:49 AM
支持下顺便来个通用解
local casttime=select(7,getspellinfo(spellname))/1000+0.1
local lastcast=be ...

大佬,用这个方法,我这边有点问题,attempt to call global 'getspellinfo' (a nil value)是无法识别这个函数嘛

vshrd 发表于 2023-6-27 19:30:56

CHRIS123 发表于 2023-6-27 02:52 PM
大佬,用这个方法,我这边有点问题,是无法识别这个函数嘛

我手机敲字。所以没区分大小写= =

bornkiller 发表于 2024-1-7 21:38:52

vshrd 发表于 2023-2-21 02:49 AM
支持下顺便来个通用解
local casttime=select(7,getspellinfo(spellname))/1000+0.1
local lastcast=be ...

这个。。看不懂。。但是不能用。。我大小写也修正了。。也出错。。
页: [1]
查看完整版本: 关于有读条的DOT技能(比如献祭)重复释放的无损解决方法