魔兽世界常用宏收集

来源:互联网 发布:设置淘宝vip有什么用 编辑:程序博客网 时间:2024/04/27 08:58

索引:

1.友好魔法
...1.A 对友好单位或自己施法
...1.B 只对自己使用
...1.C 对特定队员施法
...1.D 按目标的职业分别使用不同魔法
...1.E 按目标等级使用不同级别的魔法
2. 判断HP,MP,连击点量
...2.A 按HP消耗量不同使用不同治疗魔法
...2.B 根据目标HP量决定是使用灵魂抽取还是抽取生命
...2.C 根据敌人是否使用魔法来决定是使用结舌诅咒还是虚弱诅咒
...2.D 根据连击点的多寡和能量的多少来决定使用技能种类
3.绷带
...3.A 对友好单位或自己使用绷带
...3.B 只对自己使用
4.武器相关
...4.A 对武器使用砺石
...4.B 更换备用武器
...4.C 切换主手与副手武器
...4.D 双手武器 <-> (主手武器+副手物品)
...4.E(主手武器+副手物品)<-> (单手武器+副手物品)
...4.F 单主手武器或双手武器 <-> (主手武器+副手物品)
...4.G 更换备用主手武器
5.组队相关
...5.A 设置辅助目标+自动辅助
...5.B 变羊+信息提示
6.打开/关闭背包
7.宠物相关(猎人、术士)

...7.A 施放猎人印记的同时宠物攻击
...7.B 切换到宠物正在攻击的目标并施放毒蛇刺击
...7.C 召回宠物并使用散射
...7.D 选择目标,开始攻击
...7.E 喂食
8.判断目标身上是否有特定BUFF
...8.A 猴之守护+物理攻击
...8.B 鹰之守护+自动射击
...8.C 鹰之守护+瞄准射击
9.影遁相关(暗夜专用)
...9.A 藏身
...9.B 进食
10.切换技能栏
11.目标信息
12.任务接受页面相关

...12.A 增加文字浮现速度
...12.B 取消文字逐渐浮现效果
...12.C 直接接受当前窗口中的任务
13.切换全屏模式与窗口模式
14.设定“真实鼠标视野”
15.延迟宏(需要Cosmos)

...15.A 盗贼武器上毒并定时提示
...15.B 魔法效果消失提示
...15.C 使用闷棍并在不同时段内提示不同信息
...15.D 战士逃跑宏
16.数组宏的实际运用
17.通用变量的设置与使用
18.图腾破坏
19.自然之速(气定神闲)


1.友好魔法

1.A 对友好单位或自己施法
/cast 治疗术(等级1)
/script TargetUnit("player")

如果你当前选择的目标是可以对其使用此魔法的友好单位的话,则对其使用魔法。
如当前目标是不能接受此魔法的单位,或没有选择任何目标的话,则对自己使用魔法。
而且不会对当前目标进行切换,不会中断对当前敌人的攻击。

将 “治疗术(等级1)” 换成任何能对友好单位释放的魔法与技能。

如在最后再加上如下代码
/script if ( UnitName("target") ~=nil and UnitInParty("player","target") ) then SendChatMessage("<治疗 %T >", "PARTY"); end

则在治疗队友时,在party中发出相应的信息。

将<治疗 %T>换成任何你喜欢的信息,%T表示接受治疗的目标的名字。
将UnitInParty换成UnitIsFriend,则对任何友好单位施法时都发出信息。

将"PARTY"换为"EMOTE",则以自定义表情的方式发出信息。如SendChatMessage(" 将在3秒内治疗 %T", "EMOTE"),则别人在聊天窗口中看到:"汉客将在三秒内治疗小郎"

将"PARTY"换成"WHISPER", "COMMON", UnitName("target"),则采用密语形式对你施法的目标发送信息。"COMMON"表示密语所用的语言种类。下面是一个语言列表:

Common 人类语,联盟通用语
Orcish 兽人语,部落通用语
Dwarvish 矮人语
Gnomish 侏儒语
Darnassian 暗夜精灵语

还有其他的一些实现方法如:
/cast 治疗术(等级1)
/script if SpellIsTargeting() then TargetUnit("player")


/script if ( not UnitIsFriend("player", "target") ) then CastSpellByName("治疗术(等级1)"); end
/script if ( SpellIsTargeting() ) then SpellTargetUnit("player"); end


/script if (UnitName("target") ~=nil and UnitIsFriend("player","target")) then CastSpellByName("治疗术(等级1)") SendChatMessage("即将治疗 %T", "Party") else TargetUnit ("player") CastSpellByName("治疗术(等级1)") TargetLastEnemy(); end

并不值得推荐。而且后一个宏会切换当前目标,中断攻击。

1.B 只对自己使用
如果想在任何条件下都只对自己使用治疗的话,用如下的宏:
/target "player"
/cast 治疗术(等级1)
/script TargetLastEnemy()

但这个宏同样有切换当前目标,中断攻击的弊病。


1.C 对特定队员施法
下面的这个宏只对队伍中的第一名队员施法。party1,party2,party3,party4分别指代队伍中的其他4名成员。也可以结合组队相关中的目标设置宏来使用。
/script if (UnitName("party1") ~= nil) then CastSpellByName("治疗术(等级1)") SpellTargetUnit("party1") SendChatMessage("即将治疗 >>" .. UnitName("party1") .. "<< (3.5s)", "Party") TargetLastEnemy(); end


1.D 按目标的职业分别使用不同魔法
下面是圣骑士的一例。如果目标职业为盗贼或战士则使用力量祝福,否则使用智慧祝福。
/script class = UnitClass("target"); if ( ( class == "Rogue" ) or ( class == "Warrior" ) ) then
CastSpellByName("Blessing of Might(Rank 1)"); else CastSpellByName("Blessing of Wisdom(Rank 1)"); end


1.E 按目标等级使用不同级别的魔法
下面牧师的一例,对目标使用其所能接受的最高等级的“圣言术:韧”
/script P="Power Word: Fortitude(Rank " S={1,2,14,26,38} if (UnitLevel("target") ~= nil and UnitIsFriend("player","target")) then for j=5,1,-1 do if (UnitLevel("target") >= S[j]) then CastSpellByName(P..j..")") return end end end

下面是60级的牧师的实例,另外一种实现方法,语句书写略为不同,更为易读。
/script r=6;l={1,12,24,36,48,60};t=UnitLevel("target");if (t==0) then t=UnitLevel("player");end;if UnitIsFriend("player","target") then for j=r,1,-1 do if (t>=l[j]-10) then CastSpellByName("Power Word: Fortitude(Rank "..j..")");break;end;end;end

下面是60级德鲁依的一例,使用对方能接受的最高级野性印记。实现方法和上面2例略有不同:
/script r=7;l={1,10,20,30,40,50,60};if not UnitIsFriend("player","target")then TargetUnit("player");end;t=UnitLevel("target");for j=r,1,-1 do if (t>=l[j]-10) then CastSpellByName("Mark of The Wild(Rank "..j..")");break;end;end


2. 判断HP,MP,连击点量

2.A 按HP消耗量不同使用不同治疗魔法
在下面的例子中,宏会对玩家自己的HP消耗量进行判断,如小于200则不使用治疗,并在聊天窗口中提示:"health is good",如消耗两大于200小于400,使用3级的Flash of Light治疗,如大于400,则使用5级的Holy Light进行治疗。你也可以用当前的HP量进行判断。
/script x="player";d=UnitHealthMax(x)-UnitHealth(x);if (d>200) then if (d<400) then CastSpellByName("Flash of Light(Rank 3)") else CastSpellByName("Holy Light(Rank 5)") end;SpellTargetUnit(x);else DEFAULT_CHAT_FRAME:AddMessage("Health is good"); end;


2.B 根据目标HP量决定是使用灵魂抽取还是抽取生命
术士根据目标HP量决定是使用灵魂抽取还是抽取生命。大于20则使用抽取生命,否则使用灵魂抽取。
/script if (UnitHealth("target")>20) then CastSpellByName("Drain Life(Rank X)") else CastSpellByName("Drain Soul(Rank 2)"); end


2.C 根据敌人是否使用魔法来决定是使用结舌诅咒还是虚弱诅咒
下面这个是根据敌人是否使用魔法(使用魔法的敌人其MANA肯定大于0)来决定是使用结舌诅咒还是虚弱诅咒。
/script if (UnitMana("target")>0) then CastSpellByName("Curse of Tongues(Rank X)") else CastSpellByName("Curse of Weakness(Rank X)"); end


2.D 根据连击点的多寡和能量的多少来决定使用技能种类
下面是德鲁依猫形态(盗贼也是一样)根据连击点的多寡和能量的多少来决定是使用Rip还是Rake。如连击点大于等于3,则使用Rip,如连击点小于3并且能量有40点以上,则使用Rake。
/script if ( GetComboPoints() >= 3 ) then CastSpellByName("Rip(Rank 2)"); else if (UnitMana("player") >= 40 ) then CastSpellByName("Rake(Rank 1)"); end end

3.绷带

3.A 对友好单位或自己使用绷带
/script UseContainerItem(2,1)
/script TargetUnit("player")

如果你当前选择的目标是可以对其使用绷带的友好单位的话,则对其使用绷带。
如当前目标是不能被打绷带的单位,或没有选择任何目标的话,则对自己使用绷带。
而且不会对当前目标进行切换,不会中断对当前敌人的攻击。

使用此宏,你必须把你要用的绷带放在背包的特定位置中。UseContainerItem(2,1)中的2是背包的编号,1是格子的编号。(2,1)表示右数第3个包的第一个格子。把它们换成对应你绷带位置的编号。
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]

其他格数以此类推。

将第一行换成/script UseAction(25,0,1),则不需将绷带放在背包特定位置,但必须将绷带拖入技能栏的特定位置。25表示技能栏的编号。第一排第一格编号为1,最后一格为12。第二排第一格编号为13,最后一格为24。以此类推。25表示第三排的第一格。

将第一行换成/use "Linen Bandage",则不需将绷带放在背包的特定位置,也不需将其拖入技能栏。将Linen Bandage换成你使用的绷带的名字。推荐尝试,但此宏没有经过测试。

此宏也还有如下的实现方法:
/script UseContainerItem(0,1)
/script if ( SpellIsTargeting() ) then TargetUnit("player"); end


3.B 如果想在任何条件下都只对自己使用绷带的话,用如下的宏:
/target "player"
/use "Linen Bandage"
/script TargetLastEnemy()

同样,这个宏会切换当前目标,中断攻击,盗贼的连击点也会被清空。

下面这个宏也只对自己使用绷带,但在使用后会切换回先前的目标(不管是敌对中立还是友好的)。
/script p="player";t="target";if(not UnitCanAttack(t, p))then ot=UnitName(t);TargetUnit(p);else ot=nil;end;
UseAction(ActionID);if(SpellIsTargeting()) then SpellTargetUnit(p); end if(ot) then TargetByName(ot);end


4.武器相关

Bag:物品存放背包编号
Slot:物品存放格子编号
MainhandBag:备用主手武器存放背包编号
MainhandBagSlot:备用主手武器存放格子编号
OffhandBag:备用副手武器存放背包编号
OffhandBagSlot:备用副手武器存放格子编号
TwohandsBag:备用双手武器存放背包编号
TwohandsBagSlot:备用双手武器存放格子编号

4.A 对主手武器或双手武器使用砺石
/script UseContainerItem (Bag,Slot)
/script PickupInventoryItem (16)

4.B 更换备用主手武器或双手武器
/script UseContainerItem (Bag,Slot)
/script PickupInventoryItem (16)


副手的对应宏,将16换为17即可。

4.C 切换主手武器和副手武器

/script PickupInventoryItem(16);PickupInventoryItem(17)


盗贼可以用这个宏来互换手中的剑与匕首。

4.D 双手武器 -> (主手武器+副手物品)
/script PickupContainerItem(MainhandBag, MainhandBagSlot)
/script PickupInventoryItem(16)
/script PickupContainerItem(TwohandsBag, TwohandsBagSlot)
/script PickupContainerItem(OffhandBag, OffhandBagSlot)
/script PickupInventoryItem(17)


(主手武器+副手物品) -> 双手武器
/script PickupInventoryItem(17)
/script PickupContainerItem(OffhandBag, OffhandBagSlot)
/script PickupContainerItem(TwohandsBag, TwohandsBagSlot)
/script PickupInventoryItem(16)
/script PickupContainerItem(MainhandBag, MainhandBagSlot)


副手物品可以是盾牌、副手武器、副手装备品。注意以上几个宏使用之时,鼠标上不要拖有物品,否则会出错。如要避免,可以使用CursorHasItem()来进行预判断。参看下面的几个宏:

4.E(主手武器+副手物品)<-> (单手武器+副手物品)
/script if ( not CursorHasItem() ) then PickupContainerItem(mainhandBag, mainhandBagSlot); PickupInventoryItem(16); PickupContainerItem(mainhandBag, mainhandBagSlot); PickupContainerItem(offhandBag, offhandBagSlot); PickupInventoryItem(17); PickupContainerItem(offhandBag, offhandBagSlot); end


4.F 单主手武器或双手武器 -> (主手武器+副手物品)
/script if ( not CursorHasItem() ) then PickupContainerItem(mainhandBag, mainhandBagSlot); PickupInventoryItem(16); PickupContainerItem(mainhandBag, mainhandBagSlot); PickupContainerItem(offhandBag, offhandBagSlot); PickupInventoryItem(17); if ( CursorHasItem() ) then PickupContainerItem(offhandBag, offhandBagSlot); end end


(主手武器+副手物品)-> 单主手武器或双手武器
/script if ( not CursorHasItem() ) then PickupInventoryItem(17); if ( CursorHasItem() ) then PickupContainerItem(offhandBag, offhandBagSlot); end PickupContainerItem(mainhandBag, mainhandBagSlot); PickupInventoryItem(16); PickupContainerItem(mainhandBag, mainhandBagSlot); end


4.G 更换备用主手武器
/script if ( not CursorHasItem() ) then PickupContainerItem(mainhandBag, mainhandBagSlot); PickupInventoryItem(16); PickupContainerItem(mainhandBag, mainhandBagSlot); end

5.组队相关

5.A 设置辅助目标+自动辅助
下面是2个配合使用的宏。先在宏窗口第一个空位建立一个宏,选择一个图标,内容为空。
再另建一个宏如下:
/script if (UnitName("target") ~= nil) then EditMacro(1, "Assist "..UnitName("target"), nil, "/assist "..UnitName("target"), 1) end
/script SaveMacros()

对选择的队友使用第二个宏,则自动将第一个宏设置为辅助选择的目标。也就是用宏来更换自动协助的目标,不用手动编辑宏来更换。

5.B 变羊+信息提示
这是一个法师在组队的时候用的宏,在变羊的同时,在PARTY中说明变羊目标的等级名字。
/script if ( UnitExists("target") and UnitIsEnemy("player","target") ) then SendChatMessage("Sheeping Level " ..UnitLevel("target") .." " ..UnitName("target") ..". Don't Attack it!", "PARTY") CastSpellByName("Polymorph(Rank 1)"); if not PlayerFrame.inCombat then ClearTarget(); end end


超简化的一个版本,功能上差一点。
/p Sheeping >>> %t <<<
/cast Polymorph (Rank X)


6.打开/关闭背包

/script ToggleBag(0) 背囊
/script ToggleBag(1) 右数第二个包
/script ToggleBag(2) 右数第三个包
/script ToggleBag(3) 右数第四个包
/script ToggleBag(4) 右数第五个包

上面的几个是切换特定背包的状态,如果当前是打开着的则关闭。如果当前是关闭着的,则打开。
适当的组合可以让你设定只打开特定的几个背包。如猎人可以选择不打开箭筒或子弹袋。

/script OpenAllBags()打开所有背包


7.宠物相关(猎人、术士)

下面的一些宏虽是对应猎人,术士只需稍加改动就可以用了。

7.A 施放猎人印记的同时宠物攻击
/cast Hunter's Mark(Rank 1)
/script PetAttack()


7.B 切换到宠物正在攻击的目标并施放毒蛇刺击
/script TargetUnitsPet("Player")
/assist
/cast Serpent Sting(Rank 1)


7.C 召回宠物并使用散射
此宏是有散射技能的玩家所必需的。
/script PetFollow()
/Cast Scatter Shot()


7.D 选择目标,开始攻击
如果当前目标是友好目标,则协助目标。使用猎人印记,宠物攻击,如果没有在战斗状态,开始自动射击。如果目标是敌人的话,则直接使用技能。此宏在SOLO组队中都比较实用。
/script if (UnitIsFriend("player","target")) then AssistUnit("target"); end
/cast Hunter's Mark(Rank X)
/cast PetAttack()
/script if(not PlayerFrame.inCombat) then CastSpellByName("Auto Shot"); end


7.E 喂食

最简单的一键喂食,把食物放入对应的背包格子中。
/cast Feed Pet
/script PickupContainerItem (Bag,Slot)

下面这个会先判断玩家是否处于战斗之中。如对应的格子中没有食物,则会打开相应的背包。
/script if (not PlayerFrame.inCombat) then if (not
GetContainerItemLink(Bag, Slot)) then OpenBag(Bag); else CastSpellByName("Feed Pet"); PickupContainerItem(Bag, Slot); end end

8.判断目标身上是否有特定BUFF

8.A 猴之守护+物理攻击
下面的宏会先判断玩家身上是否加有猴之守护,如果没有,使用猴之守护。如果玩家未在战斗状态,则开始物理攻击。也可以把Attack换为Raptor Strike。
/script if (not string.find(UnitBuff("player", 1), "Mon")) then CastSpellByName("Aspect of the Monkey"); end
/script if (not PlayerFrame.inCombat) then CastSpellByName("Attack"); end


8.B 鹰之守护+自动射击
]而这个则是先开始自动射击,再判断身上是否有鹰之守护的效果,没有的话,使用鹰之守护。
/cast Auto Shot
/script if (not string.find(UnitBuff("player", 1), "Raven")) then CastSpellByName("Aspect of the Hawk(Rank X)"); end


8.C 鹰之守护+瞄准射击
瞄准射击的版本
/script if (not string.find(UnitBuff("player", 1), "Raven")) then CastSpellByName("Aspect of the Hawk(Rank X)"); else CastSpellByName("Aimed Shot(Rank Y)"); end

9.影遁相关(暗夜专用)

9.A 藏身
影遁的同时躺下,藏身之用……
/cast Shadowmeld(Racial)
/laydown


9.B 进食
吃饭喝水的同时影遁,也是出于安全考虑……
/target "player"
/script UseContainerItem(FoodBag, FoodSlot);
/script UseContainerItem(DrinkBag, DrinkSlot);
/cast Shadowmeld(Racial)

10.切换技能栏

/script CURRENT_ACTIONBAR_PAGE = X
/script ChangeActionBarPage()


将3换成你想切换到的技能栏页数

此宏可以有这样的用法
/cast Aspect of the Monkey
/script CURRENT_ACTIONBAR_PAGE = 3
/script ChangeActionBarPage()

切换技能栏的同时使用猴之守护。

还可以加上前面的BUFF判断
/script if (not string.find(UnitBuff("player", 1), "Mon")) then CastSpellByName("Aspect of the Monkey"); end
/script CURRENT_ACTIONBAR_PAGE = 3
/script ChangeActionBarPage()


11.目标信息
/script if UnitClassification("target")=="elite" then SendChatMessage("".. UnitLevel("target") .. "+ " .. UnitName("target"), "party") else SendChatMessage("" .. UnitLevel("target") .. " " .. UnitName("target"), "party"); end


这个宏在PARTY频道中发出当前目标的一些相关信息。"+"代表精英。效果如下:
[Party]Hank:50 Stormwind Guard
[Party]Hank:43+ King Bangalash

下面是一个目标信息的相关函数列表:
UnitName 如"Coffiex","moonwell"
UnitLevel 如"42","60"
UnitClass 如"Warrior","Shaman"
UnitClassification 如"elite","worldboss"
UnitCreatureFamily 如"Wolf","Cat"
UnitCreatureType 如"Beast","Humanoid"
UnitRace 如"Nightelf","Orc"


12.任务接受页面相关

12.A 增加文字浮现速度
/script QUEST_DESCRIPTION_GRADIENT_CPS = 100


12.B 取消文字逐渐浮现效果
/script QUEST_FADING_ENABLE = nil


12.C 直接接受当前窗口中的任务
/script AcceptQuest()

13.切换全屏模式与窗口模式
/script SetCVar("gxWindow", 1 - GetCVar("gxWindow"))
/console gxRestart

14.设定“真实鼠标视野”
/script CameraOrSelectOrMoveStart(arg1)


15.延迟宏(需要Cosmos)

15.A 盗贼武器上毒并定时提示
给双手的武器都上毒,并在毒性还有一分钟就消退的时候在聊天窗口发出提示信息。
/script UseContainerItem(Bag,Slot); PickupInventoryItem(16); UseContainerItem(Bag,Slot); PickupInventoryItem(17);
/in 1740 /script DEFAULT_CHAT_FRAME:AddMessage("Poison wearing off in one minute.")


15.B 魔法效果消退提示
同样的,你也可以对持续性的魔法使用相似的宏。提示信息将在魔法使用X秒后出现,提示你还有Y秒魔法就将会失效。
/script T = UnitName("target");
/cast Spell(Rank 1);
/in X /script DEFAULT_CHAT_FRAME:AddMessage("Spell will wear off " ..T .." in Y seconds.")


也可以这样,X为魔法的持续时间(秒)。在魔法效果消退时提示信息。
/script T = UnitName("target");
/cast Spell(Rank 1);
/in X /script DEFAULT_CHAT_FRAME:AddMessage("Spell has worn off " ..T)


15.C 使用闷棍并在不同时段内提示不同信息
使用闷棍并在不同时段内在PARTY中提示不同信息。以下是3级的闷棍的例子
/script T = UnitLevel("target") .. " " .. UnitName("target");
/cast Sap(Rank 3);
/script SendChatMessage(T.." sapped.","party");
/in 30 /script SendChatMessage(T.." up in 15.","party");
/in 40 /script SendChatMessage(T.." up in 5.","party");
/in 45 /fire


15.D 战士逃跑宏
这是一个战士逃跑的时候使用的宏,首先使用包中的药水,换上盾牌(此例中其换武器的快捷位于技能栏第一页第11和12格)。使用Thunder Clap减低敌人速度,然后转身逃跑。
/script UseContainerItem(Bag, Slot);ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown(12);ActionButtonUp(12)
/cast Thunder Clap(Rank 1)
/script TurnLeftStart(arg1)
/in 1 /script TurnLeftStop(arg1);ToggleAutoRun()

16.数组宏的实际运用

下面的宏让你只使用一个宏就可以循环地使用数个技能。此以圣骑士为例,第一次使用Seal of the Crusader,第二次使用Judgement,第三次使用Seal of Righeousness,第四次又回到使用Seal of the Crusader,如此循环。
新建宏如下:
/script AQ={};AQ.i=1;AQ.x=function() AQ[AQ.i]() end
/script AQ[1]=function() CastSpellByName("Seal of the Crusader(Rank 1)"); AQ.i=2 end
/script AQ[2]=function() CastSpellByName("Judgement"); AQ.i=3 end
/script AQ[3]=function() CastSpellByName("Seal of Righeousness(Rank 1)"); AQ.i=1 end

再新建一宏如下:
/script AQ.x()

在每次进入游戏之后使用一次第一个宏,然后利用第二个宏就可以实现技能的循环使用了。


17.通用变量的设置与使用

通用变量可以被你所有的宏所调用。
用下面的格式新建一个通用变量
/script setglobal("<variable name>","<string>");

获取通用变量的值

getglobal("<variable name>")

通用变量可以用来简化你的宏,以避免超过宏255的字符的最大限制。比如把技能名放到通用变量中。

通用变量每次进入游戏都必须重新设置。你可以用一个宏来设定你的通用变量。
如下面这样的一个宏:

/script setglobal("HT1","Healing Touch(Rank 3)"); setglobal("HT2","Healing Touch(Rank 4)"); setglobal("RJ","Rejuvenation(Rank 4)");

游戏中的使用实例

/script if (UnitName("target") ~=nil and UnitInParty("target")) then CastSpellByName(getglobal("RJ")) else TargetUnit("player") CastSpellByName(getglobal("RJ")) end; TargetLastEnemy();

18.图腾破坏

下面是德鲁依的一个例子,如果当前选择的目标是图腾则使用一级的月火,如果不是图腾则使用最高级的月火:
/script r=10; if (UnitName("target") ~=nil) and (string.find(UnitName("target"),"Totemf"))~=nil then CastSpellByName("Moonfire(Rank 1)") else CastSpellByName("Moonfire(Rank "..r..")"); end


下面是另一个用于破坏图腾的宏,它会搜寻附近的图腾并对其使用1级的月火
/target [图腾名的前5-10的字符]
/target [图腾名的前5-10的字符]
/target [图腾名的前5-10的字符]
/target [图腾名的前5-10的字符]
/target [图腾名的前5-10的字符]
/cast Moonfire(Rank 1)

下面是一个图腾名列表:
-- Air
"Nature Resistance Totem",
"Windwall Totem",
"Windfury Totem",
"Grace of Air Totem",
"Grounding Totem"

-- Earth
"Stoneclaw Totem",
"Earthbind Totem",
"Tremor Totem",
"Strength of Earth Totem",
"Stoneskin Totem"

-- Water
"Fire Resistance Totem",
"Poison Cleansing Totem",
"Disease Cleansing Totem",
"Healing Stream Totem",
"Mana Spring Totem"

-- Fire
"Frost Resistance Totem",
"Flametongue Totem",
"Magma Totem",
"Fire Nova Totem",
"Searing Totem"


19.自然之速(气定神闲)

下面是萨满自然之速接治疗波的一例:
/target "player"
/script CastAway("swift",10,"Nature's Swiftness","Healing Wave(Rank 9)")
/script TargetLastEnemy();
/script AttackTarget();

使用了自然之速之后马上就能跟上治疗波而不用按2次技能。法师可以将自然之速换为气定神闲,后面的治疗波也可以换成任何可搭配使用的魔法。