admin 管理员组

文章数量: 887021


2024年3月2日发(作者:null网络意思)

WOW基本宏命令

一、基本宏命令1.什么是宏?宏是由一组宏命令组成的。以下

是一些普通宏命令:

/say (/s)

/whisper(/w, /talk, /t)

/emote(/e, /em, /me)

/dance

喜爱PVP的人,应该不会忘了这个:/spit

利用xx,我们可以把这些xx命令放到技能栏上点击使用,而且可以同时做多个动作。写xx的时候,每条动作写在一行上,就像在聊天界面中输入的一样。比如,让你的角色喊一声“Everybody, dance

now!”然后开始跳舞的xx:

/y Everybody, dance now!

/dance

一个基本完整的xx命令列表可以参考这里:

此网页不属于NGA网站,NGA不保证其xx

[ ],不过个别新添加的xx命令还没有被收录。WoWWiki有很多关于xx的资料,尤其是脚本和/run命令(后面将会提到)。

注:我先在此说一下,xx的执行是立即进行的。这意味着当你点击技能栏上的一个xx时,xx命令会一条接一条地执行,执行完后才会返回游戏控制。这将会产生两个重要问题:第一,如果写了一个会执行很长时间的xx(如:/run for i=1, 1000000000 do end),游戏会被xx,直到它执行结束;第二,也是更重要的一点,那就是xx命令不可能具有xx功能。这一现象在我们熟悉/cast之类的命令后就可以很清楚地感觉到。而一些提供了xx执行命令功能的插件,只能是能执行一些所谓的“良性命令”,如交谈、表情和对于其他插件命令的调用(不过战斗中更换武器是可以进行的)。

2.怎样写宏?

首先,打开你的xx窗口:单击主菜单上的“xx”按钮,或者在聊

天界面中输入/macro(/m)回车。在xx窗口的顶端,可以看见两个标签:“通用xx”和“<你的角色名>的专用xx”。通用xx被存储在账号专有的文件夹中,被所有角色共享。而角色专用xx则存储在角色自己的文件夹下,是角色专用的(废话……囧)。在标签下面是18个存放xx的栏位。再往下是一个栏位,用于显示当前选中的xx;还有一个“修改名称/图标”的按钮,用于修改选中的xx。然后是一个用于显示、编辑当前xx的文本框。最下面是三个按钮,傻子也能看出它们是干什么的。如果要创建一个xx,首先单击窗口下方的“xx”按钮,这时窗口旁边会显示一个对话框,用于选择图标和输入xx的名称。如果选择了第一个图标(就是那个很红很暴力的问号),WoW会自动根据你xx命令中涉及的技能或物品选择图标。选好图标,输入完名称,就可以单击“确定”按钮了。顺便提几点:1.使用问号图标的xx,可以通过使用#show指定显示的图标。2.虽然可以给不同的xx起相同的名字,但是最好不要这样做。因为有些插件和xx命令是通过xx名称来调用xx的。3.在图标列表中可以[ ]。现在,你选择的xx图标被显示在栏位中了(还会显示部分xx名称)。同时,xx的xx被选中,图标显示在当前选中xx的栏位中:现在你可以写你的xx了。单击编辑文本框,然后输入吧。注:xx限定为255个字符,传闻这样做是为了以后可以把用户的xx上传到服务器中。不过……现在能做的就是遵循这个限定,至于想要把xx移植到其他机器上使用,请参见第三部分的[ ]。写完xx以后,只要把它的图标拖放到技能栏中就可以了。当你执行一个xx,或者是关闭xx窗口的时候,xx都会自动保存的。现在点击xx的图标,看看效果吧!

3.施放法术

在正常游戏过程中,很多xx命令通过聊天窗口输入使用似乎并不好用,但是在xx中就不一样了。在特定场合下,简简单单的表情xx也可以产生有趣的角色扮演效果哦,那么,继续看……这个:/cast,它是最常见的xx命令了。作用嘛,就是施放一个技能书中的技能(包括宠物的)。最简单的用法就是这样:

/cast 暗言术:痛

把这个xx放到技能栏上点击,将会对目标施放你最高级的痛。这和把技能书中的痛拖到技能栏上,然后点击的效果是一样的。我们制作的xx同样会在技

能栏显示你的技能冷却状态和射程状态,点击后同样能正确的施放痛。如果xx 使用了问号图标,那么还同样会显示痛原有的图标。那直接用技能不就行了么,何必用xx呢?继续看,在xx中通过集成多条命令可以产生什么效果吧,这才是xx的价值所在。比如说你是个法师,想让队友知道你要羊掉谁,你该怎么办?用xx吧,一个简单的/p命令加上一个/cast就可以了(使用这个无耻的插件可以达到更好的效果:[ ],不过我们现在需要的只是这个简单xx的教学例子):

/cast 变形术

/p 我羊了%t!谁打谁扛着xx!

注:由于xx的执行是立即进行的,所以不管目标是否有效技能是否冷却,xx被点击时/p命令就执行了,也就是说这两行命令的顺序颠倒后效果是相同的。如果你想在确定成功施放一个技能后才执行某条命令,你可以试试这个插件:[ ]。AfterCast可以设定在施放某个技能后执行一条xx命令,当然,是在第1节末尾所提到的限制之下的。如:

/aftercast /p 请队友点门,把懒猪%t揪过来!

/cast 召唤仪式

i.关于技能名称和等级的说明/cast命令对技能名称是十分严格的,文字、标点、空格,一个都不能错。为了防止出错,编辑xx时,你可以打开你的技能书,按下Shift然后单击你的技能图标,技能名称和等级就会被正确地输入到你的xx编辑文本框中,如:

/cast 暗言术:痛(等级5)

如果把“(等级5)”删掉,xx在执行时就会自动选择你最高级别的技能执行;不过在很多场合下,还是需要指定级别的技能,比如术士放逐就需要根据时间来选择技能。另外要注意,等级指示中使用的括号是英文的半角括号,等级与数字间有一个半角空格。而一些技能名称中的括号,比如“精灵之火(野性)”中的括号,是中文的全角括号。以下xx命令不能正常执行:

/cast 精灵之火(野性)

/cast 精灵之火(野性)(等级1)

而以下的命令是正确的:

/cast 精灵之火(野性)

/cast 精灵之火(野性)()

空的括号效果和没有括号是一样的。由于255字符限制的存在,空间还是要节省的,所以空括号可以删掉了……

4.使用物品或者饰品

使用物品和饰品和施放法术是类似的。用于使用物品的命令是/use,后面只需要加上物品的名字就可以了。例如:

/use 绿色机械陆行鸟

另外,还有以下其它的使用格式:

i./use <装备栏>这种格式可以使用指定装备栏中的物品。具体使用请参见[ ]。例如:

/use 13

使用第一个饰品。

ii./use <背包> <栏>这种形式是在指定背包中确定物品栏的,比如你总是把猫食狗粮放在行囊的第一个栏位中,那么你就可以用这样的宏来喂养宠物:

/cast 喂养宠物

/use 0 1

背包的编号为0-4,顺序是从右到左,即0是行囊。物品栏则是从上到下从左到右,从1开始依次编号的(与书写顺序相同):

123 4

5678

……

或者是:

1 2

345 6

78910

……

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

5.集成多个动作

首先,在一个xx中想一键释放多个法术是不行的。大多数技能和很多物品会触发公共冷却(GCD),防止你同时做太多的动作。即使一个技能释放失败,如果它可以触发GCD,那么它也会阻止后续/cast命令的执行。这是2.0版本之后的设定,之前可能看到这样的xx:

/cast 压制

/cast 斩杀

/cast 致死打击

/cast 破甲

但是现在,记住,这种xx已经不能正常执行了。如果压制施放失败,虽然没有触发GCD,客户端也不会继续执行后续的技能施放。不过令人欣慰的是部分技能还是可以集成到一个xx中。任何不触发GCD的瞬发技能后面可以接上另一个技能(“下次近战攻击”型的技能,如xx打击也归于此类)。一个技能可以通过看说明知道它是否瞬发,至于是它是否触发GCD通过实验就可以知道。2.3版本之前,在这个瞬发无GCD技能之后需要加上一个/stopcasting才可以施放其

后的技能。施放第一个技能后,游戏客户端会认为当前在施法状态,而

/stopcasting就可以解除这个状态,就可以解决后续技能不能释放的问题。但是由于技能是瞬发,/stopcasting实际上并不能取消技能的施放。

而现在这里可以不用/stopcasting了,例如:

/use 短暂能量护符

/cast 奥术强化

//stopcasting

/cast 气定神闲

//stopcasting

/cast 炎爆术

6.选择目标

选择目标是xx的另一个主要作用。此类功能可以用专门的目标选择命令实现,改变当前的目标;也可以在一些命令中用[target=]命令条件语实现,临时指定施法或使用物品的目标,而不改变当前目标。命令条件语在[ ]将会讲到到。现在我先介绍目标选择命令。

最基本的命令是/target,用法如下:

/target Cogwheel

/target的选择是经过最佳相近匹配的,也就是说,如果我正站在你附近(并且附近没有谁叫Cog的),你执行/target Cog,我就会变成你的当前目标。至于这种机制是利是弊……那就取决于实际情况了,因为这个xx貌似不稳定,有时会得到莫名其妙的结果。比如下面这个xx就可能不是很好用:

/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键一样。注:这两个xx命令每个xx中只能用一次。

/targetparty 和/targetraid按距离循环选择你附近的小队或团队队友,与/targetenemy类似,也可以用1作为参数改变选择的循环方向。

7.控制宠物

之前在讲施放技能的时候提到过,使用/cast命令可以施放宠物的技能。玻璃渣把法师的水xx的霜星起名叫“冰冻术”就是为了避免和法师自身的“冰霜新星”技能冲突,从而导致不能在宏内使用。但是有宠物的职业会发现,如果宏只能施放技能的话,甚至还不如宠物技能栏的功能。别急,燃烧的远征中,新增了以下这些宏指令:

i./petattack让你的宠物去攻击你的当前目标。当然,在命令后加

参数可以指定攻击的对象。

ii./petfollow宠物切换到跟随状态,同时取消攻击。

iii./petpassive, /petdefensive 和/petaggressive宠物切换被动、防御和主动攻击状态。同宠物技能栏上的最后3个按钮。

iv./petautocaston 和/petautocastoff打开/关闭宠物技能的自动施放。例如:

/petautocaston 折磨

/petautocastoff 受难

不过美中不足,没有直接切换自动施放状态的宏命令,我将在后面[ ]部分提到一个解决方法。

在动作栏的显示控制“#show”

如果一个宏使用问号图标,魔兽世界客户端会默认把宏内容中的第一个技能或物品的图标、冷却状态等信息显示在技能栏上。比如前面所讲的这个例子:

/use 短暂能量护符

/cast 奥术强化

/cast 气定神闲

/cast 炎爆术

客户端会把奥术强化的状态信息作为xx的状态显示。但是这恐怕不是我们所希望的,因为这个xx的目的是炎爆,前几行的奥强气定都只是为了最后把一个大大的脸盆给丢出来。如果在xx的前面加上这样一行,炎爆术就会被当作xx 的默认技能:

#show 炎爆术

如果使用了问号图标的话,xx还会直接显示炎爆的图标。#show的参数机制和/cast类似,可以使用技能名、物品名、物品编号(如item:12345)、装备栏或者背包+物品栏编号。和#item类似的还有#showtooltip。正常情况下,鼠标指向xx的时候,提示信息显示的是xx的名字。而这在绝大多数情况下是很不好用的(除非你用了TheoryCraft之类的插件可以显示详细的技能信息)。而用

#showtooltip就可以指定xx在鼠标指向时显示的信息,用法同

#show。另外,如果使用了#showtooltip的话,就没必要再用#show了。如果客户端自动选择的技能符合你的要求,那么可以只用#showtooltip而不加参数来显示该技能的说明,这样可以节约空间。现在有了足够的基础,以下这些命令我就只简要地讲解一下了。有些命令看似没啥用,但如果配合将在第二部分介绍的命令条件语,它将会产生惊人的效果。

9.其他的命令

i.装备物品用于装备物品的命令有两个:/equip和/equipslot。/equip的参数为物品名称,效果是把对应物品装备到默认的装备栏中,类似在背包中右键单击物品(如:一件单手武器就会被装备到主手上)。而/equipslot的参数为[ ],效果是把物品装备到指定栏位中去。例:装备武器:

/equip 虚空角斧

把饰品装备在第二个饰品栏中:

/equipslot 14 棍子上的xx

注意:即使是在战斗xx,插件页是可以直接使用装备命令的。因此在AfterCast和Chronosxx可以使用装备命令。如果插件内部会检查命令是否经过安全化可能就不那么好用了,因为它属于“安全化”指令——但是事实上它并没有受到安全限制。

[::艾泽拉斯国家地理/doc/,::]ii.队列施法或使用物品很多时候我们需要经常按一定顺序使用固定的一些技能或物品。这样的操作是可用

/castsequencexx命令进行傻瓜化的。/castsequence命令用法是在后面写上一些技能或物品的名称,之间用英文的半角逗号分隔,和/use、/cast类似。技能名、物品名、物品代号、装备栏代号和背包位代号都可以混合使用。每次执行xx,就使用当前的技能或物品(从第一个开始),如果成功,队列的当前位置就被移至下一个技能或物品。也就是说需要反复执行xx来按顺序使用这些技能或物品。当最后一个技能/物品成功使用后,这个队列就被重置到开头。比如:

/castsequence 献祭, 腐蚀术, 痛苦诅咒, 生命通道

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

/castsequence 压制, 斩杀, 致死打击

在技能列表之前,可以插入一个条件语,用于另外指定一些队列的重置条件。语法是:

/castsequence reset=10/shift 第一个技能, 其他技能, 一些物品

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

[::艾泽拉斯国家地理/doc/,::]iii.随机施法或使用物品最常见的例子就是希望随机召唤一个坐骑来装B,使用/castrandom或者/userandom宏命令很容易实现这个功能。用法和/castsequence类似,如:

/castrandom 迅捷绿色机械路行鸟, 军用黑色机械路行鸟, 召唤恐惧战马

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

/startattack Cogwheel

v.技能栏控制有两个控制技能栏翻页的宏:/changeactionbar和

/swapactionbar。前者接受一个数字作为参数,表示要切换到的技能栏页码。常见的是猎人用来转换近战远程攻击状态:

/cast 雄鹰守护

/changeactionbar 1

/cast xx守护

/changeactionbar 2

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

/swapactionbar 1 2

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

/cancelaura 拯救xx

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

/cancelform来退出当前形态:

/cancelform

/use 超强治疗药水

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

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

/stopcasting

/cast 暗影灼烧

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

x.解散坐骑

/dismount

不用再说什么了吧?

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

/cast [target=focus] 变形术

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

xii.模拟点击/click命令的参数为一个按钮(本质上来说是一个窗口)的名称,执行的效果就相当于用鼠标点击了这个按钮。默认情况下,它的效果相当于左键单击,也可以根据设置成其他按键点击的效果。至于按钮名称可以通过一下方式获知:

使用插件。某些插件,比如MoveAnything,提供了查看窗口名称的功能。

查看界面的源代码。这一般是非常娴熟非常xxB的插件制作者才能做到的。

用这样一个宏获取当前鼠标所指的窗口名称:

/run local f=GetMouseFocus(); if f then

DEFAULT_CHAT_FRAME:AddMessage(f:GetName()) end

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

/click MultiBarRightButton1

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

/click PetAttackButton5 RightButton

这个命令的涵义就是右键单击一下宠物栏上第五个按钮。用于指定按键的参数还可以是LeftButton(左键,默认),MiddleButton(中键),Button4(4号键)和Button5(5号键,职业玩家的鼠标……)。在掌握这些之后,第二部分结尾处还会介绍更复杂的,利用/click产生分支判定效果的例子。

xiii.动作栏按扭名As shown above, MultiBarRightButton1

refers to the first button of the right-hand vertical extra action

bar. MultiBarRightButton2 refers to the second button, and so on.

Names for buttons on each of the standard action bars are as

follows, replacing the # with an appropriate number:

10.进阶:脚本

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

ii.什么是脚本?

魔兽世界客户端的用户界面是可以通过LUA脚本控制的。通过/run和

/script命令就可以执行脚本(我个人推荐使用/run,节省字符数……)。在命令后面书写脚本内容,中间不能换行。不过一个xx中可以包含多个/run命令。

过多关于LUA语言和编程的内容本文就不再赘述。如果你有一定的编程经验,那么就可以访问[ ]学习LUA语言。如果没有什么基础,那么请先看[ ]了解一些基本概念。

玻璃渣提供了很多API函数(Application Programming

Interface),可以在LUA 脚本中调用来实现对界面的控制。关于API函数和相关的内容可以看看这篇文章:[ ](如果你打算花时间好好研究魔兽世界插件的话,WoWWiki是最优选择)。我不可能把所有关于用户界面的细节都讲到,因此我只打算用我最常用的一个xx做例子,简单地讲一下。想了解得可以看上面给出的链接,或者这里:[ ]。

下面这个xx是我给出的例子,它会向所有和你目标相同的人发送悄悄话,通知他们改变目标(我的插件CCWarn也是就是基于这段代码的)。这样就可以防止已被羊的人受到攻击。

/cast 变形术

/run for i=1,GetNumRaidMembers()-1 do local

u,t="raid"..i,"target"if

SendChatMessage("Change targets!

,t)then

Trying to

","WHISPER",nil,UnitName(u))end end

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

for i = 1, GetNumRaidMembers() - 1 do

local unit = "raid"..i

if UnitIsUnit(unit.."target", "target") then

SendChatMessage("Change targets! Trying ",

"WHISPER", nil, UnitName(unit))

end

end

二、命令条件语

[::艾泽拉斯国家地理/doc/,::]1.什么是命令条件语?

命令条件语是插入在xx命令中,使xx根据条件执行不同功能的语句。举个例子,下面这个xx的作用是,如果是友方目标就施放恢复,如果是敌方目标就上痛:

/cast [help] 恢复; [harm] 暗言术:痛

当这个宏执行时,首先检查[help]条件,判断当前目标是否是一个可以接受治疗/增益法术的目标。如果[help]条件成立,那么就施放恢复并执行下一条命令,否则(即没有目标,或目标不接受有益技能)继续执行下一个子句,也就是分号后[harm]那里,再判断[harm]条件。[harm]条件和[help]条件相反,判断目标是否接受敌对法术。同上,如果条件成立就释放“暗言术:痛”并执行下一条命

令。如果条件不成立,由于后面没有其他子句,这条宏命令就算执行完了,但是什么动作都没有做。

注:如果没有写[harm]条件,实际运行效果是差不多的。不过,

如果你没有目标或者当前目标不接受任何法术,那么屏幕上将会出现错误信息,或者对于某些技能,鼠标将会变成选择施放目标的状态。

2.可以使用条件语的命令

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

/say Hello; I’m a n00b

以下是当前客户端中安全化命令的列表:

#show (1)

#showtooltip (1)

/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

注(1):#show和#showtooltip不是真正意义上的安全化命令,但是它和/use 以及/cast的内部机制相仿。

注(2):/equip和/equipslot逻辑上也不算是安全化命令,因为它们的功能是可以通过插件和脚本实现的。

当然,如果你希望在常规命令xx使用命令条件语,就需要安装专门的插件。[ ],这是我的一个作品,通过在非安全化命令前添加/opt,然后在/optxx 处理各类条件来实现对不同命令的调用(当然只能是非安全化命令)。最新版的SuperMacroxx应该也有类似的功能。

3.[target=]条件语

该条件语使得宏命令除了可以对条件进行判断外,还可以设置动作的目标。例如,下面这个宏运行时,无论当前目标是谁,玩家只会给自己绑绷带:(可用ID的全表:[ ])

/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; ……

前面的例子已经说明了,xx命令的解释过程是从xx的。当一组条件被判定成立时,命令就会采用其对应的条件。如果某一个子句中不包含条件,那么就


本文标签: 命令 技能 目标 条件 使用