[魔兽]暗影形态和正常形态切换的同时自动换动作条的宏 做了以后忽然发现居然没地方发表……既然公会都叫战争研究,就扔这里吧: 练成暗牧,却发现一个BT问题,那就是动作条上按钮太少,几种攻击加几种补血加驱散最后最好还能快捷喝药绑绷带,12个的空的动作条完全不够用,开副动作条只能用鼠标去点,真是又鼠标又键盘俺小脑反应慢,已经要疯掉了。 想起小D至少还有一个好处,变个形态就自动换个动作条,所以估摸着那个所谓的“宏”命令应该可以做这样的效果。下去到那些大网站翻来翻去,发现居然根本米人考虑过这种问题?都没找到现成的例子(至少中文米有)——歧视俺们小脑反应慢的…… 还有人公开宣称不能用宏来切换状态,说进了暗影就出不了——厚厚,笨人不知道学习罢了~~~~~~~~~~~~ 所以那天七上八下来来去去,找到宏函数列表看了半天,就是为了做这种事,反正现在是做到啦,想想说不定不仅是MS,对其他职业可能也有点儿用?so,写出来放在这里: 进暗影及切换到攻击动作条(我的攻击动作条是条1,俺暴力^0^)很简单啦—— /cast 暗影形态 /script CURRENT_ACTIONBAR_PAGE=1; /script ChangeActionBarPage(); (说明:后两条命令的分号别丢了就是——命令1不说了,命令2是设置当前动作条为第一条,命令3是应用动作条切换命令) 退暗影及切换到治疗动作条(我的治疗动作条是条2),就这个有些麻烦,所以可能真有人没动脑筋去做过—— /script local T; /script for i=0,15,1 do T=GetPlayerBuffTexture(i);if (T and string.find(T,"Shadow")) then CancelPlayerBuff(i);break;end end /script CURRENT_ACTIONBAR_PAGE=2; /script ChangeActionBarPage(); (说明:千万注意分号,该有的要有,不该有的别乱加,“Shadow”首字母大写别忘记了——命令1是设置一个变量T作用在命令2中可以看出;命令2最复杂,有兴趣的可以看下面的特别说明,因为如果依葫芦画瓢,应该还可以对其他一些职业有帮助吧;命令3、4就不用说了,同上) 特别说明: 为了方便看,我把命令2的语句分行写出来,并且隔出其首空格,请注意,在输入宏命令时一个命令里面不能换行,请全部写在一行里—— for i=0,15,1 do T=GetPlayerBuffTexture(i); if (T and string.find(T,"Shadow")) then CancelPlayerBuff(i);break; end end 一般大家在游戏里,进入暗影和退出暗影,想来不过是一个命令键,但实际上两次按键是不同的动作,进入暗影不用说是“施放(cast)暗影形态”,很简单,可退出暗影实际上并不是把这个法术再施放一次,而是要把“暗影形态”的效果消除。 我也是在那里闷了半天,忽然想到在暗影形态下时,buff位置有一个图标,所以理论上来说退出暗影不就等于取消这个buff图标么,也就是debuff了。所以查看buff/debuff函数列表,确实有一个CancelPlayerBuff(buffid)的函数。可恶的是,这个函数的参数是“buffid”,也就是以buff的序列号为标准来debuff的。暗影形态施放以后,其buff图标的序列可不固定,因为随时可能在之前被加上其他的增益减益buff啊! 所以很自然,就会想到循环和判断命令的效果。for 用法很简单了,这个 for 循环是从0开始循环到15,步长为1,即循环16次——据说一个人身上同时能加的buff暴雪有规定,最多16个。每次用 if 判断当前buff是不是“暗影形态”,是就把它给debuff掉(即使用cancelplayerbuff函数)同时退出循环,不是就继续循环下去。 要判断一个buff是不是“暗影形态”,又要用一个buff/debuff组的函数,也就是那个GetPlayerBuffTexture,这个函数返回的又不是简单的buff名称,而是一长串包括所谓路径和buff名的字符,所以又用了一个string的find方法来判断返回的字串里有没有“Shadow”这几个字符,有就是暗影,没有就不是。注意“Shadow”的首字母大写,否则找出来有误俺可不管。 [此贴子已经被作者于2005-10-11 19:58:45编辑过] |