本文仅供学习与参考使用,请勿在实时多人竞技中使用,后果自负。

零、引言

对于很多FPS游戏而言,瞄头是很多玩家所追求的技术,由此滋生了许多自瞄脚本。单纯地实现图像识别的自瞄并不困难,但是FPS类游戏追求高精度与低延时,同时其反作弊系统也阻塞了很多常用API的使用,因此,不依靠内存读取,仅仅依靠图像识别实现自瞄功能还是需要跨越不少障碍。

壹、截帧功能

Valorant或tx的反作弊系统阻塞了winapi的调用,但是这可以通过简单的以管理员身份运行的方式越过这一障碍。即便如此,这种方法也是不推荐使用的,甚至对于移动目标而言是无用的,这是因为该api截图所需时间达到了百毫秒级别(玩过FPS类游戏的玩家都知道这个延时会让游戏变得难以接受)。

本人推荐使用dxcam进行截帧操作,由于这个库通常在c++下使用,虽然有python版本,但是现有的网页以及GitHub等开源平台都没有python版本的代码,因此实现起来有一定困难。dxcam可以实现4ms左右截帧的功能,但其相机启用需要较多时长(20ms左右),因此我们需要保持相机常开,虽然这会占用不少内存,但是相对于你的FPS游戏而言,完全可以忽略这些影响,同时,为了避免相机一直工作,我们需要加入人工触发键位。

另外,由于Valorant窗口的限制,你需要将camera的窗口对象调整为Valorant所在显示器的分辨率,并且将该显示器设为主显示器,否则会爆错。

贰、图像处理

截图完成之后,我们得到了大小为屏幕分辨率的数组,由于Valorant的敌方有高亮显示功能,大大减少了敌方识别的困难。首先可以缩小图像处理的区域(处理的区域越少,意味着速度越快),通常,除去左上角的小地图、下方的技能栏、上方的人物栏,其次,由于本功能需要半人工操作,你所操纵的角色在移动时,准心一般不会离敌人可能出现的位置太远,因此这里推荐选取以屏幕正中央区域为中心,高度与宽度为1/3显示器分辨率的区域进行操作。

然后我们可以通过hsv掩膜来获取敌方高亮颜色所在位置,一般推荐紫色,红色也行(不知道hsv的话可以上网查询,有非常详细的介绍)。滤除后,目标颜色位置在数组中的值就变为255,其他地方都为0,当然,会出现地图以及枪皮颜色干扰的情况,若想要自定义可以在滤布后的代码块中加入在窗口中显示过滤后图像的代码进行调整。上面的操作完成后,我们只需要挑出值为255的位置即可。一般来说,我们需要最高点、最右侧点、最左侧点即可。爆头点可选取((最右侧点横坐标+最左侧点横坐标)/2,x*最高点 + (1-x)/2*(最右侧点纵坐标+最左侧点纵坐标)),x为比例系数,可选 4/5 。考虑到区域中可能会出现多个敌人,可以在检测到最高点后进一步缩小检测范围,使扫描区域变为一个仅能容下一个人物的框内(当然人物部分重叠的情况会导致方法失效),使得我们定位最终变为一个敌人的爆头点处。

叁、鼠标移动与触发

同样由于Valorant或tx的反作弊系统阻塞了winapi以及其他常见api的调用,这里选取使用logitech驱动作为鼠标移动的实现方式(logitech与tx有某种关系,因此可以避免因为鼠标或键盘驱动异常而触发反作弊),上文提到过,我们不能让camera处于一直截屏的状态,我们需要加入触发键位(可以选取鼠标侧键)。安装logitech驱动(由于这是驱动级程序,可能要求你关闭内存完整性),之后在python中调用相应接口即可。

FPS游戏中的鼠标移动都是根据相对位置来实现。由于准心一直位于屏幕正中央,这里只需要logitech模拟鼠标移动(target_x - 屏幕宽度/2,target_y - 屏幕高度/2)即可,同时,由于定位精准性的需求,在程序里面设置了DPI感知(提高鼠标精度),这会导致logitech模拟鼠标的定位精准度下降,其精准度与你鼠标的灵敏度和移动距离有关。因此,程序里面设置基础步长多次移动。

肆、其他

现在的反作弊系统加入了人工智能检测功能(监测玩家操作是不是人类能打出的操作),虽然不知道tx的AI技术怎么样,但是为了避免你的队友在观战时发现你在抽帧爆头,还是建议加入一定的延时操作以让自瞄更像人类。延时通常加入在鼠标多次移动的间隙以及鼠标移动和射击的间隙中。由于普通time延时在1ms级别的准确性太低(可以给你搞到30ms),这里使用其他延时函数实现。

同时,为了避免你的爆头率过高,你可以加入另外一个键位来实现击中身体(这需要你自己更改目标区域,虽然代码中已经实现)。在“泼水”式打法中,一般前4发不是随即弹道(对于AK和M4而言),因此可以让你的鼠标模拟点击时保持300ms左右的延时实现4连发。

武、结语

目前tx的ACE反作弊最出生的一点就是它会时不时扫描你的电脑硬盘。一个内核级程序在PC里面几乎是无法反制,这意味着只要是本机软件脚本都会被扫描(这也滋生了DMA外挂),所以没有绝对安全的脚本,即使你甚至没有运行脚本。因此作者强烈建议屏幕前的各位不要在多人实时竞技中使用脚本。tx和Valorant一般只会检测到你有作弊的嫌疑,但无法确认你是否真正地开挂。再由于陶片放逐法的使用,因此可疑账号可能会遭到频繁封禁6h或者24h,这对玩家体验会造成很大的影响。

我用夸克网盘给你分享了「valorant.zip」,点击链接或复制整段内容,打开「夸克APP」即可获取。

/~dfa638HCiC~:/

链接:https://pan.quark.cn/s/1dd0a60c54b5?pwd=5zJb

提取码:5zJb