兽王招宠物再放技能宏命令

再也不用担心技能放不出来才发现BB忘记招了

Posted by lx8421bcd on October 10, 2018

8.0回归,发现自己有时候被战复起来经常忘记招BB,按了半天技能按不出来才发现忘记招BB,现在自己也开始写代码了,不如研究一下宏命令来解决这个问题吧。
折腾了一晚上,弄出来个目前应该算比较好的解决方案

#showtooltip 
/cast [@pet, dead] 复活宠物 
/castsequence [spec: 1,nopet] reset=3 召唤宠物 1,复活宠物;[nopet] reset=3 召唤宠物 2,复活宠物 
/stopmacro [nopet][@pet,dead] 
/petattack 
/cast 杀戮命令

其中,下面这3句话是这个宏的精髓,也就是实现没有召唤BB时招BB - BB死了读复活 - BB活着放技能的语句,这三句话可以组合任意需要有BB才能释放的技能。

/cast [@pet, dead] 复活宠物 
/castsequence [spec: 1,nopet] reset=3 召唤宠物 1,复活宠物;[nopet] reset=3 召唤宠物 2,复活宠物 
/stopmacro [nopet][@pet,dead] 

记录一下运转原理

/cast [@pet, dead] 复活宠物

首先判断宠物是否死亡,如果死亡就读复活宠物

/castsequence [spec: 1,nopet] reset=3 召唤宠物 1,复活宠物;[nopet] reset=3 召唤宠物 2,复活宠物

我自己的宠物栏1放的是灵魂兽,所以 [spec: 1, nopet] 就是说在专精1(也就是兽王)的情况下默认先召唤灵魂兽,分号后面表示其它专精(比如生存)就召唤宠物栏 2,一般放的是默认的普通宠物。

这句话还负责处理另外一种特殊情况:BB死了而且尸体消失了,比如读复活宠物被打断就会发生。
这种情况下因为BB实际上是没激活的,所以用诸如[nopet] [@pet,noexists] 条件判断都会通过,而且因为BB未激活, [@pet,nodead] 这样的判断条件是不会过的。
如果不加处理,宏就会出现卡在 招BB->BB死了请先复活->判断要招BB 这样的死循环中

我的处理方法是用一个castsequence,同时配合下面一句话:

/stopmacro [nopet][@pet,dead]

如果没BB或BB死了,停止执行宏命令
两句话配合,如果满足条件,先尝试召唤宠物,如果召唤宠物失败,那么无论是没BB还是BB死了,都是不会满足继续执行的条件的,宏停止。
这时候再按一次宏上面的castsequence就会执行到第二个技能,也就是复活宠物,
也就是说,如果发生了BB死了&尸体消失的情况,双击此宏可读复活。

新的问题,如何重置序列?
这里我试了n种方法最后使用reset=3来处理
如果不重置序列,会发生一个问题:你用这个宏招了BB(castsequence跳到了第二个),然后解散了,下一次就会读复活宠物…… 所以序列必须重置。然而无论是有无宠物、进战脱战都没法准确判断重置时机,所以我只能选择笨办法,3秒后重置,也就是说如果出现了BB死了且未激活的状态,想要靠这个宏复活BB只能浪费一个GCD了。