论坛首页›综合讨论›WOW宏命令 整理 我是个FS

WOW宏命令 整理 我是个FS

楼主:翼风·翎发表于 2006-11-11 13:44回复 10查看 6,330最后回复 2006-11-14
共 11 楼
发表于 2006-11-11 13:441#
楼主
一:基础教程

  1.什么是宏命令?
  玩过EQ的都知道一点宏的知识,比如组队时用来告诉队友你的行动,告诉目标等。最简单的比如puller 常用的: /v %t过来了,大家集中火力。 法师常用的: /v 我要催眠%t,大家不要打醒他 这些宏个性鲜明,是EQ的一大乐趣之一。

  然而EQ毕竟是N年前的游戏,宏也比较简单,和它比起来。WOW的宏就复杂和强大的多了。它的函数就有上千种,如果都掌握,能实现许多匪夷所思的功能。

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

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

  3.下面就是怎样设置宏的内容了,简单的设置大家可以看我们网站上"基础"篇的宏介绍.

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

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

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

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

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

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

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

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

  /in 这是一个延时命令,时间以秒为单位.同时它不支持攻击指令.格式:/in 3 dance 三秒后跳舞,如/in 3 dance,就是在3秒后跳舞,
  /say start!
  /in 3 say 3s later
  /in 6 say 6s later

  二:进阶教程

  一些有用的 Macro

  1。允许你在窗口和全屏状态之间切换

  /script SetCVar("gxWindow", 1 - GetCVar("gxWindow"));
  /console gxRestart

  2。对于法师,必须要有的:将“X”换为你目前的变形术等级(下同);用它替换掉变形术技能。当你在队伍之外时使用它会得到“你不在队伍中。”的信息,但在队伍中的时候其它同伴会了解到你将释放的变形术目标。

  /p Sheeping >>> %t <<20) then CastSpellByName("Drain Life(Rank X)") else

  CastSpellByName("Drain Soul(Rank 2)") end;

  2)虚弱诅咒版本
  /script if (UnitMana("target")>0) then CastSpellByName("Curse of Tongues(Rank X)") else

  CastSpellByName("Curse of Weakness(Rank X)") end;


  17.先治疗自己,然后自动选中上次的敌人
  /target Pugar //选择自己,假设自己的名字是Pugar
  /cast Lesser Heal (Rank 1) //施展次级治疗rank1
  /script TargetLastEnemy(); //重新选择刚刚选择的敌人
  /script AttackTarget(); //攻击,等同于右键点击敌人


  18.对于一个术士很有用的宏:首先将目标转为拖怪手或者坦克正在攻击的目标,然后命令宠物向前攻击

  ,跟着一个虚弱诅咒。
  /assist 队伍中的拖怪手或者坦克的名字
  /script PetAttack();
  /cast Curse of Weakness (Rank X)

  19.等治疗完之后提醒别人注意下自己有可能被怪打,不加延时的话,就没这个效果了。
  /p healing %T, need 3s, don"t run away
  /cast heal (rank 1)
  /in 4 p cured %T 300HP,please notice the enemies turn on me^_^

  20.在路上自动护送朋友做任务。

  /assist [player name]
  /cast 法术(Rank X)
  /target [player name]
  /follow [player name]

  三:高级教程

  WOW的宏函数库可以去这两个地方查:

 ] http://www.cosmosui.org/texts/BlizzardCommands.xml

 ] http://www.wowwiki.com/index.php/World_of_Warcraft_API

  函数的使用比较简单,学习过编程的都比较容易上手,基本的用法是在函数前加/script 来使用。比如
  /script CURRENT_ACTIONBAR_PAGE = X;
  /script ChangeActionBarPage();
  就是将你的快捷栏翻到第X页。

  函数库中有许多函数都是非常有用和方便的,比如一次打开所有包包:

  /script OpenAllBags();

  配合关闭包包的函数,一次关闭所有包的宏也可以实现:

  /script CloseBag(0);
  /script CloseBag(1);
  /script CloseBag(2);
  /script CloseBag(3);
  /script CloseBag(4);

  怎么样,下次你卖东西的时候不会一个个开包关包了吧?

  使用函数还不是最恐怖的,恐怖的是WOW的宏是可以用条件判断的,看下面这两个:
  /script if ( GetComboPoints() >= 3 ) then CastSpellByName("Rip(Rank 2)"); else if (

  UnitMana("player") >= 40 ) then CastSpellByName("Rake(Rank 1)"); end end

  据说这个包含if,then的宏可以让盗贼实现自动根据combo点数来使用技能(未测试),其中还使用了角

  色MANA值的调用,恐怖吧?还有这个查找spell的宏:
  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这样的循环,是不是让你想到了N种应用的可能呢?

  遗憾的是,目前官方似乎没有提供延时的宏,所以在战斗中使用多种有延时的技能是无法实现的(无延时的技能可以实现同时使用),类似换其他武器-使用技能或法术-换回武器这样的功能也无法实现,

  (所谓用宏实现剑盾战士换双手武器MS再换回来是行不通的),不过使用COSMOS的朋友可以用/in 来实现非战斗指令的延时,比如
  /in 3 say hi 就会在3秒后说句hi。

  /in 6 /script MoveForwardStart(arg1);
  就会在6秒后向前跑。

  虽然法术和技能无法用/in指令来延时,但这样已经很强大了,比如,你可以编出各种运动的宏,如兜后,转身等。PVP时估计是必不可少的。

  下面是一个玩家写的双手武器战士自动逃跑的宏:
  /script UseContainerItem(0, 2);ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown

  (12);ActionButtonUp(12);
  /cast Thunder Clap(Rank 1);
  /script TurnLeftStart(arg1);
  /in 1 /script TurnLeftStop(arg1);ToggleAutoRun();


  使用这个宏的条件:在大包包第二格放了回复药,快捷栏第11,12分别是一单手一盾的快捷方式。

  使用这个宏后,角色自动喝回复药,装备上盾,使用Thunder Clap(这三个动作同时进行),向后转180度后开自动跑步键逃走。其中技能等可以根据需要自己改。怎么样,是不是很夸张啊,哈哈。

  还有一些有用的宏:

  切换装备,

  双手切换单手并换第二个快捷栏,快捷栏第11,12分别是一单手一盾的快捷方式
  /script ActionButtonDown(11);ActionButtonUp(11);ActionButtonDown(12);ActionButtonUp(12);
  /script CURRENT_ACTIONBAR_PAGE = 2;
  /script ChangeActionBarPage();
  单手切换双手并换回第一快捷栏,快捷栏12是一双手武器快捷方式
  /script ActionButtonDown(12);ActionButtonUp(12);
  /script CURRENT_ACTIONBAR_PAGE = 1;
  /script ChangeActionBarPage();
切换当前目标命令
/target_%name
/assist_%name
/script_TargetLastEnemy();

游戏动作
/cast_%skillname(rank_%d)
/f
/script_UseAction(n%d, %d);

设置延迟命令
/pause_%d

聊天常用命令
/s_
/p_
/g_
/raid_

=应用部分说明=
聊天部分命令我就省略了...重点说明游戏中实际关系到游戏操作的命令

首先%t是指当前目标名称,%t大多是用在聊天中...比如:

...

你好,%t
我开始攻击%t,大家请注意...

Pull
/script TargetNearestEnemy();
/p Pulling %t
/script AttackTarget();
/v inc

Assist
/assist %t
/script AttackTarget();

UsePoison
/script UseContainerItem(bag,slot); PickupInventoryItem(16);
UseContainerItem(bag,slot);
PickupInventoryItem(17);
/in 1740 /script DEFAULT_CHAT_FRAME:AddMessage("Poison wearing off in one minute")




/script if ( UnitExists(target) and UnitIsEnemy(player,target) ) then SendChatMessage(Sheeping Level ..UnitLevel(target) .. ..UnitName(target) ... Dont Attack it!, PARTY) CastSpellByName(Polymorph(Rank 1)); if not PlayerFrame.inCombat then ClearTarget()


/script
   if (UnitHealthMax(target)>80)
   then
   CastSpellByName(''火球术(等级4)'')
   SendChatMessage(''对 %T 使用火球术'', ''EMOTE'')
   else
   CastSpellByName(''奥术飞弹(等级2)'')
   SendChatMessage(''对 %T 使用奥术飞弹'', ''EMOTE'')




有时候放逐会失败——也许你选择了错误的目标,又或者被抵抗,那个时候你要是还是说不要攻击,会被人踩死,所以就用得到AfterCast这个方便的工具了:


/script SmartChat("正在放逐 >>%t<<", false, nil)
/aftercast +fail /script SmartChat("放逐 >>%t<< 失败!", false, nil)
/aftercast /script SmartChat("已放逐 >>%t<< 40秒,请不要攻击!", false, nil)
/施放 放逐术(等级 2)

/aftercast后面的内容只有本宏中的法术释放成功才会触发,+fail表示后面的内容只有法术释放失败之后才触发,类似的命令共有4种:
+done 法术成功施放后(缺省,要是什么都不写,就是这个)
+fail 法术施放失败后
+interrupt 法术施放被打断后
+start 法术施放开始时
UID 2528
发表于 2006-11-11 13:462#
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()
UID 2528
发表于 2006-11-11 13:473#
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("","");

获取通用变量的值

getglobal("")

通用变量可以用来简化你的宏,以避免超过宏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次技能。法师可以将自然之速换为气定神闲,后面的治疗波也可以换成任何可搭配使用的魔法。

5. 灼烧 转 奥蛋 - - -节能
在通常情况下,按这个宏会释放灼烧,而在节能的情况下,会释放奥蛋

--------------------------------------------------------------------------------
Q u o t e:
/script local q; local t;for i=0,15,1 do t=GetPlayerBuffTexture(i); if (t and string.find(t, "ManaBurn")) then q=1; break; end; end; if(q ~= nil) then CastSpellByName("Arcane Missiles(Rank 7)") else CastSpellByName("Scorch(Rank 7)"); end;


1.发送消息

1.1 SendChatMessage("message","system","language","channel")
作用:发送一条聊天消息
参数:
"message":要发送的消息
"system":聊天消息想要发送的类型,可使用:
"SAY":说
"WHISPER":密语,必须在参数"channel"中指明密语对象的名字,可配合函数UnitName("unit")使用
"CHANNEL":频道,必须在参数"channel"中指明频道的编号,省略时为”综合”
"GUILD":工会
"PARTY":小队
"RAID":组团
"YELL":大喊
"language":使用的语言,若无参数"channel"时可省略。
在CWOW中可使用”通用语”、”兽人语”等。亦可指定WOW中使用的其它语言,准确的语言名可使用函数GetDefaultLanguage(“unit”)获得。
参数"language"指定的语言仅对发送者生效,接受者将以其默认语言接收。

1.2 GetDefaultLanguage(“unit”)
作用:返回参数”unit”指定的单位所使用的默认语言


2.字符运算

2.1 strfind(“string”,”pattern”)
作用:在字符串”string”中寻找字符(串)”pattern”
返回值:若找到,返回2个值,开始位置、结束位置;若找不到,返回nil

2.2 format(“formatstring”,value,…,…)
作用:使用value,…,…提供的值,按照”formatstring”指定的格式,建立字符串
“formatstring”中常用的格式:
%s:字符串
%d:整数
%f:浮点数

3.好友/屏蔽

3.1 AddFriend("name")
作用:将指定名字的玩家加入好友列表
参数:
"name":玩家的名字,可使用函数UnitName("unit")获得

3.2 AddIgnore("name")
作用:将指定名字的玩家加入屏蔽列表

3.3 DelIgnore("name")
作用:将指定名字的玩家从屏蔽列表中删除

3.4 AddOrDelIgnore("name")
作用:切换指定名字的玩家的屏蔽状态


4.组队

4.1 InviteToParty("unit")
作用:邀请参数”unit”指定的单位加入小队

4.2 InviteByName("name")
作用:邀请指定名字的玩家加入小队

4.3 UninviteFromParty("unit")
作用:将参数”unit”指定的单位踢出小队

4.4 UninviteByName("name")
作用:将指定名字的玩家踢出小队

4.5 LeaveParty()
作用:离开小队

4.6 UnitInParty("unit")
作用:判断参数”unit”指定的单位是否和玩家在同一小队中

4.7 GetNumPartyMembers()
作用:返回除玩家外的队友数

4.8 GetNumRaidMembers()
作用:返回包括玩家在内的团友数;若未组团,返回0

4.9 GetPartyMember(N)
作用:返回指定号码的队友的名字
返回值:若该队友不存在,返回nil


5.地图位置

5.1 GetZoneText()
作用:返回地区名

5.2 GetSubZoneText()
作用:返回分区名;若玩家并未位于一分区内,返回空值(并非nil值)

5.3 GetMinimapZoneText()
作用:返回小地图上显示的区域名。若玩家位于一分区内,相当于函数GetSubZoneText();若玩家并未位于一分区内,相当于函数GetZoneText()

5.4 SetMapToCurrentZone()
作用:将世界地图设置到玩家所位于的地区

5.5 SetMapZoom(continent)
作用:将世界地图设置到参数continent指定的大陆
参数continent:
0:整个世界
1:卡里姆多
2:东部王国

5.6 GetPlayerMapPosition("unit")
作用:返回参数”unit”指定的单位在当前地图中所处的坐标
参数:
"unit":可使用”player”、”partyN”及”target”。”target”仅能用于友好单位。
返回值:若可用,返回2个值,X轴坐标、Y轴坐标,返回值位于0~1区间;否则,均返回0


6.物品

6.1 PickupContainerItem(bag,slot)
作用:鼠标左击,参数bag指定的背包中、参数slot指定的格子
参数:
bag:背包的编号,0~4,自右向左
0:最右侧的背包(出生时自带的16格包)
4:最左侧的背包(猎人的箭袋、子弹袋)
slot:背包格子的编号,1~16,自左向右,由上而下
1:最上排最左侧格子
2:最上排最左2格子

6.2 PickupInventoryItem(id)
作用:鼠标左击人物属性窗口中,参数id指定装备格子
参数:
id:装备格子的编号
1:头
2:颈
3:肩
4:衬衣
5:胸
6:腰带
7:腿
8:脚
9:手腕
10:手套
11:手指1
12:手指2
13:饰品1
14:饰品2
15:背
16:主手
17:副手
18:远程武器

6.3.1 UseContainerItem(bag,slot)
作用:鼠标右击,参数bag指定的背包中、参数slot指定的格子

6.3.2 UseInventoryItem(id)
作用:鼠标右击人物属性窗口中,参数id指定装备格子

6.4 CursorHasItem()
作用:判断指针当前是否持有物品

6.5 OffhandHasWeapon()
作用:判断副手是否装备了武器(盾不是武器)

6.6 AutoEquipCursorItem();
作用:自动装备指针当前持有的物品

6.7 DeleteCursorItem()
作用:摧毁指针当前持有的物品

6.8.1 GetContainerItemLink(bag,slot)
作用:返回参数bag指定的背包中、参数slot指定格子的物品链接

6.8.2 GetInventoryItemLink("unit",id)
作用:返回参数”unit”指定单位的、参数id指定装备格子的物品链接

6.9 GetContainerItemInfo(bag,slot)
作用:返回参数bag指定的背包中、参数slot指定格子的物品信息

6.10 IsBagOpen(bag)
作用:判断参数bag指定的背包是否打开

6.11 ToggleBag(bag)
作用:打开/关闭参数bag指定的背包

6.12 CloseBag(bag)
作用:关闭参数bag指定的背包

6.13 OpenBag(bag)
作用:打开参数bag指定的背包

6.14CloseAllBags()
作用:关闭所有的背包

6.15 OpenAllBags()
作用:打开/关闭所有的背包


7.运动

7.1 MoveForwardStart()
作用:向前移动。仅能由函数MoveForwardStop()停止。

7.2 MoveForwardStop()
作用:停止向前移动
7.3 MoveBackwardStart()
作用:向后移动
7.4 MoveBackwardStop()
作用:停止向后移动
7.5 StrafeLeftStart()
作用:向左移动
7.6 StrafeLeftStop()
作用:停止向左移动
7.7 StrafeRightStart()
作用:向右移动
7.8 StrafeRightStop()
作用:停止向右移动
7.9 TurnLeftStart()
作用:向左转动
7.10 TurnLeftStop()
作用:停止向左转动
7.11 TurnRightStart()
作用:向右转动
7.12 TurnRightStop()
作用:停止向右转动

7.13 ToggleAutoRun()
作用:开启/关闭自动跑步状态

7.14 Jump()
作用:跳


8.目标选择

8.1 ClearTarget()
作用:清除选定的目标

8.2 TargetUnit("unit")
作用:选定参数”unit”指定的单位为当前目标

8.3 TargetByName("name")
作用:选定指定名字的玩家为当前目标

8.4 TargetLastEnemy()
作用:选定前次曾选定的敌人为当前目标

8.5 TargetLastTarget()
作用:选定前次曾选定的目标为当前目标

8.6.1 TargetNearestFriend()
作用:选定位置最近的友方单位为当前目标

8.6.2 TargetNearestPartyMember()
作用:选定位置最近的队友为当前目标

8.6.3 TargetNearestRaidMember()
作用:选定位置最近的团友为当前目标

8.7 TargetNearestEnemy()
作用:选定位置最近的敌人为当前目标
参数:TargetNearestEnemy(1):逆序选择

8.8 AssistUnit("unit")
作用:选定参数”unit”指定单位的当前目标为自身的当前目标

8.9 AssistByName("name")
作用:选定指定名字玩家的当前目标为自身的当前目标


9.目标性质状态

9.1 UnitAffectingCombat("unit")
作用:判断参数”unit”指定的单位是否处于战斗状态

9.2.1 UnitBuff("unit",index)
作用:返回参数”unit”指定单位上、参数index指定序号的Buff的信息
返回值:若该单位上不存在该序号的Buff,返回nil;若存在,返回该Buff的相关信息

9.2.2 UnitDebuff("unit",index)
作用:返回参数”unit”指定单位上、参数index指定序号的Debuff的信息

9.3 UnitExists("unit")
作用:判断参数”unit”指定的单位是否存在

9.4 UnitIsPlayer("unit")
作用:判断参数”unit”指定的单位是否是玩家

9.5.1 UnitIsUnit("unit","otherUnit")
作用:判断2个单位是否是同一单位

9.5.2 UnitIsEnemy("unit","otherUnit")
作用:判断2个单位是否敌对

9.5.3 UnitIsFriend("unit", "otherUnit")
作用:判断2个单位是否友好

9.6.1 UnitInParty("unit")
作用:判断参数”unit”指定的单位是否是队友

9.6.2 UnitInRaid ("unit")
作用:判断参数”unit”指定的单位是否是团友

9.7.1 UnitCanAttack("unit","otherUnit")
作用:判断参数”unit”指定的单位是否可以攻击参数"otherUnit"指定的单位

9.7.2 UnitCanAssist("unit","otherUnit")
作用:判断参数”unit”指定的单位是否可以支援参数"otherUnit"指定的单位

9.7.3 UnitCanCooperate("unit","otherUnit")
作用:判断参数”unit”指定的单位是否可以与参数"otherUnit"指定的单位合作

9.8 UnitName("unit")
作用:返回参数”unit”指定单位的名字
参数:
“unit”:指定的单位,可使用:
"player":玩家自身
"pet":玩家自身的宠物
"party1","party2","party3","party4":1至4号队友
"partypet1"~"partypet4":1至4号队友的宠物
"raidN":N(1~40)号团友
"raidpetN":N(1~40)号团友的宠物
"target":当前选中的目标,可以将"target"做为后缀直接添加在所有”unit”类型之后

9.9 UnitClassification("unit")
作用:返回参数”unit”指定单位的分级(精英、稀有、普通)

9.10.1 UnitCreatureType("unit")
作用:返回参数”unit”指定单位的物种分类(野兽、……)

9.10.2 UnitCreatureFamily("unit")
作用:返回参数”unit”指定单位的物种(螃蟹、狼、熊、……)

9.11 UnitClass("unit")
作用:返回参数”unit”指定单位的职业(战、牧、法、……)

9.12.1 UnitFactionGroup("unit")
作用:返回参数”unit”指定单位所处的集团(联盟、部落)

9.12.2 UnitRace("unit")
作用:返回参数”unit”指定单位的种族(人类、兽人、……)

9.13 UnitSex
作用:返回参数”unit”指定单位的性别

9.14 UnitLevel("unit")
作用:返回参数”unit”指定单位的等级
返回值:若等级未知(骷髅),返回-1

9.15.1 UnitMana("unit")
作用:返回参数”unit”指定单位的当前法力(能量、怒气)值
返回值:法力(能量、怒气)值的当前点数

9.15.2 UnitManaMax("unit")
作用:返回参数”unit”指定单位的最大法力(能量、怒气)值
返回值:法力(能量、怒气)值的最大点数

9.16.1 UnitHealth("unit")
作用:返回参数”unit”指定单位的当前生命值
返回值:返回生命值的当前点数;但对”target”,返回生命值的当前百分数(0~100)

9.16.2 UnitHealthMax("unit")
作用:返回参数”unit”指定单位的最大生命值
返回值:返回生命值的最大点数;但对”target”,返回100


10.攻击/跟随

10.1 AttackTarget()
作用:开启/关闭自动攻击状态

10.2 PetAttack()
作用:命令宠物攻击

10.3 FollowUnit("unit")
作用:跟随参数”unit”指定的单位

10.4 FollowByName("name")
作用:跟随指定名字的玩家


11.法术

11.1 CastSpellByName("spellname(Rank X)")
作用:施放指定名称的法术

11.2 CastSpell(spellID,"spellbookTabNum")
作用:施放参数spellbookTabNum指定的法术书标签中、参数spellID指定位置的法术
参数spellbookTabNum:"spell"或"pet"

11.3 GetSpellCooldown(spellID,spellbookTabNum)
作用:返回指定法术的冷却信息
返回值:返回2个值:冷却开始的时间、冷却周期;若无冷却,均返回0

11.4 SpellIsTargeting()
作用:判断是否有法术正在施放并等待选择目标

11.5 SpellCanTargetUnit("unit")
作用:判断正在等待选择目标的法术能否向参数”unit”指定的单位施放

11.6 SpellTargetUnit("unit")
作用:向参数”unit”指定的单位施放正在等待选择目标的法术

11.7 SpellStopCasting()
作用:停止当前的施法

11.8 CastShapeshiftForm(index)
作用:切换到参数index指定的形态/姿态(职业相关)
德鲁依
1 = 熊形态
2 = 水中形态
3 = 猫形态
4 = 旅行形态
盗贼
1 = 潜行
战士
1 = 战斗姿态
2 = 防御姿态
3 = 狂暴姿态

11.9 GetNumShapeshiftForms()
作用:返回可用的形态/姿态的数量


12.动作条和动作相关

12.1 ChangeActionBarPage()
作用:将动作条切换到系统全局变量CURRENT_ACTIONBAR_PAGE的设定值

12.2 UseAction(ActionSlot)
作用:执行与参数ActionSlot指定的动作槽相关联的动作
参数ActionSlot:1~72,第1动作条的第1格为1、第12格为12,第2动作条的第1格为13、第12格为24,……,第6动作条的第1格为61、第12格为72。第3动作条是右侧动作条,第4动作条是右2动作条,第5动作条是底部右侧动作条,第6动作条是底部左侧动作条。

12.3 GetActionCount(ActionSlot)
作用:返回指定动作(绷带、药水等)的可用数量

12.4 GetActionCooldown(ActionSlot)
作用:返回指定动作的冷却信息
返回值:返回2个值:冷却开始的时间、冷却周期;若无冷却,均返回0

12.5 IsUsableAction(ActionSlot)
作用:判断指定动作是否可用
返回值:返回2个值:是否可用——若当前可用(不包括冷却和距离判断)则返回1,否则返回nil;法力不足——若指定动作当前不可用的原因是法力/能量/怒气不足则返回1,否则返回nil。

12.6 IsActionInRange(ActionSlot)
作用:判断指定动作是否在可用距离内
返回值:无动作或无目标时返回nil;超出可用距离时返回0;在可用距离内返回1。注意若距离对该动作无效或不能对选定的目标施法时总是返回1。


13.宠物

13.1 PetAttack()
作用:宠物攻击

13.2 PetFollow()
作用:宠物跟随

13.3 PetWait()
作用:宠物等待

13.4 PetDismiss()
作用:宠物解散

13.5 CastPetAction(PetActionID)
作用:施放参数PetActionID指定序号的宠物技能

13.6 GetPetActionCooldown(PetActionID)
作用:返回指定宠物技能的冷却信息
返回值:返回2个值:冷却开始的时间、冷却周期;若无冷却,均返回0

13.7 PetAggressiveMode()
作用:将宠物设为好斗模式

13.8 PetDefensiveMode()
作用:将宠物设为防御模式

13.9 PetPassiveMode()
作用:将宠物设为被动模式


14.其它

14.1 GetTime()
作用:返回当前的游戏内部时间,单位秒

14.2 random(lower,upper)
作用:返回随机数
返回值:随机数。无参数时位于[0,1)区间;提供单个参数n时,返回值位于[1,n]区间;提供两个参数lower、upper时,返回值位于[lower,upper]区间

14.3 CloseMerchant()
作用:关闭商人窗口

14.4 GetComboPoints()
作用:返回连击点数

14.5 Logout()
作用:登出

14.6 Quit()
作用:退出
UID 2528
发表于 2006-11-11 14:594#
把钱扣光也要顶自己!~
UID 2528
发表于 2006-11-11 18:205#
够长的,不过我玩的是猎人,而且还不是太了解WOW宏命令
签名:本站QQ群:35814411,加群请注明论坛账号
UID 3
发表于 2006-11-11 19:596#
好长~~~复制给专门玩这的朋友~~~谢谢LZ
UID 230
发表于 2006-11-12 20:597#
很全的说,可惜我不玩WOW,呵呵,以后所有的练级游戏可能都不玩了,费钱费时间的说
UID 263
发表于 2006-11-13 09:238#
同意楼上的~
UID 5590
发表于 2006-11-13 18:369#
难道你也有前车之鉴表情
UID 263
发表于 2006-11-14 17:3810#
好……好长~~~

WOW烧钱的说~~~
签名:其实我是来诈尸的,你们表理我…………
UID 3087
发表于 2006-11-14 19:2311#
WOW 就是打装备烧钱

另:龙龙是哪个区的?
UID 2528
共 11 楼

关于这个存档

本页内容为历史存档,已关闭一切写操作。附件仅展示文件信息,不提供下载。内容如涉侵权或不当,请联系 server@yfzz.net 下架。

可以做的事:浏览版块、阅读主题与楼层、查看图片附件、按标题或作者搜索、打开用户资料页。
不能做的事:注册、登录、发帖、回复、引用、评分、私信、收藏;压缩包等附件不提供下载——存档版只展示文件信息。

数据截至 2021-02-05;附件约有 30–40% 的原文件未能保存,页面上以「已丢失」标注。2009 年前的不少图片是外链图床,原图床已关闭,页面会显示失效占位。
隐龙轩QQ群:点此查看

26,823 主题 / 280,734 帖 / 17,145 位发过言的会员 · 数据最后更新 2021-02-05

粤ICP备2024318274号-1