魔兽世界中,宏命令可以大幅度降低玩家的操作难度,而一套称手的宏可以大大提高输出效率,并且在某些特定的场景,一些宏帮助玩家保命甚至可以扭转战机,在上篇文章分享了新手向的宏命令设置,本篇文章为玩家整理了进阶版宏命令设置攻略。
新手向教学以及宏命令分享请点击前往:魔兽世界新手向宏命令设置攻略
一、条件语法
1.条件语句
首先先介绍概念,该类别的宏命令则是会检查条件是否正确,并判断释放技能。
命令条件语可以通过对一组条件进行的判断来选择命令的实际参数。首先,可以用分号分隔出若干个“若干组条件+参数”这样的子句,逻辑上,分号就相当于高级语言中的else或是elseif。条件的组数不定,也可以没有,同一组条件用一个方括号括在一起。而每组条件中有可以包含多个条件。
/命令 [一组条件] [另一组条件] 参数1; [又一组条件] 参数2; ……
先来组简单垃圾宏:
/cast [help] [target=targettarget, help] [target=player] 快速治疗
该命令为/cast释放技能类型,其中有三个判断条件,宏命令从左往右判断条件:首先判断当前目标是否可以接受增益法术,如果不行则进入第二个条件判断,首先将目标改变为目标的目标(target=targettarget,其中"="相当于高级语言中的赋值,将玩家的目标赋值为目标的目标)在","后面则为判断条件,判断该目标是否能接受增益法术,如果判断结果为否,则进行下一个条件,下一个条件没有判断语句,仅仅将目标改为自己,所以对自己释放快速治疗。
梳理解释一下该宏含义:首先判断当前目标是否能被快速治疗,如果不能则将目标改变为当前目标的目标并判断是否能被快速治疗,如果还是不能则将目标改变为玩家自己进行快速治疗
如果三个条件都不能执行,将会执行魔兽世界底层逻辑:当无法对目标释放增益效果或者无目标的情况下,对玩家自己释放快速治疗。
2.条件语句组成
注意:条件对大小写敏感,如果把[help]写成了[Help],宏运行时会报错
每组条件都是由逗号分隔的一些条件语组成的,各条件不分前后次序。在逻辑上,[target=]赋值总是先起到效果,再进行条件判定,其中","的含义为"并且"
所以[help, nodead, target=focus]的含义是:我的焦点目标是活的并且可以接受增益效果。
除了"help"、"nodead"等状态以外,有些条件可以指定一些特定的参数,比如[stance]姿态,单独使用时表示:在任一姿态中,如果给它加上参数,则可以指定在某种特定的姿态中,格式是在条件语后加上":"冒号。例如:
/cast [stance:1/2]盾击;防御姿态
这个宏命令用类高级语言表示就是:
if 处于姿态1或2
then 使用盾击
else 切换防御姿态
如果玩家处于姿态1或姿态2则使用盾击,否则切换为防御姿态,而";"分号的作用就相当于对于之前的指令进行另一个操作(或者加上判断条件)如:
/cast [help] 恢复; [harm] 暗言术:痛
首先判断目标能否接受增益法术,如果能则执行/cast 恢复,如果不能则判定目标能否被伤害,如果能则执行/cast 暗言术痛。
但如果两个条件都不成立,由于后面没有别的操作,这条宏命令就算执行完了,但也是什么动作都没做。
3.条件为空
有时候我们需要在特定条件下对特定目标释放技能,并在条件不成立的情况下按常规释放,此效果可以用空条件来实现:
/cast [target=mouseover,help][ ]圣光闪现
如果鼠标当前目标可以被治疗则对目标释放圣光闪现,如果不能被治疗则直接释放圣光闪现。(这条命令没有意义)
4.参数为空
/petattack [target=focus, harm];
此命令的两个参数为空,且分号后的条件也为空,所以无论焦点目标能否被伤害,我们都会释放宠物攻击,虽然会提示无法伤害目标。
二、可以使用条件的命令
/assist
/cancelaura
/cancelform
/cast
/castrandom
/castsequence
/changeactionbar
/clearfocus
/cleartarget
/click
/dismount
/equip[2]
/equipslot[2]
/focus
/petagressive
/petattack
/petautocastoff
/petautocaston
/petdefensive
/petfollow
/petpassive
/petstay
/startattack
/stopattack
/stopcasting
/stopmacro
/swapactionbar
/target
/targetenemy
/targetfriend
/targetlasttarget
/targetparty
/targetraid
/use
/userandom
三、命令条件语
面列出宏命令系统中支持的所有条件语。如果你需要的判断条件没有在此列出,那么就不可能通过该条件来执行安全化命令的动作。后面也有可能增加。
help 目标可以接受增益法术
harm 目标可以受到攻击
exists 目标存在
dead 目标已经挂了
stance:0/1/2../n 玩家在某姿态下
stealth 玩家在潜行状态下
modifier:shift/ctrl/alt 某功能键被按下
button:1/…/5/<虚拟按键号> 宏通过某键点击执行
equipped:<装备类型> 玩家装备了某类型物品,参见《装备类型》
channeling:<法术名称> 玩家正在引导某法术
actionbar:1/…./6 当前技能栏为某动作栏
pet:<宠物名称或类型> 玩家当前宠物为某宠物
combat 玩家正在战斗状态
mounted 玩家在骑乘状态
swimming 玩家在游泳
flying 玩家在飞行状态
flyable 玩家正处在一个允许飞行的地界
indoors 玩家在室内
outdoors 玩家在户外
party 目标在玩家的小队中
raid 目标在玩家的小队或团队中
group:party/raid 玩家在某集体中(小队/团队)
四、脚本(进阶)
脚本是一个强大的工具,它按照LUA语言的语法执行,利用客户端提供的接口可以产生强大的智能。所以暴雪就给它加了限制,防止它被滥用而影响游戏平衡性。我之所以要先讲脚本的限制,为的是让大家对它别抱太大希望。虽然脚本还是很有用,但是不能用来施法、使用物品、改换技能栏或改变当前目标。这些功能只能依靠那些宏命令来实现。
魔兽世界客户端的用户界面是可以通过LUA脚本控制的。通过/run和/script命令就可以执行脚本(我个人推荐使用/run,节省字符数……)。在命令后面书写脚本内容,中间不能换行。不过一个宏中可以包含多个/run命令。 过多关于LUA语言和编程的内容本文就不再赘述。如果你有一定的编程经验,那么就可以访问lua.org学习LUA语言。如果没有什么基础,那么请先看《编程入门》了解一些基本概念。 暴雪提供了很多API函数(Application Programming Interface),可以在LUA脚本中调用来实现对界面的控制(如果你打算花时间好好研究魔兽世界插件的话,(WoWWiki是最优选择)。我不可能把所有关于用户界面的细节都讲到,因此我只打算用我最常用的一个宏做例子,它会向所有和你目标相同的人发送悄悄话,通知他们改变目标。这样就可以防止已被羊的人受到攻击。
/cast 变形术
/run for i=1,GetNumRaidMembers()-1 do local u,t="raid"..i,"target"if UnitIsUnit(u..t,t)then SendChatMessage("Change targets! Trying to sheep...","WHISPER",nil,UnitName(u))end end
如果把代码单独拿出来美化一下的话,应该是这个样子:
for i = 1, GetNumRaidMembers() - 1 do
local unit = "raid"..i
if UnitIsUnit(unit.."target", "target") then
SendChatMessage("Change targets! Trying to sheep...", "WHISPER", nil, UnitName(unit))
end
end
总而言之,脚本适合有魔兽世界插件开发想法的人研究,但如果学会如何编写并使用脚本的话,则可以实现许多宏命令无法解决的问题。
本篇文章参考wowwiki.com,Cogwheel的宏命令完全指南
更多游戏攻略请关注玩一玩游戏网