求魔兽世界宏的详解

CTRL-C+CTRL-V的滚,说的看不懂的滚,漫骂的滚,死皮赖脸要分的滚,路过的滚
我是猎人啊

1、什么是宏:
宏是一组命令的集合,可以完成一个相对比较复杂的操作,比如战斗中发布命令,如果打字当然不算麻烦,但在战斗中却很要命.浪费了时间和生命.一个简单的宏便可以用一个键来完成这一切。比如,

/s 冰冻陷阱别打!
/施放 冰冻陷阱(等级 1)

就是在战斗中,放陷阱前,向队友通知一声,随后立即安放陷阱。二个功能按一键(宏的快捷键)就能完成。如果法师变羊,也可采用相似办法,进行说明或通知。

2、怎么设置宏:
首先,回车,再敲/MACRO。看见了吧?会弹出一个窗口,上面有New(新建宏命令)和Complete(完成宏命令)两个按键。点New,又会弹出一个窗口,哇,花花绿绿的,里面包括了WOW几乎所有的技能图标,随你喜欢,随便选一个!它就是你设置的宏命令的图标了,给它取个名字吧!方便你用的时候好找。然后回到第一个窗口,在它上面有一个输入菜单(别告诉我找不到…它可是占了这个窗口的一半多…)在里面输入特定的内容,然后点Complete。接下来你要做的就是把这个代表你宏命令的图标用鼠标左键拉到快捷栏里,想怎么用就怎么用…

相信很多人都知道WOW中的斜杠"/"和表情命令.宏可以将这些命令按照自己对条件的设置串联起来,比如:/Kneel是让你跪下来的动作而/say就是最基础的对话动作
我们现在用一个宏把他们串起来:

第一行内容:“/Kneel”
第二行内容:“/say 如果你不嫁给我,那么我就一辈子不起来…” ”
这样你的人物就会先下跪再说:"如果你不嫁给我,那么我就一辈子不起来…"

宏可以应用所有WOW中已经定义了的斜杠"/"和表情命令,更要命的是,宏甚至可以应用人物的魔法和技能,

只需要在宏的定义过程中应用"/cast"命令,下面是已知的一些常用命令:

/Assist 这是个援助进攻的命令。当你的队伍同时面对几个敌人时,只要点击自己的队友(一般是队伍中的战士),然后使用这个命令,你的目标就会变成战士所选中的目标。大家集中火力消灭一个起!

/Cast 这是个使用技能的命令。当你在宏命令里输入/Cast 技能名(技能等级)或者只要按住Shift同时用鼠标点击一下你想要输入的技能的图标。例如当你是一个战士,想制作一个使用战斗怒吼的宏时,你可以输入/Cast Battle Shout(Rank 1)或者是直接按住Shift点击Battle Shout这个技能的图标。当然你可以在一个宏的不同行上输入几个技能,那么当你使用这个宏时,几个技能就会一起释放出来,再用不着你像章鱼一样同时按下几个键了 。

%t 这个符号也许会经常出现在你的宏命令里,它是一个代码,代表你当前所选中的人名。例如,你在宏里写下这么一句。(注意:后面要加一空格。) “/g %t ,今天天气真好,有没兴趣和我一起上山采蘑菇…”
如果你点中一位名叫苯笨的玩家,那么当你按下这个宏时,你就会说:“笨笨,今天天气真好,有没兴趣和我一起上山采蘑菇…”

3、怎样使用我给出的宏
只要在宏内容的编辑窗中,照抄我给出的宏代码即可,当然宏的图标、名字你们自己取即可。或者,让WOW窗口方式运行,打开宏编辑窗后,直接把网页上的代码内容复制进去即可。容易吧?

强烈呼吁楼主搞一个《WOW宏指令语法入门及常用命令、函数字典》,发行单行本我第一个来买!
答:所有函数都有,下面的地址,自己看吧。
http://www.wowwiki.com/World_of_Warcraft_API

========
1、 选目标,放标记
宏0:
智能选定目标
功能:如果没有选定目标,则选定最近的敌人;如果队友(宠物或玩家)存在,则选定

他们的攻击目标为当前目标;
如果有队友,自动选择队友的当前目标;如果没有队友,也没有自己选定的当前目标,

则自动选定最近的目标;如果队友无选定目标,自己也没选定目标,选选中最近一次曾

经选定的目标为当前目标。本宏可以很好地增强了TAB键的功能,把该宏快捷键设成TAB

,你会发现很好用,呵呵。
说明:
队友可以是BB。如果队友是BB,就是我下面给出的代码, 名字是 pet ;
如果队友是玩家,则把 pet 修改成顶怪的队友的编号 party1 或party2 或party3 或

party4,其中party1就是从上往下数第一个队友,2就是第二个,以此类推,到party4为

止;
pet 是一个编号名字,属于 UnitId 类型,只要该类型的编号,都可以在此通用。

代码:
/script if UnitExists("pet") then AssistUnit("pet"); end; if (not UnitExists("target")) then TargetNearestEnemy();end
/script if (not UnitExists("target")) then TargetLastEnemy() end

宏1:
拉怪
功能:组队拉怪放标记,显示选中目标的名字等信息。
注意:先要选中一个敌人
建议:与宏0结合使用,方便无比,性能优异!!建议直接用之替换系统的雄鹰守护技能

按钮

/script if UnitExists("target") then SendChatMessage(">>"..UnitName("target").."[lvl "..UnitLevel("target").."]<<","say");end
/施放 猎人印记(等级 1)

宏2:
选怪放标记 SOLO+组队通用版 强烈推荐!
功能:
如果有队友,自动选择队友的当前目标,放印记;如果没有队友,也没有自己选定的当
前目标,则自动选定最近的目标放标记;如果队友无选定目标,自己也没选定目标,选
选中最近一次曾经选定的目标为当前目标,放标记;如果没有队友,但自己已经选定了一
个目标,则对已选定目标放标记。本宏可以很好地增强了TAB键的功能,把该宏快捷键设
成TAB,你会发现很好用,呵呵。
说明:
队友可以是BB。如果队友是BB,就是我下面给出的代码, 名字是 pet ;
如果队友是玩家,则把 pet 修改成顶怪的队友的编号 party1 或party2 或party3 或
party4,其中party1就是从上往下数第一个队友,2就是第二个,以此类推,到party4为

止;
pet 是一个编号名字,属于 UnitId 类型,只要该类型的编号,都可以在此通用。至于

什么是UnitId类型,前面的技术说明文档里已经给出,请自己查阅;
感谢:
二区月光林地精灵猎人:天使风刃。他当时帮助我一起测试这个宏,特此感谢。

代码:
/script if UnitExists("pet") then AssistUnit("pet"); end; if (not UnitExists("target")) then TargetNearestEnemy();end;
/script if (not UnitExists("target")) then TargetLastEnemy();end;
/script CastSpellByName("猎人印记(等级 1)")

宏3:
智能放标记,宠突进,宠出击
功能:如果目标身上第一个DEBUFF不是标记,比如是毒蛇,或者没有DEBUFF,则放标记

,否则不放,后BB突进,出击
说明:建议与协助宏配合使用,副本慎用;注意,4是指宠物技能共四个中的左边的第一

个,我一般放“突进”;
代码:

/script if (UnitDebuff("target",1)) then if (not (string.find(UnitDebuff("target", 1),"Sniper"))) then CastSpellByName("猎人印记(等级 1)");end; else CastSpellByName("猎人印记(等级 1)");end;
/script PetAttack()
/script CastPetAction(4)

宏4:
智能放标记宏(不会重复放标记在同一个对象身上)
功能:
目标第一个DEBUFF存在但不是标记,如毒蛇,或者目标身上无DEBUFF,则放猎人标记否

则不放,后显示怪物名字
说明:
请先选定一个目标;适用于有比你更高级别的猎人在队中并已经放了标记时;
建议:与宏0结合使用,显示目标信息比宏1略少(仅显示目标名字,不显示等级),但不

会重复放标记。建议直接用之替换系统的雄鹰守护技能按钮
代码:

/script if (UnitDebuff("target",1)) then if (not (string.find(UnitDebuff("target", 1),"Sniper"))) then CastSpellByName("猎人印记(等级 1)");end; else CastSpellByName("猎人印记(等级 1)");end;SendChatMessage("瞄准>>"..UnitName("target"),"say")

宏5:
副本报告巡逻队来了
注意:先用鼠标指在视野内的怪身上,按该宏的快捷键即可

/script p="mouseover"
/script if UnitExists("target") then if (UnitIsEnemy("player",p) ) then SendChatMessage("巡逻队>>"..UnitName("target").."[lvl "..UnitLevel("target").."]<<来了","say");end end
-------------------------------------------------------------
2、 假死:

说明:假死后当前目标不会消失,但假死刹那间则已经清除当前目标而提高成功率。因

为使用中发现,假死后,当前目标消失的话,起来后还得重新选定目标,不太方便,故

故作此改进

代码:
/script PetPassiveMode()
/script ClearTarget()
/施放 假死
/script TargetLastEnemy()

答疑:
第一行收回BB,一般情况下,BB也已经在挨打,或者在打怪,收回到身边有什么用吗?
答:这个假死,是为了手动放陷阱。BB攻击敌人,则不能放陷阱。这是游戏规定的,放

陷阱必须在非战斗状态。如果不收,BB设成被动模式,则挨打,顶怪,没办法。如果收

回,则怪追BB打,BB跑得快,挨打就少了,当BB跑回身边,再过小会,8S差不多也过去

了,放冰陷,然后治疗BB,或绷带。

3、 驱散射击:

收宠驱散后,取消自动攻击状态,但当前目标冰变。因为使用中,经常一驱散后,宠也

收了,可是自己立马又给我敌人一次攻击,把敌人打醒了,很不方便,故作此改进

/script PetFollow()
/施放 驱散射击
/s 困惑4S!挨打解除
/script ClearTarget()
/script TargetLastEnemy()

楼主~~为什么驱散的宏怎么不好用~~问题是使用以后宝宝是回来了~可是没有使用技能~~

能帮忙解决吗?????谢谢了!!!!
答:驱散宏,我的写法是最常用的。当用驱散时,目标不受攻击的情况下,困惑4S,如果

受攻击,则解除。我用驱散,主要是为了让敌困惑4S,以拉开距离或治疗BB或吃喝或绷

带。所以,用本宏前,不要用毒箭,也不能让队友用痛苦之类的DOT。如果你非想再接着

加技能,实现起来很简单,只要下面再加:/施放 毒蛇刺击(等级 1)

5、 智能绷带
功能:
选定友好单位则对其用绷带;没选定目标或选定目标为敌人且敌人在8码外对自已用绷带

;如果选定目标为敌人且在8码内,对BB用绷带。
说明:
请把绷带放在从左向右数第二个包,第一行自左向右数第一格;
请把屏幕左下角技能按钮栏(一般是系统默认为shift+1快捷键的那个栏)从左往右数第

2格放上远程攻击技能,如毒蛇

/script UseContainerItem(3,1)
/script if(IsActionInRange(2) == 1) then SpellTargetUnit("player") else SpellTargetUnit("pet") end

12、 装死放冰冻陷阱

由于时间上的要求,一般没法一次性成功。所以一般不做这样的宏,也建议别用这样的

宏。非要做的话,就这样吧。只不过要一直按键,一直到冰陷放出为止。
用本宏的建议:自己与怪拉开点距离,宠顶,自己枪打。当必要时,则按宏。一般来说,

这样操作,都能成功。

/script PetFollow()
/script ClearTarget()
/施放 假死
/施放 冰冰陷阱(等级 1)

打人的时候再点就是不出假死,但是非战斗状态的时候点了就只放陷阱.也没有假死,

晕...
答:首先,这个宏,只要你能手动放出假死并放出陷阱的话,这个宏也一定能成功。
其次,关于你的问题,我想解释一下。要放假死,如果不抵抗而且身上没有让你假死不

了的敌方技能,无论你是否战斗中进行中,假死就能成功。在这种情况下,用我的宏,

至少能成功假死。如果假死成功,必须要有8S不受攻击,也不攻击别人(包括宠物不攻

击),才能放陷阱,一般来说,这时肯定能成功安放陷阱
。用宏的话,也一样能实现。你为什么不成功,原因:战斗中,如果宠物没设成被动模

式,则不会成功,如果宠物受攻击,不攻击,是否影响假死后放陷阱,我不太清楚;后

来,只出陷阱,不假死,我估计是你的假死冷却时间还没结束。
总之,这个宏,你只要手动能放出陷阱,宏也可以。

13、 摔绊宏:

经使用效果的比较,发现下面的写法有效性高,而且动作帅得多

/施放 摔绊(等级 1)
/script Jump()
/script ToggleAutoRun()
---------------------------------------------------------------------
(4) 喂宠
宏1:
请把宠物食放在从左向右数第二个包,第一行自左向右数第二格
5个背包按照排列位置编号如下:
[4][3][2][1][0]]
6格包的格子编号如下:
_____[1][2]
[3][4][5][6]
16格包的格子编号如下:
[ 1][ 2][ 3][ 4]
[ 5][ 6][ 7][ 8]
[ 9][10][11][12]
[13][14][15][16]

功能:
,如果在非战斗状态自动喂食,如果食品已经吃完,则自动打开对应背包,在战斗状态

时哪怕食品为空也不会打开背包。
说明:
食品放在包3,2
前一个改进版,在战斗状态时如果食品为空,会打开背包不太好

代码:
/script if (not UnitAffectingCombat("player")) then if (not GetContainerItemLink(3, 2)) then OpenBag(3); else CastSpellByName("喂养宠物"); PickupContainerItem(3, 2);end end

喂宠的宏是不是缺什么?我使用这个宏之前还必须使用喂养宠物这个技能,不然的话使

用宏就直接把物品拿在手上了。
答:这个宏肯定可以用。我一直在用的。我放上来的宏全部是试验成功后才放的。至于

你说的问题,可能是因为在战斗中你用了这个宏,或者对应格子里没有宠物愿意吃的食

物。我自己也碰到过同样问题。只要重新把宏图标从/m中拖出到动作栏上,便可恢复正

常。请放心使用。注意,如果宏正常,图标上有英文字的,是宏的名字。如果图标变成

了普通的食物图标,则出错了,要重新拖一下。
(7) 解散/召唤宠物
可以节省一个动作栏位。

/施放 解散宠物
/施放 召唤宠物

(9) 宠物攻击/追击

注意,4是指宠物技能共四个中的左边的第一个,我一般放“突进”,点击一下就用一次

技能

/script PetAttack()
/script CastPetAction(4)

---------------------------------------------------------
17、 冰冻陷阱:

建议组队使用

/施放 冰冻陷阱(等级 1)
/s 冰陷阱!别打冰住的怪,能冰10S!

18、 冰霜陷阱:

建议加了诱捕天赋的在副本组队时使用

/施放 冰霜陷阱
/s 霜陷阱!请在陷阱上顶怪,布衣开战2S后动手!

6、 协助

宏2(推荐!)
感谢:二区月光林地小D:随风的丫头。在其帮助下,我在加基森边上,完成了本宏的测


作用:自动协助第一个队友,比前一个版本的方便些。如果想协助第4个队友,请

把"party1"必为"party4"。一般,我把战士设为协助对象。

/script AssistUnit("party1")
/施放 猎人印记(等级 1)

----------------------------------------------------
(14) 报告自已坐标:

可以一定程度上代替插件的坐标显示功能,方便那些不用插件的朋友,现在可以凑合着

找特定坐标的东西了。使用方法:鼠标放在视野内任何地方,按宏键

/script x,y=GetPlayerMapPosition("player");
/script x=x*100;y=y*100;
/script Msg="(x,y):("..string.format("%d",x).." ,"..string.format("%d",y).." )"
/script SendChatMessage(Msg,"say")

(15) 快捷寻找精英BB

当在刷新点附近转悠时,先把“断牙”改为BB的名字,不时按一下这个宏,如果BB在以

玩家为圆心的半径至少41码(经验证,感觉应该更大)的圆形区域内刷新,则BB头像出

现在屏幕左上玩家自己头像右边,且玩家会跳一下。试验时,我没骑马,成功了。如果

骑马了,感觉也可行。由于本人爱好招BB,经常为了招个心仪的BB用几天时间,感觉在

到处转悠寻找目标时,很不方便。于是想出这么个招,好使!嘿嘿!该招是在荒芜之地

招38级JY红狼巴那布斯(Barnabus)时,大约是第5天,想到的,特此纪念,嘿嘿。可恨为

什么猎人只能养三个宠啊!!痛苦!!

/target 断牙
/script if (string.find(UnitName("target"),"断牙")~=nil) then Jump() else ClearTarget() end

(20) 切换全屏模式与窗口模式

/script SetCVar("gxWindow", 1 - GetCVar("gxWindow"))
/console gxRestart
-------------------------------------------------------
16、 鹰守/豹守切换

/script for i=1,16,1 do if (UnitBuff("player",i)~=nil) then if (string.find(UnitBuff("player",i),"JungleTiger")~=nil) then CastSpellByName("雄鹰守护(等级 1)");break;end end if(i==16) then CastSpellByName("猎豹守护");end end

10、 鹰守/猴守切换

/script for i=1,16,1 do if (UnitBuff("player",i)~=nil) then if (string.find(UnitBuff("player",i),"Mon")~=nil) then CastSpellByName("雄鹰守护(等级 1)");break;end end if(i==16) then CastSpellByName("灵猴守护");end end

19、 武器切换:
功能:用瞄准的时候就用速度慢的武器,然后自动使用瞄准,然后打怪的时候就自动换到

速度快的武器
说明:
(1) 高攻低速枪弓放在(3,4)
(2) 武器切换,在1.7中已经失去意义了。那时,武器切换,必须有冷却时间,比如长

剑,切换后好象要1.5S后才能使用
(3) 有朋友非要这样的宏,我也就给出如下代码,凭经验应该可行,但本宏尚未经本

人验证成功,特此申明。因为本人只有一把烂玩程,555。

/script PickupInventoryItem(18);PickupContainerItem(3,4)
/施放 瞄准射击(等级 1)
/script PickupInventoryItem(18);PickupContainerItem(3,4)

21、 所谓8码外用箭,5码内用摔绊。

其实是有效射程内用远程,近身用摔绊。意义不大。但有朋友实在很想要,就给出一个

吧。我用的毒蛇作试验,把它放在1号技能栏从左向右数第2个格子里。如果想用震荡,

也行,可以放在第3个格子中,同时把下面宏中的2改成3,就可以了。

/script if(UnitName("target")~=nil and (IsActionInRange(2) == 1)) then CastSpellByName("毒蛇钉刺(等级 1)"); else CastSpellByName("摔绊(等级 1)");end
----------------------------------------------------
(22)破坏图腾
以下宏在ZR中测试通过。注意,复制后请检查行末,不能有空格,如果有,请删除。

破坏图腾1
功能:用远程打图腾,然后切换回最后一个攻击过的目标。
说明:在ZR中可以放心使用,便必须在敌人放出以下二个中至少一个时才行,不然可能

会报错。如果想打别的图腾,请自行修改图腾名

/target 熔岩喷射圈腾
/target 强效治疗结界
/script Jump()
/施放 奥术射击(等级 1)
/script TargetLastEnemy()

破坏图腾2
功能:用远程打图腾,然后切换回最后一个攻击过的目标。
说明:在ZR中可以放心使用,打掉对应名字的图腾。只是,这个宏只能打一种图腾。如

果想打别的图腾,请自行修改图腾名。或者,多做几个宏,分别改为不同的图腾名,也

行。

/target 强效治疗结界
/script if (string.find(UnitName("target"),"结界")~=nil) then Jump() ;CastSpellByName("奥术射击(等级 1)");else ClearTarget() end
/script TargetLastEnemy()

破坏图腾3
宏名:图腾宏冬泉温泉版
功能:对付快速施放图腾一到三个的图腾师,远程打掉图腾,再切换回原先的目标
背景:前一个ZR版,在ZR中高度通过,可以使用。但当我到冬泉温泉后,发现不好使了

。故重新作了改进和调试,在冬泉温泉的图腾师身上测试通过。
说明:
1、这是猎人专用版,默认为BB顶着怪。最终的切换回BB顶着的怪
1、如果只有一个图腾,则没什么问题,按一下宏即可。如果必要,再按一下宏,则切换

回原先的攻击目标;
2、如果图腾同时出现,>=2个,则要多按几次宏键,注意在打第2个或第3个图腾时,

可能会使用毒蛇或蝰蛇钉刺,此时会报“无效目标”的出错信息,不用管它,注意,这

时要稍等会儿,等紧跟着的自动射击打掉选中的图腾后---后,再按一次宏键切换回

原先的攻击目标。
4、如果组队中,可以把宏中的 PET 替换为 PARTY1,其中,队中第一个队友为

TANK,如果队中第4个队友为TANK,则要改为 PARTY4。这样,最终的主要攻击目标是

TANK在顶着的怪
5、如果要打别的图腾,请把宏中对应的图腾名替换,只需要图腾名的前3个汉字即可。

比如,要打“火焰新星图腾”,只需要把 月焰 替换为 火焰新

代码:
/target 地缚图
/target 月焰
/script Jump()
/施放 奥术射击(等级 1)
/施放 毒蛇钉刺(等级 1)
/施放 蝰蛇钉刺(等级 1)
/script if UnitIsDead("target") then AssistUnit("pet") end

[ 此贴被minsoul在2005-12-17 17:33重新编辑 ]

二区月光林地矮猎人:长天猎风
游戏为玩为体验为交友,这是第一位的。
欢迎同意者加我好友
---------------------

鹰守/豹守切换 (上机试验成功!)

/script for i=1,16,1 do if (UnitBuff("player",i)~=nil) then if (string.find(UnitBuff("player",i),"JungleTiger")~=nil) then CastSpellByName("雄鹰守护(等级 1)");break;end end if(i==16) then CastSpellByName("猎豹守护");end end

冰冻陷阱:
/施放 冰冻陷阱(等级 1)
/s 冰陷阱!别打冰住的怪,能冰10S!

冰霜陷阱:
/施放 冰霜陷阱
/s 霜陷阱!请在陷阱上顶怪,布衣开战2S后动手!

假死:(假死后当前目标不会消失,但假死刹那间则已经清除当前目标而提高成功率。因为使用中发现,假死后,当前目标消失的话,起来后还得重新选定目标,不太方便,故故作此改进)
/script PetFollow()
/script ClearTarget()
/施放 假死
/script TargetLastEnemy()

驱散射击:(收宠驱散后,取消自动攻击状态,但当前目标冰变。因为使用中,经常一驱散后,宠也收了,可是自己立马又给我敌人一次攻击,把敌人打醒了,很不方便,故作此改进)
/script PetFollow()
/施放 驱散射击
/s 困惑4S!挨打解除
/script ClearTarget()
/script TargetLastEnemy()

yuhaiyou86 2006-02-01 17:38
破坏图腾
以下宏在ZR中测试通过。注意,复制后请检查行末,不能有空格,如果有,请删除。
破坏图腾1
功能:用远程打图腾,然后切换回最后一个攻击过的目标。
说明:在ZR中可以放心使用,便必须在敌人放出以下二个中至少一个时才行,不然可能会报错。如果想打别的图腾,请自行修改图腾名

/target 熔岩喷射圈腾
/target 强效治疗结界
/script Jump()
/施放 奥术射击(等级 1)
/script TargetLastEnemy()
破坏图腾2
功能:用远程打图腾,然后切换回最后一个攻击过的目标。
说明:在ZR中可以放心使用,打掉对应名字的图腾。只是,这个宏只能打一种图腾。如果想打别的图腾,请自行修改图腾名。或者,多做几个宏,分别改为不同的图腾名,也行。
/target 强效治疗结界
/script if (string.find(UnitName("target"),"结界")~=nil) then Jump() ;CastSpellByName("奥术射击(等级 1)");else ClearTarget() end
/script TargetLastEnemy()
破坏图腾3
宏名:图腾宏冬泉温泉版
功能:对付快速施放图腾一到三个的图腾师,远程打掉图腾,再切换回原先的目标
背景:前一个ZR版,在ZR中高度通过,可以使用。但当我到冬泉温泉后,发现不好使了。故重新作了改进和调试,在冬泉温泉的图腾师身上测试通过。
说明:
1、这是猎人专用版,默认为BB顶着怪。最终的切换回BB顶着的怪
1、如果只有一个图腾,则没什么问题,按一下宏即可。如果必要,再按一下宏,则切换回原先的攻击目标;
2、如果图腾同时出现,>=2个,则要多按几次宏键,注意在打第2个或第3个图腾时,可能会使用毒蛇或蝰蛇钉刺,此时会报“无效目标”的出错信息,不用管它,注意,这时要稍等会儿,等紧跟着的自动射击打掉选中的图腾后---后,再按一次宏键切换回原先的攻击目标。
4、如果组队中,可以把宏中的 PET 替换为 PARTY1,其中,队中第一个队友为TANK,如果队中第4个队友为TANK,则要改为 PARTY4。这样,最终的主要攻击目标是TANK在顶着的怪
5、如果要打别的图腾,请把宏中对应的图腾名替换,只需要图腾名的前3个汉字即可。比如,要打“火焰新星图腾”,只需要把 月焰 替换为 火焰新
代码:
/target 地缚图
/target 月焰
/script Jump()
/施放 奥术射击(等级 1)
/施放 毒蛇钉刺(等级 1)
/施放 蝰蛇钉刺(等级 1)
/script if UnitIsDead("target") then AssistUnit("pet") end
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-09-19
以下是我在网上找到并收藏的很容易理解的宏命令教程。如果你能耐心看完并理解后掌握,那你就有机会成为做宏的高手了

(转)第一章 宏命令的函数说明

1.1什么是宏

宏是一组命令的一个集合,通过单点触发多个动作按顺序执行。比如战斗中发布命令:法师在变羊的时候喊出被变怪物的名字,提醒队友不要再做重复的事情;德鲁伊在施放激活的同时告诉队友已经对谁施放了激活等等。几个简单得动作便可以用一个宏来完成。

你说啥?

“打字也不算麻烦?”

“等要了你的命就会很麻烦了”。^_^

另(你烦不烦啊……):大家对魔兽得宏命令要有一个正确的认识。不要觉得很简单或是看也不看就说太难,不懂!魔兽世界的宏命令同样继承了魔兽世界易于上手,难于精通的特点。简单的宏完全不需要有任何程序基础就能编写出来,看个例子先:

下面这个宏摘自老婆的经典语录――

/Y %t,给你个圈圈去做神仙吧!

/施放 真言术:盾(等级 9)

这个宏的效果是给目标加上个9级的盾,然后用红字喊:<目标名字>,给你个圈圈去做神仙吧!

是不是很简单啊?是不是?是不是啊?

当然,我在前面说了,还有难于精通的。让我们再看个例子:

这个宏摘自网上

CastSpellByName("Spell Name(Rank X)");

if ((SpellIsTargeting()) and (not UnitIsFriend("player","target")))

then

SpellTargetUnit("player");

end;

TargetLastEnemy();

这个宏的效果是在没有目标或者目标是敌人的时候给自己加增益魔法或治疗。

在这个宏里面用到了if和then的条件判断语句。

有没有吓到你呀?

没有??

再看下面这个,同样摘自网上

function GetSpellIdByItsName(myWantedSpell, myWantedRank)

local spellId = 1;

local spellBook = "spell";

local spellName, rankName;

spellName, rankName = GetSpellName(spellId, spellBook);

while (spellName ) do

if ( ( spellName == myWantedSpell ) and ( ( not myWantedRank ) or ( rankName = myWantedRank ) ) ) then return spellId; end

spellName, rankName = GetSpellName(spellId, spellBook);

end

return -1;

end

里面可以自己定义function,还使用了while,do这样的循环语句,是不是让你想到了些什么呢?

好了好了,我想你们已经被我吓到了,我的目的达到了。^_^

注(大家无语了吧!):魔兽世界的宏命令有些9城已经汉化(不知道是不是9城进行的汉化),在编写宏的时候可以直接使用中文。如“/cast”与“/施放”就是相同的命令。而有些宏命令却只能使用英文。在此表示强烈BS。

本章最后说一下版本,在写这篇文章的时候魔兽的版本是1.9.4,升级后宏命令如有变动则不在此说明之列(此句属于免责的废话)。

从下一章开始,我们正式进入魔兽宏命令的制作教程,大家要有心里准备哦

2如何制作宏

调出宏命令的编辑窗口有两种方式:

1.在聊天栏输入/MACRO后回车。

2.按ESC调出系统菜单选择【宏命令设置】

看见了吧?

弹出一个窗口,上面有【新建】和【退出】两个按钮。点【新建】,又会弹出一个窗口。五颜六色的图标包括了WOW几乎所有的技能图片,随便选一个你喜欢的,它就是你设置的宏命令的图标了,给它取个名字吧!方便你用的时候好找。然后回到第一个窗口,它的下半部分是一个输入栏(别说找不到…),在里面输入宏的内容,然后点【退出】。

我们以牧师为例:选中牧师“复活术”的图标,在名称处填写‘复活’。返回到第一个窗口在输入栏中输入下面的命令:

/me 开始施放复活术

/me 的复活术被%t抵抗

/me 开始变得愤怒了

/me 获得了狂暴效果

/me 施放皮鞭失败:%t对此免疫

/me 施放辣椒水失败:%t爱吃川菜

/me 开始施放色诱术(空格,空格…….)%t 复活了!

/施放 复活术(等级 1)

PS:一定要注意%t是在英文输入下输入的。中文输入法下是全角模式不被系统接收。HOHO~

接下来你要做的就是把这个代表你宏命令的图标用鼠标左键拉到快捷栏里,可以设定热键来使用,也可以用鼠标点击。反正是想怎么用就怎么用…,使用方式和普通技能相同

最后留给大家一个思考题,在上面的例子中,“/me”、“%t”“/施放”都是什么作用,牧师职业的玩家可以自行制作后观看效果,可以更改文字,以加强抓狂效果:非牧师职业可以找牧师借鉴。牧师就是好!就是好!

“你说啥?”

“你老婆在你后面用指甲抚摸你脖子的时候你说牧师不好吗?”

宏命令的初级教程(上)

有了前两章的基础,大家对魔兽世界的宏命令应该有了一定的认识。下面我将对宏命令做出更加详细的介绍,

前两章你没看?

赶快去恶补吧!

魔兽世界的宏命令大概有几千个,在初级教程里面将讲解最常用的命令,实现的功能也相对简单。有些人在此时可能在想编写一个宏可以完成一套攻击动作,如“换武器――施法――换回武器”等等。这确实是一套连续动作,不过能实现这套动作的叫外挂而不是宏,魔兽的宏不支持带有冷却时间的技能连续使用,因此那些想要自动完成某套动作的玩家你们的白日梦可以醒醒了。^_^

我这样说是不是会很打击大家的信心啊?好了。我们赶快开始。举个例子先:

网上一个很经典的宏例子

/Kneel

/say 如果你不嫁给我,那么我就一辈子不起来…”

这样你的人物就会先下跪再说:"如果你不嫁给我,那么我就一辈子不起来…"

在这里用到两个宏命令/Kneel和/say,宏命令是不分大小写的。/kneel是个下跪的动作,/say后面的文字会以普通对话的形式在游戏中表现出来。我们可以变化一下。

/Kneel

/y 如果你不嫁给我,那么我就一辈子不起来…”

最后的话是大喊而不是普通对话。大喊是用红字表示出来的。同理,我们可以把/say、/y变成/g(工会说话),/p(小队说话),把/kneel变成/dcane(跳舞)等等。

我们开始恶搞:

/cry

/y 小强,你怎么了小强…

大家可以将上例自行添加至个人的宏中以查看效果

此宏虽然高深复杂,但各位智商180+的高手理解起来还是very easy。

我们说点实在的……看下面这两个命令

/Assist 这是个协助进攻的命令。当你的队伍陷入混战,自己目标不明确时,只要点击自己的某队友,然后使用这个命令,你的目标就会变成该队友当时所选中的目标。大家集中火力消灭该目标吧!

/Target 这是一个自动选择目标的命令,你可以在宏里输入/Target (张三),那么当你按下这个宏时,你将自动选定这个叫张三的目标。

看到上面这两个命令大家可以想到什么?

我来举个法师的例子:

/target (主坦克名字)

/assist

/施放 火球术(等级 10)

效果嘛……..坦克打谁你打谁,痛打落水狗。明白了吧!大家可以更改施放的法术以适应不同职业的需要

另外,希望大家在看文章的过程中勤动脑筋。这个宏如果牧师用将会产生更大的作用(唉~~没办法,老婆是牧师,当然研究这方面比较多)。

看下面,老婆现在用的一个宏:

/target (怪物名称)

/assist

/施放 快速治疗(等级 7)

效果嘛……怪物打谁我给谁+++++,不怕人多找不到人,选不到人,点错人。反正怪物打谁我+谁那是绝对没错的。此宏在团队推黑翼这样的高级副本的BOSS时非常有效。建议牧师人手一个。因为推黑翼BOSS时坦克不止一个,怪物的目标来回变换,鼠标选择人物难免手忙脚乱。我们来个以不变应万变。大家都会夸奖牧师操作好。HOHO~~

宏命令的初级教程(下)-几个通用宏命令的解释与探讨

首先,如果你还不了解宏请仔细浏览前三章的内容,其次,我这里所列出的宏都尽量使用中文。如果你还是看不懂......请返回

第一个例:

/跟随

/me 悄悄把手伸进%t的口袋!

/say %t,我在跟着你,不要回头,不要翻栏杆,不许带我绕远路。否则杀无赦!

/施放 真言术:韧(等级 6)

此宏非常简单,先选择一个友方目标,点此宏后,玩家会跟随选定的目标并生成一个表情动作,而且提示目标正在跟随他。最后给一个韧作为报答。根据等级施放韧这段程序比较复杂,不在初级班讨论之列,HOHO~。把这个宏贴上来的目的是为了让大家理解在编写宏的时候可以很灵活。“/跟随”是一个系统中提供的动作。同理,/跳舞、/坐下等动作都可以用。

/me是生成一个系统表情,后面的文字大家自己编辑,创意,再创意!

/say 后面的文字会以普通对话的形式表现出来,“/P”“/G”“/Y”“/团队”等不同的对话方式也可以使用

/施放后面跟一个技能,大家根据不同职业施放后面跟不同的技能。

这是最基础的宏,也是最灵活的宏,用处与用法非常广泛,变化之多居于宏命令首位。

下面这个宏作用是通知队友自己法力不足,然后坐下。进本思想和上例相同,就不多做解释了。如果看不懂就先去翻翻我前面些的文章。

第一个改:通知别人法力不足后坐下

/魔法耗尽

/P 没蓝了,大家自求多福吧!
/坐下

第二个例:对自己使用绷带
/target 张三
/script UseContainerItem(4,11)
/script TargetLastEnemy()

我们现在对上例进行解释,比较专业的话我就不说了,咱们白话讲解。

第一句:/target 张三

这句话的意思是选中屏幕中叫“张三”的玩家。因为是给自己上绷带,所以名称肯定是自己没错了。前章有过关于这个命令的例子。

第二句:/script UserContainerItem(4,11)

/script是系统提供的关键字,后面跟函数(啥是函数?这个暂时不需要明白,我怎么写,你也怎么写。先体会体会)。UserContainerItem(4,11)表示用鼠标右键点击4号背包第11个格子中的物品,要注意,UserContainerItem()就是个函数,该大写的字母一定要大写,否则系统不认的。并且命令前面必须加入/script (绝大多数命令不需要记住,需要用到的时候再查资料就可以了。上千个这么长的命令,让暴雪员工背下来试试)。

背包编号嘛……最初进入游戏时所带的那个16格的背包编号为0,自右向左依次为0~4号。那么大家可以明白4号背包就是最左边的背包了吧!背包格子编号嘛……第一排(最上面一排)从左开始数1、2、3、4…...第二排从左开始5、6、7、8,第三排……..第四排……。如果是第一排只有两个格的呢?顺序为第一排1、2,第二排3、4、5、6,……

累死我了,不知道说得这么麻烦大家能不能理解。17173又不能贴图:(

第三句:/script TargetLastEnemy()

这句话的意思就是选择上次所选的目标为当前目标。TargetLastEnemy()是一个选择上次目标的函数,必须跟在/script后面才能正确执行

最后,让我用文字来给大家描述一下使用这个宏的情景

你中了怪物的大招,血还有很少(危险)

你点了这个宏,选定了自己为目标,给自己上绷带,目标又转回怪物

你继续勇猛战斗……

思考:

1)在没蓝的时候通知大家,然后喝水或吃药这个宏在你们现在看来是不是很简单了呢?

2)上面的例子大家自由变化,还可以做出多少有用的宏呢?

好了。我的初级教程到这里就结束了,别说太简单。我个人觉得初级教程就应该是人看人会的教程,弄一大堆if、for、while等等,说也说不明白,看也看不明白。就只剩复制、粘贴可用。万一少1个字母、打字的时候一个冒号的错误,想检查也不可能,只能放弃。

初级教程注重的是使用的灵活。随手而来,效果不同凡响。

补充一些在建立宏时常用的方法

在编辑宏命令时可以按住Shift键,再用鼠标左键点击技能书上的一个技能图标,这样该技能的施放命令将自动添加进宏命令窗口中。避免手动输入过程中的中英文符号错误

宏命令中级进阶教程(上)――技能连用
在中级教程中我讲些什么好呢?真是头疼…….决定了。在上半部分我先解决一些大家关心的问题――技能连用(N多N多人问到这个问题),然后在下半部分讲解一些程序和函数的基本用法,给大家迈向高阶打个基础。希望我下面所讲的内容大家都能听懂。更希望大家听懂后不要扁我!如果被郁闷了就去找暴雪
大家可能对此标题有非常浓厚的兴趣,就象我当初。然而……法术的同时施放有着极为严格的限制。直接导致此类宏的实用问题
首先,大家都需要了解一个概念-“冷却”,冷却是魔兽世界技能施放的规则,意为在一个技能施放后需要多长时间才能再次施放,冷却分为3种情况,单技能冷却,同类技能冷却和公共冷却
例如:在喝下一瓶治疗药水,想再喝下一瓶同样的治疗药水需要3分钟后才可以,那么此技能的冷却时间是3分钟,大家可能已经发现,喝完治疗药水后想要再喝法力药水同样需要等待3分钟的冷却时间,那么我们说此技能的同类冷却时间也是3分钟(药水属于一类,其他属于同类的技能大家可以自己发现),如果我们想要在喝下治疗药水后发动其他动作,如魔法攻击等,需要等待1.5秒后才能使用,那么我们说此技能会触发公共冷却。公共冷却的时间是固定的1.5秒。此处有两个例外,盗贼和豹形态的德鲁依。他们的公共冷却时间是1秒(职业优势)
PS:好想让暴雪取消冷却啊!那德鲁依的月火机关枪VS法师的炸弹超人…….
YY结束,继续正题。正因为施放技能冷却时间的存在,导致只能在按键时施放法术。宏不可能等待任何时间后施法。施法一般会导致公共冷却。只有通常能近乎即刻施放的法术才能在宏中一次施放。这意味第一个法术必须是瞬发的,并且必须不会引发下一个技能的冷却。
因此(说到重点了啊!大家注意看),所有试图在奥术飞弹、冰环、闪现后瞬发冰弹的朋友们,现在就放弃吧!第一个法术必须是瞬发的,而后的法术必须能在第一个之后立即施放。没有方法等待1秒或1.5秒的公共冷却经过。
PS:刚说过,有事找暴雪。我是无辜的
有很少一些法术,通常每个职业一对,符合同时施放的规则。通常是会影响下一法术的法术,或是影响下一技能的技能。这意味自然之速、气定神闲、英勇一击、猛禽一击、点燃之类才有可能和下一个技能连接起来。它们没有施法时间,并且不会导致公共冷却。更多此类技能需要大家去观察!!
达成此类技能连用的宏很简单。建立一个宏来施放两个技能,而后,需要使用函数SpellStopCasting()插入两个技能之间,这个函数的作用是取消当前的施法。很关键的。看例子
第一个:
/施放 气定神闲
/script SpellStopCasting();
/施放 炎爆术(等级 3)
这使你一键完成瞬发的炎爆术
第二个:
/施放 点燃
/script SpellStopCasting();
/施放 火焰冲击(等级 7)
这使你一键完成必定致命一击的火焰冲击
盗贼的例子:请把绷带放在最右边第一个格子里面,然后建立下面这个宏
/施放 凿击
/script SpellStopCasting()
/script UseContainerItem(0,1)
/script TargetUnit(“player”)
打晕敌人后给自己上绷带
还有些例子我就不一一举出了。如战士的英勇一击+断筋,盗贼冷血+5星剔骨,术士诅咒增幅+痛苦诅咒。猎人标记+宠物攻击,圣骑士神恩+圣光,撒满元素掌握+链闪电。
有例外的情况。那些提高“下次攻击”强度的法术,如“英勇一击”或“猛禽一击”,在宏里不需要加入SpellStopCasting(),因为会取消法术。
有些物品不受公共冷却的影响,那些造成公共冷却的法术可以与物品结合。德鲁伊可以通过将回春与血瓶结合来做紧急自救。法师的火焰护符也可以和下一个技能连接起来。更多的使用方式就靠大家寻找了。
在宏的顶部再加一条”/script SpellStopCasting()”。终止任何已经施放的法术,这样可以取消正在施放的法术,立刻完成宏的操作。此部分的详细内容我将放到高级教程中进行详细的讨论
最后,有一些正在研究中的问题,如果将自然之速或气定神闲与一个有施法时间的法术结合,将不能适用,也不适用于形态或姿态切换。我被朋友烦了很长时间的“切回施法形态治疗”还没有结果,如果有人找到解决的办法请告诉我,我将非常感谢!

宏命令中级进阶教程(中)――在宏里运用函数写程序

从这一章开始,我开始为大家介绍函数和用函数写一些简单的程序(什么是函数?你不需要了解,知道怎么用就成),灵活的运用函数可以做到让很多人羡慕的效果。这需要大家略微了解写程序的知识,我会在讲解中进行介绍,但也需要你去消化、去琢磨。我写教程是为了让更多的人会运用宏而不是准备开个写宏的专门店。

提示:即便使用函数和程序语言也很难实现2个或2个以上的动作连用(何时可以使用2个技能请参照我的教程第五章)。更多的时候是一种智能判断,如战士在切换防御姿态前先换成单手武器+盾,切换狂暴姿态时换成双武器等,希望不要再遇到让我写个机器人程序的人:(

考虑到所有立志于学习宏的玩家,我是怎么麻烦怎么来!

例子(一):牧师上盾并随机说话

/script a=”%t,给你个有限无敌圈!”; b=”%t,把你变上帝!”;c=random(5)

/script if c==1 then SendChatMessage(a) else if c==2 then SendChatMessage(b) else end;end

/script CastSpellByName("真言术:盾(等级 9)")

第一句:/script a=“%t,给你个有限无敌圈!”; b=” %t,把你变上帝!”;c=random(5)

/script:告诉系统下面这段文字是用宏语言写的,如果玩家想使用函数必须在每行的开始加上这一句;

a=”%t,给你个有限无敌圈!”;b=”%t,把你变上帝!”:这是一个赋值语句(注意用引号把文字括起来。这是必须的,否则系统会认为是个变量而造成错误),让后面的所写的语句中‘a’代表“给你个有限无敌圈!”这几个字;‘b’代表“把你变上帝!”这几个字。无论任何时候输入%t都会转化为所选目标的名称。在这里的‘=’可以理解为‘代表’的意思而不是“等于”(什么是等于?看下文……正规的解释可不是这样的,希望我这么说能让没学过程序的人理解),宏命令中只能写入255个字符,字字如金啊!再说每次说话是输入a方便还是打一大串字方便?

c=random(5):random(5)表示在1~5中间取一个随机数字。那么这句话的意思就是‘让c代表一个1~5之间的随机数字’,这个数字数字是你每点击一次宏就自动生成一次。

我们整体来看看第一句的意思:“让a代表”给你个有限无敌圈!”,b代表”把你变上帝!”,c代表一个1~5之间的随机数字”。大家理解了吗?

再看第二句:/script if c==1 then SendChatMessage(a) else if c==2 then SendChatMessage(b) else end;end

/script:我就不解释了,看上文

if…..then……else if……then……else……end;end:这是一个判断句,咱们用中文来说就是“如果…….执行……否则如果……执行……结束;结束”,(我特意把每个关键字后面的空格多加了一个,希望大家看清楚并了解“if c==1”和“ifc==1”不是同一个意思。系统会认为第二个是错误的)

注:‘如果’后面要跟一个判断条件,成立就直接执行下一句的内容,不成立就跳转执行否则的内容;有几个‘如果’最后就要跟几个‘结束’。如果你有5个条件,每个条件都要跟不同的结果,那你可以通过不断的‘否则如果’来完成

SendChatMessage(a):这句的意思是把“a”所代表的内容以普通说话的方式表达出来,在本例的效果如同“/s %t,给你个有限无敌圈!”

SendChatMessage(b):意义同上

c==1:这是一个判断语句,判断c是否等于1(,一个等号是赋值,两个等号才是判断,切记切记),你可以用其他判断方式“==”等于、“>”大于、“<”小于、“>=”大于等于、“<=”小于等于和“~=”不等于。

第二句程序的意思:如果c等于‘1’,用普通对话说:“<目标名称>,给你个有限无敌圈!”,否则,如果c等于2,用普通话说:“<目标名称>,把你变上帝”,否则结束此程序。

第三句:/script CastSpellByName("真言术:盾(等级 9)")

这句的意思是施放9级盾,相当于之前讲过的“/施放 真言术:盾(等级 9)”这条命令,不同的是“/施放”需要单起一行,并只能执行这一条命令。“CastSpellByName(”法术名称”)”可以插入到程序的任何地方从而实现根据不同的情况使用不同的技能。

最后:请注意你的字母大小写,注意逗号,括号,冒号,引号,分号等都要用英文,if、then、else等词语后面都要加空格或者分号,在出现问题后先检查自己所写的宏里面有没有这些错误。

这个宏效果是用同一技能说不同的话,总听同一句话多烦啊!20%几率说第一句,20%几率说第二句,60%几率不说话――我们之前初级教程的升级版!希望大家喜欢

附加讲解内容:

(一) 关于SendChatMessage()这个函数的深入了解――

使用格式:SendChatMessage("说话内容","说话方式","语言","频道")

作用:说话

我在例子中用这个函数用的非常简单,可以如果我们想大喊出来怎么办?想在行会中说话怎么办?在这里我就对“SendChatMessage()”多讲些内容,毕竟在我看来这个可能是用的最频繁的函数了

例:/script SendChatMessage(“主动给钱或是由我抢劫二选一”,” say”,”通用语”,” YELL”)

作用:大喊“主动给钱或是由我抢劫二选一”和在宏里面输入“/y主动给钱或是由我抢劫二选一”效果相同。

"说话内容":要发送的消息
"说话方式":聊天消息想要发送的类型,省略时为"SAY",可使用:
1."SAY":普通说话 2."WHISPER":密语,必须在参数"频道"中指明密语对象的名字,可配合函数UnitName("unit")使用(这个函数我们之后再说)

"语言":写上“通用语”“精灵语”“侏儒语”“兽人语”等等,可以省略

"频道":必须在参数"频道"中指明频道的编号,省略时为”综合”,我们还可以用以下的参数:
1."GUILD":工会 2."PARTY":小队 3."RAID":组团 4."YELL":大喊

注意:标点符号用英文,每个内容、方式等用逗号隔开,除 “说话内容”外均可以省略。

(二)生成一个随机数的函数random()

使用格式:random(起始值,结束值)
作用:生成一个在起始值和结束值之间的随机数
随机数:无起始值和结束值时位于[0,1]区间;提供单个参数n时,随机数位于[1,n]区间;提供两个参数起始值和结束值时,随机数位于[起始值,结束值]区间
例:/script random(50,100)

作用:生成一个50~100之间的随机数
第2个回答  2006-09-22
我也是猎人
练到37级了,现在也只用了3个宏命令
1、宠物攻击+印记
/script PetAttack()
/施放 猎人印记(等级 2)
2、猛擒一击+摔拌
/施放 猛擒一击(等级 4)
/施放 摔拌
3、找精英怪

至于假死什么的,有插件帮忙!

至于详细的,楼主有兴趣的话可以加我QQ16837659
一起研究研究大家!本回答被提问者采纳
第3个回答  2006-09-18
几乎是不可能的……
因为这基本上可以算是XML编程了,你有见过“XXX编程详解”么……

如果需要的话,我只能建议楼主去学XML,还要学英文(因为要看暴雪提供的函数……)
第4个回答  2006-09-18
宏就是为了把一组按键组合到一起,通过一个键来实现。。
比如:按下1后就可执行1、3、5、6
相似回答