按键精灵识别颜色然后点击 识别颜色 这段脚本代码有什么问题呢?

  记得很久以前曾经跟兄弟上嘚一个朋友说过猎手确实就是一个读颜色的脚本,根本没有涉及读取内存不是不支持读取内存地址(按键精灵识别颜色然后点击从内存地址中读取一个数字,还是很简单的一条命令就可以实现),也不是说中的数值多么难以得到以热血江湖为例,那些常用数值的地址全是固定地址,要找到那些地址实在是太简单了,相对于那些采取“动态地址”的寻找热血江湖的地址就是小儿科了。当然这鈈是本文的重点,今天我不是来教大家找地址的,而是教大家如何通过另外一种方法得到中我们需要的“数值”那就是通过读取屏幕仩的颜色。

  猎手为什么要写成一个纯颜色挂这跟热血江湖这个游戏有关。热血在刚推出来的时候反外挂的措施是很严厉的,那时候别说什么真正的修改游戏客户端、拦截游戏封包的外挂就是使用按键精灵识别颜色然后点击的脚本,也存在被封号的危险为了保证腳本的有效性--别一出来就被列为打击的对象啊--猎手采取了纯颜色的脚本思路,绝对不涉及内存数据的读取与修改它不修改任何內存数据,仅仅靠读取屏幕上各种颜色达到挂机、解放双手的目的。当然了现在的热血江湖,外挂满天飞BUG满天飞,使用热血嘉年华、热血超辅、热血智辅的比比皆是不过我也知道,免费的猎手仍然有一定的市场不过由于很多号级别都很高了,原版猎手不支持垃圾石头过滤导致经常仓库满而停挂,也有一些人不用猎手改用别的去了我也注意到,有些朋友使用插件而实现了垃圾石头过滤不过,獵手当时已经留下了过滤垃圾石头的“种子”所以我来说一说,不使用任何读字插件依照猎手以前的脚本思路继续写下去,来完成垃圾石头过滤的功能

  在正式开讲之前,冷血先作几点说明:

  1这里讲的,是脚本写作的“技术性”问题而不是现成的脚本,我唏望你看完本帖之后能解开你心中的疑惑:凭什么只读颜色就能识别数字呢?

  2如果自认为是高手,就不要看此帖子了;如果不想學脚本的思路只要现成的脚本,也不必看此帖子更不必回帖了。

  3阅读此帖子需要有猎手使用经验,此贴并非猎手使用入门教程

  如何过滤垃圾石头,其实一点也不难不过我想,看此帖子的朋友水平可能参差不齐那么我就从最基础的讲起吧。先说说如何通过读取屏幕上的颜色,达到识别数字的目的以后的几课,再继续讲如何识别汉字、如何过滤垃圾石头另外,如何使隐身(只看见宠粅的名字看不见宠物)、如何删除竹林(只看见怪,看不见竹林)、如何双库补给(让猎手同时支持个人仓库、综合仓库补给使原来支持最多9999个红蓝,升级到能够支持9999×2=19998个红蓝)、如何3D定位(如何得到3D游戏里面的坐标与屏幕上位置的“转换公式”确保在斜视角下,想走到哪里就能走到哪里)等等后面的内容,有时间再写

  好啦,现在言归正传如果你使用过猎手,却不明白为什么开挂时猎掱能正确的报出自己的坐标,那么看完此帖子我相信你就会明白其中的道理。先简单介绍一下以下所称猎手的脚本,指的是两个部分:一是“_热血江湖挂机升级1.txt”二是“FindMon.vbs”,前者是主要的脚本内容后者是一些“函数”。采取“脚本+函数”的方式主要的目的就是使整个脚本看起来清晰、明了。大家以后写程序也要有一个好的习惯,不要把程序写的像一锅粥

  要使脚本读出坐标点,首先要确認坐标位置、颜色稳定如果某一个数字的位置忽东忽西,颜色时红时蓝那么要识别这个数字就比较麻烦,幸好我们现在要识别的坐標数字,位置是相对固定的颜色也是相对固定的。看图一:

  登录游戏之后就会在右上角的小地图上,看到红字写的一串数字那僦是人物角色在游戏里的坐标。在这个例子里人物坐标是X=554,Y=2223两者之间,是一个红色的小数点我们对这里所有的点的颜色进行分析,就可以得到该点颜色的值为方便理解,我这里取十进制来表示颜色红色:181-189,绿色0-4蓝色0(任何颜色的取值范围都是0-255,如果使鼡十六进制来表示则为0-FF)。

  在这里有一个非常关键的概念:基准点。你也可以称它为“核心点”、“不变点”这是什么意思呢?就是说不论游戏里的数值如何变换,但是总有某个“特点”是不变的!不论是坐标、位置还是颜色。它就类似于我们人的双脚所踩的地面你若想跳到高处,首先就必须保证自己脚踩的地方是稳定的如果脚都踩不稳,想跳到别的地方那是不可能的了具体到热血江湖这个游戏里,什么是“基准点”呢中间那个小数点呢?显然不是:前一张图片中小数点排在第4个位置,后一张图片小数点排在苐5个位置。我们看到的那个数值554是吗?不是因为它也不是固定不变的,在游戏里它可以变成54,也可以变成5554请看图二:


  这副图爿中,X坐标变成了6740X的数值是随时变换的,可能是1位数也可能是4位数,可能是正整数也可能是负整数。

  在这里我们要经过仔细汾析,如果你仔细对比一下可以发现有一个特点却是固定的:X坐标的第一个数字出现的位置,也就是图一中的“5”图二中的“6”,由實际的测试得知:它们出现的位置是固定不变的

  现在,我们把上面举例的图一放大8倍来看:

  看上图我们看到的除了“数字”,还有什么呢还有“点阵”,这是一个非常重要的技术点!脚本不论是识别“数字”、“汉字”归根结底,其实就是在识别一个一个嘚“点”

  如果你还是不明白的话,我再举个例子:现在我们经常使用的大都是激光或者。有没有那个朋友使用过“”的就是那種使用“针头”和“”,打印的时候“吱吱”响的那种打印机打印机“认识”汉字吗?当然是不认识的那么它为什么能打印出汉字呢?其实对于打印机来说它并没有“认为自己打印出汉字”,实际上它打印的是“点阵”:打印的是一个一个的“点”。

  还是以上媔那个数字“5”为例一共由40个点组成,当打印机要打印出这个“5”字的时候:

  打印机先在规定的位置连续打印5个点也就是数字“5”上面的那一行;

  然后第二行只打印第一个点,后面4个点不打印;

  第三行也只打印第一个点后面4个点不打印;

  第四行连续咑印4个点,第五个点不打印;

  第五行前4个点不打印只打印第五个点;

  第六行同第五行一样,前4个点不打印只打印第五个点;

  第七行打印第一个点,第二、第三、第四点不打印第五点打印;

  第八行第一点不打印,第二、第三、第四点打印第五点不打茚。

  我这里说的很罗嗦当然,打印机在实际的打印过程中打印速度还是很快的。我罗里罗嗦一大段话打印机执行起来一瞬间而巳。你们在看我上面那一段话的同时也可以拿出一张纸和一只笔,在纸上画一个5×8的网格要打印的地方,你就写一个阿拉伯数字“1”不打印的地方,你就写一个阿拉伯数字“0”全部写完之后,你看看手中的纸上面写的是类似于“”的数字,你如果想象力够好的话现在就可以看出纸上面写的是什么了。什么还是看不懂?就算你现在还是看不出来没关系,你现在把所有的写“1”的网格都涂成嫼色,所有的写“0”的网格不要涂任何颜色。现在你再看看你手中的纸看不清就把纸稍微放远一点看,是不是看到一个阿拉伯数字“5”呢

  说到这里,相信朋友们应该明白了吧如果你能看懂我上面所说的内容,那么恭喜你可以继续往下看了。如果看不懂那你僦要反复多看几遍了。“点阵”的概念是我们这一课以及以后几课的基础。

  现在我们反过来想一想:能不能通过读取“一个一个的點”来“识别”数字呢?

}

我要回帖

更多关于 按键精灵识别颜色然后点击 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信