魔兽世界宏命令问题

[复制链接]
查看11 | 回复1 | 2006-6-17 21:55:56 | 显示全部楼层 |阅读模式
西西~~都是ENET网站是的东东~~~~~~~~~~~楼猪你是不是要WOW里面的那种使用技能时自动说话的宏怎么做啊,请教一下我。谢谢了 例如:我准备复活XXX,其他人去救别的恩~~做好宏后打开技能表 按住SHIFT然后点你要的技能就可以了~~~~`这样后只要一点那个宏就可以复活了~~而且来会说 "我准备复活XXX,其他人去救别的"
回复

使用道具 举报

千问 | 2006-6-17 21:55:56 | 显示全部楼层
WOW玩了不少日子,坛子也泡了不少,找来找去也没有看到几个实用的宏教程,像我等新人而言,宏怎么编我不管,我只想知道怎么用就行了,为此,小弟在这里转载一点我所知道的DZ宏,与各位江洋大盗们共勉之!发3个自己用着的盗贼宏!~ 双手互换(基本上贼都知道)我把他放在Q键和CS中换枪键一样!~/script PickupInventoryItem(16); PickupInventoryItem(17);潜行+换手(要求是主手 拿的是单手剑或棰 不是主手绑定那种)/施放 潜行(等级 3)/script PickupInventoryItem(16); PickupInventoryItem(17);背刺+换手(我潜行后一般用伏击 所以伏击后仍然是主手拿的匕首 副手是剑 =回能量 到90 凿击)/施放 背刺(等级 4)/script PickupInventoryItem(16); PickupInventoryItem(17);其实这些是简单的宏 编起来也很简单还可以在每个宏下面打/say 黑暗终于来临,你们的末日到了!这样在你用这个宏的时候你的人就会说这么一句话了 哈哈/script function ss() if e("player")>39 then o(39,1);end;end;function ev() if e("player")>34 then o(26,1);end;end;function ra() if e("player")>9 and IsUsableAction(1)==1 then o(38,1);end;end;ss()是当能量大于39时邪恶攻击;ev()是能量大于34时剔骨;ra()是还击激活使用还击;请注意:把还击技能放在快捷栏第1格/script function getfear(a) local r=0;for i=1,16,1 do b=UnitDebuff("player",i);if b~=nil then if strfind(b,a) then r=1;end;end;end;return r;end;function ak() if p()>4 then ev() else ss();end;end;o=CastSpell;p=GetComboPoints;e=UnitMana;s=SpellStopCasting;getfear(a)是判断某种debuff是否存在于自己身上。a表示的是该debuff的icon名关键字。返回1表示debuff存在,返回0表示debuff不存在。ak()是邪恶攻击5星放剔骨;o,p,e,s是常用关键字的定义,用于减少宏的长度。/script function will() if (getfear("PsychicScream")==1 or getfear("GolemThunderClap")==1 or getfear("Possession")==1 or getfear("MindSteal")==1) then uw();end;end;function cd(a) local x=GetSpellCooldown(a,1);if x10 then ak();else if p()>1 then ev() else ss();end;end;else o(8,1);end这个宏就是前的方法的调用。前面看明白了,这里很简单。紫色部分,可以根据需要修改删除。紫色部分:heal();ra();will();us();见上面b1~b5介绍。cd(31)是佯攻,cd(34)是乱舞。后面部分:如果距离大于28使用弓射,28以内邪恶攻击+剔骨。当怪物血少于10%的时候,只要连击点>=2就使用剔骨。o(8,1)是弓射击。(为什么是28呢?因为黑龙,老10,似乎15码都能攻击。而目前暴雪只提供了5,10,28的判断。所以你想改成10的时候,请把CheckInteractDistance("target",3)的3改2。改5码就把3改1)测试你的技能编号的宏(当然,你也可以自己在技能书上数,从1开始):紫色部分请自己替换,34是技能编号,夜月是你自己的名字。/script spellname=GetSpellName(34,1);SendChatMessage(spellname,"WHISPER",this.language,"夜月")盗贼常用宏的说明MACRO 9 ‘非冤布毒术1‘ Spell_Arcane_PortalUnderCity.blp/script UseContainerItem(0,9); PickupInventoryItem(16); ENDMACRO 10 ‘非冤布毒术2‘ Spell_Arcane_PortalDarnassus.blp/script UseContainerItem(0, 10);PickupInventoryItem(17);ENDMACRO 19 ‘潜行‘ Ability_Ambush.blp/施放 潜行(等级 3)/script GameTooltip:SetInventoryItem(‘player‘, GetInventorySlotInfo(‘MainHandSlot‘)); if(GameTooltipTextRight3:GetText()~=‘匕首‘) then PickupInventoryItem(16) PickupInventoryItem(17); endENDMACRO 24 ‘背刺‘ Ability_BackStab.blp/script GameTooltip:SetInventoryItem(‘player‘, GetInventorySlotInfo(‘MainHandSlot‘)); if(GameTooltipTextRight3:GetText()==‘匕首‘) then CastSpellByName(‘背刺(等级 5)‘) else PickupInventoryItem(16) PickupInventoryItem(17); endENDMACRO 26 ‘邪恶攻击‘ Spell_Shadow_RitualOfSacrifice.blp/script GameTooltip:SetInventoryItem(‘player‘, GetInventorySlotInfo(‘MainHandSlot‘)); if(GameTooltipTextRight3:GetText()~=‘匕首‘) then CastSpellByName(‘邪恶攻击(等级 6)‘) else PickupInventoryItem(16) PickupInventoryItem(17); endENDMACRO 29 ‘消失‘ Ability_Vanish.blp/施放 消失(等级 1)/script GameTooltip:SetInventoryItem(‘player‘, GetInventorySlotInfo(‘MainHandSlot‘)); if(GameTooltipTextRight3:GetText()~=‘匕首‘) then PickupInventoryItem(16) PickupInventoryItem(17); endENDMACRO 35 ‘绷带‘ Spell_Holy_HolyBolt.blp/script UseContainerItem(0, 5)/script TargetUnit(‘player‘)ENDMACRO 36 ‘目标信息‘ Ability_CheapShot.blp/script if UnitClassification(‘target‘)==‘elite‘ then SendChatMessage(‘‘.. UnitLevel(‘target‘) .. ‘+ ‘ .. UnitName(‘target‘), ‘party‘) else SendChatMessage(‘‘ .. UnitLevel(‘target‘) .. ‘ ‘ .. UnitName(‘target‘), ‘party‘); endEND为盗贼设计的一套宏(给Flyrain,也送给所有热爱盗贼的人)下面显示的是一整套宏,意思就是,所有宏的使用都是相关的,不是单独使用的。在我的前几套里面,使用技能时,会因为切换武器而多做一次按键。本来没有意思想做的,后来被Flyrain(魔兽朋友)问到了,仔细的思考后就有了下面的语句。下面的宏里,我使用了Cosmos提供的延迟语句来作判断,尽量避免了两次按键的问题(看过我的宏和类似宏的人估计都知道这个问题).时间关系,我今晚只把宏放上来,明天我回来加以说明。MACRO 19 ‘潜行‘ Ability_Ambush.blp/施放 潜行(等级 3)/script if(isnot(‘right‘,‘匕首‘)) then change(0,1) endENDMACRO 24 ‘背刺‘ Ability_BackStab.blp/script if(is(‘right‘,‘匕首‘)) then CastSpellByName(‘背刺(等级 6)‘) else change(0,1) end/script start()/in 0.5 /script if(finish() and mode==1) then change(0,1) endENDMACRO 26 ‘邪恶攻击‘ Spell_Shadow_RitualOfSacrifice.blp/script if(isnot(‘right‘,‘匕首‘)) then CastSpellByName(‘邪恶攻击(等级 6)‘) else change(0,1) endENDMACRO 29 ‘消失‘ Ability_Vanish.blp/施放 消失(等级 2)/script if(isnot(‘right‘,‘匕首‘)) then change(0,1) endENDMACRO 46 ‘模式‘ Spell_Shadow_EnslaveDemon.blp/script if mode == 1 then mode = 2 DEFAULT_CHAT_FRAME:AddMessage(‘进入队伍模式,背刺结束不再切换武器.‘) else mode = 1 DEFAULT_CHAT_FRAME:AddMessage(‘进入单人模式,背刺结束切换武器.‘) ;end;ENDMACRO 47 ‘凿击‘ Ability_Gouge.blp/施放 凿击(等级 3)/script start()/in 0.5 /script if(finish() and isnot(‘right‘,‘匕首‘)) then change(0,1) endENDMACRO 48 ‘伏击‘ Ability_Rogue_Ambush.blp/施放 伏击(等级 4)/script start()/in 0.5 /script if(finish() and mode==1) then change(0,1) endENDMACRO 44 ‘初始‘ Spell_Shadow_ScourgeBuild.blp/script function isTwoH() GameTooltip:SetInventoryItem(‘player‘, GetInventorySlotInfo(‘MainHandSlot‘)) tip=GameTooltipTextLeft3:GetText() or GameTooltipTextLeft4:GetText() if(tip==‘双手‘) then return true else return false end end;/script function isOneH(kind) GameTooltip:SetInventoryItem(‘player‘, GetInventorySlotInfo(‘MainHandSlot‘)) tip=GameTooltipTextRight3:GetText() or GameTooltipTextRight4:GetText() if(tip==kind) then return true else return false end end;/script function is(loc,kind) if(loc==‘left‘) then return isTwoH() else return isOneH(kind) end end;/script function isnot(loc,kind) return (is(loc,kind)==false) end;/script function lefttoright() PickupInventoryItem(16) PickupInventoryItem(17) end;/script function change(bag,slot) PickupContainerItem(bag, slot) PickupInventoryItem(16) end;/script mode=1;/script function start() point=GetComboPoints() end;/script function finish() if(GetComboPoints()>point) then return true else return false end end;END补充一个宏 肾击/施放 肾击(等级 2)/script start()/in 0.5 /script if(finish() and isnot(‘匕首‘)) then change(0,1) endI. 首先说一下这套宏的插件需求。 这套宏使用了/in这样的延迟语句,所以必须要有Cosmos插件的支持,Cosmos的中文化版本有一个叫魔兽小强http://www.365wave.com/wow,不过魔兽小强集成功能很多,昨天进去报错了,因为插件使用内存超过40M,这个最好先关掉一些不用的插件,或者把内存份额调高。:P 我的初始宏有978字节,这是我用了SuperMacro写成的,如果没有的请按照颜色区分把它分成几个宏,调用时请按顺序调用(初始宏是刚运行游戏时运行的,直接运行就可以了,不需要其他操作)。不过建议安装SuperMacro,很不错可以上http://www.wowui.cn下载。魔兽小强有点不好,他有个自动整理的功能,会把不属于他的插件删除(用来保证插件不冲突),这样SuperMacro在更新时会被删掉,备份也好,关掉自动整理(过一段时间最好整理一次)也好,这个自己处理了。===================================================================================II. 宏的使用:这套宏只要在游戏运行开始时,使用了初始宏后,就可以正常运行了。请将对应技能名字的宏替换掉动作栏的技能就可以了。我还提供了一个名字叫做‘模式‘的宏,用来切换作战模式,决定在背刺成功后,是否把武器切换回来,自带说明提示,为什么这样设置的原因在后面说到。这套宏我使用了三件武器,一把副手保持不变,一把主手,一把放在第一个包的第一格里面,上面的change(0,1)就是表示取包中武器到主手。 如果你只是想左右手互换,那么请把change(0,1)全部改成lefttoright()。另外,记得把技能等级改成自己对应的,原本想在初始宏里写个自动取得技能等级的语句,不过已经太长了。考虑到也就每两级换几个,也就无所谓了。还是以前说的话,记的直接copy的话,会由于自动添加的每行末尾的回车,造成宏出错,记得修改一下。===================================================================================III. 设计思路(有兴趣地看吧):最初我设计宏(刚接触宏)时,就是想凿击后切换到匕首,背刺,伏击完了后切换回剑锤,潜行时切换到匕首而已。后来的实验,一碰到技能miss,就只能看着它错误切换。因为找不到判断技能使用成功并同时反馈的办法,所以放弃了这条路。判断技能成功的依据我这里用考察连击点的变化来判断,如果增加或者减少了,说明技能必然使用成功。当然,如果你5星了,还要用邪恶攻击,背刺之类,那么我也没办法。如果你升了持续攻击,那么可能1星终结又得到一星,不过终结技里,我只修改了肾击,你也没办法一直用肾击把。这样来说,基本上用连击点变化判断技能使用成功与否是没有什么问题的。重点在于背刺结束后是否切换的问题,平时solo时,背刺结束正常是要切换回去的。但是组队或者一些情况下,比如战士抗怪,你只要背后戳就行了,那么不需要换回来,这种情况很多,我没办法一一纳入宏的判断中,所以加了一个‘模式‘的宏,用来决定这些问题。这个自己用一下,就知道意思了。===================================================================================IV. 初始宏的说明MACRO 44 ‘初始‘ Spell_Shadow_ScourgeBuild.blp/script function isTwoH() GameTooltip:SetInventoryItem(‘player‘, GetInventorySlotInfo(‘MainHandSlot‘)) tip=GameTooltipTextLeft3:GetText() or GameTooltipTextLeft4:GetText() if(tip==‘双手‘) then return true else return false end end;这里定义了一个函数isTwoH(),用来判断主手是不是双手武器,也就是说,盗贼就不要管了,这个是我为了练战士准备的。/script function isDagger() GameTooltip:SetInventoryItem(‘player‘, GetInventorySlotInfo(‘MainHandSlot‘)) tip=GameTooltipTextRight3:GetText() or GameTooltipTextRight4:GetText() if(tip==‘匕首‘) then return true else return false end end;这个定义了一个函数isDagger(),判断主手武器是不是匕首,如果是,返回true,不是返回false/script function is(loc) if(loc==‘双手‘) then return isTwoH() else return isDagger() end end;这个函数is(loc)是上面两个函数的封装,参数是loc,如果loc是‘双手‘,那么做双手武器判断,如果不是,则判断主手是不是匕首(这里,loc随便取,只要不是‘双手‘,我使用‘匕首‘传入,意思明显点),如果是返回true,不是返回false/script function isnot(loc) return (is(loc)==false) end;这个就是is(loc)的反函数了,传入‘匕首‘,那么如果是匕首,返回false,否则返回true/script function lefttoright() PickupInventoryItem(16) PickupInventoryItem(17) end;这个函数没有返回值,它唯一作的就是左右手武器交换。/script function change(bag,slot) PickupContainerItem(bag, slot) PickupInventoryItem(16) end;这个函数也没有返回值,它就是上面我用到的,从第bag个包中取第slot个格的武器换到主手。例如change(0,1),取第一格包中第一格武器装上。/script mode=1;这个不是函数,只是定义全局变量mode,也就是战斗模式区分。不用管了。/script function start() point=GetComboPoints() end;这个宏就是用来记录技能使用前的连击点数的。/script function finish() if(GetComboPoints()~=point) then return true else return false end end;这个宏用来判断当前连击点与前面纪录的有没有变化,有返回true,否则返回falseENDV. 模式宏的说明/script if mode == 1 then mode = 2 DEFAULT_CHAT_FRAME:AddMessage(‘进入队伍模式,背刺结束不再切换武器.‘) else mode = 1 DEFAULT_CHAT_FRAME:AddMessage(‘进入单人模式,背刺结束切换武器.‘) end这个实际上没什么好说的,初始宏后,模式mode为1,那么按一下这个宏,mode变成2,同时给出提示‘进入队伍模式,背刺结束不再切换武器‘,再按一次,mode变回1,给出提示。恩,很简单把。这个宏在于你要自己准确判断使用哪种模式作战。===================================================================================VI. 技能宏MACRO 19 ‘潜行‘/施放 潜行(等级 3)/script if(isnot(‘匕首‘)) then change(0,1) endEND潜行宏,第一句使用潜行技能,第二句判断isnot(‘匕首‘),还记得这句的说明把,第二句翻译成中文就是,如果不是匕首,那么change(0,1),即切换武器成匕首,记得匕首放好位置。MACRO 24 ‘背刺‘ /script if(is(‘匕首‘)) then CastSpellByName(‘背刺(等级 6)‘) else change(0,1) end/script start()/in 0.5 /script if(finish() and mode==1) then change(0,1) endEND是的,这个宏是一个重点,VI. 技能宏MACRO 19 ‘潜行‘/施放 潜行(等级 3)/script if(isnot(‘匕首‘)) then change(0,1) endEND潜行宏,第一句使用潜行技能,第二句判断isnot(‘匕首‘),还记得这句的说明把,第二句翻译成中文就是,如果不是匕首,那么change(0,1),即切换武器成匕首,记得匕首放好位置。MACRO 24 ‘背刺‘ /script if(is(‘匕首‘)) then CastSpellByName(‘背刺(等级 6)‘) else change(0,1) end/script start()/in 0.5 /script if(finish() and mode==1) then change(0,1) endEND是的,这个宏是一个重点,第一句, 如果是匕首那么使用背刺,否则交换武器,看,我还保留着以前的语句,所以使用习惯那些宏的人不用担心自己的习惯被打破,这里只是更方便而以。第二句,let‘s start,是的,我调用了start()方法,宏时并发执行的,所以,第一句执行时,我们就已经记录了现在的连击点。第三句,/in 0.5等待0.5S,很好理解,不是吗。finish()函数使我们得到连击点变更情况,如果是true,那么技能使用成功了,如果这个时候我在SOLO,我会开了模式mode==1,那么我将切换掉现在的武器,锤子比匕首更有压迫感,不是吗。MACRO 26 ‘邪恶攻击‘ /script if(isnot(‘匕首‘)) then CastSpellByName(‘邪恶攻击(等级 6)‘) else change(0,1) endEND好的,这也是一个重要的宏,不过更重要的是邪恶攻击后,我们什么也不需要做。翻译成中文:如果主手不是匕首,那么我就SS。噢,我拿着匕首,这样砍起来多不爽,那么我就先换掉好了。V. 模式宏的说明/script if mode == 1 then mode = 2 DEFAULT_CHAT_FRAME:AddMessage(‘进入队伍模式,背刺结束不再切换武器.‘) else mode = 1 DEFAULT_CHAT_FRAME:AddMessage(‘进入单人模式,背刺结束切换武器.‘) end这个实际上没什么好说的,初始宏后,模式mode为1,那么按一下这个宏,mode变成2,同时给出提示‘进入队伍模式,背刺结束不再切换武器‘,再按一次,mode变回1,给出提示。恩,很简单把。这个宏在于你要自己准确判断使用哪种模式作战。===================================================================================VI. 技能宏MACRO 19 ‘潜行‘/施放 潜行(等级 3)/script if(isnot(‘匕首‘)) then change(0,1) endEND潜行宏,第一句使用潜行技能,第二句判断isnot(‘匕首‘),还记得这句的说明把,第二句翻译成中文就是,如果不是匕首,那么change(0,1),即切换武器成匕首,记得匕首放好位置。MACRO 24 ‘背刺‘ /script if(is(‘匕首‘)) then CastSpellByName(‘背刺(等级 6)‘) else change(0,1) end/script start()/in 0.5 /script if(finish() and mode==1) then change(0,1) endEND是的,这个宏是一个重点,第一句, 如果是匕首那么使用背刺,否则交换武器,看,我还保留着以前的语句,所以使用习惯那些宏的人不用担心自己的习惯被打破,这里只是更方便而以。第二句,let‘s start,是的,我调用了start()方法,宏时并发执行的,所以,第一句执行时,我们就已经记录了现在的连击点。第三句,/in 0.5等待0.5S,很好理解,不是吗。finish()函数使我们得到连击点变更情况,如果是true,那么技能使用成功了,如果这个时候我在SOLO,我会开了模式mode==1,那么我将切换掉现在的武器,锤子比匕首更有压迫感,不是吗。MACRO 26 ‘邪恶攻击‘ /script if(isnot(‘匕首‘)) then CastSpellByName(‘邪恶攻击(等级 6)‘) else change(0,1) endEND好的,这也是一个重要的宏,不过更重要的是邪恶攻击后,我们什么也不需要做。翻译成中文:如果主手不是匕首,那么我就SS。噢,我拿着匕首,这样砍起来多不爽,那么我就先换掉好了。MACRO 29 ‘消失‘ /施放 消失(等级 2)/script if(isnot(‘匕首‘)) then change(0,1) endEND这个没有说的必要,消失不就是强化的潜行,一切照做就ok了。MACRO 47 ‘凿击‘/施放 凿击(等级 3)/script start()/in 0.5 /script if(finish() and isnot(‘匕首‘)) then change(0,1) endEND恩,背刺前的准备活动,start() /in 0.5这些没必要解释了吧。最后那句if就是如果凿击成功,而且主手不是匕首,那么让我们交换把MACRO 48 ‘伏击‘ /施放 伏击(等级 4)/script start()/in 0.5 /script if(finish() and mode==1) then change(0,1) endENDso,潜行的加强背刺,照搬背刺的就ok了。MACRO 49 ‘肾击‘ /施放 肾击(等级 2)/script start()/in 0.5 /script if(finish() and isnot(‘匕首‘)) then change(0,1) endEND本来没有想过要加它,肾击后的操作很多,如果不喜欢肾击后背刺的人,那么请无视掉它。只是有时觉得看到没有反抗的人,不给他下狠的,真是对不起自己。1. 闪光粉。我现在出门必带,每次准备出去k怪的时候都保证自己的闪光粉有10个以上。这个东东实在是盗贼居家旅行,杀人越货,逃之夭夭的必备品。逃命不用说了,如果是pve,哪怕对方是高你好多级的精英,你就在他眼皮底下用消失,他也不会发现,扔下你就回头跑了。多少次在副本里有队友失误导致要灭团的时候,用消失,然后自己就是团里唯一的幸存者了。自从学会了消失,死亡次数大大减少了。PVP的时候也很好用,一是中了对方定身的法术不能动弹的时候,消失可以解除这种状态。二是你偷袭得手,干掉一个,对方有人来支援,而你还处于战斗状态,不能潜行,这时候就用消失。你会看到他们在周围狂跑,呵呵,抓贼呢,可别笨到跟他们碰鼻子哦。不过有一点,由于受到伤害就会取消潜行状态,所以如果中了DOT类的攻击的话,就别用消失了,因为一掉血又变成非潜行状态了。浪费。2. 关于武器。 我认为在dps差不多的情况下,应该选用匕首。盗贼们可以看一下自己常用的技能里面哪一个跟武器伤害有关?伏击和邪恶攻击。伏击要用匕首,不必说了,作为盗贼常用的起手技,就很值得考虑用匕首。邪恶攻击,用剑虽然一下攻击高,但是速度慢,剑打一下邪恶攻击,匕首可能要打2下(实际速度没差这麽多,打个比方,先不考虑能量,不然又复杂化了)。而盗贼的终结技基本都是不看武器伤害的。还有个最大的问题是,速度快的匕首可以更有效的使用毒,我觉得从用毒上也能看出暴雪是鼓励盗贼用匕首的。因为你用剑的话,对方中毒的概率就小很多,速度慢。剑上涂毒经常是时间到了,毒还没用一半。3. 盗贼在副本中的作用。 伤害输出不必说,关键是输出到谁身上,自己单挑一个精英怪并不明智,否则何必要团队,大家干脆各自捉对厮杀算了。不到万不得已,不应该让自己处在任何一个怪物仇恨列表的最顶端,只有战士有这个本钱。正确的做法是,左键点击战士(可以点击左侧队友列表头像),然后按F键,以战士的目标为目标。要随时注意战场形势,注意保护布衣队友,同样的情况下,应该先帮牧师解困,其次法师。要多用眩晕技,偷袭和肾击。怪物多晕一秒,就少打自己队友一秒,也多承受一秒的伤害。肾击还可以用来防止怪物逃跑喊同伙。这些都是基本原则,具体战斗中要根据实际情况,随机应变。再说说宏。常用的其他帖子也有说,我也简单说几个。1.吃面包,假如放在自己主包裹(这个叫法可能不专业,就是一出生带的那个)的第1个位置(从上到下,从左到右数)/script UseContainerItem(0,1) ( 0表示主包裹,2表示第2个位置)2.绷带/script TargetUnit("player")/script UseContainerItem(0,2) (类似吃面包)3.跟随跑(本人比较懒,能跟就跟@@)/script ToggleAutoRun() (万一没人可跟,只好自己跑:-( )/script参考资料:http://go.17173.com/jsp/search/searchArticle.jsp?pageno=3&keyWord=11144&channel=121&kdid=11144

已赞过已踩过<
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行