按键精灵-冷血课堂参考

上传人:s9****2 文档编号:559993231 上传时间:2023-02-21 格式:DOC 页数:19 大小:222.50KB
返回 下载 相关 举报
按键精灵-冷血课堂参考_第1页
第1页 / 共19页
按键精灵-冷血课堂参考_第2页
第2页 / 共19页
按键精灵-冷血课堂参考_第3页
第3页 / 共19页
按键精灵-冷血课堂参考_第4页
第4页 / 共19页
按键精灵-冷血课堂参考_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《按键精灵-冷血课堂参考》由会员分享,可在线阅读,更多相关《按键精灵-冷血课堂参考(19页珍藏版)》请在金锄头文库上搜索。

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

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

3、别的去了。我也注意到,有些朋友使用插件而实现了垃圾石头过滤,不过,猎手当时已经留下了过滤垃圾石头的“种子”,所以我来说一说,不使用任何读字插件,依照猎手以前的脚本思路继续写下去,来完成垃圾石头过滤的功能。在正式开讲之前,冷血先作几点说明:1,这里讲的,是脚本写作的“技术性”问题,而不是现成的脚本,我希望你看完本帖之后,能解开你心中的疑惑:凭什么只读颜色就能识别数字呢?2,如果自认为是高手,就不要看此帖子了;如果不想学脚本的编程思路,只要现成的脚本,也不必看此帖子,更不必回帖了。3,阅读此帖子需要有猎手使用经验,此贴并非猎手使用入门教程。如何过滤垃圾石头,其实一点也不难,不过我想,看此帖子的朋友

4、水平可能参差不齐,那么我就从最基础的讲起吧。先说说,如何通过读取屏幕上的颜色,达到识别数字的目的。以后的几课,再继续讲如何识别汉字、如何过滤垃圾石头。另外,如何使宠物隐身(只看见宠物的名字,看不见宠物)、如何删除竹林(只看见怪,看不见竹林)、如何双库补给(让猎手同时支持个人仓库、综合仓库补给,使原来支持最多9999个红蓝,升级到能够支持9999219998个红蓝)、如何3D定位(如何得到3D游戏里面的坐标与显示器屏幕上位置的“转换公式”,确保在斜视角下,想走到哪里就能走到哪里)等等。后面的内容,有时间再写。好啦,现在言归正传。如果你使用过猎手,却不明白为什么开挂时,猎手能正确的报出自己的坐标,

5、那么看完此帖子,我相信你就会明白其中的道理。先简单介绍一下,以下所称猎手的脚本,指的是两个部分:一是“_热血江湖挂机升级1.txt”,二是“FindMon.vbs”,前者是主要的脚本内容,后者是一些“函数”。采取“脚本函数”的方式,主要的目的就是使整个脚本看起来清晰、明了。大家以后写程序,也要有一个好的习惯,不要把程序写的像一锅粥。要使脚本读出坐标点,首先要确认坐标位置、颜色稳定,如果某一个数字的位置忽东忽西,颜色时红时蓝,那么要识别这个数字就比较麻烦,幸好,我们现在要识别的坐标数字,位置是相对固定的,颜色也是相对固定的。看图一:下载 (33.3 KB)2007-12-6 11:21登录游戏之

6、后,就会在右上角的小地图上,看到红字写的一串数字,那就是人物角色在游戏里的坐标。在这个例子里,人物坐标是X=554,Y2223。两者之间,是一个红色的小数点。我们对这里所有的点的颜色进行分析,就可以得到该点颜色的值。为方便理解,我这里取十进制来表示颜色,红色:181189,绿色04,蓝色0(任何颜色的取值范围都是0255,如果使用十六进制来表示,则为0FF)。在这里,有一个非常关键的概念:基准点。你也可以称它为“核心点”、“不变点”。这是什么意思呢?就是说,不论游戏里的数值如何变换,但是总有某个“特点”是不变的!不论是坐标、位置,还是颜色。它就类似于我们人的双脚所踩的地面,你若想跳到高处,首先

7、就必须保证自己脚踩的地方是稳定的。如果脚都踩不稳,想跳到别的地方那是不可能的了。具体到热血江湖这个游戏里,什么是“基准点”呢?中间那个小数点呢?显然不是:前一张图片中,小数点排在第4个位置,后一张图片,小数点排在第5个位置。我们看到的那个数值554,是吗?不是。因为它也不是固定不变的,在游戏里,它可以变成54,也可以变成5554。请看图二:下载 (43.72 KB)2007-12-6 11:24这副图片中,X坐标变成了6740。X的数值是随时变换的,可能是1位数,也可能是4位数,可能是正整数,也可能是负整数。在这里,我们要经过仔细分析,如果你仔细对比一下,可以发现有一个特点却是固定的:X坐标的

8、第一个数字出现的位置,也就是图一中的“5”,图二中的“6”,由实际的测试得知:它们出现的位置是固定不变的。现在,我们把上面举例的图一放大8倍来看:下载 (41.37 KB)2007-12-6 11:24看上图,我们看到的除了“数字”,还有什么呢?还有“点阵”,这是一个非常重要的技术点!脚本不论是识别“数字”、“汉字”,归根结底,其实就是在识别一个一个的“点”。如果你还是不明白的话,我再举个例子:现在我们经常使用的打印机,大都是激光或者喷墨打印机。有没有哪个朋友使用过“针式打印机”的?就是那种使用“针头”和“色带”,打印的时候“吱吱”响的那种打印机。打印机“认识”汉字吗?当然是不认识的。那么它为

9、什么能打印出汉字呢?其实对于打印机来说,它并没有“认为自己打印出汉字”,实际上,它打印的是“点阵”:打印的是一个一个的“点”。还是以上面那个数字“5”为例,一共由40个点组成,当打印机要打印出这个“5”字的时候:1,打印机先在规定的位置连续打印5个点,也就是数字“5”上面的那一行;2,然后第二行只打印第一个点,后面4个点不打印;3,第三行也只打印第一个点,后面4个点不打印;4,第四行连续打印4个点,第五个点不打印;5,第五行前4个点不打印,只打印第五个点;6,第六行同第五行一样,前4个点不打印,只打印第五个点;7,第七行打印第一个点,第二、第三、第四点不打印,第五点打印;8,第八行第一点不打印

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

11、中的纸,看不清就把纸稍微放远一点看,是不是看到一个阿拉伯数字“5”呢?说到这里,相信朋友们应该明白了吧?如果你能看懂我上面所说的内容,那么恭喜你,可以继续往下看了。如果看不懂,那你就要反复多看几遍了。“点阵”的概念,是我们这一课以及以后几课的基础。现在我们反过来想一想:能不能通过读取“一个一个的点”,来“识别”数字呢?2.jpg (43.72 KB) 下载次数:702007-12-6 11:21接下来,我们继续分析:以上坐标数字,使用的是58点阵,每个数字之间,间隔一列。第一个数字的位置是固定的,每个点的颜色范围也是固定的(在本机上读取的颜色是:红色:181189,绿色04,蓝色0)。如何知道

12、“5”字最左上角那一点的坐标呢?直接借助WINDOWS系统自带的“画图”软件就可以实现了。首先在游戏里按下“Print Screen”键,然后退出游戏,直接调用“画图”工具软件“粘贴”,得到的就是24位色BMP格式的位图文件。把鼠标指到数字“5”的左上角位置,如果你是使用1024768的分辨率游戏的话,显示该点坐标是“877,24”。如果是其它的分辨率,那么你自己归纳一下,可以得到X值、Y值的规律的,在这里,我们得到的规律是:X=屏幕宽度147Y24现在我们打开Windows系统自带的另外一个软件“写字板”打开FindMon.vbs文件,找到如下函数:*获取地理坐标*Function GetC

13、urXY(ByRef tmpCurX, ByRef tmpCurY)Dim n, i, strNum, strXY, strTDim Color, ColorR, ColorG, ColorBtmpCurX = 0: tmpCurY = 0x0 = ScreenWidth - 147y0 = 25以上函数里面的X0的值就是数字的X坐标,跟我们上面是吻合的,可是,下面为什么是25,而不是我们刚才看到的24呢?这牵涉到180版本更新的问题。在170版本里,坐标是25的,那时的猎手是正常的;而到了180版本之后,猎手无法使用了(一开挂就会显示“错误:坐标色差,尝试使用黑白小地图.”,当180版本新推

14、出来的时候,好多朋友在论坛里提问:为什么我以前使用猎手正常,现在却提示“错误:坐标色差,尝试使用黑白小地图.”,我已经使用黑白小地图了啊),原因就是游戏界面上的数字、汉字都向上移动了一个像素点的位置,170版本之前的游戏,坐标数值的Y值是25,现在变成了24,X值没有改变。同样的,汉字的位置也向上移动了1个点,原来的Y值是5,现在要改成4,才可以正确识别小地图的名字。我们接着看此函数的下面的内容:For n = 0 To 7For i = 0 To 4Color = objFM.GetPixelColor(x0 + i, y0 + n)ColorR = CLng(&H + Right(Colo

15、r, 2)ColorG = CLng(&H + Mid(Color, 3, 2)ColorB = CLng(&H + Left(Color, 2)If ColorR - ColorB 64 And ColorR - ColorG 64 ThenColor = 1ElseColor = 0End IfstrT = strT & ColorNextNext程序外面是一个循环,从0到7,一共循环8次,表示要读取8行,完整地把数字“5”读出来。程序里面还有一个循环,从0到4,一共循环5次,表示每行读取5个点的颜色,这5个点,就与数字的第一笔是一一对应的。读到红颜色,表明这里有一个点,用“1”代表,没有读到红颜色,用“0”代表。现在大家应该能够明白了吧:一次读1个点的颜色,一共读40次,从而完整地把58点阵的这个数字读出来了。我们看到的是数字“5”,你可以仔细的数一数,这40个点的颜色就是“1111110000100001111000001000011000101110”。看到这里,你应该能明白,通过颜色确实能够“识别”数字了吧。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号