点击下载本节源代码 本节要讲的是如何查找颜色值或图像所在的坐标位置.
游戏中可以根据某些坐标处的颜色值进行判断再决定如何去做.比如常见的是在血值颜色条与魔值颜色条上.
用户可以自已使用 类_DC对象.取坐标颜色() 来获取颜色值进行判断,建议为了兼容一些电脑分辨率设置为 中(1位) 与 最高(32位) 两种模拟,在取坐标颜色时取16位色值进行判断..
为了方便颜色值的判断,在 类_DC对象 里提供了 直线找色() 矩形找色() 的功能.
子程序名:直线找色 根据提供的RGB颜色值在指定的线上查找,返回找到对应颜色点所在的坐标.. 返回值类型:逻辑型 参数<1>的名称为“窗口句柄”,类型为“整数型”。注明:0=屏幕句柄。 参数<2>的名称为“查RGB值”,类型为“整数型”。注明:24位,32位RGB颜色值。 参数<3>的名称为“起始坐标”,类型为“坐标”。注明:要查找RGB值的起始定点坐标位置。 参数<4>的名称为“线段长度”,类型为“整数型”。注明:以定点坐标向某一方位进行查找的距离。 参数<5>的名称为“查找方向”,类型为“整数型”。注明:1=从上到下,2=从下到上,3=从左到右,4=从右到左.默认从上到下。 参数<6>的名称为“颜色坐标”,类型为“坐标”,接收参数数据时采用参考传递方式。注明:返回查找到该RGB值最初出现的坐标位置。 参数<7>的名称为“GDI窗口”,类型为“逻辑型”,允许接收空参数数据。注明:假=DirectX游戏窗口,不支持后台窗口,真=普通的GDI程序窗口.若GDI窗口在XP,2003,vista系统支持后台窗口,但不支持最小化窗口。
在 类_DC对象中的 直线找色() 功能可以进行 从左到右 从右到左 的横向颜色值查找.也可以进行 从上到下 从下到上 的纵向颜色值查找.
该功能的用法很简单,提供一个起始的坐标.在查找颜色时会最先从这个坐标点开始,向某个方向直线查找一段距离.找到批配的颜色值时,会返回真,并设置颜色坐标为相对于窗口句柄距离的坐标...若找不到批配的颜色值时会返回假.

类_DC对象.直线找色()
除了直线找色外,在 类_DC 里还有 矩形找色() ,指定左边,顶边,宽度,高度的矩形区域,在这个区域里查找批配的颜色值所在的坐标位置.
子程序名:矩形找色 根据提供的RGB颜色值在指定的矩形区域中查找,返回找到对应颜色点所在的坐标.. 返回值类型:逻辑型 参数<1>的名称为“窗口句柄”,类型为“整数型”。注明:0=屏幕句柄。 参数<2>的名称为“查RGB值”,类型为“整数型”。注明:24位,32位RGB颜色值。 参数<3>的名称为“矩形范围”,类型为“矩形”,允许接收空参数数据。注明:指定要查找RGB值的矩形范围.若空将使用目标窗口句柄客户区矩形范围或全屏幕范围。 参数<4>的名称为“查找步长”,类型为“整数型”。注明:跨点距离。 参数<5>的名称为“查找跨度”,类型为“整数型”。注明:跨行距离。 参数<6>的名称为“查找方向”,类型为“整数型”。注明:1=从上到下,2=从下到上,3=从左到右,4=从右到左,5=从外到内,6=从内到外。 参数<7>的名称为“颜色坐标”,类型为“坐标”,接收参数数据时采用参考传递方式。注明:返回查找到该RGB值最初出现的相对于屏幕的坐标位置。 参数<8>的名称为“GDI窗口”,类型为“逻辑型”,允许接收空参数数据。注明:假=DirectX游戏窗口,不支持后台操作,真=普通的GDI程序窗口.若GDI窗口在XP,2003,vista系统支持后台窗口,但不支持最小化窗口。
矩形找色() 多了 查找步长,查找跨度 两个参数..因为考虑到有时候矩形面积很大时,查找处理速度会慢点,若要查找的颜色值是一个非单像素大点的块状情况下,可以适量的设置 查找步长,查找跨度 能加快整个查找的速度.

类_DC对象.矩形找色()
使用找色的功能来应付血魔量还是比较好用的.可以把一个血条的长度分为百分比,然后根据颜色值计算当前血魔量处于这个条中的百分之几比例再决定按某些吃药水的键码或打坐等回血功能.可以实现些简单的动作模拟万挂.
除了找色之外,在 类_DC对象 中还有提供了找图功能,通过该功能可以用来查找出人物附近的地面物品,背包,按钮,怪物等的坐标.再去进行动作模拟操作.
在找图之前先说一下截图..在游戏里,可以使用 HprSnap 这个软件进行截图,然后在截到的图里,把物品给剪切出来.把周围无关的颜色抹掉.然后保存为 BMP 位图文件,供找图用..注意,必需得保存为不失真的 BMP 位图文件,不能存成 GIF JPG 等会造成图像失真的格式..
也可以使用 类_DC对象.截图() 来保存游戏画面为BMP文件,再剪切物品等图像再处理..
子程序名:截图 返回值类型:逻辑型 参数<1>的名称为“窗口句柄”,类型为“整数型”。注明:0=屏幕句柄。 参数<2>的名称为“矩形范围”,类型为“矩形”,允许接收空参数数据。注明:要截取图像的矩形范围.若空将截取目标窗口句柄客户区矩形范围或全屏幕范围。 参数<3>的名称为“保存文件”,类型为“文本型”,允许接收空参数数据。注明:把截图到的图像以 bmp 格式保存到磁盘上。 参数<4>的名称为“图像数据”,类型为“字节集”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:返回截图出来的这幅位图字节集数据。 参数<5>的名称为“GDI窗口”,类型为“逻辑型”,允许接收空参数数据。注明:假=DirectX游戏窗口,不支持后台操作,真=普通的GDI程序窗口.若GDI窗口在XP,2003,vista系统支持后台窗口,但不支持最小化窗口。

模块里的截图功能,截取的图像只为客户区域,所以不含标题栏等
下面,我们假设要去查找一个QQ表情里的 这个色色的图像 ,如果先处理该图像中要被怱略不进行批配的颜色.先用 HprSnap 这个软件来打开这个图像文件,并且放大到最大状态.
打开图像文件,放大到最大状态,取消背景色的使其透明功能..

然后把不想进行判断的易受干扰的颜色值抹成某一单种颜色
例如上面我把这个外轮廓全抹成了红色.这个色脸的内部部份颜色有需要的话也可以抹一下的..抹掉了易干扰的颜色后,保存为BMP文件.注意,必需为16位或32位BMP文件,不能进行压缩..
制作好了用来找图的图像文件后,就可以编写找图的代码了,使用 类_DC对象.矩形找图() 功能即可.
子程序名:找图预处理 填充一个找图专用的数据结构,供 矩形找图() 使用 返回值类型:逻辑型 参数<1>的名称为“BMP文件”,类型为“文本型”,允许接收空参数数据。注明:BMP文件 与 BMP数据 两个参数只需填入其中一个即可. 参数<2>的名称为“BMP数据”,类型为“字节集”,允许接收空参数数据。注明:若不想用BMP文件来加载,可把BMP文件存在易的图片资源里后提供给本参数使用. 参数<3>的名称为“透明RGB”,类型为“整数型”。注明:在找图过程要要怱略掉不行进批对的RGB颜色,默认=0=黑色。 参数<4>的名称为“找图结构”,类型为“找图结构”,接收参数数据时采用参考传递方式。
子程序名:矩形找图 返回值类型:逻辑型 参数<1>的名称为“窗口句柄”,类型为“整数型”。注明:0=屏幕句柄。 参数<2>的名称为“找图结构”,类型为“找图结构”。注明:使用 找图预处理() 填充的一个数据结构。 参数<3>的名称为“矩形范围”,类型为“矩形”,允许接收空参数数据。注明:指定要查找图像的矩形范围.若空将使用目标窗口句柄客户区矩形范围或全屏幕范围。 参数<4>的名称为“查找方向”,类型为“整数型”。注明:1=从上到下,2=从下到上,3=从左到右,4=从右到左,5=从外到内,6=从内到外。 参数<5>的名称为“图像坐标”,类型为“坐标”,接收参数数据时采用参考传递方式。注明:返回查找到该图像最初出现的相对坐标位置。 参数<6>的名称为“GDI窗口”,类型为“逻辑型”,允许接收空参数数据。注明:假=DirectX游戏窗口,不支持后台操作,真=普通的GDI程序窗口.若GDI窗口在XP,2003,vista系统支持后台窗口,但不支持最小化窗口。

先使用 找图预处理() 填充好要查找的图像数据结构.供后期的找图功能使用.

类_DC对象.矩形找图() 成功找到图像后会返回真,并设置图像坐标为查找的图像中心位置
点击下载本节源代码
用户可以自已制作处理游戏中的物品,怪物,按钮等的图像试试找图功能..找到相应的图像后再进行动作模拟操作等.
|