返回列表 回复 发帖
前天事情不多,把我的程序调整了一下,在思路上仍然是分为两个方面:全屏找和分屏找结合,以找图为基础,“花”字的黑色阴影部分做成图比较好找,但查找参数调成1以下都找不到,只能用1,仍然只有核心部分。

我认为现在SZ的程序有两个地方还该改进:
1、以色彩来区别时尽管使用了近似色但显卡原因相差仍然较大,用图形时也存在这个问题,我以前做的刷商人程序是自动判断的,但图形放到别人机器上后就不能识别了,我认为用黑色可以解决这个问题(未测试)“”字上传到这里了:http://cn.dp168.com/img/fl.bmp
2、判断碎片的方法:因为我是用的“花”字来处理的,所以体积很小,只用把花字排开分成两个部分就可以查完整个屏幕,除开碎片的位置来查找提高了效率。
3、我已经收集了很多验证码,准备改天编断小程序来查找里面点阵上的区别,如果有成果,应该可以解决验证码的问题。

供SZ参考:

#这是按键精灵生成的脚本源文件
#在理解各条命令的基础上,您可以修改这个文件的内容
#您修改的结果将会在普通视图上有所反映

//请把怪物名显示打开,选择一个无怪花多的地方
//关掉左下角的发言窗口,上方的功能快捷键、小地图,屏蔽其他人,把右上方的地图缩影改到小
Rem 准备
Dim xy(6)
Dim hWnd
Dim WndText,WndExePath
Plugin hWnd=Window.MousePoint()
Plugin WndText=Window.GetText(hWnd)
If left(WndText,4)<>left("QQ幻想",4)
    VBSCall MessageBox("当前窗品为: " & WndText & " 而并不是QQ幻想!,请切换到QQ幻想")
        Goto 结束
EndIf
Plugin Window.Move(hWnd,0,0)
//移动到左上角
fo_x=0
fo_y=19
//fo_x&fo_y:幻想窗口左上角,fo_x2&fo_y2:右下角
fo_x2=fo_x+800
fo_y2=fo_y+576
count_xy=0
count_Click=1
temp=0
Rem 开始
If (timer-do_time)>18
    old_fl_x=0
    old_fl_y=0
EndIf
VBSCall Call FindPic(fo_x,fo_y,fo_x2,fo_y2,"花.bmp",1,x,y)
SayString 找全屏
If x<1 and y<1
    Rem 没花
    SayString no.
    temp=0
    Rem 查色
    temp=temp+1
    xy(temp)=GetPixelColor(fo_x+temp*50,fo_y+50)
    If temp<5
        Goto 查色
    EndIf
    //没找到花,向四个方向移动,先把鼠标回中点
    VBSCall Call FindColorEx(x-10,y+80,x,y+90,"7B55FF",1,0.8,x,y)
    If x>1 and y>1
        //有花的颜色,走过去看看
        SayString 花?
        MoveTo x y
        Goto 开始
    EndIf
    MoveTo fo_x+380 fo_y+250
    count_xy=count_xy+1
    If count_xy<3
        SayString 下.
        MoveR 0 260
    ElseIf count_xy<5
        MoveR 340 0
        SayString 右.
    ElseIf count_xy<9
        MoveR 0 -120
        SayString 上.
    ElseIf count_xy<11
        MoveR -320 0
        SayString 左.
    EndIf
    temp=0
    Rem 复查走动
    temp=temp+1
    If xy(temp)=GetPixelColor(fo_x+temp*50,fo_y+50) and temp<5
        Goto 复查走动
    EndIf
    If temp=5
        If count_xy<5
            count_xy=8
        Else
            count_xy10
        EndIf
    EndIf
    SayString 没花走方向.
    LeftClick 2
    If count_xy=11
        count_xy=0
    EndIf
    Delay 1000
    Goto 预备
EndIf
Rem 找到
SayString U.
MoveTo x-10 y+80
VBSCall Call FindColorEx(x-10,y+80,x,y+90,"7B55FF",1,0.8,old_fl_x,old_fl_y)
If old_fl_y>1
    //查找下方是否是碎片的红色
    SayString 碎片
    old_fl_x=x
    old_fl_y=y
    // KeyPress 13 1
    //下面分为上,下块,开始找“花”字的草字头
    VBSCall Call FindPic(fo_x,fo_y,old_fl_x,old_fl_y,"花.bmp",1,x,y)
    //找花字的上方
    SayString 找上
    MoveTo x y
    If x<0 and y<0
        VBSCall Call FindPic(old_fl_x,old_fl_y+10,fo_x2,fo_y2,"花.bmp",1,x,y)
        //找花字下方
        SayString 找下
        //KeyPress 13 1
    EndIf
    If x>1 and y>1
        SayString 找到
        Goto 找到
    EndIf
    Goto 没花
EndIf
SayString fl.
If x<20
    MoveTo fo_x+280 y
    LeftClick 2
    Delay 300
    //如果太靠近左缘,就先走一步
    SayString 左走点
    Goto 开始
ElseIf fo_y2-y<90
    temp=fo_y+480
    MoveTo x temp
    SayString 下走点
    LeftClick 2
    //如果太靠近下边,就先走一步
    Goto 开始
EndIf
count_Click=count_Click+1
MoveTo x-20 y+count_Click*20
If count_Click>2
    count_Click=1
EndIf
count_fl=0
SayExpression (abs(x-fo_x+380)+abs(y-fo_y+230))
//SayString 点花
LeftClick 2
////Delay  Sqr(abs(x-fo_x+400)*abs(x-fo_x+400)+abs(y-fo_y+320))*abs(y-fo_y+320))
//根据离中心点的远近来估算需要延时的走路时间。
Delay 1600
VBSCall Call FindColorEx(fo_x+367,fo_y+178,fo_x+369,fo_y+185,"BDFFFF",1,0.8,do_x,do_y)
//“正在采集”那个黄色的色条
SayString 找采花条
If do_x>1 and do_y>1
    SayString do.
    do_time=timer
    Delay 7000
    Goto 找到
EndIf
Rem 预备
KeyDown 16
KeyPress 36 1
KeyUp 16
Goto 开始
Rem 结束
SayString OK

[ 本帖最后由 9zhmke 于 2006-10-20 12:55 编辑 ]
沉了,顶了下,希望对SZ有些帮助
测试过了,黑框没用,,精灵判断图片吻合我觉得不成熟,,首先他根据的是外形,,然后好像图片里面的结构也做点判断,还有,精灵是不会找纯白色的东西的,纯黑色的话颜色代码是0,不知道有影响没.,我习惯找全部连着的图,,反正这个找图很大程度上看作者运气,,,好的时候很顺利,,,,还有,,花用草头来找出错几率很高,,很多时候直接找不到,,比如芍药花,用草花,很不稳定,用化,直接找不到,勺,找不到,芍药花,也找不到,那晚我最后试了芍药,成功,而且很稳定,....,

验证码建议别下大功夫,,很难的,,前期的保姆是通过助理优化过的标准黑白BMP图片识别象素(可能),他的图片大小是固定的,颜色是纯黑白的,没任何外在因素影响,而这张图片应该是在内存里的,,除了读内存就拿不出来,,,读内存就潜在危险,,所以验证码一定程度上没必要下功夫,,,声音提醒下就好!--Sz
简单就好!
我看也过你的帖子~
原帖由 SzAngel 于 2006-11-5 11:19 发表
测试过了,黑框没用,,精灵判断图片吻合我觉得不成熟,,首先他根据的是外形,,然后好像图片里面的结构也做点判断,还有,精灵是不会找纯白色的东西的,纯黑色的话颜色代码是0,不知道有影响没.,我习惯找全部连着的图,,反正 ...
SZ可能没有试,你试试我发的那个图片,用纯黑色的图检测的时候精确度设为1而不是0.x很好用,你试试就知道了。
我试过了,查图有个最基本的就是哪怕找不到也不能找到别的地方,,,你的图片在我的电脑上没花的时候能有3个坐标找到,,,匹配度为1

我现在是把怪名四周多截取些象素清为白色,现在基本能找到所有东西了,匹配0.7-1都没问题!这样才是稳定的!
简单就好!
我什么都不懂,顶下
名字是最方便的东西了,每种都可以用名字去找.....我曾经用来找紫花,很方便....,但占资源,所以就想尽可能缩小图的体积,很有效,但取成什么样会保证速度和效果,要多试验了,我前段时间都在冲级,现在93级了,打算到96级的时候停下来带带人,做做脚本,有兴趣的话我可以和你一起做,应该不会拖你后腿的。
采花的是早期作品,,现在还拿不出手哈,,拍大家笑话,,其实做脚本很容易,要不懂的人也能用是最难的--Sz

你出槽的工具我没用过,手工出槽至今为止出过一槽,出在一个买来的槽鞋上,身上就只有这一个东西有槽了,呵呵。

这个贴子你还没回我哈:
已经回复--Sz
http://bbs.szyin.com/viewthread. ... &extra=page%3D1
返回列表