===================================================================================
I. 首先说一下这套宏的插件需求。 这套宏使用了/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,否则返回false
END
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) end
END
潜行宏,第一句使用潜行技能,第二句判断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) end
END
是的,这个宏是一个重点,





