|
http://bbs.tyuyan.net/forum.php? ... 7517&highlight=新水浒Q传 这是以前的帖子
那个大神能做个能验证就行了
或者那个大神能不能解释下这段源码 里面这些(sh.mminit(z)==0) checkThreads[z]=thread.beginthread("main.check",z) main.autofight(z)都是什么意思 因为是小白学习5.0中文 里面有些看不懂
- function start(z)//启动
- edit.settext("edit4"&(z+1),"第"&(z+1)&"条多开线程启动")
- if(sh.mminit(z)==0)
- return 0
- endif
- checkThreads[z]=thread.beginthread("main.check",z)
- //==========================
- edit.settext("edit3"&(z+1),list.getchecktext("funclist"))
- select(list.getchecktext("funclist"))
- case "自动遇怪":
- main.autofight(z)
- default :
- help.sleep(1000)
- endselect
- endfunction
- function autofight(z)//自动战斗
- help.sleep(1000)
- for(i=0;i<31536000;i++)//循环60秒*60分*24小时*365天次
- //自动走路
- if(check.getstate("autorun")&&(i%10==0))//如果i是10的倍数
- ms[z].MoveTo(740+help.randto(-4,4),8+help.randto(-4,4))
- help.sleep(help.randto(20,50))
- ms[z].LeftClick()
- help.sleep(help.randto(20,50))
- ret=ms[z].FindStr(353,288,447,311,"开始|取消","eeeeee-303030",1.0,0,0)
- if(ret==1)//取消自动走路
- i--
- continue//直接重新循环 再来一次
- endif
- endif
- //判断自动战斗按钮
- ret=ms[z].FindStr(683,43,800,92,"自动","eeeeee-303030",1.0,0,0)
- if(ret>-1)
- ms[z].MoveTo(750+help.randto(0,30),70+help.randto(0,5))
- help.sleep(help.randto(20,100))
- ms[z].LeftClick()
- help.sleep(help.randto(20,100))
- endif
- //间隔1秒
- help.sleep(1000)
- endfor
- endfunction
- function check(z)//检测线程函数
- edit.settext("edit4"&(z+1),"第"&(z+1)&"条检测线程启动")
- help.sleep(1000)
- while(true)
- help.sleep(1000)
- edit.settext("edit4"&(z+1),"检测验证码")
- help.sleep(1000)
- var ret,intX,intY
- if(ms[z].FindStr(0,0,800,600,"请选择","00fcf8-030303",1.0,intX,intY)<0)
- ret=ms[z].GetLastError()
- if(ret==0)
- edit.settext("edit4"&(z+1),"检测完毕,未发现验证码")
- else
- edit.settext("edit4"&(z+1),"验证码检测异常:"&ret)
- endif
- else
- thread.suspendthread(taskThreads[z])
- edit.settext("edit4"&(z+1),"出现验证码,开始截取")
- if(ms[z].Capture(150,240,700,400, "yzm"&z&".bmp")==0)
- edit.settext("edit4"&(z+1),"验证码截取失败")
- else
- ret=main.getyzm(z)
- if(ret>0)
- ms[z].MoveTo(75+ret*140+help.randto(-10,10),350+help.randto(-10,10))
- help.sleep(help.randto(20,100))
- ms[z].LeftDoubleClick()
- help.sleep(help.randto(20,100))
- endif
- endif
- thread.resumethread(taskThreads[z])
- endif
- endwhile
- endfunction
- function getyzm(z)//识别验证码
- sy=com("sy.dt")
- //申明变量 发送字符串 资源字符串 资源ID 文件名
- var sendstr,ResStr,ResId,filename
- sendstr=str.format("sendvcode/myapi/%s/type/%s/timeout/%s/note/sh/author/q273814",sydtapi,"10005","60")
- filename=system.getcurrentpath()&"yzm"&z&".bmp"
- //发送验证码
- //ResStr=dllcall(系统.获取当前路径()&"sy.dll","int","Send","Char *",sendstr,"Char *",filename)
- ResStr=sy.Send(sendstr,filename)
- if(str.left(ResStr,1)=="E")
- edit.settext("edit4"&(z+1),"senderror")
- else
- ResId=ResStr
- for(i=0;i<60;i++)
- help.sleep(500)
- //ResStr=dllcall(system.getcurrentpath()&"sy.dll","int","Send","Char *","getanswer/id/"&ResId,"Char *","")
- ResStr=sy.Send("getanswer/id/"&ResId,"")
- if(str.left(ResStr,7)!="WAITING")
- break
- endif
- edit.settext("edit4"&(z+1),str.replace(ResStr,"WAITING","稍等"))
- endfor
- if(str.left(ResStr,7)!="WAITING")
- edit.settext("edit4"&(z+1),"答案:"&ResStr)
- sy=null
- return ResStr
- endif
- edit.settext("edit4"&(z+1),"验证码识别失败:"&ResStr)
- endif
- sy=null
- return 0
- endfunction
- endnamespace
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|