• 130阅读
  • 0回复

任鸟飞《天涯明月刀》狩猎百发百中 [复制链接]

上一主题 下一主题
在线任鸟飞
 

微信公众号  任鸟飞逆向
天涯明月刀狩猎玩法及其类似于FPS游戏
即3D射击
所以同样拥有自动瞄准功能和爆头功能
想达到百发百中我们就要精准的计算出3D朝向值
读取人物坐标
遍历怪物,读取怪物坐标比较简单,不过多陈诉
朝向自然而然一定是我们和敌人的坐标计算出来的
那么怎么计算的呢?
我们抓取射击封包(3个封包都需要朝向值)
发现  封包里面  有  3个朝向值  x,y,z
都是浮点型的   都是-1 到1的值
3个朝向值表示3D朝向的话并且都是-1到1
那么这3个值不可能是X,Y,Z的3方向角度
只有两种可能(当然我们也可以追踪封包参数来源也会发现同样的算法)
第一种 角度-π 到π  换算成 -1 到1 经过多次测试  发现不是
第二种 以自己为球心  画一个半径为1的球   我们和怪物连线和球的交点即为这3个朝向值
这是由于2D游戏多采用半径1圆交点的算法  我们才会想到
当然直接理解3D的过于抽象
我们可以先看看  以往2D游戏惯用的  1半径的圆交点朝向算法
3D游戏不过是在这个基础上  增加Z坐标系圆变成球而已
当然正常PFS游戏  一般朝向值是两个   即数学上常用 的俯冲角和摇摆角 ,而旋转角对于  射击是不影响的,我们人物也不可能 头朝下脚朝天。
知道了这些计算出3个朝向值直接填入封包即可自动瞄准,百发百中了
首先距离=sqrt((X人物-X怪物)*(X人物-X怪物)+(Y人物-Y怪物)*(Y人物-Y怪物)+(Z人物-Z怪物)*(Z人物-Z怪物))
然后通过相似三角形计算出交点的  3个坐标
1/距离=X朝向/(X怪物-X人物)
X朝向=(X怪物-X人物)/距离
Y朝向=(Y怪物-Y人物)/距离
Z朝向=(Z怪物-Z人物)/距离
ps: 封包中和逆向的算法中发现  Z值填写的是  Z朝向/2为了起到简单加密?不得而知
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个