9512.net
甜梦文库
当前位置:首页 >> >>

魔兽世界宏命令完全教程


考格威尔(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 10. 进阶:脚本 ..................................................................................................... 11 i. 脚本有哪些限制? ............................................................................................. 11 ii. 什么是脚本?.................................................................................................... 11 二、 命令条件语.................................................................................................................... 12 1. 什么是命令条件语? ................................................................................................ 12 2. 可以使用条件语的命令 ............................................................................................ 12 3. [target=]条件语 .......................................................................................................... 13 4. 语法 ............................................................................................................................ 13 i. 条件语语法简介 ................................................................................................. 14 ii. 条件语法............................................................................................................ 14

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 开始依次编号的(与书写顺序相同) :
1 2 5 6 ?? 3 7 4 8

或者是:
3 4 7 8 ?? 1 5 9 2 6 10

如果怕把/cast 和/use 的用法混淆了,那就彻底搞混吧,因为它们其实本来就是完全 一样。/cast 可以使用物品,而/use 也可以施放技能。这一点在目前看来似乎没有什么, 但是到后面,介绍命令条件语和施法队列时,你会发现能把物品和技能混合在同一条命 令中是多么爽的一件事。

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 键一样。 注:这两个宏命令每个宏中只能用一次。 ? /targetparty 和 /targetraid 按距离循环选择你附近的小队或团队队友, 与/targetenemy 类似, 也可以用 1 作为参 数改变选择的循环方向。

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 献祭, 腐蚀术, 痛苦诅咒, 生命通道

这是痛苦术士起手的招牌动作。注意,如果献祭没有施放成功(比如魔法不足,超 出范围,被沉默了等等) ,这个队列不会继续执行,直到献祭放出去。所以下面这个宏是 屁用没有的:
/castesquence 压制, 斩杀, 致死打击

在技能列表之前,可以插入一个条件语,用于另外指定一些队列的重置条件。语法 是:
reset=n/target/combat/shift/alt/ctrl

以上的这些条件都可以任意共存。其中,n 是数字,表示从某次执行宏开始,经过 n 秒后没有再次执行这个宏,那么队列就被重置到开头。这一点很重要,因为这意味着无 法利用 reset 条件语来精确计时 (比如让某技能一冷却就用) 。target 条件表示当目标切换 时,宏队列重置;combat 条件表示脱离战斗后重置;shift,alt 和 ctrl 表示当执行宏时指 定的键为按下状态时重置。例如:
/castsequence reset=10/shift 第一个技能, 其他技能, 一些物品

如果这个宏图标使用的是问号,就会自动显示下一个要施放技能的图标。但如果 /castsequence 前面还有其他/cast 和/uses 命令,这个功能就没有了,而且玻璃渣也没有提 供什么命令来解决这个问题。

iii.随机施法或使用物品
最常见的例子就是希望随机召唤一个坐骑来装 B,使用/castrandom 或者/userandom 宏命令很容易实现这个功能。用法和/castsequence 类似,如:
/castrandom 迅捷绿色机械路行鸟, 军用黑色机械路行鸟, 召唤恐惧战马

iv.攻击
以前的宏是/attack,后面可以写上单位名作为攻击对象,无参数则以当前目标为对 象。 效果是切换当前的攻击状态 (攻击/停止攻击) 但是这个宏从 2.2.3 开始就被废除了, 。 只能使用/startattack 和/stopattack 了。分别用来攻击和停止攻击。如:
/startattack Cogwheel

v.技能栏控制
有两个控制技能栏翻页的宏:/changeactionbar 和/swapactionbar。前者接受一个数字 作为参数,表示要切换到的技能栏页码。常见的是猎人用来转换近战远程攻击状态:
/cast 雄鹰守护 /changeactionbar 1


/cast 灵猴守护 /changeactionbar 2

/swapactionbar 命令后面要写两个页码,表示来回切换指定的两个技能页。如果当前 技能页不是两个页码中的一个,当前页就会被设置为第一个页码指定的技能栏页。
/swapactionbar 1 2

vi.移除增益效果
/cancelaura 命令可以移除自己不想要的增益效果(BUFF),比如主坦需要移除身上的 拯救祝福:
/cancelaura 拯救祝福

vii.退出形态
除了战士,任何有“形态”概念的职业(德鲁伊、暗牧)都可以用/cancelform 来退

出当前形态:
/cancelform /use 超强治疗药水

2.3 版本之前,上面这个宏由于形态取消有一个延迟,为了达到效果需要执行两次。 不过 2.3 版本后,小德可以只点一次就产生效果了。

viii.中止施法
前面简单提到了/stopcasting 命令,不过它存在的目的顾名思义,是用来打断当前施 法的。这对处理紧急情况很有用,比如我的术士:
/stopcasting /cast 暗影灼烧

ix.终止一个宏:/stopmacro
/stopmacro 如果不配合条件语来使用是没有什么意义的。它一般用来实现条件执行 的功能:如果满足了某些条件,则中止宏继续运行。具体用例请参见设置焦点(focus) 。

x.解散坐骑
/dismount

不用再说什么了吧?

xi.保存一个目标用于后续动作
/focus 宏可以把一个目标设为焦点(focus) ,然后可以在其他指令中使用这个 focus。 比如你的老大指定了一个目标让你羊着。你要做的就是选择它,然后输入/focus。然后你 就可以用这个宏羊着它了,而不用管你当前目标变成了谁:
/cast [target=focus] 变形术

注意,focus 的作用可不仅仅如此,具体还是请参见设置焦点(focus)一节的内容, 那里有更深入的剖析。

xii.模拟点击
/click 命令的参数为一个按钮(本质上来说是一个窗口)的名称,执行的效果就相当 于用鼠标点击了这个按钮。默认情况下,它的效果相当于左键单击,也可以根据设置成 其他按键点击的效果。至于按钮名称可以通过一下方式获知: ? 使用插件。某些插件,比如 MoveAnything,提供了查看窗口名称的功能。 ? 查看界面的源代码。这一般是非常娴熟非常牛 B 的插件制作者才能做到的。 ? 用这样一个宏获取当前鼠标所指的窗口名称:
/run local f=GetMouseFocus(); if f then DEFAULT_CHAT_FRAME:AddMessage(f:GetName()) end

/click 可以用于很多用途。比如利用它可以一次执行很多宏。还有,假设你有一个宏 太长了,远远超过 255 字符限制。你就可以把后面写不下的代码写到另一个宏中,而前 面那个宏的末尾写上:
/click MultiBarRightButton1

再把第二个宏拖到那个叫 MultiBarRightButton1 的栏位中。这样执行第一个宏就相 当于执行了所有的宏命令。 另外,这个宏还可以用来做一些其他命令没法办到的事。比如前面提到的切换宠物 技能自动施放状态的功能,就可以这样解决:
/click PetAttackButton5 RightButton

这个命令的涵义就是右键单击一下宠物栏上第五个按钮。 用于指定按键的参数还可以是 LeftButton 左键, ( 默认)MiddleButton 中键)Button4 , ( ,

(4 号键)和 Button5(5 号键,职业玩家的鼠标??) 。在掌握这些之后,第二部分结尾 处还会介绍更复杂的,利用/click 产生分支判定效果的例子。

10. 进阶:脚本
i.脚本有哪些限制?
脚本是一个强大的工具,它按照 LUA 语言的语法执行,利用客户端提供的接口可 以产生强大的智能。所以玻璃渣就给它加了限制,防止它被滥用而影响游戏平衡性。我 之所以要先讲脚本的限制,为的是让大家对它别抱太大希望。虽然脚本还是很有用,但 是不能用来施法、使用物品、改换技能栏或改变当前目标。这些功能只能依靠那些“安 全化”的命令来实现。

ii.什么是脚本?
魔兽世界客户端的用户界面是可以通过 LUA 脚本控制的。通过/run 和/script 命令就 可以执行脚本(我个人推荐使用/run,节省字符数??) 。在命令后面书写脚本内容,中 间不能换行。不过一个宏中可以包含多个/run 命令。 过多关于 LUA 语言和编程的内容本文就不再赘述。如果你有一定的编程经验,那 么就可以访问 lua.org 学习 LUA 语言。如果没有什么基础,那么请先看《编程入门》了 解一些基本概念。 玻璃渣提供了很多 API 函数 (Application Programming Interface) 可以在 LUA 脚本 , 中调用来实现对界面的控制。 关于 API 函数和相关的内容可以看看这篇文章:界面 DIY》 《 (如果你打算花时间好好研究魔兽世界插件的话,WoWWiki 是最优选择) 。我不可能把 所有关于用户界面的细节都讲到,因此我只打算用我最常用的一个宏做例子,简单地讲 一下。想了解得可以看上面给出的链接,或者这里: 《Mod Author Resources sticky》 。 下面这个宏是我给出的例子,它会向所有和你目标相同的人发送悄悄话,通知他们 改变目标 (我的插件 CCWarn 也是就是基于这段代码的) 这样就可以防止已被羊的人受 。 到攻击。
/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

呃??貌似看起来有些乱??不过没办法??首先,宏是有 255 字符数限制的,所 以常常要用一些不美观的方式去写代码。其次,脚本要写在一行中。这两个条件导致代 码的可读性很低。如果把代码单独拿出来美化一下的话,应该是这个样子:
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

二、 命令条件语
1. 什么是命令条件语?
命令条件语是插入在宏命令中,使宏根据条件执行不同功能的语句。举个例子,下 面这个宏的作用是,如果是友方目标就施放恢复,如果是敌方目标就上痛:
/cast [help] 恢复; [harm] 暗言术:痛

当这个宏执行时,首先检查[help]条件,判断当前目标是否是一个可以接受治疗/增 益法术的目标。如果[help]条件成立,那么就施放恢复并执行下一条命令,否则(即没有 目标,或目标不接受有益技能)继续执行下一个子句,也就是分号后[harm]那里,再判 断[harm]条件。[harm]条件和[help]条件相反,判断目标是否接受敌对法术。同上,如果 条件成立就释放“暗言术:痛”并执行下一条命令。如果条件不成立,由于后面没有其 他子句,这条宏命令就算执行完了,但是什么动作都没有做。 注:如果没有写[harm]条件,实际运行效果是差不多的。不过,如果你没有目标或 者当前目标不接受任何法术,那么屏幕上将会出现错误信息,或者对于某些技能,鼠标 将会变成选择施放目标的状态。

2. 可以使用条件语的命令
只有那些“安全化”命令可以接受命令条件语。其实正是经过安全化的命令才需要 条件语。常规命令,比如说聊天、表情之类的,可以通过脚本来实现命令条件语的功能。 而且暴雪不想限制大家在聊天时使用分号(;) 。如果/s 命令可以使用命令条件语的话, 那么下面这个命令就会只说 hello:
/say Hello; I’m a n00b

以下是当前客户端中安全化命令的列表: #show1 #showtooltip1 /assist /cancelaura /cancelform /cast /castrandom /castswquence /changeactionbar /clearfocus /cleartarget /click /dismount /equip2 /equipslot2 /focus /petagressive /petattack /petautocastoff /petautocaston

/petdefensive /petfollow /petpassive /petstay /startattack /stopattack /stopcasting /stopmacro /swapactionbar /target /targetenemy /targetfriend /targetlasttarget /targetparty /targetraid /use /userandom 注 1:#show 和#showtooltip 不是真正意义上的安全化命令,但是它和/use 以及/cast 的内部机制相仿。 注 2:/equip 和/equipslot 逻辑上也不算是安全化命令,因为它们的功能是可以通过 插件和脚本实现的。 当然,如果你希望在常规命令中使用命令条件语,就需要安装专门的插件。 MacroTalk,这是我的一个作品,通过在非安全化命令前添加/opt,然后在/opt 中处理各 类条件来实现对不同命令的调用(当然只能是非安全化命令) 。最新版的 SuperMacro 中 应该也有类似的功能。

3. [target=]条件语
该条件语使得宏命令除了可以对条件进行判断外,还可以设置动作的目标。例如, 下面这个宏运行时,无论当前目标是谁,玩家只会给自己绑绷带:
/use [target=player] 厚灵纹绷带

Target 条件语在指定动作目标的同时,也指定了进行条件判断的目标。下面这个垃 圾宏是一个纯教学例子,看我的说明:
/cast [help] [target=targettarget, help] [target=player] 快速治疗

这个宏运行的时候,首先会检查[help]条件。如果条件为真,那么就开始吟唱快速治 疗。否则就跳至第二个条件,[target=targettarget, help]。此时,判断目标和技能目标都被 设定为你当前目标的目标,然后进行 help 条件判断。如果条件成立就对你当前目标的目 标施放快速治疗,否则再跳至第三个条件。而第三个条件总是成立的,所做的只是把你 自己当作施法目标。

4. 语法
命令条件语是按什么规则生效的?恐怕要回答这个问题很容易引起混乱。所以,趁 还没有正式开始讲,我先用一些现实生活的例子做类比。看不懂不要紧,这只是些概念, 技术性的内容后面都还会再提到的。

i.条件语语法简介
所有的宏命令的基本工作方式是相同的:一个命令,后面带上一个或多个参数(取 决于命令的要求,有些甚至不需要任何参数) 。看下面这些例子:
/cast 猛击 \___/ \___/ | | | 参数 | 命令 /petattack \_______/ \/ | | | 参数(为空) | 命令 /castsequence reset=target 献祭, 腐蚀术, 痛苦诅咒, 生命虹吸 \_________/ \_______________________________________/ | | 命令 参数

而命令条件语可以通过对一组条件进行的判断来选择命令的实际参数。首先,可以 用分号分隔出若干个“若干组条件+参数”这样的子句,逻辑上,分号就相当于高级语 言中的 else 或是 elseif。条件的组数不定,也可以没有,同一组条件用一个方括号括在一 起。而每组条件中有可以包含多个条件。就像这样:
/命令 [一组条件] [另一组条件] 参数 1; [又一组条件] 参数 2; ??

前面的例子已经说明了,宏命令的解释过程是从左至右的。当一组条件被判定成立 时,命令就会采用其对应的条件。如果某一个子句中不包含条件,那么就被无条件判定 为成立。 像/cast XXX 这种简单的宏命令就可以理解为一个只有一个子句的宏, 而这个子 句又不包含条件。而如果一个宏的任何一组条件都不为真,那么它就完全不会执行。

ii.条件语法
每组条件都是由逗号分隔的一些条件语组成的,各条件不分前后次序。逻辑上, [target=]总是先发生作用,然后其他的条件才进行判定。逗号在这里可以理解为“并且” , 也就是说各条件简是逻辑“与”的关系。比如[help, nodead, target=focus]的含义就是:我 的焦点是友善的,并且是只活的。 注意:条件是对大小写敏感的,如果你把[help]写成了[Help],宏运行时会报错。 条件中有组合式的使用方式,比如 nodead,同样对于 help,你可以用 nohelp 表示相 反的条件。但是 nohelp 不等于 harm:首先,help 和 harm 都要求目标存在才有可能成立; 其次,有些目标,比如中立阵营 NPC、非战斗宠物或者护送任务 NPC 等,既不算 help, 也不算 harm。 还有些条件可以指定一些特定的参数。比如[stance],姿态,单独使用时表示“在任 一姿态中” (显然这对战士来说是废话一句) 。如果给它加上参数,就可以指定在某个姿 态下,格式是在条件语后写上冒号(:) ,然后后面写上参数,每个参数间用斜线(/)分 隔。综上所述,一个条件语的完整格式如下(<>表示其中的部分是可选的) :
[<no>condition<:parameter</parameter</parameter<…>>>>]

下面举个例子,如果在战斗或防御姿态施放盾击,否则转入防御姿态:
/cast [stance:1/2] 盾击; 防御姿态

这个宏用伪代码写的话就是:
IF 当前在姿态 1 或姿态 2

THEN 用盾击 ELSE 切换防御姿态

注意: “no” 前缀是对整个条件和所有参数的修饰, 即把原来的真变为假, 假变为真。 比如[nostance:1/2]表示“不在姿态 1 也不在姿态 2 中” 。

iii.完整的 EBNF 语法
对 EBNF 规范很熟悉的人,以上内容可以概括为:
command = "/", command-verb, [ {command-object, ";" } command-object] ] command-verb = ? any secure command word ? command-object = { condition } parameters parameters = ? anything which may be passed to the command word ? condition = "[" condition-phrase { "," condition-phrase } "]" condition-phrase = [ "no" ], option-word, [ ":" option-argument { "/" option-argument } ] option-argument = ? any one-word option, such as 'shift, 'ctrl', 'target', '1', '2' ?

iv.参数为空
有些命令是可以没有参数的,这里就存在着一个陷阱。比如:
/petattack [target=focus, harm];

很多初学者一看,认为这个宏的含义应该就是判断焦点是否为敌对,如果是,就把 宠物送上去咬。而实际上呢?让我们分析一下:
/petattack [target=focus, harm] ; \________/ \______________/ V V V | | | | | 命令 条件语 1 | | 参数 2 (为空) | | | 条件语 2(为空) | 参数 1 (为空)

现在看出来了吧?由于那个分号的存在,这个语句实际上包含两个子句,而一个条 件语为空的子句是被当作条件成立处理的,因此即使前面的条件语 1 不成立,也会执行 一个/petattack。

v.条件为空
有时我们需要在特定条件下对特定目标施放技能,并在条件不成立的情况下按常规 施放。这中效果可以通过使用一组空条件来获得。下面例子中的宏在执行时会对你鼠标 指向的友方单位施放圣光闪现。 如果鼠标没有指向任何单位或者指向的目标不是友善的, 那么就会按常规对当前目标施放,或者根据设置(如自动自我施法、自我施法功能键) 对自己施放。
/cast [target=mouseover, help] [ ] 圣光闪现

vi.[target=]条件语与命令参数
很多命令的参数是可以直接指定目标的。比如/target party1 就可以把小队中第一个 队友作为你的目标。而用/target [target=party1]的话,虽然看起来别扭,但是效果也是一 样的。但是宏的设计者不希望我们根据一个单位的状态而对另一个单位执行动作,因此 大多数情况下[target=]条件和命令参数只能有一个发生作用。例如:
/target [target=focus, dead] party1

客户端会把 party1 直接忽略掉——因为你已经指定了[target=focus]。不过这种情况 也有例外, 就是个别命令拥有一个 “特殊单位”其实也就是该命令会影响的单位标志符) ( 。 见下表:
命令 特殊单位

/target /focus /startattack /petattack

target focus target pettarget

当在[target=]中使用的是该命令的“特殊单位”时,命令执行目标不会被设置为该单 位,而命令参数中指定的目标也不会被忽略。例如
/focus [target=focus, dead] [target=focus, noharm] target

由于 focus 是/focus 命令的特殊单位,所以/focus 的目标就不会被[target=focus]设置 成焦点,而是 target,即当前目标。如果没有指定 target,/focus 就相当于没有参数,同 样是把当前目标设为焦点。

5. 命令条件语
下面给出一张条件总表,每一个条件在后面我都会再给出更详细的介绍。

i.总表
WOW2.0 在对宏命令系统的更新中,宗旨就是把玩家从按“一键万能宏”按到手抽 筋的状态中“解脱”出来。不过有一些宏的用法是被官方认可了的,它们获得了“玻璃 渣祝福”的效果——可以通过使用条件语来重现。 下面列出宏命令系统中支持的所有条件语。如果你需要的判断条件没有在此列出, 那么就不可能通过该条件来执行安全化命令的动作。这是中央的死龟腚,谁都没办法, 不过以后也有可能会再增加一些。 ? 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 玩家在某集体中(小队/团队)

ii.敌/友(help / harm)
没什么好说的,保留空地一块,等待补充。

iii.存在(exists)
如果目标存在条件为真。比如[exists],如果你没有目标,该条件就不成立。而对于 [target=focus, exists],如果你设置了焦点目标,条件就成立。不过很多情况下该条件用不 到,因为[help],[harm],[dead],[party]和[raid]条件成立的情况下,[exists]条件是必定 成立的。

iv.死亡(dead)
如果判断对象已经挂了,条件就成立。

v.姿态(stance:0/1/2/…/n)
姿态是指对技能能否施放有影响的状态,比如战士的姿态,小德、萨满、暗牧的形 态,盗贼的潜行状态。而骑士的光环、猎人的守护都算是姿态。单独用[stance]是指在任 意一种姿态下,就相当于[stance:1/2/…/n]这样把所有姿态列出来,对战士来说就是永远 成立的。而[stance:0]就相当于[nostance]表示不在任何形态下。而[stance:0/3]就表示在形 态 3 下或者不在任何形态下。 姿态的编号和面板上的顺序是对应的。下面给出各职业的姿态表:
编号 1 2 3 4 5 6 小德 战士 暗牧 盗贼 熊形态 战斗姿态 暗影形态 潜行 海豹形态 防御姿态 豹形态 旅行形态 枭兽/树形态 飞行形态 萨满 幽灵狼

注意:上面给出的是全表。如果少了某个姿态,其下方的形态就依次上移。我承认, 我这话是针对小德说的?? 下面给出例子:
/cancelform [nostance:0/1/3] /cast [stance:1/3] 精灵之火(野性);[nostance] 精灵之火

如果在熊/猫形态,施放精灵之火(野性) ;在人形态,施放精灵之火;在其他形态 就先退出,然后施放精灵之火(WOW2.3 以后可以这样,2.3 之前该宏只能退出形态) 。

vi.潜行(stealth)
对于盗贼来说由于[stance]的存在反而显得多余。这个是给暗夜、法师、猫德用的, 我的意思是它可以用来判断影遁、隐形和猫的潜行。

vii.功能键状态(modifier:shift/ctrl/alt)
它是节省技能栏的好帮手,可以让一个宏对不同功能键做不同动作,比如:
/cast [modifier, help] [modifier, target=targettarget, help] 快速治疗; [help] [target=targettarget] 强效治 疗术

该宏会依次判断你的目标和目标的目标是否友善,条件成立的话,如果按下了某功 能键,施放快速治疗,否则施放强效治疗术。 当然也可以指定特定的功能键。[modifier:shift/ctrl]表示 Shift 或者 Ctrl 被按下;如果 想表示两个键同时按下则可以这样实现:[modifier:shift, modifier:ctrl]。 但是要注意这样一种情况,比如你的宏是通过 A 键执行的,然后根据 Shift 来做判 断。但是你的 Shift+A 被设置了另外一个动作,那么你按下 Shift+A 的时候,执行的就是 其对应的动作,而不是你的宏。另外,modifier 可以被简写做 mod 以节省空间。

viii.功能键变量
虽然说 mod 指定的只能是 shift、ctrl 或 alt,但是还可以通过一些系统变量来间接指 定。比如 SELFCAST 这个系统变量,是指“自我施法功能键” ,默认值为 alt,可以通过 某些插件修改,表示按下该键后执行的动作都是针对玩家自身的。下面看这个例子:
/cast [modifier:SELFCAST, target=player] [target=mouseover] [ ] 强效治疗术

这样的话,不管你系统设置的自我施法键是什么,宏命令都会正常执行。下面给出 其他的一些系统变量,括号内为默认值,后面为中文含义: ? AUTOLOOTTOGGLE(shift) 自动拾取键 ? STICKYCAMERRA(ctrl) 镜头跟随 ? SPLITSTACK(shift) 物品堆叠分离 ? PICKUPACTION(shift) 拖动技能栏按钮 ? COMPAREITEMS(shift) 物品比较 ? OPENALLBAGS(shift) 打开所有背包 ? QUESTWATCHTOGGLE(shift) 任务追踪

ix.点击状态(button:1/2/…/5/<虚拟按键号>)
与[modifier]类似,[botton]可以根据不同的鼠标点击按钮做不同动作。1 为左键,2 为右键,3 为中键,4 和 5 则对应五键鼠标上另外两个扩展键。如果是通过键盘触发宏, 那么也相当于左键点击。比如我的坐骑宏:
#show 迅捷绿色机械陆行鸟 /userandom [nobutton:2, flyable, nomounted] 黑色狮鹫; [nomounted] 黑色战豹, 迅捷绿色机械陆行 鸟 /dismount [noflying] [button:2]

非右键键点击时,如果没在坐骑上就召唤坐骑;如果右键点击并且不在飞行状态则 取消坐骑。而虚拟按键号一般可以忽略,有些动作条插件可以在不同条件下向宏按钮提 供不同的虚拟按键号,具体情况请查看插件说明,我们在此不作讨论。

x.装备(equipped:<物品类型>)
[equipped]条件可以判断指定类型的物品是否被装备。物品类型号可以是装备栏名 称,物品类别或者物品子类别。比如我根据盾牌装备状态判断该用盾击还是拳击:
#show [equipped:Shields] 盾击; 拳击 /cast [equipped:Shields,stance:1/2] 盾击; [equipped:Shields] 防御姿态; [stance:3] 拳击; 狂暴姿态

利用[equipped]这里的#show 可以根据装备显示不同的图标。下面的伪代码用来解释 上面/cast 命令的执行过程:
if 装备了盾牌 and 在防御姿态 then /cast 盾击 else if 装备了盾牌 then /cast 防御姿态 else if 在狂暴姿态 then /cast 拳击 else /cast 狂暴姿态

下面再给出一个变态的压制宏作例子:
/equip [noequipped:Two-Handed Axes] 水晶熔铸战斧 /cast [nostance:1] 战斗姿态; [equipped:Two-Handed Axes] 压制

xi.引导中(channeling:<技能名称>)
在引导法术的状态下,如果施放另外一个法术将会打断施法。这个条件语就是用来 防止这一情况的。 当然, 它还有些其他的用途, 比如只打断特定的引导技。 只用[channeling] 的话表示正在引导任意技能,或者后面可以指定任意个引导技能的名称表示正在引导其

中一个。 注意:引导和吟唱是两码事,[channeling]条件只对引导技能,如奥书飞弹、吸取生 命、精神鞭笞等有用。

xii.技能条(actionbar:1/…/6)
系统默认的界面中有一个主技能条,可以翻页。而用这个条件就可以根据当前技能 页作出不同反应。比如猎人可以拿来把守护做成姿态:
/swapactionbar 1 2 /cast [actionbar:1] 雄鹰守护; 灵猴守护

这样就可以切换 1 号和 2 号两个技能页,换到 1 页时施放雄鹰守护,2 页时则施放 灵猴守护。

xiii.宠物(pet:<宠物名称或类型>)
对任何有宠职业来说这个条件都很有用,它可以根据你宠物状态来执行动作,可以 根据宠物名字,也可以是类型(比如 Voidwalker,Boar,Imp,Wolf 等) ,如果只用[pet] 的话表示带着任意宠物。比如法师可以根据是否有水宝宝施放不同的霜星:
/cast [pet] 冰冻术;冰霜新星

xiv.战斗(combat)
如果在战斗状态则条件成立。

xv.行动方式、室内外状态(mounted, swimming, flying, indoors & outdoors)
这些都无庸赘述,要说的就是它们都是对玩家自身状态的判断,而不是目标。

xvi.允许飞行 (flyable)
用于判断是否处在可以使用飞行坐骑的地区。

xvii.小队/团队队友(party/raid)
判断目标是否是自己的小队或团队中的队友。

xviii.在小队/团队中(group:party/raid)
注意和前面的区别。这个用于判断玩家自己是否处在小队或团队中,并且团队包括 小队。这对加状态很有用,比如:
/cast [group, nomodifier] 奥术光辉; [help] [target=player] 奥术智慧

如果在队伍中,施放奥数光辉;如果按下功能键或者不在队伍中则施放奥术智慧。

6. 命令条件语的应用
在第一部分中提到的很多命令,如果不配合条件语的使用,是没有什么价值的。而 上述内容也只给出了一小部分的应用示例。作为本部分的压轴内容,下面两段将会把你 带入一个更高的境界。

i.设置焦点(focus)
focus 是一个单位标识符(参见《单位标识符》,就像 target、player、raidpet1target ) 一样。你可以将它设定为某一个单位,玩家或者 NPC。比较简单的设置方法是通过按键 设置。在按键设置中有两个选项: “焦点目标”和“目标焦点” 。我不知道这是哪个脑残 翻译的, 其实际含义分别是“以目标为焦点” “以焦点为目标” 和 。当你设置了焦点以后,

就可以用 focus 这个标识符了,也可以通过“目标焦点”绑定的按键把你设的 focus 作为 你的当前目标。话说按键绑定也太小儿科了,下面来看看什么是职业玩家的 focus 用法。 作为一个有控制技能的专业 DPS,我们最常用的就是控场宏。我们可以预先把你的 “被监护人”设为你的焦点,然后用这种宏来调教他——而此过程中并不用切换目标:
/cast [target=focus] 变形术

而作为一个灰常牛逼灰常娴熟的治疗,你可以把焦点设为你的主坦。另外还可以通 过一些头像增强插件,比如 FocusFrame 来观察你焦点的状态。 不过职业玩家一般不用按键绑定设置焦点, 而是用/focus 和/clearfocus 宏命令来设置 或清除焦点。/focus 直接就可以达到按键绑定的效果了,而通过参数指定/focus 的目标更 是按键绑定所没有的功能:
/focus party3target

上面的只不过是教学示例,实际上职业玩家是这样用的:
/focus [target=focus, noharm] [target=focus, dead] [modifier] /stopmacro [target=focus, noexists] /cast [target=focus] 变形术

第一行先判断以下三个条件,如果满足任意一个,就把你的当前目标设为焦点(不 要忘记,focus 是/focus 命令的特殊单位,参见[target=]条件语与命令参数) : ? 你的当前焦点不是敌对目标(如果焦点不存在该条件也成立) ? 你的焦点已经死了 ? 某个功能键被按下了 第二行判断你的焦点是否存在,如果不存在就终止宏的运行。这样控场是不是很方 便?我们注意到这里用了/stopmacro 命令,而不是在/cast 命令中对焦点是否存在进行判 断。这样的好处是我们可以在宏的最后加上更多的内容,比如一个小队喊话。 下面这个宏也很有用,可以把你的目标和焦点互换:
/cleartarget [target=target, dead] /clearfocus [target=focus, dead] /target focus /cleartarget [target=focus, noexists] /targetlasttarget /focus target /targetlasttarget

前两行的作用是把死亡的目标和焦点清除掉。 第四行的作用是防止你没有当前焦点, 导致当前目标不变,以至于在第五行选择了你以前的一个目标。

ii.用/click 进行分支判定
假如你想让一个按键根据不同的功能键施放不同的技能,并且根据左键右键选择不 同的施放目标,那么我可以给你这样的一个例子:
/cast [modifier:shift, button:1, target=party1] [modifier:shift, button:2, target=player] 强效治疗术; [modifier:ctrl, button:1, target=party1] [modifier:ctrl, button:2, target=player] 快速治疗; [nomodifier, button:1, target=party1] [nomodifier, button:2, target=player] 恢复

哦??对不起,不大好看??而且貌似超过 255 个字符限制了。重新写一下:
/cast [modifier:shift, button:1, target=party1] [modifier:shift, target=player] 强效治疗术 /cast [modifier:ctrl, button:1, target=party1] [modifier:ctrl, target=player] 快速治疗 /cast [button:1, target=party1] [target=player] 恢复

不过如果我们写一个宏根据不同按键点击分别选择两个不同的宏,而把功能键状态 的判断放到这两个宏中的话,条理就会更清晰了: 主宏:
/click [button:1] MultiBarLeftButton2; MultiBarLeftButton3

辅助宏 1:

/cast [mod:shift, target=party1] 强效治疗术; [mod:ctrl, target=party1] 快速治疗; [target=party1] 恢复

辅助宏 2:
/cast [mod:shift, target=player] 强效治疗术; [mod:ctrl, target=palyer] 快速治疗; [target=player] 恢复

三、 附录
1. 自定义图标
如果想自定义宏的图标,可以把做好的图标放在游戏目录的“.\Interface\Icons”文 件夹中(可能需要自己新建) 。文件格式应该是界面材质规定的.BLP 或 24 位无压缩的 TGA 文件。图片的长宽必须是 2 的自然数次幂,但不得超过 512,比如可以是 32×32、 512×128 等。注意:图片如果不是正方形,在界面显示中是会走形的??

2. 宏的移植
玻璃渣目前还没有提供上传宏的服务,所以大家想把宏转移到另外一台机器上的话 还是要手动拷贝。个人账户的角色通用设置都保存在游戏目录的“.\WTF\Account\账户 名称”文件夹下,每个角色分别的数据则保存在“.\WTF\Account\账户名称\服务器名\角 色名称”文件夹下,包括自定义的宏、按键设置、插件数据等,其中 macros-cache.txt 保存着宏的定义。

3. 更多信息
如果你有关于宏的疑问,并且在此找不到答案,可以看看这里: 《Macro FAQ & Repository》 ,其中包含很多对于常见问题的解答和一些很好的例子。而且最好多看看 wowwiki.com(不过在中国访问的话很可能需要代理) ,可以获得很多东西,比如宏和脚 本相关的文章,还有数据控喜欢的关于游戏算法的研究。

4. 鸣谢
首先要感谢的是 Slouken,他在暴雪一直关注着我们的反馈,如果没有他对广大玩 家建议的重视就没有今天的宏命令系统。 还要感谢的是 Iriel,Tem,Cladhaire 等很多高手与大家分享知识。 还要感谢论坛上那些一直为大家做出贡献的朋友,Neuro,Shirik,Jelly,Lunessa, Troodi,Lealla,Aella,Valaron 等等,还有很多我不记得名字的朋友,感谢你们。

5. 译者注
这个中文版译自 http://www.wowwiki.com/Making_a_macro 这篇文章,原文链接自 http://forums.worldofwarcraft.com/thread.html?topicId=96143900&sid=1,有 Wiki 维护 改动,当前版本为[2008-03-25 15:44]。



更多相关文章:
魔兽世界宏教程
魔兽世界制宏教程_游戏_生活休闲。魔兽世界制宏教程一、前言: 1、由于 Cast...魔兽世界宏命令完全教程 22页 免费 魔兽世界宏命令的编写教... 8页 免费 ...
WOW基本宏命令
WOW基本宏命令_计算机软件及应用_IT/计算机_专业资料。游戏wow一、基本宏命令 1...魔兽世界宏命令完全教程... 22页 免费 魔兽世界宏命令教程 4页 免费 魔兽世界...
简单易懂的魔兽世界宏教程
简单易懂的魔兽世界宏教程_计算机软件及应用_IT/计算机_专业资料。由于现在插件功能...魔兽世界宏命令普及教程... 21页 免费 魔兽世界宏命令完全教程... 22页 免...
宏命令完全手册
宏命令完全手册_计算机软件及应用_IT/计算机_专业资料。宏命令完全手册一:基础...[player name] 三:高级教程 WOW 的宏函数库可以去这两个地方查: http://...
魔兽世界宏命令完全秘籍
魔兽世界宏命令完全秘籍。wow 插件必备魔兽世界宏命令完全秘籍 玩过 EQ 的都知道一点宏的知识, 比如组队时用来告诉队友你的行动, 告诉目标等. 最简单的比如 pulle...
WOW宏命令使用说明
WOW宏命令使用说明_IT/计算机_专业资料。1.常用的宏命令 1.1 常用的宏命令 ...魔兽世界宏命令教程 4页 免费 魔兽世界宏命令完全教程... 22页 免费 魔兽...
宏命令的函数说明
魔兽世界宏命令完全教程 22页 免费 魔兽世界宏命令 暂无评价 22页 免费 宏命令教程 暂无评价 8页 免费 宏命令教学 暂无评价 2页 免费 宏命令 暂无评价 2页 免...
魔兽世界宏命令解析
魔兽世界宏命令解析_计算机软件及应用_IT/计算机_专业资料。魔兽世界常用宏命令解析...魔兽世界宏命令完全教程 22页 免费 魔兽世界宏命令普及教程... 21页 免费 WOW...
魔兽世界宏命令考格威尔2011-2012大全
WOW-宏-API(全,中文) 63页 免费 魔兽世界宏命令教程 4页 1下载券 魔兽世界宏命令基础教学 30页 免费魔​兽​世​界​宏​命​令​考​格​...
魔兽宏教程
玩过 EQ 的都知道一点宏的知识,比如组队时用来告诉队友你的行动,告诉 目标等...魔兽世界宏命令完全教程... 22页 免费 魔兽命令集与宏 18页 免费 魔兽 宏 ...
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图