码迷,mamicode.com
首页 > 其他好文 > 详细

空对象要不得——记一次修改wow宏的感慨

时间:2021-04-27 15:07:24      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:一个   mouseover   角色   命令   代码   别人   条件判断语句   mamicode   地方   

昨天群里有个盗贼发了个宏

技术图片

乍一看这个条件判断语句写的好像没有问题,语句的判断条件是:

1.当存在焦点,且按键模式为alt时,选取该焦点单位为目标释放致盲。

2.对鼠标指向的单位释放致盲。

3.否则释放致盲,目标应为默认的当前目标。

但当我上线去试的时候发现,玛德居然真的对当前按不出致盲,而前两种情况都是能执行的。也就是说前两个判断条件是有效的。

于是我便开始了我的调试之路。

首先前两条能执行,说明语句能进入该判断条件,也就是前面的肯定没问题。

那么就从后面开始试,在这段语句之后加了一段测试代码,成了这样

技术图片

发现新加的代码是能够执行的

技术图片

也就是说这个宏并没有被卡住,是能够顺序执行下来的

然后我将/y 更换为 /cast 飞镖投掷

技术图片

发现居然还是不能对当前目标释放飞镖,这就怪了??

为什么会变成这样呢……第一段代码能单独执行;第二段代码也能单独执行。这两件愉快的事情交织在了一起。而这两份喜悦,又会给我带来许许多多的喜悦。我本应该获得了这种如梦一般的幸福时光才对。可是,为什么,会变成现在这样呢。

两段正常的代码合一起就不正常了,于是我不信邪的把第二段代码又改了一下,改为释放脚踢

技术图片

淦,居然踹出去了!!!

技术图片

然后我又试了别的技能,居然都可以释放出来,唯独同样的飞镖投掷放不出

真是见鬼了啊啊啊啊啊啊为什么你可以和别人在一起,唯独我不行呢

冷静之后,我大概猜到,这大概是宏命令的优化,由于宏只能写255字,所以魔兽宏编辑器大概为了节省字数,自动优化把释放重复技能的第二段代码整合到第一段里面去了。

如果是这样,那一切就说得通了,问题又回到了原点,第一段代码根本没有执行到最后一段!

宏语法中,[]相当于if,;相当于else,那么这第一段代码既然没有执行到最后的else,那肯定是在前两条if语句就被完全拦截了。

于是我准备投入实战,在要塞旁边的狼群,就是你们了。下马,选头狼,狂按宏,神奇的事情发生了,角色语音一直提示我“没有目标”,可我明明选中了头狼的,

这种语音不是只有没有选中目标时释放指向型技能才有的吗?

这种语音不是只有没有选中目标时释放指向型技能才有的吗?

这种语音不是只有没有选中目标时释放指向型技能才有的吗?

真実はいつもひとつ!

我突然想到了,第二个条件判断语句里,mouseover不会连空地也能指定吧!

我再改了一下宏

技术图片

果然能用了!!!真是坑爹啊,魔兽世界这个判断语句,居然连空目标都能指定,换句话说,由于我的鼠标一直存在,那么我鼠标当前所在的地方,不管是人物还是空地,都会被视为当前目标,那我对着空地放致盲当然就不能用了!

 

这一串下来,认识到了三个问题。

1.魔兽世界宏自动优化语句有点考虑不周。如果宏编辑器不自动简化语句,那么释放同一个技能分开写也是能用的,现在的自动整合语句反而堵住了这条路。

2.空对象要不得啊!!!

3.条件判断语句的判断条件,写的时候一定要慎重

 

空对象要不得——记一次修改wow宏的感慨

标签:一个   mouseover   角色   命令   代码   别人   条件判断语句   mamicode   地方   

原文地址:https://www.cnblogs.com/wanghuanyeah/p/14707305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!