考格威尔(Cogwheel's)宏命令完全指南
Cogwheel著 WOWWiki共享维护 Subelf译 版权所有 请勿用于商业用途
一、 基本宏命令......................................................................................................................3
1. 什么是宏? ..................................................................................................................3
2. 怎样写宏? ..................................................................................................................3
3. 施放法术 ......................................................................................................................4
i. 关于技能名称和等级的说明...............................................................................4
4. 使用物品或者饰品 ......................................................................................................5
i. /use <装备栏>........................................................................................................5
ii. /use <背包> <栏> .................................................................................................5
5. 集成多个动作 ..............................................................................................................5
6. 选择目标 ......................................................................................................................6
i. 其他选择命令.......................................................................................................6
7. 控制宠物 ......................................................................................................................7
i. /petattack ................................................................................................................7
ii. /petfollow..............................................................................................................7
iii. /petpassive, /petdefensive 和 /petaggressive......................................................7
iv. /petautocaston 和 /petautocastoff .......................................................................7
8. 宏在动作栏的显示控制 ..............................................................................................7
9. 其他的命令 ..................................................................................................................8
i. 装备物品...............................................................................................................8
ii. 队列施法或使用物品..........................................................................................8
iii. 随机施法或使用物品.........................................................................................9
iv. 攻击.....................................................................................................................9
v. 技能栏控制..........................................................................................................9
vi. 移除增益效果.....................................................................................................9
vii. 退出形态............................................................................................................9
viii. 中止施法 ........................................................................................................10
ix. 终止一个宏:/stopmacro.................................................................................10
x. 解散坐骑............................................................................................................10
xi. 保存一个目标用于后续动作...........................................................................10
xii. 模拟点击..........................................................................................................10
进阶:脚本.....................................................................................................11
i. 脚本有哪些限制?.............................................................................................11
ii. 什么是脚本?....................................................................................................11
二、 命令条件语....................................................................................................................12
1. 什么是命令条件语? ................................................................................................12
2. 可以使用条件语的命令 ............................................................................................12
3. [target=]条件语 ..........................................................................................................13
4. 语法 ............................................................................................................................13
i. 条件语语法简介.................................................................................................14
ii. 条件语法............................................................................................................14
10.
iii. 完整的 EBNF 语法 ..........................................................................................15
iv. 参数为空...........................................................................................................15
v. 条件为空............................................................................................................15
vi. [target=]条件语与命令参数..............................................................................15
5. 命令条件语 ................................................................................................................16
i. 总表.....................................................................................................................16
ii. 敌/友(help / harm)..............................................................................................16
iii. 存在(exists).......................................................................................................17
iv. 死亡(dead).........................................................................................................17
v. 姿态(stance:0/1/2/…/n)......................................................................................17
vi. 潜行(stealth)......................................................................................................17
vii. 功能键状态(modifier:shift/ctrl/alt)..................................................................17
viii. 功能键变量 ....................................................................................................18
ix. 点击状态(button:1/2/…/5/<虚拟按键号>)......................................................18
x. 装备(equipped:<物品类型>).............................................................................18
xi. 引导中(channeling:<技能名称>).....................................................................18
xii. 技能条(actionbar:1/…/6).................................................................................19
xiii. 宠物(pet:<宠物名称或类型>) .......................................................................19
xiv. 战斗(combat) ..................................................................................................19
xv. 行动方式、室内外状态(mounted, swimming, flying, indoors & outdoors) ..19
xvi. 允许飞行 (flyable).........................................................................................19
xvii. 小队/团队队友(party/raid) ............................................................................19
xviii. 在小队/团队中(group:party/raid).................................................................19
6. 命令条件语的应用 ....................................................................................................19
i. 设置焦点(focus) .................................................................................................19
ii. 用/click 进行分支判定......................................................................................20
三、 附录 ...............................................................................................................................22
1. 自定义图标 ................................................................................................................22
2. 宏的移植 ....................................................................................................................22
3. 更多信息 ....................................................................................................................22
4. 鸣谢 ............................................................................................................................22
5. 译者注 ........................................................................................................................22
一、 基本宏命令
1. 什么是宏?
/say (/s)
/whisper(/w, /talk, /t)
/emote(/e, /em, /me)
/dance
宏是由一组宏命令组成的。以下是一些普通宏命令:
喜爱 PVP 的人,应该不会忘了这个:/spit
利用宏,我们可以把这些宏命令放到技能栏上点击使用,而且可以同时做多个动作。
写宏的时候,每条动作写在一行上,就像在聊天界面中输入的一样。比如,让你的角色
喊一声“Everybody, dance now!”然后开始跳舞的宏:
/y Everybody, dance now!
/dance
一个基本完整的宏命令列表可以参考这里:《宏命令全表》,不过个别新添加的宏
命令还没有被收录。WoWWiki有很多关于宏的资料,尤其是脚本和/run命令(后面将会
提到)。
注:我先在此说一下,宏的执行是立即进行的。这意味着当你点击技能栏上的一个
宏时,宏命令会一条接一条地执行,执行完后才会返回游戏控制。这将会产生两个重要
问题:第一,如果写了一个会执行很长时间的宏(如:/run for i=1, 1000000000 do end),
游戏会被卡死,直到它执行结束;第二,也是更重要的一点,那就是宏命令不可能具有
延时功能。这一现象在我们熟悉/cast 之类的命令后就可以很清楚地感觉到。而一些提供
了延时执行命令功能的插件,只能是能执行一些所谓的“良性命令”,如交谈、表情和对
于其他插件命令的调用(不过战斗中更换武器是可以进行的)。
2. 怎样写宏?
首先,打开你的宏窗口:单击主菜单上的“宏”按钮,或者在聊天界面中输入/macro
(/m)回车。在宏窗口的顶端,可以看见两个标签:“通用宏”和“<你的角色名>的专
用宏”。通用宏被存储在账号专有的文件夹中,被所有角色共享。而角色专用宏则存储在
角色自己的文件夹下,是角色专用的(废话……囧)。在标签下面是 18 个存放宏的栏位。
再往下是一个栏位,用于显示当前选中的宏;还有一个“修改名称/图标”的按钮,用于
修改选中的宏。然后是一个用于显示、编辑当前宏的文本框。最下面是三个按钮,傻子
也能看出它们是干什么的。
如果要创建一个宏,首先单击窗口下方的“新建”按钮,这时窗口旁边会显示一个
对话框,用于选择图标和输入宏的名称。如果选择了第一个图标(就是那个很红很暴力
的问号),WoW 会自动根据你宏命令中涉及的技能或物品选择图标。选好图标,输入完
名称,就可以单击“确定”按钮了。
顺便提几点:1.使用问号图标的宏,可以通过使用#show指定显示的图标。2.虽然可
以给不同的宏起相同的名字,但是最好不要这样做。因为有些插件和宏命令是通过宏名
称来调用宏的。3.在图标列表中可以添加自定义的图标。
现在,你选择的宏图标被显示在栏位中了(还会显示部分宏名称)。同时,新建的宏
被选中,图标显示在当前选中宏的栏位中:现在你可以写你的宏了。单击编辑文本框,
然后输入吧。
注:宏限定为 255 个字符,传闻这样做是为了以后可以把用户的宏上传到服务器中。
不过……现在能做的就是遵循这个限定,至于想要把宏移植到其他机器上使用,请参见
第三部分的宏的移植。
写完宏以后,只要把它的图标拖放到技能栏中就可以了。当你执行一个宏,或者是
关闭宏窗口的时候,宏都会自动保存的。现在点击宏的图标,看看效果吧!
3. 施放法术
在正常游戏过程中,很多宏命令通过聊天窗口输入使用似乎并不好用,但是在宏中
就不一样了。在特定场合下,简简单单的表情宏也可以产生有趣的角色扮演效果哦,那
么,继续看……
这个:/cast,它是最常见的宏命令了。作用嘛,就是施放一个技能书中的技能(包
括宠物的)。最简单的用法就是这样:
/cast 暗言术:痛
把这个宏放到技能栏上点击,将会对目标施放你最高级的痛。这和把技能书中的痛
拖到技能栏上,然后点击的效果是一样的。我们制作的宏同样会在技能栏显示你的技能
冷却状态和射程状态,点击后同样能正确的施放痛。如果宏使用了问号图标,那么还同
样会显示痛原有的图标。
那直接用技能不就行了么,何必用宏呢?继续看,在宏中通过集成多条命令可以产
生什么效果吧,这才是宏的价值所在。比如说你是个法师,想让队友知道你要羊掉谁,
你该怎么办?用宏吧,一个简单的/p命令加上一个/cast就可以了(使用这个无耻的插件
可以达到更好的效果:CCWarn,不过我们现在需要的只是这个简单易懂的教学例子):
/cast 变形术
/p 我羊了%t!谁打谁扛着哈!
注:由于宏的执行是立即进行的,所以不管目标是否有效技能是否冷却,宏被点击
时/p命令就执行了,也就是说这两行命令的顺序颠倒后效果是相同的。如果你想在确定
成功施放一个技能后才执行某条命令,你可以试试这个插件:AfterCast。AfterCast可以
设定在施放某个技能后执行一条宏命令,当然,是在第 1 节末尾所提到的限制之下的。
如:
/aftercast /p 请队友点门,把懒猪%t 揪过来!
/cast 召唤仪式
i.关于技能名称和等级的说明
/cast 命令对技能名称是十分严格的,文字、标点、空格,一个都不能错。为了防止
出错,编辑宏时,你可以打开你的技能书,按下 Shift 然后单击你的技能图标,技能名称
和等级就会被正确地输入到你的宏编辑文本框中,如:
/cast 暗言术:痛(等级 5)
如果把“(等级 5)”删掉,宏在执行时就会自动选择你最高级别的技能执行;不过在
很多场合下,还是需要指定级别的技能,比如术士放逐就需要根据时间来选择技能。另
外要注意,等级指示中使用的括号是英文的半角括号,等级与数字间有一个半角空格。
而一些技能名称中的括号,比如“精灵之火(野性)”中的括号,是中文的全角括号。以
下宏命令不能正常执行:
/cast 精灵之火(野性)
/cast 精灵之火(野性)(等级 1)
而以下的命令是正确的:
/cast 精灵之火(野性)
/cast 精灵之火(野性)()
空的括号效果和没有括号是一样的。由于 255 字符限制的存在,空间还是要节省的,
所以空括号可以删掉了……
4. 使用物品或者饰品
使用物品和饰品和施放法术是类似的。用于使用物品的命令是/use,后面只需要加
上物品的名字就可以了。例如:
/use 绿色机械陆行鸟
另外,还有以下其它的使用格式:
i./use <装备栏>
这种格式可以使用指定装备栏中的物品。具体使用请参见《装备栏编号方式》。例
如:
/use 13
使用第一个饰品。
ii./use <背包> <栏>
这种形式是在指定背包中确定物品栏的,比如你总是把猫食狗粮放在行囊的第一个
栏位中,那么你就可以用这样的宏来喂养宠物:
/cast 喂养宠物
/use 0 1
背包的编号为 0-4,顺序是从右到左,即 0 是行囊。物品栏则是从上到下从左到右,
从 1 开始依次编号的(与书写顺序相同):
4
8
2
6
4
8
3
7
1
5
……
或者是:
1
5
3
7
9
……
如果怕把/cast 和/use 的用法混淆了,那就彻底搞混吧,因为它们其实本来就是完全
一样。/cast 可以使用物品,而/use 也可以施放技能。这一点在目前看来似乎没有什么,
但是到后面,介绍命令条件语和施法队列时,你会发现能把物品和技能混合在同一条命
令中是多么爽的一件事。
2
6
10
5. 集成多个动作
首先,在一个宏中想一键释放多个法术是不行的。大多数技能和很多物品会触发公
共冷却(GCD),防止你同时做太多的动作。即使一个技能释放失败,如果它可以触发
GCD,那么它也会阻止后续/cast 命令的执行。这是 2.0 版本之后的设定,之前可能看到
这样的宏:
/cast 压制
/cast 斩杀
/cast 致死打击
/cast 破甲
但是现在,记住,这种宏已经不能正常执行了。如果压制施放失败,虽然没有触发
GCD,客户端也不会继续执行后续的技能施放。不过令人欣慰的是部分技能还是可以集
成到一个宏中。任何不触发 GCD 的瞬发技能后面可以接上另一个技能(“下次近战攻击”
型的技能,如英勇打击也归于此类)。一个技能可以通过看说明知道它是否瞬发,至于是
它是否触发 GCD 通过实验就可以知道。
2.3 版本之前,在这个瞬发无 GCD 技能之后需要加上一个/stopcasting 才可以施放其
后的技能。施放第一个技能后,游戏客户端会认为当前在施法状态,而/stopcasting 就可
以解除这个状态,就可以解决后续技能不能释放的问题。但是由于技能是瞬发,
/stopcasting 实际上并不能取消技能的施放。
而现在这里可以不用/stopcasting 了,例如:
/use 短暂能量护符
/cast 奥术强化
//stopcasting
/cast 气定神闲
//stopcasting
/cast 炎爆术
6. 选择目标
选择目标是宏的另一个主要作用。此类功能可以用专门的目标选择命令实现,改变
当前的目标;也可以在一些命令中用[target=]命令条件语实现,临时指定施法或使用物品
的目标,而不改变当前目标。命令条件语在第二部分将会讲到到。现在我先介绍目标选
择命令。
最基本的命令是/target,用法如下:
/target Cogwheel
/target 的选择是经过最佳相近匹配的,也就是说,如果我正站在你附近(并且附近
没有谁叫 Cog 的),你执行/target Cog,我就会变成你的当前目标。至于这种机制是利是
弊……那就取决于实际情况了,因为这个东东貌似不稳定,有时会得到莫名其妙的结果。
比如下面这个宏就可能不是很好用:
/target 黑翼法师
/cast 痛苦诅咒
如果附近没有黑翼法师呢?或许结果就是:选中了团里的某个人,因为他的名字在
某种意义上比较相近。虽然你的诅咒不会真对他们放出来,但还是够囧的。另外一个问
题是,它可能会选择你身后一个离你 100 码的单位——根本不是你想选中的那一个……
不过在 2.3 版之后,增加了一个/targetexact 命令,第一个问题得到解决了。
除了用人名进行选择之外,还可以通过单位标识符进行选择。单位标识符(Unit ID)
是用于标识特定单位的字符串。比如你的当前的目标就可以用“target”来表示,而你自
己对应的标识符是“player”,如果你有宠物,那么它的标识符是“pet”。另外,通过在
一个正确的标识符后加上 target,就可以获取他的目标。如此变态也可以:
/target targettargettargettargettargettarget
这里是一个可用ID的全表:《单位标识符》。
i.其他选择命令
以下是其他的目标选择命令:
不加任何其他参数时效果是选择你目标的目标,如果在其后加上人物名称,那么就
/assist
会选择对应人物的当前目标。例如:
/assist Cogwheel
另外,在客户端的界面选项中有一个选项,可以设置用/assist 选中一个敌对目标时
是否自动进行攻击。
/cleartarget
清除当前目标。
/targetexact
准确选择,如果附近没有单位的名字和给出的参数完全匹配,就不会切换目标。
顾名思义,分别用来选择上一个目标、上一个友方目标和上一个敌对目标。如果你
/targetlasttarget, /targetlastfriend 和 /targetlastenemy
之前没有过任何目标,那么这些命令不会产生任何影响。
/targetenemy 和 /targetfriend
选择敌方目标和选择友方目标。这两条命令是按一定顺序循环选择指定类型的目标
的,和使用 Tab 键的效果类似。如果在命令后加上一个 1 作为参数,那么就会按循环的
反方向进行选择。例如:
/targetenemy 1
效果就和按下 Shift+Tab 键一样。
注:这两个宏命令每个宏中只能用一次。
按距离循环选择你附近的小队或团队队友,与/targetenemy 类似,也可以用 1 作为参
/targetparty 和 /targetraid
数改变选择的循环方向。
7. 控制宠物
之前在讲施放技能的时候提到过,使用/cast 命令可以施放宠物的技能。玻璃渣把法
师的水宝宝的霜星起名叫“冰冻术”就是为了避免和法师自身的“冰霜新星”技能冲突,
从而导致不能在宏内使用。但是有宠物的职业会发现,如果宏只能施放技能的话,甚至
还不如宠物技能栏的功能。别急,燃烧的远征中,新增了以下这些宏指令:
i./petattack
让你的宠物去攻击你的当前目标。当然,在命令后加参数可以指定攻击的对象。
ii./petfollow
宠物切换到跟随状态,同时取消攻击。
iii./petpassive, /petdefensive 和 /petaggressive
宠物切换被动、防御和主动攻击状态。同宠物技能栏上的最后 3 个按钮。
iv./petautocaston 和 /petautocastoff
打开/关闭宠物技能的自动施放。例如:
/petautocaston 折磨
/petautocastoff 受难
不过美中不足,没有直接切换自动施放状态的宏命令,我将在后面“模拟点击”部
分提到一个解决方法。
8. 宏在动作栏的显示控制
如果一个宏使用问号图标,魔兽世界客户端会默认把宏内容中的第一个技能或物品
的图标、冷却状态等信息显示在技能栏上。比如前面所讲的这个例子:
/use 短暂能量护符
/cast 奥术强化
/cast 气定神闲
/cast 炎爆术
客户端会把奥术强化的状态信息作为宏的状态显示。但是这恐怕不是我们所希望的,
因为这个宏的目的是炎爆,前几行的奥强气定都只是为了最后把一个大大的脸盆给丢出
来。如果在宏的前面加上这样一行,炎爆术就会被当作宏的默认技能:
#show 炎爆术
如果使用了问号图标的话,宏还会直接显示炎爆的图标。#show 的参数机制和/cast
类似,可以使用技能名、物品名、物品编号(如 item:12345)、装备栏或者背包+物品栏
编号。
和#item 类似的还有#showtooltip。正常情况下,鼠标指向宏的时候,提示信息显示
的是宏的名字。而这在绝大多数情况下是很不好用的(除非你用了 TheoryCraft 之类的插
件可以显示详细的技能信息)。而用#showtooltip 就可以指定宏在鼠标指向时显示的信息,
用法同#show。另外,如果使用了#showtooltip 的话,就没必要再用#show 了。
如果客户端自动选择的技能符合你的要求,那么可以只用#showtooltip 而不加参数来
显示该技能的说明,这样可以节约空间。
请注意:#show 和#showtooltip 与/开头的宏命令不同,是大小写敏感的,也就是说
只能用小写字母。
9. 其他的命令
现在有了足够的基础,以下这些命令我就只简要地讲解一下了。有些命令看似没啥
用,但如果配合将在第二部分介绍的命令条件语,它将会产生惊人的效果。
i.装备物品
用于装备物品的命令有两个:/equip和/equipslot。/equip的参数为物品名称,效果是
把对应物品装备到默认的装备栏中,类似在背包中右键单击物品(如:一件单手武器就
会被装备到主手上)。而/equipslot的参数为装备栏编号和物品名称,效果是把物品装备到
指定栏位中去。例:
装备武器:
/equip 虚空角斧
把饰品装备在第二个饰品栏中:
/equip 14 棍子上的胡萝卜
注意:即使是在战斗中,插件页是可以直接使用装备命令的。因此在 AfterCast 和
Chronos 中可以使用装备命令。如果插件内部会检查命令是否经过安全化可能就不那么
好用了,因为它属于“安全化”指令——但是事实上它并没有受到安全限制。
ii.队列施法或使用物品
很多时候我们需要经常按一定顺序使用固定的一些技能或物品。这样的操作是可用
/castsequence 宏命令进行傻瓜化的。/castsequence 命令用法是在后面写上一些技能或物品
的名称,之间用英文的半角逗号分隔,和/use、/cast 类似。技能名、物品名、物品代号、
装备栏代号和背包位代号都可以混合使用。每次执行宏,就使用当前的技能或物品(从
第一个开始),如果成功,队列的当前位置就被移至下一个技能或物品。也就是说需要反
复执行宏来按顺序使用这些技能或物品。当最后一个技能/物品成功使用后,这个队列就
被重置到开头。比如:
/castesquence 献祭, 腐蚀术, 痛苦诅咒, 生命通道