字号:

超详细剑网3官方内置宏语法攻略

时间:2010-04-19 09:18 作者:JQKA5401和陈雨 手机订阅 参与评论(0) 【投稿】
文 章
摘 要
前言独自摸索了宏将近2个来月,作为一个研究宏的应用但是却不用宏的人,我感觉鸭梨很大。好吧,我不是标题党,不很写很引人注目的标题。通常这类帖子沉得很快(详情请参考前面写的的两篇七秀攻略贴),我也不想弄什么回复可见。如果大家觉得好的话就回一个帖子,作为对我的一种支持。如果喷,请不要人

6、距离判断

嗯,关于距离判断的比较复杂,我尽量解释清楚。

第一种是:

/script N = GetClientPlayer()

/script t=GetTargetHandle(N.GetTarget())

/script function GetDistanceByTarget(target1, target2)

if not target1 or not target2 then return false end

if target1.nMapID ~= target2.nMapID then return false end

nX1= target1.nX

nX2 = target2.nX

nY1 = target1.nY

nY2 = target2.nY

strdis=(((nX1 - nX2) ^ 2 + (nY1 - nY2) ^ 2) ^ 0.5)/64

return strdis

end

/script d=GetDistanceByTarget(t,N)

中间那个函数就是计算距离的,通过人工的方式来计算。

如果没有目标则返回FALSE

  如果两个目标不在一个地图,则返回FALSE

NX1是目标1的X坐标

NX2是目标2的X坐标

NY1是目标1的Y坐标

NY2是目标2的Y坐标

直线距离等于((X1-X2)的平方加上(Y1-Y2)的平方)的0.5次方除以64

返回直线距离

另外一种比较简单的

/script N = GetClientPlayer();

/script tT,tID=N.GetTarget();

/script t = GetTargetHandle(tT,tID);

/script m=GetCharacterDistance(N.dwID,tID);

这种判断在判断距离的时候要除以64,才是真正的距离

为了方便加入一个封装

/script d=m/64

调用距离的时候就使用d

附带一个例子:

判断距离如果目标距离小于6尺使用冲脉太乙加九转归一,如果目标距离大于6尺并且小于8尺则使用九转归一。

/script N = GetClientPlayer();

/script tT,tID=N.GetTarget();

/script t = GetTargetHandle(tT,tID);

/script m=GetCharacterDistance(N.dwID,tID);

/script d=m/64

/script if d<=6 then OnUseSkill(169,1) end

/script if d<=6 then OnUseSkill(305,1) end

/script if d>6 and d<8 then OnUseSkill(305,1) end

7、其他

当然,出了以上的智能判断以外,还有其他的比较没用或者BT的判断,如状态剩余时间等,比较复杂而且用处不大,我依旧在研究中,于是在此不多解释。

加入17173玩家俱乐部,100%领《原神》月卡、《王者荣耀》888点券、《魔兽世界》T恤等周边好礼!
加入方式:微信关注“17173服务号”

最近更新

全球新闻