资源描述:
《渐变颜色判断攻略--奇迹世界血条颜色的准确识别》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、在奇迹世界里面,血条的颜色是并不是一个固定的数值。而空血状态的下的也不是固定的数值。我们应该怎样来根据这个颜色来判断何时加血呢?比较简单的办法是用ifcolor命令的相似颜色。可是有的时候你颜色设置的不好,并不能准确的来判定。其实还有更准确点的办法。让我们先来分析一下奇迹世界的血条在1024*768分辨率下,血条的起始坐标是87,11对应的颜色是#007108 终点坐标是295,11对应的颜色是#00B00C再看一段其他坐标点对应的颜色数值:104,11=007708105,11=007708106,11=007708107,11=007808108,11=007808109,11=0
2、07808110,11=007808111,11=007908112,11=007909113,11=007909114,11=007A09115,11=007A09116,11=007A09117,11=007B09这些是满血时候坐标的一段变化情况。大家有没有发现其中的规律,也就是这个血条是在一定范围内逐渐变化的。直接看血条的颜色我们也能看出来。是一个线性渐变的血条。其中颜色的最低值是#007108最高值是#00B00C拿#007108来说,其中的00是Blue的值,71是Green的值,08是Red的值我们可以用VBS里面的RGB函数来求出这个颜色的具体RGB值是多少具体用法是:RG
3、B(red,green,blue) 其中redgreenblue必须是0-255之间的整数,所以我们要先把他们转成10进制的。可以用下面的代码来求1.C="007108"2.VBSr=Cint("&H"&Right(c,2))3.VBSg=Cint("&H"&Mid(c,3,2))4.VBSb=Cint("&H"&Left(c,2))5.VBSa=RGB(r,g,b)6.VBSCallMessageBox(a)复制代码得到的结果是#007108=28936#00B00C=45068也就是血条颜色的RGB值范围是28936-45068之间,也就是如果x坐标在87-295之间,y为11的时
4、候。这个点的RGB在这个范围之内说明是有血状态。这样的话我们可以通过先获取血量像素点的颜色值来判断是否为有血状态,代码如下:1.VBSCallc=GetPixelColor(x,y)2.VBSr=Cint("&H"&Right(c,2))3.VBSg=Cint("&H"&Mid(c,3,2))4.VBSb=Cint("&H"&Left(c,2))5.VBSa=RGB(r,g,b)6.Ifa>28936anda<450687.KeyPress57,18.EndIf 复制代码其实还有更简单的办法:大家可以从上面的数据看出,血条颜色的B值始终为0。这样我们只要读取颜色点的B值就,之后判断是否
5、为0就可以决定是否加血了。比如我写的这个脚本1.UserVarHP=60血量为多少时使用快捷键9的技能或者药品加血,0为不使用自动加血2.HPYansheX=87+Int(208*HP/100)3.UserVarYC=200用户自定义延迟,单位为毫秒4.Rem[继续]5.IfHP>06. VBSCallHPYanshe=GetPixelColor(HPYansheX,11)7. VBSHPYansheb=Cint("&H"&Left(HPYanshe,2))8. IfHPYansheb<>09. KeyPress57,110. EndIf11.EndIf12.Delay
6、5013.KeyPress48,114.DelayYC15.Goto[继续]复制代码血条可以这么来判断,蓝条当然也可以。。具体写法大家再自己考虑一下吧。