|
发表于 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初始化技能和快捷栏物品设置用到的一个功能
里面的遍历对你应该有帮助 直接复制肯定是不好的 你可以先看懂 然后自己改步长进行屏幕遍历 改延迟 如果觉得这样慢 可以用螺旋线
那个我没有用到过 所以我也没有代码
|
|