按键精灵简单FPS游戏外部自瞄制作图文教程(找色法)

在社会高度发展的今天,FPS类是绝大部分人爱玩的游戏,有游戏,就会有外挂,有外挂才会有更好的游戏(开发者会去修复游戏的漏洞。)这对关系正如攻与防。

前两天,我闷得慌,于是,打开了按键精灵写了一份自瞄。

然后,我进入标靶模式,此处就拿某网页游戏开刀吧。

然后,QQ快捷键截一幅全屏图,放到桌面。打开Windows自带的画图软件。不好意想我电脑时间不准。Bios电池坏了。打开接的图。

这里给大家提醒一下,尽量离人物近一点。近一点,注意是近一点,其一,取色比较准确,其二,也比较好取数据,在一个就是,要不远不近,因为我们设置一个自瞄距离的是这个取中间。

然后我就在说一下接下来这一步,然后来说代码。

黑线框一个框框。因为这是一个长方形。然后我们把他的四个角依次编为A B C D。

如下图,同时,我也已经吧A B C D标注好了,大家可以去看,按键精灵抓抓,移动到第一个角A。将X和Y记录下来。

然后抓右下角,也就是图中的D角,也罢X和Y记录下来。同时,记录鼠标中心点的X和Y。

现在是重点!基础工作我们已经做完了。各点X和Y也已经取完了。(一共是三处,左上角 右下角 准星)

然后我们如果用非常简单的全屏找色如下图,这样有BUG吗?
肯定有!不然我怎么注释掉呢!这是一个非常滑稽的回答。

他的bug就在于简单的找色,哦不对,这个在if下一行不是打印,而是移动鼠标。TracePrint intX这个要改为Mover intX和Mover intY。
那这样子BUG就在他的鼠标会乱飘。乱飘,因为全屏的话,他的颜色很多,找起来会略卡,而且不准确。

然后我们的自瞄呢则恰恰相反。
他是在一块区域内找色,这样增加了准确性,有了准确性就不会让鼠标一直飘。
这是肯定的。= =然后,我们来讲一下我今天的外部自瞄原理是什么:
首先呢,我们在区域内找颜色,可以是头部的颜色,也可以是人物身体的颜色,当然,推荐吧图片放大,然后取得颜色比较准确。
然后我们把鼠标移动过去,最后套一个循环,就ojbk。
但是,说得非常轻巧,但做起来呢?其实也非常的简单。

首先,我们先超级模拟。这个没啥好说的。

然后我们来看这个获取窗口位置。至于为什么要获取窗口位置,是因为我们要找色的区域啊,必须是屏幕中的。

hwnd = Plugin.Window.MousePoint
sRect = Plugin.Window.GetClientRect(hwnd)

这两行代码呢,来看一下按键精灵注释,将鼠标移动到命令上面就可以啦。
Plugin是一个插件然后Window是窗口插件,按照意思来说就是插件中的窗口插件。
而这个MousePoint也是窗口插件,按键精灵这样解释的,获取鼠标指向窗口句柄,假设我鼠标现在指向那个CF他就获取CF的窗口句柄。就那么简单。
GetClientRect则是得到客户端窗体大小,为我们的自瞄打下基础。当然,我们FPS网页游戏的话,默认都是全屏的。

再来看一下下面这两行

TracePrint arr1(0)
TracePrint arr1(1)

其实这可以不用的,TracePrint就是指打印,输出。
再来说说这arr1是个脊背玩意。这是一个返回的数据,再来说说这一行代码

arr1 = split(sRect, “|”)

很多人看了一下就懵逼了,不知道是怎么回事,那我这里给大家做一个解释,在Windows插件中,可以找到这个命令。
如下表。
这返回值,他就有一个“|”这个符号来分割,所以说我们的sRect后面有一个|.

命令名称 GetWindowRect 窗口边框大小
命令功能 得到窗口句柄的边框大小(包括标题栏)
命令参数 参数1 整数型,窗口句柄
返 回 值 字符串型,边框大小(包括标题栏)
注:返回为:边框窗口左角X坐标|边框窗口左上角Y坐标|边框窗口右下角X坐标|边框窗口右下角Y坐标

然后呢,我们来写,自瞄了啊。

点面结合,这个词语了解一下,大范围的移动,玩家来完成,我们做的只是小范围的矫正。

然后我在这里说一下,通过窗口取得信息坐标是在左上角,是靠边的。
二我们要秒的就只有头部这一小块。嗯然后这个头部的坐上坐标是多少呢?前面我已经说过了,教大家取了。

然后呢,这两行就是在后台计算坐标,没什么好讲的

//后台计算左上角坐标 = =陈独秀!
陈独秀X = arr1(0) + 588
陈独秀Y = arr1(0) + 347

//计算右下角坐标 = =优秀!
优秀X = arr1(0) + 863
优秀Y = arr1(1) + 522

然后自己添加一个Mover命令移动过去哦不对,还有一个找色命令,现找色在移动,套个循环。

后来呢

许多人反馈,鼠标还是飘,根本瞄不准。
那么我就发现了,一个Mover命令远远不够,所以说这个时候就要一个计算要多少Mover这个程序了啊。

取中间的坐标是计算此事准星在哪里,瞄准哪里,然后要多少Mover可以移动到头部。
这个就是原理,想实现,也非常的简单,左上角坐标Y-中心坐标Y,右下角坐标X-中心坐标X
求出多少Moner可以瞄头。
后来捏,
居然还是不行。。。
此时此刻我腚眼一看,这个移动鼠标命令啊,其实是放大了三倍像素,就是移动一个像素,屏幕上会移动三个。理论上我们要把它÷3才可以所以说我们吧坐标差÷3完美解决,成功对准头部。
嵌入循环,ojbk!下方是源代码

/////////////////////////////////////////
SetSimMode 2
//Delay 2000
//FindColorEx 0,0,1440,900,”070707″,0,0.9,intX,intY
//If intX > 0 and intY > 0 Then
// TracePrint intX
// TracePrint intY
//End If

//获取窗口位置
hwnd = Plugin.Window.MousePoint
sRect = Plugin.Window.GetClientRect(hwnd)
arr1 = split(sRect, “|”)
TracePrint arr1(0)
TracePrint arr1(1)
//MoveTo arr1(0), arr1(1)
Delay 200
//后台计算左上角坐标 = =陈独秀!
陈独秀X = arr1(0) + 588
陈独秀Y = arr1(0) + 347

//计算右下角坐标 = =优秀!
优秀X = arr1(0) + 863
优秀Y = arr1(1) + 522

//完美X和Y数据(中心坐标)
完美X = arr1(0) + 720
完美Y = arr1(1) + 450

Do
//判断找色是否ojbk。
FindColorEx 陈独秀X, 陈独秀Y, 优秀X, 优秀Y, “59769B”, 0, 0.9, intX, intY
If intX >= 0 Then
//判断还是要有的,!”万一找到了呢。
TracePrint “ojbk
//MoveTo intX, intY
//哎,可惜了,一个MoveTo总是与完美无缘,那只能多加几个完美点了。
完美差X个MoveTo1 = intX – 完美X
完美差X个MoveTo2 = intY – 完美y
//最终结果
MoveR 完美差X个MoveTo1 / 3, 完美差X个MoveTo2 / 3

End If
Loop
///////////////////////////////////////////
题外话
本辅助虽然简单,但bug依旧。
在远处,如果杂色不多,可以瞄准尸体,如果地图杂色太多,自瞄会失效,鼠标一直飘,
针对这个问题,我个人认为有一个想法,就是找图,不知道可不可行。
然后,我们还可以加入自动开枪等。
如果你有能力,你也可以自己完善。

© 版权声明
THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发

请登录后发表评论