第一篇:用剑网3内置宏实现万花一键治疗(有更新)
根据宏内置语法浅析(LUA)做的万花一键治疗宏
感谢宏内置语法浅析(LUA)的作者devilfate
终于可以不用插件就一键治疗了。
主要功能有:自动补握针,出逐流效果后自动转为施放长针,目标血量少于30%水月无间+长针瞬加。其余时间无脑局针。
修正各种bug,在无目标或目标为敌对时自动自我施法的最终版本:
/script player=GetClientPlayer()
/script tT,tID=player.GetTarget()
/script target=GetTargetHandle(player.GetTarget())
/script if not target or IsEnemy(player.dwID,tID) then target=GetClientPlayer() end
/script pBuff=player.GetBuffList()
/script tBuff=target.GetBuffList()
/script hp=target.nCurrentLife/target.nMaxLife
/script CD,CD,CDA=player.GetSkillCDProgress(136,player.GetSkillLevel(136))
/script if hp<=0.3 and CDA==0 then OnUseSkill(136,1) end
/script if pBuff~=nil then for _, v in pairs(pBuff) do if (v.dwID==722 or v.dwID==412 or v.dwID==932) then if hp>=0.6 then OnUseSkill(138,player.GetSkillLevel(138)) else OnUseSkill(142,player.GetSkillLevel(142)) end end end end
/script if tBuff~=nil then for _, v in pairs(tBuff) do if (v.dwID==631) then OnUseSkill(137,player.GetSkillLevel(137)) end end end
/script OnUseSkill(101,player.GetSkillLevel(101))
如果还需要自动春泥的话,就在第8行和第9行之间插入
/script CD,CD,CDB=player.GetSkillCDProgress(132,player.GetSkillLevel(132))
然后在倒数第二行和倒数第三行之间插入
/script if tBuff~=nil then for _, v in pairs(tBuff) do if not (v.dwID==684or v.dwID==1674 or v.dwID==367 or v.dwID==399 or v.dwID==360) and CDB==0 then OnUseSkill(132,player.GetSkillLevel(132)) end end end
不过自动春泥的功能我还没有测试,如果有bug的话欢迎提出
(下页:纯阳宏)
感谢宏内置语法浅析(LUA)的作者devilfate
感谢大富翁孙小美当时提出的聚气输出循环。
感谢用剑网3内置宏实现万花一键治疗作者memerit……因为文章前两行是抄袭你的。
开个玩笑,言归正传。来谈谈气纯一键DPS宏。
早在大脚宏时代,DPS宏就已经存在了,不过当时不是一键。
用大脚宏命令
/cast 两仪化形
/cast 凝神聚气
替代两仪技能,在放两仪时连按两下,就可以方便的做到在公**中聚气了。
目前只要装了大脚,那么在内置宏界面中/cast命令依然有效。这个宏依然可以用。
但是四象还是要自己放,而且气格数需要自己判断,可能会出现两仪后一个四象就满气,但是来不及判断气格下一个四象已经开始读条,浪费气的问题,也可能在打BOSS的时候出现四象未命中,气没有攒到就提前放两仪,浪费DPS的问题。
一键DPS宏除了方便你少按键以外,主要就是解决上面2个问题的。宏的简单模式如下:
/script N=GetClientPlayer()
d=N.nAccumulateValue
/script sx1,sx2,sx3=N.GetSkillCDProgress(367,N.GetSkillLevel(367));
/script ly1,ly2,ly3=N.GetSkillCDProgress(301,N.GetSkillLevel(301));
if sx2>=1then
OnUseSkill(300,N.GetSkillLevel(300)) end;
if d>=8 then
OnUseSkill(301,N.GetSkillLevel(301)) end;
if d<=7then
OnUseSkill(367,N.GetSkillLevel(367)) end;
基本意思相信看过语法浅析的应该都知道了,就是指出语法浅析那个帖子中的一个小问题:
至少在纯阳职业中/script sx1,sx2,sx3=N.GetSkillCDProgress(367,N.GetSkillLevel(367));
这一句里 SX2,SX3的意义不是公共冷却所剩时间和技能冷却所剩时间。
SX2才是技能冷却剩余时间,而SX3则很诡异,当技能冷却时,它和SX2一样是0,当技能还没有冷却时,它表示的是技能冷却时长(不是冷却剩余时间,)是一个固定值。
如果是没有CD的技能,则SX2就是公**的剩余时间,SX3为公**时长(当公**转的时候)。
而且,所有公用公**的瞬发技能,他们的SX2是同时变化的。所以我在判断施放聚气OnUseSkill(300,N.GetSkillLevel(300)) end;
前的条件是if sx2>=1而不是if sx2>=1 or ly2>=1
也只所以如此,这个宏当你释放瞬发的雨集四象后,也可以利用公**进行聚气。
这种输出方式因为增加的两仪的数量,所以耗蓝稍微大一些,那么能不能把回蓝技能抱元守缺也做进宏里去呢,当然是可以的。
(下页:一键DPS宏回蓝版)
一键DPS宏回蓝版如下:
/script N=GetClientPlayer()
d=N.nAccumulateValue
/script sx1,sx2,sx3=N.GetSkillCDProgress(367,N.GetSkillLevel(367));
/script ly1,ly2,ly3=N.GetSkillCDProgress(301,N.GetSkillLevel(301));
/script by1,by2,by3=N.GetSkillCDProgress(316,N.GetSkillLevel(316));
a=0 m=N.nCurrentMana
if sx2>=1then
OnUseSkill(300,N.GetSkillLevel(300)) end;
if m<=7500 and by2==0 then a=1 end;
if d<=9 and a==1 then
OnUseSkill(367,N.GetSkillLevel(367)) end;
if d==10 and a==1 then
OnUseSkill(316,N.GetSkillLevel(316)) end;
if d>=8and a==0 then
OnUseSkill(301,N.GetSkillLevel(301)) end;
if d<=7and a==0 then
OnUseSkill(367,N.GetSkillLevel(367)) end;
基本意思其实和上一个一样,就是增加了一个判断是否需要回蓝的变量a,当蓝少于7500且抱元冷却时,判断a=1也就是进入需要回蓝状态,此时如果气不满则不停释放四象攒气,一直到满气后释放抱元回蓝。(7500是参考数,可以自行调节)
其实这个宏的回蓝还可以进一步增强:把坐忘当作回蓝技能加入,只需要在a=0 m=N.nCurrentMana后增加两行
/script zy1,zy2,zy3=N.GetSkillCDProgress(312,N.GetSkillLevel(312));
if zy2==0 then
OnUseSkill(312,N.GetSkillLevel(312)) end;
就可以了。
不过考虑到坐忘可能用来保命,所以这个可以看情况自己添加。
再考虑到开场如果担心两仪仇恨太高(这个宏开场第一下必然是两仪),那么不妨在上述地方再添加一句
if m==N.nMaxMana then
OnUseSkill(367,N.GetSkillLevel(367)) end;
也就是满蓝状态下优先放一招四象,可以给T多2秒时间建立仇恨。
其他诸如凭虚,韬光都可以自由添加,我个人是建议手动,因为这2个技能的使用时机主要还是看临场情况。