0
焦点头条

官方内置宏语法攻略

2014-02-23 07:56| 查看: 5166 |作者: 小雪+陈雨




关于智能判断
这里介绍下比较常用的几项判断:
1.增益与减益的判断(buff或者debuff,见上)
2.技能冷却判断(见上)
3.纯阳与和尚的集气判断(见上)
4.气血以及内力的值或者比的判断
5.读条状态
6.距离判断
7.其他
前四项可以在上面找到解释,这里只是重复解释一下。

1.增益于减益判断
建议使用函数封装,以下为原始语句:
以下为自身增益的检测
/script for _, D in pairs(GetClientPlayer().GetBuffList()) do if D.dwID == 增益的ID then 执行语句 end end;
以下为自身减益的检测
/script for _, D in pairs(GetClientPlayer().GetBuffList() or {}) do if D.dwID == 减益的ID then 执行语句 end end;
那么进行一下封装,成一个比较灵活的检测目标增益减益以及等级的判断
/script function buff(mb,id,lvl) for _, D in pairs(mb.GetBuffList() or {}) do if D.dwID==id and (lvl==nil or D.dwLevel==lvl) then return true end end 
return false end
如果前面加入了小封装,则N=自身,T等于敌对目标的话,在这里,MB=N就是判断自身状态,MB=T就是判断敌方状态。 ID就是增益减益的ID,等级对应BUFF等级,有些BUFF有
层数的,如剑舞。

2.技能冷却判断
同样建议使用函数封装,以下为原始语句
/script XX1,XX2,XX3=N.GetSkillCDProgress(技能ID,技能等级)
这XX1用不到,XX2是代表公共冷却,XX3则是代表技能冷却。
进行下简单的封装
/scrpit function cd(id) A,B,C=N.GetSkillCDProgress(id,N.GetSkillLevel(id)) return C end
如果要将技能冷却判断跟使用技能一起封装的话就这样
/script function use(id) A,B,C=N.GetSkillCDProgress(id,N.GetSkillLevel(id)) if C==0 then OnUseSkill(id,N.GetSkillLevel(id)) end end

3.纯阳与和尚的集气判断
判断集气的API是
nAccumulateValue
纯阳或和尚的气或豆的个数
纯阳为半个气为1,也就是0-10之间的数,比如7就是3个半气
和尚为0-3指间的数,一比一
只能判断自身集气数,没有强大到判断敌方集气数。
使用方法如下
/script if GetClientPlayer.nAccumulateValue==10 then OnUseSkill(301,X) end
进行下封装
/script P=GetClientPlayer.nAccumulateValue
/script if P==10 then OnUseSkill(301,X) end

4.气血以及内力值或者比的判断
关于这类的判断会用到以下几个API
nCurrentLife
当前生命
nMaxLife
最大生命
nCurrentMana
当前内力
nMaxMana
最大内力
判断自身当前生命值
/script HP=GetClientPlayer.nCurrentLife
/script if HP=<5000 then OnUseSkill(XXX,X) end
判断内力值就把nCurrentLife换成nCurrentMana

判断自身生命比
/script HPR=GetClientPlayer.nCurrentLife/GetCLientPlayer.nMaxLife
/script if HPR<=0.5 then OnUseSkill(XXX,X) end
判断自身当前内力比就将nCurrentLife以及nMaxLife,换成对应的nCurrentMana跟nMaxMana

判断敌方当前生命值
/script T=GetTargetHandle(GetClientPlayer.GetTarget())
/script tHP=T.nCurrentLife
/script if tHP<=5000 then OnUseSkill(XXX,X) end
判断内力值就把nCurrentLife换成nCurrentMana

判断敌方生命比
/script T=GetTargetHandle(GetClientPlayer.GetTarget())
/script tHPR=T.nCurrentLife/T.nMaxLife
/script if tHPR<=0.5 then OnUseSkill(XXX,X) end
判断自身当前内力比就将nCurrentLife以及nMaxLife,换成对应的nCurrentMana跟nMaxMana


收藏 分享 邀请

发表评论

关注订阅号"剑网3PVE"
获取第一手剑三资讯

关闭
您当前使用的浏览器版本过低,网站部分功能可能失效,请更换合适的浏览器。了解更多
返回顶部