【大灾变】宏命令完全指南 重新整理版《NGA、宏吧》
魔兽宏吧
全部回复
仅看楼主
level 11
Titansnova 楼主
此贴非原创,原帖传送门:http://nga.178.com/read.php?tid=1858624&fpage=1
友谊第一,尊重互助。勿插!!!
2011年07月03日 05点07分 1
level 11
Titansnova 楼主
例子:(我承认我写得很烂)
#showtooltip 纳鲁的赐福(种族特长)
/cast [@focus,nodead,exists][noharm] 纳鲁的赐福
/cast [@mouseover,help][help][@targettarget,help][player] 治疗波
注:宏限定为255个字符,传闻这样做是为了以后可以把用户的宏上传到服务器中。
写完宏以后,只要把它的图标拖放到技能栏中就可以了。当你执行一个宏,或者是关闭宏窗口的时候或者按ESC,宏都会自动保存的。现在点击宏的图标,看看效果吧!

2011年07月03日 06点07分 4
level 11
Titansnova 楼主
3.施放法术 /CAST
在正常游戏过程中,很多宏命令通过聊天窗口输入使用似乎并不好用,但是在宏中就不一样了。在特定场合下,简简单单的表情宏也可以产生有趣的角色扮演效果哦,那么,继续看……
这个:/cast,它是最常见的宏命令了。作用嘛,就是施放一个《《技能书》》中的技能(包括宠物的)。最简单的用法就是这样:
/cast 暗言术:痛
把这个宏放到技能栏上点击,将会对目标施放你最高级的痛。这和把技能书中的痛拖到技能栏上,然后点击的效果是一样的。我们制作的宏同样会在技能栏显示你的技能冷却状态和射程状态,点击后同样能
正确的
施放痛。如果宏使用了问号图标,那么还同样会显示痛原有的图标。
“那直接用技能不就行了么,何必用宏呢?”
继续看,在宏中通过集成多条命令可以产生什么效果吧,这才是宏的价值所在。比如说你是个法师,想让队友知道你要羊掉谁,你该怎么办?用宏吧,一个简单的/p命令加上一个/cast就可以了
不过我们现在需要的只是这个简单易懂的教学例子):
/cast 变形术
/p 我羊了%t!谁打谁扛着哈!
注:由于宏的执行是立即进行的,所以不管目标是否有效技能是否冷却,宏被点击时/p命令就执行了,也就是说这两行命令的顺序颠倒后效果是相同的。

2011年07月03日 06点07分 5
level 11
Titansnova 楼主
≌::关于技能名称的说明 (CTM法术等级全部默认为所学最高等级)
/cast命令对技能名称是十分严格的,文字、标点、空格,一个都不能错。为了防止出错,编辑宏时,你可以打开你的技能书,按下Shift然后单击法术书中技能图标,技能名称和等级就会被正确地输入到你的宏编辑文本框中,如:
注意::: 标点全为半角

2011年07月03日 06点07分 6
level 11
Titansnova 楼主
4.使用物品或者饰品 /use
使用物品和饰品和施放法术是类似的。用于使用物品的命令是/use,后面只需要加上物品的名字就可以了。例如:
/use 绿色机械陆行鸟
另外,还有以下其它的使用格式:
①/use <装备栏> 对应编号
1:头
2:颈
3:肩
4:衬衣
5:胸
6:腰带
7:腿
8:脚
9:手腕
10:手套
11:手指1
12:手指2
13:饰品1
14:饰品2
15:背
16:主手
17:副手
18:远程武器
例如:
/use 13
使用第一个饰品。

2011年07月03日 06点07分 7
level 11
Titansnova 楼主
②/use <背包> <栏>
这种形式是在指定背包中确定物品栏的,比如你总是把猫食狗粮放在行囊的第一个栏位中,那么你就可以用这样的宏来喂养宠物:
/cast 喂养宠物
/use 0 1
背包的编号为0-4,顺序是从右到左,即0是行囊。物品栏则是从上到下从左到右,从1开始依次编号的(与书写顺序相同):
1 2 3 4
5 6 7 8
……
或者是:
1 2
3 4 5 6
7 8 9 10
……
如果怕把/cast和/use的用法混淆了,那就彻底搞混吧,因为它们其实本来就是完全一样。/cast可以使用物品,而/use也可以施放技能。这一点在目前看来似乎没有什么,但是到后面,介绍命令条件语和施法队列时,你会发现能把物品和技能混合在同一条命令中是多么爽的一件事。

2011年07月03日 06点07分 8
level 11
Titansnova 楼主
5.集成多个动作
/cast 并列应用
首先,在一个宏中想一键释放多个法术是不行的。大多数技能和很多物品会触发公共冷却
即使一个技能释放失败,如果它可以触发共冷却,那么它也会阻止后续/cast的执行。
但是有共CD的技能并不是说不能绑在一起,只是不能同时施放。借助条件命令我们可以把很多有共CD的技能绑定在一起。比如:
/cast [help] 治疗波
/cast [harm] 闪电箭
目标友好释放治疗波,敌对释放闪电箭。等于/cast [help] 治疗波;[harm] 闪电箭
通常我们为了省字符会这样并列:/cast [help] 治疗波;闪电箭

2011年07月03日 06点07分 9
level 11
Titansnova 楼主
①队列施法或使用物品 /castsequence
很多时候我们需要经常按一定顺序使用固定的一些技能或物品。这样的操作是可用/castsequence宏命令进行傻瓜化的。
/castsequence命令用法是在后面写上一些技能或物品的名称,之间用英文的半角逗号分隔,和/use、/cast类似。技能名、物品名、物品代号、装备栏代号和背包位代号都可以混合使用。每次执行宏,就使用当前的技能或物品(从第一个开始),如果成功,队列的当前位置就被移至下一个技能或物品。也就是说需要反复执行宏来按顺序使用这些技能或物品。当最后一个技能/物品成功使用后,这个队列就被重置到开头。比如:
/castsequence 献祭, 腐蚀术, 痛苦诅咒, 生命通道
这是痛苦术士起手的招牌动作。注意,如果献祭没有施放成功(比如魔法不足,超出范围,被沉默了等等),这个队列不会继续执行,直到献祭放出去。所以下面这个宏是屁用没有的:
/castsequence 压制, 斩杀, 致死打击
在技能列表之前,可以插入一个条件语,用于另外指定一些队列的重置条件。语法是:
reset=n/target/combat/shift/alt/ctrl
以上的这些条件都可以任意共存。其中,n是数字,表示从某次执行宏开始,经过n秒后没有再次执行这个宏,那么队列就被重置到开头。这一点很重要,因为这意味着无法利用reset条件语来精确计时(比如让某技能一冷却就用)。target条件表示当目标切换时,宏队列重置;combat条件表示脱离战斗后重置;shift,alt和ctrl表示当执行宏时指定的键为按下状态时重置。例如:
/castsequence reset=10/shift 第一个技能, 其他技能, 一些物品

2011年07月03日 06点07分 10
level 11
Titansnova 楼主
②附2个关于/castsequence的进阶用法(@手术台上的菜刀
技能为空的应用:(抽筋宏)
/castsequence reset=1 ,圣盾术
/cast 13 点击一下使用第一个饰品,连续点击两下使用圣盾术。(13是物品对应位置的编号)
技能为乱码的应用:
/castsequence reset=5/target/alt 冰触,暗打,菜刀 效果就是在成功施放双病以后让宏进入CD状态(“菜刀”会造成人工卡宏)防止因为抽劲或眼睛不够用浪费技能。在停止5秒不按宏或转换目标或按下alt时重

2011年07月03日 06点07分 11
level 11
Titansnova 楼主
6.选择目标
选择目标是宏的另一个主要作用。此类功能可以用专门的目标选择命令实现,改变当前的目标;也可以在一些命令中用[target=](或者[@])命令条件语实现,临时指定施法或使用物品的目标,而不改变当前目标。
最基本的命令是/target或者/tar,用法如下:
/target Cogwheel
/target的选择是经过最佳相近匹配的,也就是说,如果我正站在你附近(并且附近没有谁叫Cog的),你执行/target Cog,我就会变成你的当前目标。至于这种机制是利是弊……那就取决于实际情况了,因为这个东东貌似不稳定,有时会得到莫名其妙的结果。比如下面这个宏就可能不是很好用:
/target 黑翼法师
/cast 痛苦诅咒
如果附近没有黑翼法师呢?或许结果就是:选中了团里的某个人,因为他的名字在某种意义上比较相近。虽然你的诅咒不会真对他们放出来,但还是够囧的。 另外一个问题是,它可能会选择你身后一个离你100码的单位——根本不是你想选中的那一个……不过在2.3版之后,增加了一个/targetexact命令,问题得到解决了。(这段我不知道现在还有这个问题没有)
关于target的常用用法:
/tar 名字 --------选定特定名字单位为目标
/tar [@mouseover] ------------选定鼠标指向单位为目标
/tar [@targettarget] -----------选定目标的目标为当前目标
/cast [@player] 爪子-------------对自己排爪子(不会改变当前目标,这只是个简单的例子)
/cast [@targettarget] 法术 -------------对目标的目标释放法术(括号内容同上)
注::[target=help] [target=名字] 是错误的,target=后面只能接ID标识符,连接我就不发了,容易被吞。

2011年07月03日 06点07分 12
level 11
Titansnova 楼主
≌::其他选择命令
以下是其他的目标选择命令:
o /assist 或者 /a
不加任何其他参数时效果是选择你目标的目标,如果在其后加上人物名称,那么就会选择对应人物的当前目标。例如:
/assist Cogwheel
另外,在客户端的界面选项中有一个选项,可以设置用/assist选中一个敌对目标时是否自动进行攻击。
o /cleartarget
清除当前目标。
小例:/cleartarget
/targetenemy
/cast 闷棍 (DZ互闷宏)
o /targetexact
准确选择,如果附近没有单位的名字和给出的参数完全匹配,就不会切换目标。
o /targetlasttarget, /targetlastfriend 和 /targetlastenemy
顾名思义,分别用来选择上一个目标、上一个友方目标和上一个敌对目标。如果你之前没有过任何目标,那么这些命令不会产生任何影响。
o /targetenemy 和 /targetfriend
选择敌方目标和选择友方目标。这两条命令是按一定顺序循环选择指定类型的目标的,和使用Tab键的效果类似。如果在命令后加上一个1作为参数,那么就会按循环的反方向进行选择。例如:
/targetenemy 1
效果就和按下Shift+Tab键一样。
注:这两个宏命令每个宏中只能用一次。
o /targetparty 和 /targetraid
按距离循环选择你附近的小队或团队队友,与/targetenemy类似,也可以用1作为参数改变选择的循环方向。

2011年07月03日 06点07分 13
level 11
Titansnova 楼主
i.装备物品
常用的装备宏命令有:
/equip 或者/eq
/equipslot # #为数字编号具体请参考7楼,作用是把物品装备到指定装备栏
这在主副手和双SP之中用得最多。
7楼传送门:https://tieba.baidu.com/f?kz=1128781711#12999930517
/equipset & &为装备管理器套装名字。装备指定套装方案
TIPS:一些朋友容易把/cast/use和/equip相混淆。特此提醒:装备物品只能用/equip
当然这里说的是非脚本
/equip 虚空角斧
把饰品装备在第二个饰品栏中:
/equipslot 14 棍子上的胡萝卜
注意一些错误用法:
/equip [noequipped:武器名字] 虚空角斧 (虽然此宏可用,[]条件错误,宏不判断错误条件所以等于/equip 虚空角斧)
装备主副手最好用/equipslot 或者/equipset
2011年07月03日 06点07分 15
level 11
Titansnova 楼主
[汗]15楼左上角打个 8 (排版失误)
①随机施法或使用物品
最常见的例子就是希望随机召唤一个坐骑来**,使用/castrandom或者/userandom宏命令很容易实现这个功能。用法和/castsequence类似,如:
/castrandom 迅捷绿色机械路行鸟, 军用黑色机械路行鸟, 召唤恐惧战马
②攻击
/startattack和/stopattack了。分别用来攻击和停止攻击。如:
/startattack Cogwheel
③技能栏控制
有两个控制技能栏翻页的宏:/changeactionbar和/swapactionbar。前者接受一个数字作为参数,表示要切换到的技能栏页码。常见的是猎人用来转换近战远程攻击状态:
/cast 雄鹰守护
/changeactionbar 1

/cast 灵猴守护
/changeactionbar 2
/swapactionbar命令后面要写两个页码,表示来回切换指定的两个技能页。如果当前技能页不是两个页码中的一个,当前页就会被设置为第一个页码指定的技能栏页。
/swapactionbar 1 2
④移除增益效果
/cancelaura命令可以移除自己不想要的增益效果(BUFF),比如主坦需要移除身上的拯救祝福:
/cancelaura 拯救祝福
⑤退出形态
除了战士DK,任何有“形态”概念的职业(德鲁伊、暗牧)都可以用/cancelform来退出当前形态:
/cancelform
/use 超强治疗药水

2011年07月03日 06点07分 16
level 11
Titansnova 楼主
⑥中止施法
前面简单提到了/stopcasting命令,不过它存在的目的顾名思义,是用来打断当前施法的。例子:
CJQ 瞬发驱邪宏,按任意功能键(ctrl,alt,shift)和宏释放读条驱邪
/stopcasting
/cast 驱邪术
/stopcasting [nomod]
⑦终止一个宏:/stopmacro
/stopmacro如果不配合条件语来使用是没有什么意义的。它一般用来实现条件执行的功能:如果满足了某些条件,则中止宏继续运行。
例子:
/cast 起死回生
/stopmacro [combat][harm][noexists][nodead]
/y 我正在复活%T

2011年07月03日 06点07分 17
level 11
Titansnova 楼主
⑨保存一个目标用于后续动作 ,吧内连接FOCUS:https://tieba.baidu.com/f?kz=403517699
/focus宏可以把一个目标设为焦点(focus),然后可以在其他指令中使用这个focus。比如你的老大指定了一个目标让你羊着。你要做的就是选择它,然后输入/focus。然后你就可以用这个宏羊着它了,而不用管你当前目标变成了谁:
/cast [target=focus] 变形术
注意,focus的作用可不仅仅如此https://tieba.baidu.com/f?kz=403517699虽然帖子有点老了,还是很有用的
⑩::模拟点击
/click命令的参数为一个按钮(本质上来说是一个窗口)的名称,执行的效果就相当于用鼠标点击了这个按钮。默认情况下,它的效果相当于左键单击,也可以根据设置成其他按键点击的效果。至于按钮名称可以通过一下方式获知:
o 使用插件。某些插件,比如MoveAnything,提供了查看窗口名称的功能。
o 查看界面的源代码。这一般是非常娴熟非常牛B的插件制作者才能做到的。
o 用这样一个宏获取当前鼠标所指的窗口名称:
/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产生分支判定效果的例子。
2011年07月03日 06点07分 18
level 11
Titansnova 楼主
9.施法条件----命令条件语言[条件]
下面列出宏命令系统中支持的所有条件语。如果你需要的判断条件没有在此列出,那么就不可能通过该条件来执行安全化命令的动作。这是中央的死龟腚,谁都没办法,不过以后也有可能会再增加一些。
• 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 玩家在某集体中(小队/团队)
条件之间可以并列:[条件A][条件B][条件C][条件D] 由于在执行宏时,会从左往右判断条件。A不满足判断B,B再次不满足判断C。以此类推。但一旦A条件满足,宏就会根据条件A释放技能了,后面的条件一概无视。所以大家在并列条件时要理好条件优先级。
一个小例子:
致盲
#showtooltip
/cast [mod:alt,@focus][@mouseover,harm][harm]致盲
这个宏会优先鼠标指向致盲,如果没有或者指向友方就盲目标,按alt强制致盲焦点

2011年07月03日 06点07分 19
level 11
Titansnova 楼主
10.姿态(stance:0/1/2/…/n) 等于form
姿态是指对技能能否施放有影响的状态,比如战士的姿态,小德、萨满、暗牧的形态,盗贼的潜行状态。而骑士的光环、猎人的守护都不算是姿态。单独用[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] 精灵之火
如果在熊/猫形态,施放精灵之火(野性);在人形态,施放精灵之火;在其他形态就先退出,然后施放精灵之火

2011年07月03日 06点07分 20
level 11
Titansnova 楼主
①潜行(stealth)
对于盗贼来说由于[stance]的存在反而显得多余。这个是给暗夜、法师、猫德用的,我的意思是它可以用来判断影遁、隐形和猫的潜行。
②功能键状态(modifier:shift/ctrl/alt) 简写mod:
它是节省技能栏的好帮手,可以让一个宏对不同功能键做不同动作,比如:
/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以节省空间。

2011年07月03日 06点07分 21
level 11
Titansnova 楼主
③.功能键变量
虽然说mod指定的只能是shift、ctrl或alt,但是还可以通过一些系统变量来间接指定。比如SELFCAST这个系统变量,是指“自我施法功能键”,默认值为alt,可以通过某些插件修改,表示按下该键后执行的动作都是针对玩家自身的。下面看这个例子:
/cast [modifier:SELFCAST, target=player] [target=mouseover] [ ] 强效治疗术
这样的话,不管你系统设置的自我施法键是什么,宏命令都会正常执行。下面给出其他的一些系统变量,括号内为默认值,后面为中文含义:
o AUTOLOOTTOGGLE (shift)
o STICKYCAMERA (ctrl)
o SPLITSTACK (shift)
o PICKUPACTION (shift)
o COMPAREITEMS (shift)
o OPENALLBAGS (shift)
o QUESTWATCHTOGGLE (shift)
④点击状态(button:1/2/…/5/<虚拟按键号>) 简写:btn:
与[modifier]类似,[botton]可以根据不同的鼠标点击按钮做不同动作。1为左键,2为右键,3为中键,4和5则对应五键鼠标上另外两个扩展键。如果是通过键盘触发宏,那么也相当于左键点击。比如我的坐骑宏:
#show迅捷绿色机械陆行鸟
/userandom [nobutton:2, flyable, nomounted] 黑色狮鹫; [nomounted] 黑色战豹, 迅捷绿色机械陆行鸟
/dismount [noflying] [button:2]
非右键键点击时,如果没在坐骑上就召唤坐骑;如果右键点击并且不在飞行状态则取消坐骑。而虚拟按键号一般可以忽略,有些动作条插件可以在不同条件下向宏按钮提供不同的虚拟按键号,具体情况请查看插件说明,我们在此不作讨论。

2011年07月03日 06点07分 22
level 11
Titansnova 楼主
⑤装备(equipped:<物品类型>)
[equipped]条件可以判断指定类型的物品是否被装备。物品类型号可以是装备栏名称,物品类别或者物品子类别。比如我根据盾牌装备状态判断该用盾击还是拳击:
#show [equipped:盾牌] 盾击; 拳击
/cast [equipped:盾牌,stance:1/2] 盾击; [equipped:盾牌] 防御姿态; [stance:3] 拳击; 狂暴姿态
⑥引导中(channeling:<技能名称>)
在引导法术的状态下,如果施放另外一个法术将会打断施法。这个条件语就是用来防止这一情况的。当然,它还有些其他的用途,比如只打断特定的引导技。只用[channeling]的话表示正在引导任意技能,或者后面可以指定任意个引导技能的名称表示正在引导其中一个。
注意:引导和吟唱是两码事,[channeling]条件只对引导技能,如奥书飞弹、吸取生命、精神鞭笞等有用。
⑦技能条(actionbar:1/…/6)
系统默认的界面中有一个主技能条,可以翻页。而用这个条件就可以根据当前技能页作出不同反应。比如猎人可以拿来把守护做成姿态:
/swapactionbar 1 2
/cast [actionbar:1] 雄鹰守护; 灵猴守护
这样就可以切换1号和2号两个技能页,换到1页时施放雄鹰守护,2页时则施放灵猴守护。
⑧宠物(pet:<宠物名称或类型>)
对任何有宠职业来说这个条件都很有用,它可以根据你宠物状态来执行动作,可以根据宠物名字,也可以是类型(比如小鬼,狼,胖子,熊等),[pet:小鬼]如果只用[pet]的话表示带着任意宠物。比如法师可以根据是否有水宝宝施放不同的霜星:
/cast [pet] 冰冻术;冰霜新星

2011年07月03日 06点07分 23
1 2 3 尾页