首页 > 王者荣耀外挂脚本辅助免费  > 

透视挂-FPS 游戏实现GDI透视

可以说FPS游戏一直很受欢迎。典型代表有《反恐精英》、《穿越火线》、《绝地求生》等。基本上任何FPS游戏都会出现视角故障。透视错误有多种类型。最常见的是 D3D。视角,盒子视角,还有一些比较高端的显卡视角。从透视实现的难度来看,盒子透视是最复杂的一种。本教程将学习盒子透视的实现算法,并编写通用的辅助工具来实现透视效果。

盒子透视的原理是读取游戏中已知的坐标数据,使用一定的算法计算出自己与敌人的距离,并结合GDI绘图功能,直接在窗体上绘制图形。直到现在,这个插件仍然具有极强的生命力,原因在于它的通用性比较强,有固定的算法,可以适用于大多数FPS游戏。

反恐精英下载地址: 链接: 提取码:yupq

透视模块下载地址: 链接: 提取码:vg9v

查找游戏坐标数据

教程以经典FPS游戏【反恐精英:起源】作为演示对象。在开始编写盒子算法之前,我们需要获取一些坐标数据。这些数据是计算盒子的基础。这里我们需要依次使用CE工具。遍历找到【FOV视野】【我的坐标数据】【我的鼠标角度】【敌人坐标数据】【玩家数量】【玩家是否死亡】【敌人之间的数组偏移】接下来老司机带你通过这些就可以找到所有的基地址数据。滴滴滴滴~上车吧! !

1. 求FOV视角:视野也称为FOV。视场的大小决定了摄像机的视场角。简单来说,FOV 就是屏幕和摄像头之间的角度。我们可以通过狙击枪的瞄准镜来找到游戏的视野。当未打开相机时搜索未知的初始化数据(浮点数),打开相机后搜索变化的值(浮点数),依次遍历找到游戏的视角。大多数 FPS 游戏的视角为 90 度。

1.直接搜索,打开CE和游戏,购买一把狙击枪,然后在CE中搜索【未知初始值】。注意这里必须选择浮点数搜索。这把枪就是M700。用这把枪射击CF枪并获得爆头是非常令人兴奋的。我还记得当年我杀红眼的方式。

在这里插入图片描述

2.返回游戏,打开狙击枪的1倍狙击镜,在CE中搜索【更改值】,然后打开2倍狙击镜,继续搜索【更改值】,最后关闭狙击镜并搜索对于 [ Value] ,此过程需要重复大约 10 次。

在这里插入图片描述

3.此时,狙击镜已关闭。直接搜索【不变值】,然后掏出手枪,搜索【不变值】,因为在未开瞄准镜的情况下,手枪的视野和狙击枪的视野是一样的。搜索可以尽可能排除干扰,更准确地筛选出我们需要的数据。

在这里插入图片描述

4、经过上面的遍历,结果并不多。我们可以猜测角度应该在[0-180度]之间,所以再次通过[ Two]对结果进行过滤,然后可以看到有两个90度的角度,它们是绿色的基地址。一般情况下,开发者会默认将此角度设置为45度、75度或90度。这样有利于后期编程,偏差也不会太大。 。

在这里插入图片描述

5.返回游戏,右键手动调整狙击瞄准镜的视野,发现下面地址栏的数据也会发生变化。如果我们双击[]内存地址,我们会发现这个基地址是通过[.dll+]模块加上偏移量得到的。 ,到目前为止我们已经知道这个游戏的视场角是90度,并且每次打开相机时这个地址都会改变,从而确认该地址就是FOV。

在这里插入图片描述

6.如何通过代码读取本游戏当前的FOV数据?这里我用易语言编写并封装了【透视模块】。使用这个模块将使透视辅助书写变得简单。后续内容中会用到该模块。

在这里插入图片描述

2、查找人的坐标数据:通常(X,Y)坐标波动较大,很难定位。我们可以找到Z坐标,因为Z坐标控制着角色的高低参数。比较容易找到。首先,搜索未知的初始值(浮点数)。然后跳到盒子上或者移动到更高的位置寻找增加的值,返回地面寻找减少的值,重复这个过程,最后找到Z轴的坐标。游戏中(X,Y,Z)坐标是彼此相邻的紧凑结构(+0,+4,+8)一旦找到对应的Z坐标,就可以计算出(X,Y)坐标。

1.打开CE进入游戏,我们找到一块比较平坦的地面,这里使用的地图就是,然后用CE直接搜索【未知初始值】搜索类型为4字节。

在这里插入图片描述

2、然后我们跳到第一个高点,可以跳到比当前地面高的盒子或者地方,然后搜索【增加值】,结果如下。

在这里插入图片描述

3、上面的搜索完成后,我们再跳转到第二个高点,然后继续搜索【增加值】。搜索结果如下。

在这里插入图片描述

4.从箱子里直接跳到地上,然后搜索【减少值】。搜索完成后不要移动,直接在地面搜索【不变值】,这样循环继续检查。

在这里插入图片描述

5、经过不断的尝试和调查,我们发现Z轴的坐标地址是[]。将上面的内存地址减去4,得到Y、X坐标的内存地址。

在这里插入图片描述

直接使用 Easy 配合透视模块读取坐标数据。

在这里插入图片描述

3、找到自己的鼠标角度:通常FPS游戏中鼠标中心的Y坐标会随着向上移动而减小,向下移动时鼠标中心会增大。通过不断遍历(浮点数),可以搜索鼠标中心的Y坐标,得到鼠标。 Y坐标之后再+4,就可以得到鼠标的X坐标参数。

1.打开CE进入游戏,将鼠标置于屏幕中央,直接搜索【未知初始化数据】(浮点数),然后将游戏鼠标稍微向上抬起,返回CE搜索【还原值】 ],将其提起几次并搜索减小的值。

在这里插入图片描述

2. 然后逐渐按下鼠标,返回CE并搜索[增加值]。如此重复十次以上。最后不要移动鼠标,直接搜索【未改变的值】,可以找到如下结果。这是基础知识。您可以选择任何地址。

在这里插入图片描述

这里我们选择地址[],然后加+4即可得到X坐标。我们通过Yi语言编程获得这两个参数。代码如下:

在这里插入图片描述

4、查找单个敌人的坐标数据:首先在开始游戏前通过控制台暂停对方机器人的移动。使用1命令暂停。暂停后,搜索未知的初始值。然后使用0命令让机器人走两步然后立即暂停寻找变化。值时,启动机器人移动并立即暂停,再次搜索变化的值,不断尝试,直到找到正确的数据。只要找到X轴的坐标,+4、+8就可以得到(Y,Z)的相对偏移量。

1、首先开始游戏并添加一个机器人(按+键添加),然后输入1命令暂停机器人,在CE中搜索【未知初始数据】。

在这里插入图片描述

2. 输入0 使机器人移动两步后立即暂停,然后在CE 中搜索[更改值]。此步骤需要重复多次。最后可以看到几个和坐标非常相似的数据。下面三个红色的数据都可以,我这里直接选它作为演示对象。

在这里插入图片描述

3、将找到的内存地址添加到下面的地址栏,然后右键选择【查找重写这个地址的东西】,记下偏移数据([esi+15B8]),基地址([])稍后会被使用。

在这里插入图片描述

4、直接双击这个内存地址,就可以看到.dll+模块地址+偏移地址,然后与15B8相加即可得到X轴坐标数据。

在这里插入图片描述

总结:在15B8的基础上,每次递增+4,即可得到Y轴和Z轴的坐标地址。最后,可以通过简单的语言编程获得单个敌人的坐标数据。

在这里插入图片描述

5.获取当前玩家数量:查找玩家数量非常简单。大多数 FPS 游戏都有角色统计菜单。按 T​​AB 键即可查看。我们可以通过查看字符数来找到它。第一次搜索是1,然后按+号添加1个机器人搜索2,再添加一个机器人搜索3,不断遍历即可得到玩家人数。

1、打开CE修改器,进入游戏,按TAB键可以看到当前只有你一个。我们可以在CE中搜索1。

在这里插入图片描述

2、按大键盘下的+号,然后在CE中输入2,点击【再次搜索】,循环直至找到绿色基址。

在这里插入图片描述

总结:获取玩家数量太简单了。你自己去找吧。上面的绿色地址可以作为判断的依据。这里直接使用.dll+地址。易语言阅读代码如下。

在这里插入图片描述

6.判断敌人是否死亡:获取敌人当前的状态。在CS中我们可以搜索敌人的血量。先添加一个机器人,然后搜索100,射击敌人一次(不要打到头部),搜索减少的值,然后搜索剩余的值。要更改该值,请再次射击敌人以搜索减少的值。只是要小心不要杀死敌人。通过不断的遍历,我们终于可以找到我们想要的敌人血量了。通过血量,我们可以判断这个地方的人是否喜欢。死。

1.进入游戏,手动添加机器人。此时机器人的血量为100,我们直接搜索100的精确值。

在这里插入图片描述

2.用手枪打敌人的脚,不要打他的头!然后直接搜索【减少值】。查找完成后,直接多次查找【不变值】,重复2-3次即可找到几个地址。

在这里插入图片描述

我们发现上面有四个地址数据似乎与血量有关。我们把这些数据分别改成100,发现改成100的时候,其他地址也都改成了100,说明第三个是角色的。血量。

3.然后右键单击第三个地址,选择【查找重写此地址的内容】。可以看到偏移量是[9c]。我们继续寻找这个内存地址。

在这里插入图片描述

4、此时找到基地址.dll+,然后加上9C即可得到当前敌人的健康地址。

在这里插入图片描述

5、当我们击杀这个敌人的时候,我们会发现血量变成了1,也就是说这个游戏中角色死亡的时候会表示为1。

在这里插入图片描述

小结:知道了这个特征,我们就可以用易语言来判断敌人是否死亡了。代码如下:

在这里插入图片描述

7. 查找敌人之间的数组偏移量: 前面我们已经找到第一个敌人的数据[.dll+]指向第一个敌人的地址。将其与偏移量[15B8]相加,即可得到X坐标。在此基础上再加4即可得到。 Y 坐标。显然游戏并没有将玩家数据放入偏移量中。每个敌人很可能都占据一个地址。我们可以使用内存遍历工具找到第二个敌人的地址,然后用第二个敌人的地址减去第一个敌人的地址就可以得到敌人的地址差。

1.首先进入游戏,添加两个机器人并将机器人暂停1,然后在CE工具的内存地址栏中添加.dll+内存基地址。

在这里插入图片描述

2、然后用彝语写一个乞丐版的基址遍历器。还可以通过CE进行结构抓取。互联网上也有很多基地址遍历工具。为了方便起见,我在这里只用两行代码来完成。代码如下:

在这里插入图片描述

3. 确保游戏中只有两个机器人,然后运行此代码。我们知道,第一个地址就是第一个敌人的坐标数据。由于角色记忆矩阵中数据的排列不会偏离太多,所以这里我们主要找到与6.-012偏离不太大的记忆进行分析。

在这里插入图片描述

从上面的结果可以看出,地址和浮点数的后缀是相同的,偏差并不大。可以断定,这两个就是两个敌人的基地址。这时我们减去10,表示10是敌我之间的偏移地址。 ,不同敌人之间的距离为10。最后我们直接用易语言获取所有敌人的坐标数据:

在这里插入图片描述

8、绘制屏幕框并在屏幕上书写:绘制外部框就是调用GDI绘图函数在指定的窗口句柄上进行绘制。绘图代码我已经封装好了,直接调用就可以了。这里我就不多啰嗦了。

在这里插入图片描述

分别调用绘制框和绘制文本,测试结果如下:

在这里插入图片描述

盒子透视算法分析

在上一篇教程中,我们手动找到了【FOV视野】【我的坐标数据】【我的鼠标角度】【敌人坐标数据】【玩家数量】【玩家是否死亡】【敌人之间的数组偏移】这些对于基地址数据,大多数情况下类FPS游戏中寻找坐标的方法是类似的。接下来我们具体分析一下计算盒子的思路,并实现这些画盒子算法。

求第一象限角度:假设敌人在第一象限,求鼠标指针与敌人之间的角度b。您可以使用反正切求导。

在这里插入图片描述

我们知道己方与敌人之间的相对(X,Y)距离,我们可以利用反正切公式求出角度a的度数。我们的最终目标是找到鼠标指针与敌人之间的角度 b。这时我们可以用已知的鼠标角度C减去a,得到b的角度。

求第二象限的角度:假设敌人在第二象限,而我们的鼠标仍然指向第一象限,求敌人与X轴的角度。

在这里插入图片描述

如上图所示:由于(X,Y)(黑色)是已知条件,我们可以求X到Y的反正切,得到角度a的度数,然后加上90度,就可以求出当前的角度a。敌人的坐标位置。它与 X 轴之间的角度。

第三、第四象限:第三、第四象限的敌人与上图类似。最终目标是找到敌人位置与X轴之间的角度。第三象限应增加 180 度,第四象限应增加 270 度。这里我不会讲太多细节,很简单。

另外4种特殊情况:如果敌人在第一象限并且与X轴重合,那么敌人与X轴的夹角一定是0度。同样,如果与Y轴重合,那么X轴与敌人的夹角就是90度,以此类推就是这四种特殊情况。

在这里插入图片描述

上面的四个象限和特殊情况,如果展开的话,总共是8种不同的情况。下面的代码就是这八种不同的情况。在调试下面的代码时,你会发现一个缺陷,就是当我们绕着敌人转圈时,偶尔会出现大于180度的角度,而这是两种很特殊的情况。

在这里插入图片描述

特殊情况:当敌人在第四象限,鼠标角度仍指向第一象限时,会出现大于180度的角度。

在这里插入图片描述

如上图所示:我们的目标是找到鼠标角度与敌人之间的角度。此时,鼠标指向第一象限,而敌人却在第四象限。我们用360度减去e角(e=敌人(坐标与敌人之间的夹角)来求角度,最终代码如下:

在这里插入图片描述

FOV视场角:摄像机的作用是移动游戏中的场景并将其投影到二维平面上显示给玩家。

在这里插入图片描述

如上图:摄像头与屏幕之间的角度统称为视野。游戏中十字准线到屏幕边缘的位置是 FOV 的一半。以屏幕分辨率为例,当FOV为90度时,十字准线与屏幕相等。垂直线形成一个 45 度的等腰直角三角形。此时相机到屏幕的距离是屏幕长度的一半(1024/2 = 512)。

将3D横坐标转换为屏幕X坐标:将3D矩阵中的敌人坐标数据转换为屏幕X坐标。

在这里插入图片描述

如上图:我们需要找到敌人位置的坐标数据。我们可以使用 (x/y) x (1024/2)。最后,我们需要加上 P 的长度。由于窗口的总长度是 1024,所以我们可以直接将其除以 2,得到另一半的长度(512)。将敌人位置和另一半长度相加,就是敌人投射在屏幕上的X坐标。但是,此时我们不知道(X,Y)的长度,所以我们需要找出(X,Y),如下所示。

在这里插入图片描述

上图中:我们需要求(X,Y)的距离。这时候我们已经知道了M和C的长度,那么我们就可以直接使用勾股定理了。 M的平方+C的平方(平方根)=Z,得到Z后,sin a = (x/z) => sin a * z = X。此时我们已经得到了X的长度,那么cos a = (y/z) => cos a * z = Y 此时我们也得到了Y的长度。最后(x/y) x 512 + 512可以得到敌人的位置以及投影到物体上的X坐标屏幕。

将三维垂直坐标转换为屏幕Y坐标:了解了三维水平坐标后,垂直坐标就变得更简单了,如下图:

在这里插入图片描述

上图中: d和c之间的距离可以通过tan公式导出。然后将d和c的长度相加即可得到鼠标指针到敌人位置的距离,然后加上屏幕高度的一半。这是游戏屏幕高度为768,所以只需添加384即可。

最终屏幕横坐标和纵坐标之间的转换算法如下。我不会费心最后一段代码!是时候搬砖了!

在这里插入图片描述

最终的透视效果如下。这里的游戏画面一定是。将三维坐标转换为屏幕坐标的算法已被硬编码。对于其他屏幕尺寸,需要自己在代码中调整比例关系和对应的值。

在这里插入图片描述

在这里插入图片描述

标签: 透视挂

透视挂-FPS 游戏实现GDI透视由官网王者荣耀外挂脚本辅助免费栏目发布,感谢您对官网的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“透视挂-FPS 游戏实现GDI透视