从0开始学外挂(三)-网络游戏找怪思路详解

来源:互联网 发布:知乎图片选择器 编辑:程序博客网 时间:2024/06/07 02:55
 使用按键有段时间了,对一些找怪的思路小有体会。简单来说找怪就是找怪与背景不同的独有的特征,可以通过找怪的颜色/图片、怪名字颜色/图片、怪血条颜色/图片、渐开线扫描、小地图找怪等等的方法来实现。具体看游戏而定,下面就介绍几种找怪的方法:

1。区域找色   应该说是最简单的找怪方法了,在区域里查找怪的特有颜色、名字颜色、血条颜色、怪的阴影等等。如果找到移动鼠标到怪身上进行攻击 (推荐用区域模糊找色或从区域中间向外找色)。例子(区域模糊找色):

VBSCall FindColorEx(0,0,1024,768,"FFFFFF",1,0.8,x,y)
//区域模糊找色,0,0,1024,768为区域范围,"FFFFFF"为颜色,1为查找方式(中间向外),0.8为模糊值,x,y为找色后储存坐标的变量
If x>=0 and y>=0
    //如果找到颜色(通过判断坐标变量是否在区域内就可以知道有没有找到目标)
    MoveTo x y
    //把鼠标移动到该色的坐标(如果找的是怪名字或血条,可能移动不到怪身上,这时就要用鼠标偏移如:MoveTo x+10 y+10)
    Delay 50
    //延时
    LeftClick 1
    //左键单击进行攻击
EndIf
//条件结束

用数组区域查找多色:点击查看
注:
①。区域范围的定位:
区域范围指的是被搜索区域的范围,这4个参数分别指的是区域的左,上,右,下。简单的说就是取区域的左上角x,y坐标和右下角的x,y坐标,把这4个数值依次组合起来就是一个区域范围了。
②。很多朋友对最后两个坐标变量x,y不太了解,在这里通俗的解释一下:
顾名思义,这两个变量是用来贮存找色或找图后的坐标。当找到目标后,把目标所在的坐标位置贮存到这两个变量里,然后可以通过判断这两个坐标变量是否在区域范围内来确定是否找到了目标。如果找到目标,贮存的是目标所在的坐标位置。如果没有找到,那贮存的则是-1,所以我们也可以通过 if x=-1 and y=-1 来判断没有找到目标。
2。区域找图   在区域里查找怪的图形、怪的名字图片、血条图片等等。语法与区域找色相似,需要注意的是图片的处理,这里有两个教程可以参考一下教程①教程②
图片做好后可以放在按键文件夹里的script文件夹中,就可以不用在脚本里写图片路径,只需图片名就行了,写脚本的时候比较方便。例子(区域找图):

VBSCall FindPic(0,0,1024,768,"1.bmp",0.9,x,y)
//区域找图,0,0,1024,768为区域范围,"1.bmp"为图片名(路径),0.9为找图的相似度,x,y为找图后储存坐标的变量
If x>=0 and y>=0
//如果坐标在区域内(找到图片)
    MoveTo x y
    //移动到图片位置(图片左上角)
    Delay 50
    //延时
    LeftClick 1
    //左键单击
EndIf
//条件结束
3。圆形渐开线扫描找怪法   效率较低,这里有个较完整的例子可以参考一下http://bbs.vrbrothers.com/viewthread.php?tid=14105

更多的渐开线扫描方案参考这里:点击查看
4。圆形渐开线扫描找变色怪   效率较低,下面是我以前收集的一个找变色怪的例子。VBS dim x0,n,y0,x,color0,color
//声明变量
Rem start
//标记渐开线找怪开始
VBS x0=400:n=1:y0=300:x=400
//变量初始化
While x<800
    //限定横坐标范围不超过800
    VBS x=x0+4*(cos(n)+n*sin(n))
    //根据渐开线公式计算下一个点的横坐标并赋值给x
    VBS y=y0+3*(sin(n)-n*cos(n))
    //根据渐开线公式计算下一个点的纵坐标并赋值给y
    VBSCall color0=GetPixelColor(x,y)
    //在鼠标移动之前,获取目标点色值并赋值给color0
    VBSCall Call SetCursorPos(x,y)
    //马上移动鼠标到目标点
    VBSCall color=GetPixelColor(x,y)
    //获取鼠标移动后该点色值并赋值给color
    If color<>color0
        //同一点取得的两次色值比较,不同,则执行以下的打怪脚本
        LeftClick 1
        //左键单击
        Delay 3000
        //打怪延时
    EndIf
    //该点判断结束
    Delay 10
    //循环延时
    VBS n=n+0.2
    //渐开线参数增量,其中0.2代表点间距,数值越小,渐开线散开点间距越小
EndFor
//一次渐开线取点判断结束
Goto start
//跳转到开始,重复渐开线搜索

5。小地图找怪   公式:  大地图怪坐标 = (小地图怪坐标 - 小地图人物坐标) * 比例 + 大地图人物坐标  

比例是(大地图怪坐标和大地图人物坐标之间的距离)与(小地图怪坐标和小地图人物坐标之间的距离)这两者的比例。如下图 A线与B线的比例。用小地图找怪所需的计算数据必须比较准确。   
然后用区域找色查找小地图上怪的小点(最好用从区域中心向外找色),找到怪的小点后再计算坐标,计算得出大地图坐标后,移动鼠标到怪身上打怪。 

 


例子(小地图找怪):

VBSCall FindCenterColor(858,66,996,192,"0000FF",x,y)
//区域从中间向外找色,858,66,996,192是小地图的区域范围
If x>=0 and y>=0
    //如果找到颜色
    x0=(x-926)*10+512
    y0=(y-129)*10+389
    //计算大地图怪的坐标
    MoveTo x0 y0
    //移动到大地图怪的坐标  
    Delay 50
    //延时
    LeftClick 1
    //左键单击进行攻击
EndIf
//条件结束


注: 移动到怪位置后用“鼠标特征码比对”可有效提高找怪的准确性。(可用于所有找怪方式内)

暂时就写这几个了,当然找怪的方法不止这几种而已,欢迎大家一起来讨论与分享~!

转自:http://bbs.vrbrothers.com/viewthread.php?tid=20488&extra=page%3D1