突破找图限制【原创】(361度 按键精灵找图系列之二)

社区服务
高级搜索
猴岛论坛辅助工具突破找图限制【原创】(361度 按键精灵找图系列之二)
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
0个回复

突破找图限制【原创】(361度 按键精灵找图系列之二)

楼层直达
幻想.

ZxID:1717453

等级: 贵宾
这该死的社会,逼得人在杀人和忍住不杀之间徘徊.

举报 只看楼主 使用道具 楼主   发表于: 2009-01-19 0
— 本帖被 幻想. 执行取消锁定操作(2009-01-19) —
  这文章我昨天就写好了,今天我才发现晨风以发过一个类似的帖子。不过他发脚本全是goto,看得我头晕,到现在我都没看得全明白,而且那脚本只有图片计数功能,所以我还是把自己的文章贴出来。
  按键精灵的找图功能只能输出找到的第一个图的坐标,如何让它找输出找图范围内所有符合的图片坐标呢?我有2个方案:
  1、把找图的范围设定成和图片一样大,然后把这个范围的框以一个次移一个像素的方式,移遍整个找图范围,每移一次就找一次图。
  2、想办法让找图的命令在找到第一个图后继续找下去。
  我首先试的是第一个方案,本以为它会运行得很快,但运行的速度让我难以忍受。以它的速度,扫完全屏要几个小时,运行了一会儿我就把它关了。分析了下运行慢的原因:1、每次找图都要重新分析图片,这个找图方案运行找图功能的次数太多,导致分析图片用了过多的时间;2、由于这是脚本,不是exe文件,每执行一条命令都需要先读一条语句,翻译后再执行,这个方案写的脚本虽然不长,但运行的时候要执行循环很多次才能扫遍整个找图范围。
  所以,最后采用的是第二方案,详细的时候方法是:程序找到一个图后,找图范围的上边界就重新设为该图坐标的纵坐标加1,然后继续找图。参考脚本如下:
VBS y0=0
VBS Dim x(),y()
//找到的图片横坐标和纵坐标分别存在x()数组和y()数组中
VBS i=0
//找到的图片数量存在变量i中
VBS pd=1
VBSCall FindPic(0,y0,1024,768,"发.bmp",1,xz,yz)
If xz=0 and yz>=0
        VBS ReDim Preserve x(i)
        VBS ReDim Preserve y(i)
        VBS x(i)=xz
        VBS y(i)=yz
        VBS i=i+1
        VBS y0=yz+1
    Else
        VBS pd=0
    EndIf
EndWhile
//下面的命令是用于显示找图结果
VBSCall RunApp("notepad.exe")
Delay 1000
VBS n=0
While n屏幕内并排的可能性很小时,可以采用。
  如果另外加些扫死区部分的命令,就可以消除上面脚本的死区,参考脚本如下:
VBS y0=0
VBS Dim x(),y()
//找到的图片横坐标和纵坐标分别存在x()数组和y()数组中
VBS i=0
//找到的图片数量存在变量i中
VBS pd=1
VBS Dim pd1
VBS Dim x01
VBSCall FindPic(0,y0,1024,768,"发.bmp",1,xz,yz)
If xz=0 and yz>=0
        VBS ReDim Preserve x(i)
        VBS ReDim Preserve y(i)
        VBS x(i)=xz
        VBS y(i)=yz
        VBS i=i+1
        VBS y0=yz+1
        VBS x01=xz+1
        VBS pd1=1
        While pd1=1
            VBSCall FindPic(x01,yz,1024,yz+12,"发.bmp",1,xz1,yz1)
//12是图片"发.bmp"的高度
            If xz1>=0 and yz1>=0
                VBS ReDim Preserve x(i)
                VBS ReDim Preserve y(i)
                VBS x(i)=xz1
                VBS y(i)=yz1
                VBS i=i+1
                VBS x01=xz1+1
            Else
                VBS pd1=0
            EndIf
        EndWhile
    Else
        VBS pd=0
    EndIf
EndWhile
//下面的命令是用于显示找图结果
VBSCall RunApp("notepad.exe")
Delay 1000
VBS n=0
While n解决找色的问题。
« 返回列表
发帖 回复