魔兽世界宏命令完全教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
考格威尔(Cogwheel's)宏命令完全指南
Cogwheel著 WOWWiki共享维护 Subelf译版权所有请勿用于商业用途
一、基本宏命令.......................................... 错误!未定义书签。
1. 什么是宏? ........................................ 错误!未定义书签。
2. 怎样写宏? ........................................ 错误!未定义书签。
3. 施放法术 .......................................... 错误!未定义书签。
i. 关于技能名称和等级的说明...................... 错误!未定义书签。
4. 使用物品或者饰品 .................................. 错误!未定义书签。
i. /use <装备栏> ................................. 错误!未定义书签。
ii. /use <背包> <栏> ............................. 错误!未定义书签。
5. 集成多个动作 ...................................... 错误!未定义书签。
6. 选择目标 .......................................... 错误!未定义书签。
i. 其他选择命令.................................. 错误!未定义书签。
7. 控制宠物 .......................................... 错误!未定义书签。
i. /petattack .................................... 错误!未定义书签。
ii. /petfollow ................................... 错误!未定义书签。
iii. /petpassive, /petdefensive 和 /petaggressive 错误!未定义书签。
iv. /petautocaston 和 /petautocastoff ............ 错误!未定义书签。
8. 宏在动作栏的显示控制 .............................. 错误!未定义书签。
9. 其他的命令 ........................................ 错误!未定义书签。
i. 装备物品...................................... 错误!未定义书签。
ii. 队列施法或使用物品........................... 错误!未定义书签。
iii. 随机施法或使用物品.......................... 错误!未定义书签。
iv. 攻击......................................... 错误!未定义书签。
v. 技能栏控制.................................... 错误!未定义书签。
vi. 移除增益效果................................. 错误!未定义书签。
vii. 退出形态.................................... 错误!未定义书签。
viii. 中止施法................................... 错误!未定义书签。
ix. 终止一个宏:/stopmacro ....................... 错误!未定义书签。
x. 解散坐骑...................................... 错误!未定义书签。
xi. 保存一个目标用于后续动作..................... 错误!未定义书签。
xii. 模拟点击.................................... 错误!未定义书签。
10. 进阶:脚本................................... 错误!未定义书签。
i. 脚本有哪些限制?.............................. 错误!未定义书签。
ii. 什么是脚本?................................. 错误!未定义书签。
二、命令条件语.......................................... 错误!未定义书签。
1. 什么是命令条件语? ................................ 错误!未定义书签。
2. 可以使用条件语的命令 .............................. 错误!未定义书签。
3. [target=]条件语 ................................... 错误!未定义书签。
4. 语法 .............................................. 错误!未定义书签。
i. 条件语语法简介................................ 错误!未定义书签。
ii. 条件语法..................................... 错误!未定义书签。
iii. 完整的EBNF语法............................. 错误!未定义书签。
iv. 参数为空..................................... 错误!未定义书签。
v. 条件为空...................................... 错误!未定义书签。
vi. [target=]条件语与命令参数.................... 错误!未定义书签。
5. 命令条件语 ........................................ 错误!未定义书签。
i. 总表.......................................... 错误!未定义书签。
ii. 敌/友(help / harm) ........................... 错误!未定义书签。
iii. 存在(exists) ................................ 错误!未定义书签。
iv. 死亡(dead) ................................... 错误!未定义书签。
v. 姿态(stance:0/1/2/…/n)....................... 错误!未定义书签。
vi. 潜行(stealth) ................................ 错误!未定义书签。
vii. 功能键状态(modifier:shift/ctrl/alt) ......... 错误!未定义书签。
viii. 功能键变量................................. 错误!未定义书签。
ix. 点击状态(button:1/2/…/5/<虚拟按键号>) ....... 错误!未定义书签。
x. 装备(equipped:<物品类型>) ..................... 错误!未定义书签。
xi. 引导中(channeling:<技能名称>) ................ 错误!未定义书签。
xii. 技能条(actionbar:1/…/6).................... 错误!未定义书签。
xiii. 宠物(pet:<宠物名称或类型>) ................. 错误!未定义书签。
xiv. 战斗(combat) ................................ 错误!未定义书签。
xv. 行动方式、室内外状态(mounted, swimming, flying, indoors & outdoors)
错误!未定义书签。
xvi. 允许飞行 (flyable) .......................... 错误!未定义书签。
xvii. 小队/团队队友(party/raid) .................. 错误!未定义书签。
xviii. 在小队/团队中(group:party/raid) ........... 错误!未定义书签。
6. 命令条件语的应用 .................................. 错误!未定义书签。
i. 设置焦点(focus) ............................... 错误!未定义书签。
ii. 用/click进行分支判定........................ 错误!未定义书签。
三、附录................................................ 错误!未定义书签。
1. 自定义图标 ........................................ 错误!未定义书签。
2. 宏的移植 .......................................... 错误!未定义书签。
3. 更多信息 .......................................... 错误!未定义书签。
4. 鸣谢 .............................................. 错误!未定义书签。
5. 译者注 ............................................ 错误!未定义书签。
一、基本宏命令
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, 00 do end),游
戏会被卡死,直到它执行结束;第二,也是更重要的一点,那就是宏命令不可能具有延
时功能。
这一现象在我们熟悉/cast之类的命令后就可以很清楚地感觉到。
而一些提供
了延时执行命令功能的插件,只能是能执行一些所谓的“良性命令”,如交谈、表情和对
于其他插件命令的调用(不过战斗中更换武器是可以进行的)。
2.怎样写宏?
首先,打开你的宏窗口:单击主菜单上的“宏”按钮,或者在聊天界面中输入/macro (/m)回车。
在宏窗口的顶端,可以看见两个标签:“通用宏”和“<你的角色名>的专用
宏”。
通用宏被存储在账号专有的文件夹中,被所有角色共享。
而角色专用宏则存储在角
色自己的文件夹下,是角色专用的(废话……囧)。
在标签下面是18个存放宏的栏位。
再往下是一个栏位,用于显示当前选中的宏;还有一个“修改名称/图标”的按钮,用于
修改选中的宏。
然后是一个用于显示、编辑当前宏的文本框。
最下面是三个按钮,傻子
也能看出它们是干什么的。
如果要创建一个宏,首先单击窗口下方的“新建”按钮,这时窗口旁边会显示一个对话框,用于选择图标和输入宏的名称。
如果选择了第一个图标(就是那个很红很暴力
的问号),WoW会自动根据你宏命令中涉及的技能或物品选择图标。
选好图标,输入完名
称,就可以单击“确定”按钮了。
顺便提几点:1.使用问号图标的宏,可以通过使用#show指定显示的图标。
2.虽然可以给不同的宏起相同的名字,但是最好不要这样做。
因为有些插件和宏命令是通过宏
名称来调用宏的。
3.在图标列表中可以添加自定义的图标。
现在,你选择的宏图标被显示在栏位中了(还会显示部分宏名称)。
同时,新建的宏被选中,图标显示在当前选中宏的栏位中:现在你可以写你的宏了。
单击编辑文本框,
然后输入吧。
注:宏限定为255个字符,传闻这样做是为了以后可以把用户的宏上传到服务器中。
不过……现在能做的就是遵循这个限定,至于想要把宏移植到其他机器上使用,请参见第三部分的宏的移植。
写完宏以后,只要把它的图标拖放到技能栏中就可以了。
当你执行一个宏,或者是关闭宏窗口的时候,宏都会自动保存的。
现在点击宏的图标,看看效果吧!
3.施放法术
在正常游戏过程中,很多宏命令通过聊天窗口输入使用似乎并不好用,但是在宏中就不一样了。
在特定场合下,简简单单的表情宏也可以产生有趣的角色扮演效果哦,那么,继续看……
这个:/cast,它是最常见的宏命令了。
作用嘛,就是施放一个技能书中的技能(包
把这个宏放到技能栏上点击,将会对目标施放你最高级的痛。
这和把技能书中的痛拖到技能栏上,然后点击的效果是一样的。
我们制作的宏同样会在技能栏显示你的技能冷却状态和射程状态,点击后同样能正确的施放痛。
如果宏使用了问号图标,那么还同样会显示痛原有的图标。
那直接用技能不就行了么,何必用宏呢?继续看,在宏中通过集成多条命令可以产生什么效果吧,这才是宏的价值所在。
比如说你是个法师,想让队友知道你要羊掉谁,你该怎么办?用宏吧,一个简单的/p命令加上一个/cast就可以了(使用这个无耻的插件可以达到更好的效果:CCWarn,不过我们现在需要的只是这个简单易懂的教学例子):
注:由于宏的执行是立即进行的,所以不管目标是否有效技能是否冷却,宏被点击时/p命令就执行了,也就是说这两行命令的顺序颠倒后效果是相同的。
如果你想在确定成功施放一个技能后才执行某条命令,你可以试试这个插件:AfterCast。
AfterCast可以设定在施放某个技能后执行一条宏命令,当然,是在第1节末尾所提到的限制之下的。
i.关于技能名称和等级的说明
/cast命令对技能名称是十分严格的,文字、标点、空格,一个都不能错。
为了防止出错,编辑宏时,你可以打开你的技能书,按下Shift然后单击你的技能图标,技能名称和等级就会被正确地输入到你的宏编辑文本框中,如:
如果把“(等级5)”删掉,宏在执行时就会自动选择你最高级别的技能执行;不过在很多场合下,还是需要指定级别的技能,比如术士放逐就需要根据时间来选择技能。
另外要注意,等级指示中使用的括号是英文的半角括号,等级与数字间有一个半角空格。
而一些技能名称中的括号,比如“精灵之火(野性)”中的括号,是中文的全角括号。
以下宏命令不能正常执行:
而以下的命令是正确的:
空的括号效果和没有括号是一样的。
由于255字符限制的存在,空间还是要节省的,
所以空括号可以删掉了……
4.使用物品或者饰品
使用物品和饰品和施放法术是类似的。
用于使用物品的命令是/use,后面只需要加
另外,还有以下其它的使用格式:
i./use <装备栏>
这种格式可以使用指定装备栏中的物品。
具体使用请参见《装备栏编号方式》。
例如:
使用第一个饰品。
ii./use <背包> <栏>
这种形式是在指定背包中确定物品栏的,比如你总是把猫食狗粮放在行囊的第一个栏位中,那么你就可以用这样的宏来喂养宠物:
背包的编号为0-4,顺序是从右到左,即0是行囊。
物品栏则是从上到下从左到右,从1开始依次编号的(与书写顺序相同):
或者是:
如果怕把/cast和/use的用法混淆了,那就彻底搞混吧,因为它们其实本来就是完全一样。
/cast可以使用物品,而/use也可以施放技能。
这一点在目前看来似乎没有什么,但是到后面,介绍命令条件语和施法队列时,你会发现能把物品和技能混合在同一条命令中是多么爽的一件事。
5.集成多个动作
首先,在一个宏中想一键释放多个法术是不行的。
大多数技能和很多物品会触发公共冷却(GCD),防止你同时做太多的动作。
即使一个技能释放失败,如果它可以触发GCD,
但是现在,记住,这种宏已经不能正常执行了。
如果压制施放失败,虽然没有触发GCD,客户端也不会继续执行后续的技能施放。
不过令人欣慰的是部分技能还是可以集成到一个宏中。
任何不触发GCD的瞬发技能后面可以接上另一个技能(“下次近战攻击”
型的技能,如英勇打击也归于此类)。
一个技能可以通过看说明知道它是否瞬发,至于是它是否触发GCD通过实验就可以知道。
版本之前,在这个瞬发无GCD技能之后需要加上一个/stopcasting才可以施放其后
的技能。
施放第一个技能后,游戏客户端会认为当前在施法状态,而/stopcasting就可以解除这个状态,就可以解决后续技能不能释放的问题。
但是由于技能是瞬发,/stopcasting实际上并不能取消技能的施放。
而现在这里可以不用/stopcasting了,例如:
呃……貌似看起来有些乱……不过没办法……首先,宏是有255字符数限制的,所以常常要用一些不美观的方式去写代码。
其次,脚本要写在一行中。
这两个条件导致代码的可读性很低。
如果把代码单独拿出来美化一下的话,应该是这个样子:
二、命令条件语
1.什么是命令条件语?
命令条件语是插入在宏命令中,使宏根据条件执行不同功能的语句。
举个例子,下面这个宏的作用是,如果是友方目标就施放恢复,如果是敌方目标就上痛:
增益法术的目标。
如果[help]条件成立,那么就施放恢复并执行下一条命令,否则(即
没有目标,或目标不接受有益技能)继续执行下一个子句,也就是分号后[harm]那里,
再判断[harm]条件。
[harm]条件和[help]条件相反,判断目标是否接受敌对法术。
同上,如果条件成立就释放“暗言术:痛”并执行下一条命令。
如果条件不成立,由于后面没
有其他子句,这条宏命令就算执行完了,但是什么动作都没有做。
注:如果没有写[harm]条件,实际运行效果是差不多的。
不过,如果你没有目标或者当前目标不接受任何法术,那么屏幕上将会出现错误信息,或者对于某些技能,鼠标
将会变成选择施放目标的状态。
2.可以使用条件语的命令
只有那些“安全化”命令可以接受命令条件语。
其实正是经过安全化的命令才需要条件语。
常规命令,比如说聊天、表情之类的,可以通过脚本来实现命令条件语的功能。
而且暴雪不想限制大家在聊天时使用分号(;)。
如果/s命令可以使用命令条件语的话,
那么下面这个命令就会只说hello:
以下是当前客户端中安全化命令的列表:
#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=]条件语
该条件语使得宏命令除了可以对条件进行判断外,还可以设置动作的目标。
例如,下面这个宏运行时,无论当前目标是谁,玩家只会给自己绑绷带:
Target条件语在指定动作目标的同时,也指定了进行条件判断的目标。
下面这个垃
这个宏运行的时候,首先会检查[help]条件。
如果条件为真,那么就开始吟唱快速治疗。
否则就跳至第二个条件,[target=targettarget, help]。
此时,判断目标和技能目标都被设定为你当前目标的目标,然后进行help条件判断。
如果条件成立就对你当前目标的目标施放快速治疗,否则再跳至第三个条件。
而第三个条件总是成立的,所做的只是把你自己当作施法目标。
4.语法
命令条件语是按什么规则生效的?恐怕要回答这个问题很容易引起混乱。
所以,趁还没有正式开始讲,我先用一些现实生活的例子做类比。
看不懂不要紧,这只是些概念,技术性的内容后面都还会再提到的。
i.条件语语法简介
所有的宏命令的基本工作方式是相同的:一个命令,后面带上一个或多个参数(取决于命令的要求,有些甚至不需要任何参数)。
看下面这些例子:
而命令条件语可以通过对一组条件进行的判断来选择命令的实际参数。
首先,可以用分号分隔出若干个“若干组条件+参数”这样的子句,逻辑上,分号就相当于高级语言中的else或是elseif。
条件的组数不定,也可以没有,同一组条件用一个方括号括在一起。
而每组条件中有可以包含多个条件。
就像这样:
前面的例子已经说明了,宏命令的解释过程是从左至右的。
当一组条件被判定成立时,命令就会采用其对应的条件。
如果某一个子句中不包含条件,那么就被无条件判定为成立。
像/cast XXX这种简单的宏命令就可以理解为一个只有一个子句的宏,而这个子句又不包含条件。
而如果一个宏的任何一组条件都不为真,那么它就完全不会执行。
ii.条件语法
每组条件都是由逗号分隔的一些条件语组成的,各条件不分前后次序。
逻辑上,[target=]总是先发生作用,然后其他的条件才进行判定。
逗号在这里可以理解为“并且”,也就是说各条件简是逻辑“与”的关系。
比如[help, nodead, target=focus]的含义就是:我的焦点是友善的,并且是只活的。
注意:条件是对大小写敏感的,如果你把[help]写成了[Help],宏运行时会报错。
条件中有组合式的使用方式,比如nodead,同样对于help,你可以用nohelp表示相反的条件。
但是nohelp不等于harm:首先,help和harm都要求目标存在才有可能成立;其次,有些目标,比如中立阵营NPC、非战斗宠物或者护送任务NPC等,既不算help,也不算harm。
还有些条件可以指定一些特定的参数。
比如[stance],姿态,单独使用时表示“在任一姿态中”(显然这对战士来说是废话一句)。
如果给它加上参数,就可以指定在某个姿态下,格式是在条件语后写上冒号(:),然后后面写上参数,每个参数间用斜线(/)分隔。
综上所述,一个条件语的完整格式如下(<>表示其中的部分是可选的):
下面举个例子,如果在战斗或防御姿态施放盾击,否则转入防御姿态:
注意:“no”前缀是对整个条件和所有参数的修饰,即把原来的真变为假,假变为真。
比如[nostance:1/2]表示“不在姿态1也不在姿态2中”。
iii.完整的EBNF语法
对EBNF规范很熟悉的人,以上内容可以概括为:
iv.参数为空
有些命令是可以没有参数的,这里就存在着一个陷阱。
比如:
很多初学者一看,认为这个宏的含义应该就是判断焦点是否为敌对,如果是,就把宠物送上去咬。
而实际上呢?让我们分析一下:
现在看出来了吧?由于那个分号的存在,这个语句实际上包含两个子句,而一个条件语为空的子句是被当作条件成立处理的,因此即使前面的条件语1不成立,也会执行一个/petattack。
v.条件为空
有时我们需要在特定条件下对特定目标施放技能,并在条件不成立的情况下按常规施放。
这中效果可以通过使用一组空条件来获得。
下面例子中的宏在执行时会对你鼠标指向的友方单位施放圣光闪现。
如果鼠标没有指向任何单位或者指向的目标不是友善的,那么就会按常规对当前目标施放,或者根据设置(如自动自我施法、自我施法功能键)对自己施放。
vi.[target=]条件语与命令参数
很多命令的参数是可以直接指定目标的。
比如/target party1就可以把小队中第一个队友作为你的目标。
而用/target [target=party1]的话,虽然看起来别扭,但是效果也是一样的。
但是宏的设计者不希望我们根据一个单位的状态而对另一个单位执行动作,
客户端会把party1直接忽略掉——因为你已经指定了[target=focus]。
不过这种情况也有例外,就是个别命令拥有一个“特殊单位”(其实也就是该命令会影响的单位标志符)。
见下表:
/target target
/focus focus
/startattack target
/petattack pettarget
当在[target=]中使用的是该命令的“特殊单位”时,命令执行目标不会被设置为该单位,而命令参数中指定的目标也不会被忽略。
例如
/focus [target=focus, dead] [target=focus, noharm] target
由于focus是/focus命令的特殊单位,所以/focus的目标就不会被[target=focus]设置成焦点,而是target,即当前目标。
如果没有指定target,/focus就相当于没有参数,同样是把当前目标设为焦点。
5.命令条件语
下面给出一张条件总表,每一个条件在后面我都会再给出更详细的介绍。
i.总表
在对宏命令系统的更新中,宗旨就是把玩家从按“一键万能宏”按到手抽筋的状态中“解脱”出来。
不过有一些宏的用法是被官方认可了的,它们获得了“玻璃渣祝福”
的效果——可以通过使用条件语来重现。
下面列出宏命令系统中支持的所有条件语。
如果你需要的判断条件没有在此列出,那么就不可能通过该条件来执行安全化命令的动作。
这是中央的死龟腚,谁都没办法,不过以后也有可能会再增加一些。
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下或者不在任何形态下。
注意:上面给出的是全表。
如果少了某个姿态,其下方的形态就依次上移。
我承认,我这话是针对小德说的……
下面给出例子:
如果在熊/猫形态,施放精灵之火(野性);在人形态,施放精灵之火;在其他形态就先退出,然后施放精灵之火(以后可以这样,之前该宏只能退出形态)。
vi.潜行(stealth)
对于盗贼来说由于[stance]的存在反而显得多余。
这个是给暗夜、法师、猫德用的,我的意思是它可以用来判断影遁、隐形和猫的潜行。
vii.功能键状态(modifier:shift/ctrl/alt)
它是节省技能栏的好帮手,可以让一个宏对不同功能键做不同动作,比如:
该宏会依次判断你的目标和目标的目标是否友善,条件成立的话,如果按下了某功能键,施放快速治疗,否则施放强效治疗术。
当然也可以指定特定的功能键。
[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:<技能名称>)
在引导法术的状态下,如果施放另外一个法术将会打断施法。
这个条件语就是用来防止这一情况的。
当然,它还有些其他的用途,比如只打断特定的引导技。
只用。