TC官方合作论坛

 找回密码
 立即注册
查看: 1666|回复: 8

[已解决] 鼠标屏幕扫描要怎么写啊

[复制链接]
发表于 2012-5-28 18:40:24 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
就是找矿,当鼠标移动找的矿的上面那么鼠标特征码就改变了等于找到矿了,怎么让鼠标在某个范围移动啊
回复

使用道具 举报

发表于 2012-5-28 19:51:04 | 显示全部楼层
螺旋线找 官方有例子 或者用坐标遍历  具体的x,y移动值  当x要遍历几次要换行后 y递增一次
可以延迟调小一点遍历很快  不过还是建议用螺旋线
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-28 20:17:51 | 显示全部楼层
回复 2楼xenolss的帖子

没有权限看
回复 支持 反对

使用道具 举报

发表于 2012-5-29 09:14:12 | 显示全部楼层
你是想要怎样扫呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-29 19:21:27 | 显示全部楼层
回复 4楼tyuyan的帖子

就是挖矿的时候移动鼠标,当鼠标在矿上的时候,鼠标的特征码是不一样的,以这个来确定是否找到了矿.这个鼠标要怎么移动
回复 支持 反对

使用道具 举报

发表于 2012-5-29 19:40:49 | 显示全部楼层
回复 5楼转身那一刻的帖子

function bool bianlipackage(string itemname)
int dx,dy,xi,yi,bx,by,bc
bc=39
xi=1
yi=1
//先确认包裹是否打开 如果打开了跳出开始遍历 没打开先打开
while(true)
    dm.FindPic(64,50,980,694,"包裹.bmp","000000",0.9,0,dx,dy)
    if(dx<0)
        drivekeyboard.keypress(66,1)
        help.sleep(500)
    else
        break
    endif
endwhile
bx=dx-86
by=dy+55
dx=-1
//这个是相对包裹位置的移动 这里意思是移动到包里的第一格
drivemouse.mousemove(bx,by)
help.sleep(100)
drivemouse.mousemove(bx+1,by)
help.sleep(200)
//下面开始找默认移动到包裹的第一格是否有如下东西,如果有直接拖到快捷栏
while(true)
    dm.FindStr(6,27,533,623,itemname,"efeae2-000000",1.0,dx,dy)
    if(dx>0)
        drivemouse.leftdown()
        help.sleep(200)
        if(itemname=="回城卷")
        drivemouse.mousemove(366,759)
        endif
        if(itemname=="铲子")
        drivemouse.mousemove(169,759)
        endif
        if(itemname=="燕子符")
        drivemouse.mousemove(326,759)
        endif
        help.sleep(200)
        drivemouse.leftup()
        help.sleep(50)
        drivemouse.leftclick(1)
        help.sleep(50)
        break
    else
        //--先检查背包是否有这个物品 没有先去买然后开始遍历包裹----尚未添加
    //第一格没有该物品先遍历包裹找
        while(yi<7)                //表示包裹只有6格y坐标 遍历6次,bc表示每次遍历的步长
            dm.FindStr(6,27,533,623,itemname,"efeae2-000000",1.0,dx,dy)
            if(dx<0)
             drivemouse.mousemove(bx+bc*xi,by)
             help.sleep(50)
             drivemouse.mousemove(bx+bc*xi+1,by)                           //-----------这里是一个微调 用底层的超级鼠标直接移动一次是穿透包裹的 不会显示物品名字
             help.sleep(50)                                                                      //-----------所以这里增加了一个X轴的微调 2个坐标基本相同 不会影响 但是物品就显示了
             xi=xi+1
//如果x坐标遍历完了  增加换行也就是y坐标增加一个步长,x 坐标从初始开始再次遍历
             if(xi>6)
                 xi=0
                 by=by+bc
                 drivemouse.mousemove(bx+bc*xi,by)
                 help.sleep(50)
                 drivemouse.mousemove(bx+bc*xi-1,by)
                 help.sleep(50)
                 yi=yi+1
               
             endif
            else
                 
                break
            endif
        endwhile
    endif
endwhile
//操作完关闭包裹
help.sleep(500)
drivekeyboard.keypress(66,1)
help.sleep(200)


return true
endfunction

看你求了几天了。。。。
上面是我征途2初始化技能和快捷栏物品设置用到的一个功能

里面的遍历对你应该有帮助  直接复制肯定是不好的  你可以先看懂  然后自己改步长进行屏幕遍历  改延迟  如果觉得这样慢 可以用螺旋线
那个我没有用到过 所以我也没有代码

回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-29 20:07:48 | 显示全部楼层
回复 6楼xenolss的帖子

太及时了。感动死了
回复 支持 反对

使用道具 举报

发表于 2012-5-29 20:30:03 | 显示全部楼层
回复 7楼转身那一刻的帖子

我重新编辑了一下注释 这样你基本能知道我在干什么
如果你知道我在干什么了 你想在你机器干什么 那就很容易了。。
回复 支持 反对

使用道具 举报

发表于 2012-6-3 13:33:43 | 显示全部楼层
学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-24 07:50 , Processed in 0.038520 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表