- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
渐变颜色判断攻略--奇迹世界血条颜色准确识别
在奇迹世界里面,血条的颜色是并不是一个固定的数值。而空血状态的下的也不是固定的数值。我们应该怎样来根据这个颜色来判断何时加血呢?比较简单的办法是用ifcolor 命令的相似颜色。可是有的时候你颜色设置的不好,并不能准确的来判定。其实还有更准确点的办法。让我们先来分析一下奇迹世界的血条在1024*768分辨率下,血条的起始坐标是87,11对应的颜色是#007108? ?终点坐标是295,11对应的颜色是#00B00C再看一段其他坐标点对应的颜色数值:104,11=007708105,11=007708106,11=007708107,11=007808108,11=007808109,11=007808110,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值是多少具体用法是:RGB(red,green,blue)??其中red green blue 必须是0-255之间的整数,所以我们要先把他们转成10进制的。可以用下面的代码来求
C=007108
VBS r=Cint(H Right(c,2))
VBS g=Cint(H Mid(c,3,2))
VBS b=Cint(H Left(c,2))
VBS a=RGB(r,g,b)
VBSCall MessageBox (a)
复制代码
得到的结果是#007108=28936#00B00C=45068也就是血条颜色的RGB值范围是28936-45068之间,也就是如果x坐标在87-295之间,y为11的时候。这个点的RGB在这个范围之内说明是有血状态。这样的话我们可以通过先获取血量像素点的颜色值来判断是否为有血状态,代码如下:
VBSCall c=GetPixelColor(x,y)
VBS r=Cint(H Right(c,2))
VBS g=Cint(H Mid(c,3,2))
VBS b=Cint(H Left(c,2))
VBS a=RGB(r,g,b)
If a28936 and a45068
KeyPress 57,1
EndIf??
复制代码
其实还有更简单的办法:大家可以从上面的数据看出,血条颜色的B值始终为0。这样我们只要读取颜色点的B值就,之后判断是否为0就可以决定是否加血了。比如我写的这个脚本
UserVar HP=60 血量为多少时使用快捷键9的技能或者药品加血,0为不使用自动加血
HPYansheX=87+Int(208*HP/100)
UserVar YC=200 用户自定义延迟,单位为毫秒
Rem [继续]
If HP0
? ? VBSCall HPYanshe=GetPixelColor(HPYansheX,11)
? ? VBS HPYansheb=Cint( H Left(HPYanshe,2))
? ? If HPYansheb0
? ?? ???KeyPress 57,1
? ? EndIf
EndIf
Delay 50
KeyPress 48,1
Delay YC
Goto [继续]
复制代码
血条可以这么来判断,蓝条当然也可以。。具体写法大家再自己考虑一下吧。
文档评论(0)