当前位置:游戏堡攻略网游攻略魔兽世界攻略 > 正文

《魔兽世界》如何宏的书写及优化

2014-11-13 17:09:18     来源:游戏堡     编辑:yxbao     我要留言

二、写宏的灵魂:逻辑和优先级

笔者和自己圈子里的很多人说过,写宏其实和编程没多大关系,需要的是一点数学的逻辑思维。尤其是那些技能整合宏,对在各种判断条件下到底哪一个技能才是优先的必须心里有谱。实际上这是上文中法则一之的推演,本质上仍旧是按照越优先越靠前的方式排列整个技能和判断序列。正因如此,上文法则一才是宏最最重要的法则,而优先级正是写宏的灵魂。

Code(c):

1:#showtooltip

2:/cast [help,dead][mod:shift,help][mod:shift,@player]Soulstone;[mod]Soul Link;Unending Resolve

3:/targetlasttarget [help,dead]

4:--比如这个术士宏,它的逻辑等价于:

5:--如果[目标死亡且可协助]或[按住shift并且目标可协助]或[其他按住shift的情况下对自己]施放[灵魂石]

6:--否则,如果[有按下其他任何修饰键]则施放灵魂链接

7:--否则任何其他情况下放盾墙

8:--此外,如果[目标死亡且可协助]还会顺带切换回之前的目标,目的是战复后目标切回怪身上

有人可能会问,[help,dead][mod:shift,help][mod:shift,@player]这一串看不懂,为什么先来个shift修饰后面又来一个,这里就涉及到优先级的问题了。

首先[help,dead]指定了[目标死亡且可协助]的情况,它是优先级最高的,只要满足这两个条件,其他任何条件不管满足不满足都会战复目标。

其次,[mod:shift,help]这一判断代表[按住shift并且目标可协助],但是它还有个隐藏条件。因为要判断到这一层,首先必须前者[help,dead]为假,也就是当[目标不可协助或者目标不死]的情况。所以其实这个判断应该是[(目标不可协助或者目标不死)并且按住shift并且目标可协助],由于不可协助和可协助互斥,所以实际判断的真值应该是[目标不死并且按住shift并且目标可协助],满足这个条件,对目标放灵魂石。

再次,[mod:shift,@player],这里只用了一个判断即shift修饰,上文说过@player不是判断条件。但因为前一个判断已经有一种按下shift的情况被取走了,那么这里的判断表示[其他按住shift的情况下对自己]施放灵魂石。

然后,[mod]是个广义的修饰键判断,当alt/shift/ctrl中任何一个或多个被按下是都为true。当然shift在前面的判断中被取走,那么这里表示的是[按下alt/ctrl中任何一个或两个],他等同于[有按下其他任何修饰键]则施放灵魂链接。

最后,无尽决心没有任何判断,它是恒真的。也就是在其他任何条件下都会施放无尽决心。

上面这个例子有些复杂,下面会通过一个相对简单的实例来阐述如何运用这种模式写宏。

法师法术反制及焦点反制/悬停解诅咒整合宏

要求是:焦点可攻击按住任何修饰键都是焦点反制,不按修饰键且敌对目标是对目标反制,鼠标悬停到友善目标是解诅咒,目标是友善目标是解诅咒,默认状况下是对目标的反制。

首先就是厘清优先级。

*笔者个人的习惯是修饰键优先级比悬停高,也就是按了修饰键应该尝试对焦点放而不是对悬停解诅咒;而同时悬停的优先级应该比目标的优先级高。这个优先级可以根据自身需要调整。

那么整理之后的优先级就是:

第一优先级:焦点反制敌对目标,判断式[mod,@focus,exists,harm]

第二优先级:悬停解可协助目标诅咒,判断式[@mouseover,exists,help]

第三优先级:对友善目标解诅咒,判断式[help]

第四优先级:敌对目标反制,判断式[harm]

第五优先级:反制,无判断式(恒真)

*要注意,harm和help有关系,但并不是help=noharm或者harm=nohelp。harm代表目标可攻击,help代表目标可协助(能给他加血上buff等),此外还有一种既不能攻击也不能协助的状态,称为“被动(Passive)”。

现在可以直接写出宏了,那就是:

Code(c):

1:#showtooltip

2:/cast [mod,@focus,exists,harm]法术反制;[@mouseover,exists,help][help]解除诅咒;[harm]法术反制;法术反制

3:--第一行的#showtooltip不是命令行,它的作用是能在鼠标提示上显示技能的有关信息

这个宏运作起来是符合要求的,但是可以继续优化。从逻辑上而言,第四与第五优先级可以合并,而且exists没必要与harm和help连用。因此最终的宏是:

Code(c):

1:#showtooltip

2:/cast [mod,@focus,harm]法术反制;[@mouseover,help][help]解除诅咒;法术反制

魔兽世界攻略
阿格拉玛 鲁拉 执政团之座 安托鲁斯王座
阿古斯介绍 四赛季奖励 阿古斯开启时间 7.3ptr改动
声明:游戏堡网登载此文出于传递信息之目的,不代表游戏堡网赞同其观点或证实其描述,若侵权请来信告知,我们将及时处理。
更多>>
魔兽世界单机版
8.4
评分:
相关阅读: