请问下在WOW里,宏是什么意思?怎么做宏?我ZS
的有关信息介绍如下:战士常用宏命令 一、1键实现3姿态间的切换 首先,菜单里选择按键设置,把8号快捷键的键位设置2,设为Q 然后,打开技能书,在战斗姿态下,把“狂暴姿态”图标拖到8那格去 切换狂暴姿态,在狂暴姿态下,把“战斗姿态”图标拖到8那格去 最后鼠标点一下切换防御姿态,把“狂暴姿态”图标拖到8那格去 这样,在战斗姿态或者防御姿态按一下Q,都能切成狂暴姿态。而在狂暴姿态按一下Q,就能切回战斗姿态。如果要在切姿态的同时换武器,把姿态的图标换成以下宏: 1、从任意姿态任意武器切换到战斗姿态+双手武器 /script P=PickupInventoryItem;PC=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(4,15));if(oi) then P(17);PC(4,7);else P(17);PC(4,15);end;P(16);PC(4,11);end /施放 战斗姿态 2、从任意姿态任意武器切换到防御姿态+主手武器+盾牌 /script P=PickupInventoryItem;C=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(4,15));if(oi) then P(17);C(4,7);C(4,15);AutoEquipCursorItem();end;else C(4,11);P(16);C(4,15);P(17);end /施放 防御姿态 3、从任意姿态任意武器切换到狂暴姿态+双持武器 /script P=PickupInventoryItem;PC=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(4,7));if(oi) then P(17);PC(4,15);PC(4,7);AutoEquipCursorItem();end;else PC(4,11);P(16);PC(4,7);P(17);end /施放 狂暴姿态 副手武器放在4号背包(最左边的背包,因为这个包是最后被拾取的物品填满的背包,不容易因为盾或副手武器的那一格被填满导致宏实效)的7(副手武器)、11(主手武器或双手武器)、15(盾)三格。 背包的数法是: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 由于某些同志提出他们只有14包,那么可以把宏中所有的“15”都改为比如“12”,然后把盾放到12那格就可以了。 切姿态同时换武器的宏倒非我原创,只是把自己用的这个给贴出来。武器战士倒不一定用,狂暴战士必备。 具体打法:起手拿慢速双手武器,选中目标后3.8秒再冲锋,这样近身瞬间0秒即可砍出一刀,然后按Q切狂暴姿态+双持。看到闪避了再次按Q切回战斗姿态+双手武器压制。(如果怪长得太高,我们需要比如dex这样的插件来提示狂暴姿态中打出的闪避) 二、三种姿态下的攻击常用技能整合 首先再次打开按键设置,把回复对话R键那里改为I。因为,第一,战斗到一半不小心把对话框按出来是很容易导致失败的。第二,R键是一个很就手的键,按久了不会累。 然后,把9号快捷键的键位设置2,改为R 1、在战斗姿态下,把以下这个宏的图标放到9 /施放 冲锋(等级 3) /施放 压制(等级 4) /script if ( UnitHealth("target")<20 ) then CastSpellByName("斩杀(等级 5)"); else if ( UnitHealth("target")>=20 ) then CastSpellByName("致死打击(等级 4)"); end end /script if (UnitMana("Player")>80) then CastSpellByName("英勇打击");end 2、在防御姿态下,把以下图标放到9(这个我直接给出的是防战的版本了,其他天赋战士记得把第四行的“盾牌猛击”改为致死打击或者嗜血) /施放 盾牌格挡 /script SpellStopCasting(); /script if (UnitMana("Player")>5) then CastSpellByName("复仇");end /script if (UnitMana("Player")>40) then CastSpellByName("盾牌猛击");end /script if (UnitMana("Player")>59) then CastSpellByName("英勇打击");end 3、在狂暴姿态下,把以下宏的图标放到9 /施放 拦截(等级 3) /script if ( UnitHealth("target")<20 ) then CastSpellByName("斩杀(等级 5)"); else if ( UnitHealth("target")>=20 ) then CastSpellByName("致死打击(等级 4)"); end end /script if(UnitAffectingCombat("player")==1) then CastSpellByName("旋风斩") else end 或者 /施放 拦截(等级 3) /script if ( UnitHealth("target")<20 ) then CastSpellByName("斩杀(等级 5)"); else if ( UnitHealth("target")>=20 ) then CastSpellByName("致死打击(等级 4)"); end end /script if (UnitMana("Player")>80) then CastSpellByName("英勇打击");end 这样一个R键就实现了冲锋、压制、拦截、致死(嗜血、盾牌猛击)、斩杀、旋风、英勇、盾牌挡格、复仇共9个技能的使用。大大节约了键位。也弥补了某些操作上的缺陷。比如斩杀前出了闪避,R按下去就自动是压制了(一般压制秒人最后20%血还是可以的,还有打盗贼他很可能是开了闪避了,一味斩杀都是闪避)。还有能很方便的保持盾牌挡格和复仇。破甲的话另外设一个键吧。怒大于一定量的时候自动用英勇打击宣泄。狂暴战士的话可以把宏里面的数字改小一点。 三、破胆怒吼+立刻绷带,以及一键绷带宏 /施放 破胆怒吼 /script SpellStopCasting() /script UseContainerItem(2,1) /script TargetUnit("player") 其中 /script UseContainerItem(2,1) /script TargetUnit("player") 就是一键绷带宏。可以单独建一个。绷带放在中间那个包左上开始第一格。 这是战士的一个实用技巧。虽然时机有时候难以把握,但是只要敌我双方身上都没有流血效果,我们就可以25怒+2000血,也就是说这个宏用好了能顶一件+200耐的装备。成功用出后要是都没打赢,那基本上就是RP问题..... 一键绷带也非常有用。平时我们绷带都是点了绷带还要点人。或者要先F1再点绷带。总之就是要按两个键。将其简化到一个键,只要多节省1秒,那就是多获得了250血,也就等于比不会这招的对手多25耐。25耐的优势还不够多么? 3-2 铿锵玫瑰烈 朋友要的,一键血性狂暴+切换狂暴姿态 /施放 血性狂暴 /script SpellStopCasting() /施放 狂暴姿态 / if (UnitHealth("target")<20) then CastSpellByName("斩杀(等级 5)"); end /施放 嗜血(等级 4) / if (UnitMana("Player")>34) then CastSpellByName("旋风斩");end / if (UnitMana("Player")>34) then CastSpellByName("英勇打击");end 狂暴状态攻击的宏,如果对方的血少于20%则斩杀 否则放嗜血. 如果怒气大于34,则使用旋风斩, 或英勇打击 这个数值我自己设的,具体情况可以看自己更改. 武器战士的 /script if(UnitIsFriend("player","target")) then AssistUnit("target"); end; /cast 压制(等级 x) /script if (UnitHealth("target")<20) then CastSpellByName("斩杀(等级 x)") else CastSpellByName("致死打击(等级 x)") end 第一行:点中目标时打目标,点中队友时协助队友打。 第二行:压制亮了打压制。 第三行:目标血少于20%时出斩杀,否则出致死打击。 /施放 压制(等级 4) / if (UnitHealth("target")<20) then CastSpellByName("斩杀(等级 5)"); end /施放 嗜血(等级 4) / if (UnitMana("Player")>34) then CastSpellByName("英勇打击");end 战斗状态用的,原理同上 / if(UnitAffectingCombat("player")==1) then CastSpellByName("旋风斩");end 只在战斗状态释放旋风斩,应某些朋友的要求添加的 /施放 破胆怒吼 / SpellStopCasting() /target 安达里克 / UseContainerItem(4,1) / TargetLastEnemy() 破胆绷带宏, 第3行名字改成你自己的 /施放 破胆怒吼 / SpellStopCasting() / UseContainerItem(4,1) / TargetUnit("player") 这个也可以 /施放 盾牌格挡 / SpellStopCasting(); / if (UnitMana("Player")>14) then CastSpellByName("复仇");end / if (UnitMana("Player")>44) then CastSpellByName("盾牌猛击");end / if (UnitMana("Player")>59) then CastSpellByName("英勇打击");end 2月1日更新:优先使用盾牌格档的宏,我目前TANK用 http://yzg.wyun.com/archiver/?tid-30.html/ P=PickupInventoryItem;PC=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(4,16));if(oi) then P(17);PC(4,15);else P(17);PC(4,16);end;P(16);PC(4,14);end /施放 战斗姿态 / P=PickupInventoryItem;C=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(4,16));if(oi) then P(17);C(4,15);C(4,16);AutoEquipCursorItem();end;else C(4,14);P(16);C(4,16);P(17);end /施放 防御姿态 / P=PickupInventoryItem;PC=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(4,15));if(oi) then P(17);PC(4,16);PC(4,15);AutoEquipCursorItem();end;else PC(4,14);P(16);PC(4,15);P(17);end /施放 狂暴姿态 最后一个背包的最后3个格分别放,主手/双手(4,14),副手(4,15),盾牌(4,16) 一、从任意姿态任意武器切换到战斗姿态双手武器 / P=PickupInventoryItem;PC=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(背包,盾牌格));if(oi) then P(17);PC(背包,副手武器格);else P(17);PC(背包,盾牌格);end;P(16);PC(背包,主手/双手格);end /施放 战斗姿态 二、从任意姿态任意武器切换到防御姿态主手武器+盾牌 / P=PickupInventoryItem;C=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(背包,盾牌格));if(oi) then P(17);C(背包,副手武器格);C(背包,盾牌格);AutoEquipCursorItem();end;else C(背包,主手/双手格);P(16);C(背包,盾牌格);P(17);end /施放 防御姿态 三、从任意姿态任意武器切换到狂暴姿态双持武器 / P=PickupInventoryItem;PC=PickupContainerItem;oi=(GetInventoryItemLink("player",17));if(oi) then oi=(GetContainerItemLink(背包,副手武器格));if(oi) then P(17);PC(背包,盾牌格);PC(背包,副手武器格);AutoEquipCursorItem();end;else PC(背包,主手/双手格);P(16);PC(背包,副手武器格);P(17);end /施放 狂暴姿态宏 Macro 相信很多人都知道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 从背包和袋子里切换身上的武器 /script if ( not CursorHasItem() ) then PickupContainerItem(, ); PickupInventoryItem( ); end bag# - 使用哪一个袋子的物品(0、1、2、3、4。0是背包) slot# - 袋子里的位置(从0至左上) equip# - 16 是主要武器, 17 是副武器 切换双手武器与单手+盾或者双手挥舞武器 /script PickupInventoryItem(17);if(CursorHasItem()) then PickupContainerItem (4,2);PickupContainerItem(4,1);PickupInventoryItem(16);else PickupContainerItem (4,1);PickupInventoryItem(16);PickupContainerItem(4,2);PickupInventoryItem(17);end 设定“真实鼠标视野” /script CameraOrSelectOrMoveStart(arg1); 想取消就再次输入。 切换近程技能栏和远程技能栏 /script CURRENT_ACTIONBAR_PAGE = 2; /script ChangeActionBarPage(); /cast aspectofmonkey (just use the left click) /script CURRENT_ACTIONBAR_PAGE = 1; /script ChangeActionBarPage(); /cast aspectofhawk (just use the left click) 三:高级教程 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(); 下面是另一篇 作者:重返荣誉 来源:17173 宏只是一种辅助的手段,希望通过下面的讲解让大家能轻松编辑属于自己的宏。 先来看宏的结构: /script if (UnitHealthMax(target)>80) then CastSpellByName(''火球术(等级4)'') SendChatMessage(''对 %T 使用火球术'', ''EMOTE'') else CastSpellByName(''奥术飞弹(等级2)'') SendChatMessage(''对 %T 使用奥术飞弹'', ''EMOTE'') 这是一个没有延时功能的宏,带延时功能的宏将在稍后说明, 第一句/script 申明函数开始,这句是必须的,整个宏的中文意思是 如果你选定的目标的生命值大于80,就执行4级火球术,并告知周围的人你对目标使用了这个动作, %t就是代表目标,否则就执行2级飞弹,告知周围的人你对目标使用了这个动作。 值得注意的是比如SendChatMessage(''对 %T 使用火球术'', ''EMOTE'') 中的EMOTE 如果你换成party就 只是队内可见。 此例使用到的函数: UnitHealthMax(target) 返回目标生命值 同样此例如不要判断就直接是 /script CastSpellByName(''火球术(等级4)'') SendChatMessage(''对 %T 使用火球术'', ''EMOTE'') 注意本文注重介绍思路! 下面是一些常用的宏 MoveBackwardStart 向后移动,用时写成 MoveBackwardStart() 注意每句后面的;号并不是必须的,主要是习惯。 MoveBackwardStop 停止后退 StrafeLeftStart 向左移动 StrafeLeftStop 停止左移 StrafeRightStart 向右移动 StrafeRightStop 停止右移 ToggleAutoRun 向正面跑 TurnLeftStart 向左转 TurnLeftStop 停止左转 TurnRightStart 向右转 TurnRightStop 停止右转 jump() 跳