子空间程序点击下载:想来想去还是没有什么好的方法能够让代码的条理性在帖子上结构清晰一点,但是发上之后发现不够理想。以前最老版本TC复制到word再放上来是有颜色的,如今我这里没有老版本了,大家若想研究源码的就下载我放上来的文件吧!!!
本次主要想把一期1.0的自动登录思路通过源码让大家学习一下写法,也希望大家能够指出不理想或者简化代码的好想法。其实大家对1.0期的思路理解了完全可以自己写出来,所以不含代码注释,主要是看一下写法,每个人都有每个人写代码的思路,若一行一行代码看下去就没必要了。其实代码好写关键在于思路。最近也是比较忙,所以大家若有兴趣的可看一下,没兴趣的直接去1.0期看下思路即可。
自动登录思路1.0期传送门:http://bbs.tyuyan.com/thread-11984-1-1.html
难点1:可能大家看到代码是英文的看起来很头疼,若你是对TC中文命令很了解的话,应该看起来并不难,只要能识别大概意思即可,源码结构很清晰,并非杂乱。
难点2:对中文命令不熟悉,看英文命令不懂什么意思,整个流程也不懂,对于架构也不知道怎么回事。此情况建议大家回到第一期LY1.0自动登录思路把整个流程了解一下再来看源码。
TC代码小技巧1:可能很多人都问为什么你的源码结构如此清晰难道你每写一行都按很多空格进行排列?其实并非如此,如果大家以前用过其他语言的应该都知道。我们在TC写完后按下TAB即可间隔开代码来,这样就能把代码的结构整理得非常清晰。
TC代码小技巧2:看到代码字体变得很小巧,这个大家可以采用键盘按下ctrl不放鼠标中键向上滚动实现。
异常情况:
1、有时候会出现qqlogin.exe 程序错误,对于这个情况大家可以加上去进行判断;
2、登录上去后窗口直接消息插件绑定失败,这个情况采用多线程解决;
这个2个情况关键要将他们出现后的消息框关闭。
理想样本源码发帖:
外部调用此子空间程序,只要调用:start_task这个函数即可。
以下为自动登录已封装好的登录源码:
- namespace Launcher
- function string get_word(int x1,int y1,int x2,int y2,string color_value) //【得到识别信息】
- string distinguish_words,get_words
- int words_number,index,mark
- mark=0
- while(true)
- index=0
- get_words=""
- words_number=0
- distinguish_words=""
- distinguish_words = dm_龍吟.GetWords(x1,y1,x2,y2,color_value,1.0)
- if(str.strleng(distinguish_words)>0)
- words_number = dm_龍吟.GetWordResultCount(distinguish_words)
- while(index<words_number)
- get_words = str.strcat(get_words,dm_龍吟.GetWordResultStr(distinguish_words,index))
- index = index + 1
- endwhile
- if(str.strleng(get_words)>0)
- break
- endif
- endif
- mark=mark+1
- if(mark==30)
- get_words=""
- mark = 0
- break
- endif
- help.sleep(100)
- endwhile
- return get_words
- endfunction
- function bool channelchoice(string model,string aberration) //【选择频道子程序】
- //频道状态 ="【顺畅】":"00FF00"| "【良好】":"FFB100"|"【普通】":"FF8000"|"【拥挤】":"FF0000"
- int intX,intY,get_option,mark
- string channelstate = str.strcat(str.strcat(str.strcat(str.strcat("00FF00-",aberration),str.strcat("|FFB100-",aberration)),str.strcat("|FF8000-",aberration)),str.strcat("|FF0000-",aberration))
- if(str.strcompare(model,"radio0")==0)
- while(true)
- start_entry.mousemoveclick(570,400,0)
- help.sleep(1000)
- while(true)//【注意:涉及循环都加一个判断避免游戏卡死不动】
- dm_龍吟.MoveTo(10,10)
- help.sleep(50)
- intX = 0
- dm_龍吟.FindStr(417,334,606,391,"拍卖行",str.strcat("c8c3a9-",aberration),1.0,intX,intY)
- if(intX>0)
- break
- endif
- help.sleep(100)
- endwhile
- while(true)
- if(str.strcompare(dm_龍吟.GetColor(283, 400),"737373")!=0)
- start_entry.mousemoveclick(290, 400,0)
- else
- break
- endif
- help.sleep(100)
- endwhile
- while(true)
- intX=0
- intY=0
- dm_龍吟.FindColor(27,82,605,346,channelstate,1.0,0,intX,intY)
- if(intX<=0&&intY<=0)
- start_entry.mousemoveclick(350, 400,0)
- if(str.strcompare(dm_龍吟.GetColor(356,400),"737373")!=0)
- continue
- else
- break
- endif
- else
- start_entry.mousemoveclick(intX,intY,1) //【双击进入游戏】
- break
- endif
- help.sleep(100)
- endwhile
- while(true)//【注意:涉及循环都加一个判断避免游戏卡死不动】
- intX = 1
- intY = 1
- dm_龍吟.MoveTo(10,10)
- help.sleep(50)
- dm_龍吟.FindStr(417,334,606,391,"拍卖行",str.strcat("c8c3a9-",aberration),1.0,intX,intY)
- if(intX<=0&&intY<=0)
- break
- endif
- help.sleep(100)
- endwhile
- if(intX<=0&&intY<=0)
- break
- endif
- help.sleep(100)
- endwhile
- endif
- if(str.strcompare(model,"radio1")==0)
- //【得到下拉框的选项】
- get_option = 0
- get_option = combo.getcursel("ComboBox0")
- if(get_option==0) //【亡者峡谷1】
- while(true)//【注意:涉及循环都加一个判断避免游戏卡死不动】
- start_entry.mousemoveclick(113,364,1) //【双击进入游戏】
- help.sleep(1000)
- intX = 1
- dm_龍吟.FindStr(417,334,606,391,"拍卖行",str.strcat("c8c3a9-",aberration),1.0,intX,intY)
- if(intX<=0)
- break
- endif
- help.sleep(100)
- endwhile
- return true
- endif
- if(get_option==1) //【亡者峡谷2】
- while(true)//【注意:涉及循环都加一个判断避免游戏卡死不动】
- start_entry.mousemoveclick(300,365,1) //【双击进入游戏】
- help.sleep(1000)
- intX = 1
- dm_龍吟.FindStr(417,334,606,391,"拍卖行",str.strcat("c8c3a9-",aberration),1.0,intX,intY)
- if(intX<=0)
- break
- endif
- help.sleep(100)
- endwhile
- return true
- endif
- if(get_option==2) //【拍卖行】
- while(true)//【注意:涉及循环都加一个判断避免游戏卡死不动】
- start_entry.mousemoveclick(488,359,1) //【双击进入游戏】
- help.sleep(1000)
- intX =1
- dm_龍吟.FindStr(417,334,606,391,"拍卖行",str.strcat("c8c3a9-",aberration),1.0,intX,intY)
- if(intX<=0)
- break
- endif
- help.sleep(100)
- endwhile
- return true
- endif
- if(get_option>2) //【指定频道】
- get_option = get_option + 7
- endif
- mark=0
- while(true)
- start_entry.mousemoveclick(570,400,0)
- help.sleep(1000)
- while(true)//【注意:涉及循环都加一个判断避免游戏卡死不动】
- intX = 0
- dm_龍吟.FindStr(417,334,606,391,"拍卖行",str.strcat("c8c3a9-",aberration),1.0,intX,intY)
- if(intX>0)
- break
- endif
- help.sleep(100)
- endwhile
- while(true)
- if(str.strcompare(dm_龍吟.GetColor(283, 400),"737373")!=0)
- start_entry.mousemoveclick(290, 400,0)
- else
- break
- endif
- endwhile
- while(true)
- intX=0
- intY=0
- dm_龍吟.FindStr(27,82,605,346,str.strcat("ch",convert.inttostr(get_option)),str.strcat("c8c3a9-",aberration),1.0,intX,intY)
- if(intX<=0&&intY<=0)
- start_entry.mousemoveclick(350, 400,0)
- help.sleep(1000)
- if(str.strcompare(dm_龍吟.GetColor(356,400),"737373")!=0)
- continue
- else
- if(mark==1) //【第二次的时候再跳出】
- break
- endif
- mark = mark + 1
- endif
- else
- start_entry.mousemoveclick(intX,intY,1) //【双击进入游戏】
- help.sleep(1000)
- break
- endif
- help.sleep(100)
- endwhile
- if(intX>0&&intY>0)
- while(true)//【注意:涉及循环都加一个判断避免游戏卡死不动】
- intX = 1
- intY = 1
- dm_龍吟.FindStr(417,334,606,391,"拍卖行",str.strcat("c8c3a9-",aberration),1.0,intX,intY)
- if(intX<=0&&intY<=0)
- break
- endif
- help.sleep(100)
- endwhile
- endif
- if(intX<=0&&intY<=0)
- break
- endif
- help.sleep(100)
- endwhile
- endif
- return true
- endfunction
-
- function bool inputidandpassword(int judge_Hwnd,int id_Hwnd,int password_Hwnd,string ID,string password,int fblWide) //【输入账号密码子程序】
- window.leftclick(judge_Hwnd,153,183) //【关闭登录失败消息框】
- help.sleep(1000)
- repeat(18) //【清除之前账号】
- window.postkeypress(id_Hwnd,8)
- help.sleep(10)
- endrepeat
- help.sleep(100)
- window.poststring(id_Hwnd,ID) //【输入账号】
- help.sleep(500)
- drivemouse.mousemove(fblWide-687+452,407)
- help.sleep(50)
- drivemouse.leftclick(1)
- help.sleep(50)
- repeat(2) //【让光标指向输入密码处】
- window.leftclick(password_Hwnd,20,20)
- help.sleep(100)
- endrepeat
- // window.sendstring(password_Hwnd,password)
- drivekeyboard.keystring(password) //【输入密码】【这里采用超级键盘还未找到后台办法】
- help.sleep(500)
- window.postkeypress(id_Hwnd,13) //【回车】
- help.sleep(300)
- return true
- endfunction
- function int returnhwndvalue(string enumvalue,string comparevalue,int positionx,int positiony,int rwidth,int rheight,int mode,int mark) //【model 0表示句柄 1、类名 2、进程名 3、父窗口得子窗口】
- int position,get_positionx,get_positiony,get_width,get_height,get_hwnd
- string son_hwnd,returnvalue
- //[枚举返回需要的句柄]
- returnvalue = system.enum(enumvalue,mode)
- if(str.strleng(returnvalue)>0)
- while(true)
- position = str.findchar(returnvalue,124) //【查找“|”】
- son_hwnd = str.strsub(returnvalue,0,position) //【分割得到子句柄】
- get_positionx = 0
- get_positiony = 0
- window.getwindowpos(convert.strtoint(son_hwnd,0),get_positionx,get_positiony)
- window.getwindowsize(convert.strtoint(son_hwnd,0),get_width,get_height)
- if(str.strcompare(window.getwindowtype(convert.strtoint(son_hwnd,0)),comparevalue)==0&&get_positionx==positionx&&get_positiony==positiony&&get_width==rwidth&&get_height==rheight)
- get_hwnd = convert.strtoint(son_hwnd,0)
- break
- endif
- if(mark==1) //【不用对比坐标】
- if(str.strcompare(window.getwindowtype(convert.strtoint(son_hwnd,0)),comparevalue)==0&&get_width==rwidth&&get_height==rheight)
- get_hwnd = convert.strtoint(son_hwnd,0)
- break
- endif
- endif
- if(mark==2) //【对比标题】
- if(str.strcompare(window.getwindowcaption(convert.strtoint(son_hwnd,0)),comparevalue)==0&&get_width==rwidth&&get_height==rheight)
- get_hwnd = convert.strtoint(son_hwnd,0)
- break
- endif
- endif
- if(str.strcompare(son_hwnd,returnvalue)==0)
- get_hwnd=0
- break
- endif
- returnvalue = str.strcut(returnvalue,position+1,true) //【移除前子句柄】
- help.sleep(20)
- endwhile
- endif
- return get_hwnd
- endfunction
- //【账号、密码、大区和服务器、频道、路径、网络运行商、分辨率高、宽、色差】
- function string start_task(string ID,string password,string servicer,string path,string Network_Run,int fblWide,string aberration,int mhyf)
- int hwnd,ARP_mark,intX,intY,Button_Hwnd,get_Hwnd,judge_Hwnd,id_Hwnd,password_Hwnd,get_width,get_height
- int change_time,error_time,over_time
- string hwndlength,path1
- int[] return_data = int[5]
- path1 = str.strsub(path,0,2)+"\\地下城与勇士"
- process.openprocess("Taskkill /f /im qqlogin.exe /im dnfchina.exe /im tencentdl.exe /im tensafe.exe /im dnfchinatest.exe") //【结束各种进程】
- help.sleep(2000)
- help.writeini("ServerSelection","LastSelectName",str.strcat(servicer,"区"),str.strcat(path1,"\\start\\UserSetting.ini")) //【设置大区服务器】
- help.writeini("ServerSelection","LastSelectISP",Network_Run,str.strcat(path1,"\\start\\UserSetting.ini"))
- help.writeini("DNF COMMON","DENY PVP INVITE","1",str.strcat(path1,"\\DNF.cfg"))
- help.writeini("DNF COMMON","DENY PARTY INVITE","1",str.strcat(path1,"\\DNF.cfg")) //【拒绝组队】
- help.writeini("DNF COMMON","SCREEN MODE","0",str.strcat(path1,"\\DNF.cfg")) //【设置成不全屏】
- help.writeini("DNF COMMON","LAST CONNECT DATE","99999999",str.strcat(path1,"\\DNF.cfg")) //【不弹广告】
- help.sleep(2000)
- if(process.openprocess(path)==0)
- //【检测路径是否填写错误】
- return "路径不对"
- endif
- ARP_mark = 0
- while(true) //【注意:涉及循环都加一个判断避免游戏卡死不动】
- hwnd = 0
- hwnd=window.findwindow("地下城与勇士")
- if(hwnd>0)
- get_width = 0
- get_height = 0
- window.getwindowsize(hwnd,get_width,get_height)
- if(get_width==687&&get_height==599)
- window.setwindowpos(hwnd,fblWide-687,0)
- Button_Hwnd = 0
- Button_Hwnd = Launcher.returnhwndvalue(convert.inttostr(hwnd),str.strcat(servicer,"区"),0,0,89,25,3,2) //【找需要登录的这个区按钮】
- if(Button_Hwnd>0)
- get_width=0
- get_height=0
- window.getwindowsize(Button_Hwnd,get_width,get_height)
- if(get_width==89&&get_height==25)
- break
- endif
- endif
- endif
- endif
- ARP_mark = ARP_mark + 1
- if(ARP_mark==300)
- break
- endif
- help.sleep(20)
- endwhile
- if(ARP_mark==300) //【30秒没出现直接重新登录】
- return "重新登录"
- endif
- ARP_mark = 0
- while(true) //【注意:涉及循环都加一个判断避免游戏卡死不动】
- Button_Hwnd=0
- Button_Hwnd = Launcher.returnhwndvalue(convert.inttostr(hwnd),"Button",fblWide-687+490,513,147,56,3,0) //【找确定选择按钮】
- if(Button_Hwnd>0)
- help.sleep(5000)
- break
- endif
- ARP_mark = ARP_mark + 1
- if(ARP_mark==300)
- break
- endif
- help.sleep(100)
- endwhile
- if(ARP_mark==300) //【30秒没出现直接重新登录】
- return "重新登录"
- endif
- ARP_mark = 0
- while(true) //【注意:涉及循环都加一个判断避免游戏卡死不动】
- window.leftclick(Button_Hwnd,62,27) //【点击确认选择】
- help.sleep(300)
- get_Hwnd = 1
- get_Hwnd = Launcher.returnhwndvalue(convert.inttostr(hwnd),str.strcat(servicer,"区"),0,0,89,25,3,2) //【直到消失】
- if(get_Hwnd<=0)
- break
- endif
- judge_Hwnd=0
- judge_Hwnd = Launcher.returnhwndvalue("#32770","#32770",0,0,301,213,1,1) //【是否出现维护按钮】
- if(judge_Hwnd>0)
- window.postkeypress(judge_Hwnd,13)
- help.sleep(300)
- break
- endif
- ARP_mark = ARP_mark + 1
- if(ARP_mark==200)
- break
- endif
- help.sleep(100)
- endwhile
- if(ARP_mark==200)
- return "重新登录"
- endif
- if(judge_Hwnd>0)
- return "游戏正在维护"
- endif
- help.sleep(3000)
- ARP_mark=0
- while(true) //【注意:涉及循环都加一个判断避免游戏卡死不动】
- judge_Hwnd=0
- judge_Hwnd = Launcher.returnhwndvalue("#32770","#32770",0,0,301,213,1,1) //【是否出现维护按钮】
- if(judge_Hwnd>0)
- window.postkeypress(judge_Hwnd,13)
- help.sleep(300)
- endif
- hwndlength=""
- hwndlength = system.enum("QQLogin.exe",2) //【直到该进程出现跳出】
- if(str.strleng(hwndlength)>0)
- break
- endif
- ARP_mark = ARP_mark + 1
- if(ARP_mark==600) //【2分半还没进入登陆界面重新登陆】
- break
- endif
- help.sleep(300)
- endwhile
- if(ARP_mark==600)
- return "重新登录"
- endif
- ARP_mark =0
- while(true) //【注意:涉及循环都加一个判断避免游戏卡死不动】
- hwndlength="1"
- hwndlength = system.enum("QQLogin.exe",2) //【是否进程突然消失】
- if(str.strleng(hwndlength)<=0)
- break
- endif
- hwnd = 0
- hwnd=window.findwindow("地下城与勇士")
- if(hwnd>0)
- window.setwindowpos(hwnd,fblWide-687,0)
- window.setwindowtop(hwnd,true)
- get_Hwnd=0
- get_Hwnd = Launcher.returnhwndvalue(convert.inttostr(hwnd),"Edit",fblWide-687+314,400,145,16,3,0) //【找到输入密码按钮跳出】
- if(get_Hwnd>0)
- break
- endif
- endif
- ARP_mark =ARP_mark+1
- if(ARP_mark==200)
- break
- endif
- help.sleep(100)
- endwhile
- if(str.strleng(hwndlength)<=0||ARP_mark==200)
- return "重新登录"
- endif
- help.sleep(2000)
- ARP_mark = 0
- while(true) //【注意:涉及循环都加一个判断避免游戏卡死不动】
- hwndlength="1"
- hwndlength = system.enum("QQLogin.exe",2) //【是否进程突然消失】
- if(str.strleng(hwndlength)<=0)
- break
- endif
- password_Hwnd = 0
- id_Hwnd = 0
- password_Hwnd = Launcher.returnhwndvalue(convert.inttostr(hwnd),"Edit",fblWide-687+314,400,145,16,3,0) //【账号按钮】
- id_Hwnd = Launcher.returnhwndvalue(convert.inttostr(hwnd),"Edit",fblWide-687+314,373,145,16,3,0) //【密码按钮】
- if(password_Hwnd>0&&id_Hwnd>0)
- window.postkeypress(get_Hwnd,13) //【向密码按钮执行回车来弹出的输入框判断是否进入登陆界面】
- help.sleep(500)
- judge_Hwnd=0
- judge_Hwnd = Launcher.returnhwndvalue("TWINCONTROL","TWINCONTROL",fblWide-687+183,199,320,200,1,0) //【登陆失败消息框】
- if(judge_Hwnd>0)
- window.setwindowtop(hwnd,true)
- Launcher.inputidandpassword(judge_Hwnd,id_Hwnd,password_Hwnd,ID,password,fblWide) //【调用输入账号密码子程序】
- break
- endif
- help.sleep(100)
- endif
- ARP_mark = ARP_mark + 1
- if(ARP_mark==1200)
- break
- endif
- help.sleep(100)
- endwhile
- if(str.strleng(hwndlength)<=0||ARP_mark==1200)
- return "重新登录"
- endif
- ARP_mark=0
- while(true) //【注意:涉及循环都加一个判断避免游戏卡死不动】
- hwndlength="1"
- hwndlength = system.enum("QQLogin.exe",2) //【是否进程突然消失】
- if(str.strleng(hwndlength)<=0)
- break
- endif
- window.setwindowtop(hwnd,true)
- judge_Hwnd = Launcher.returnhwndvalue("TWINCONTROL","TWINCONTROL",183,199,320,200,1,0) //【登陆失败消息框】
- if(judge_Hwnd>0)
- Button_Hwnd = Button_Hwnd + 1
- if(Button_Hwnd==change_time)
- drivekeyboard.keypress(20,1)
- help.sleep(100)
- endif
- Launcher.inputidandpassword(judge_Hwnd,id_Hwnd,password_Hwnd,ID,password,fblWide) //【调用输入账号密码子程序】
- endif
- help.sleep(100)
- judge_Hwnd=0
- judge_Hwnd = Launcher.returnhwndvalue("TWINCONTROL","TWINCONTROL",0,0,307,229,1,1) //【出现验证码消息框】
- if(judge_Hwnd>0)
- window.leftclick(judge_Hwnd,232,199) //【关闭验证码消息框,异常处理】
- help.sleep(1000)
- endif
- password_Hwnd = Launcher.returnhwndvalue(convert.inttostr(hwnd),"Edit",fblWide-687+314,400,145,16,3,0)
- if(password_Hwnd<=0)
- break
- endif
- if(Button_Hwnd==error_time)
- break
- endif
- ARP_mark = ARP_mark + 1
- if(ARP_mark==600)
- break
- endif
- help.sleep(100)
- endwhile
- if(Button_Hwnd==error_time)
- return "重新登录"
- endif
- if(str.strleng(hwndlength)<=0||ARP_mark==600)
- return "重新登录"
- endif
- help.sleep(5000)
- ARP_mark = 0
- while(true) //【注意:涉及循环都加一个判断避免游戏卡死不动】
- hwnd = 0
- hwnd=window.findwindow("地下城与勇士")
- if(hwnd>0)
- get_width=0
- get_height=0
- window.getwindowsize(hwnd,get_width,get_height)
- if(get_width==640&&get_height==480)
- window.setwindowpos(hwnd,fblWide-640,0)
- window.setwindowtop(hwnd,true)
- help.sleep(1000)
- break
- endif
- endif
- ARP_mark = ARP_mark + 1
- if(ARP_mark == over_time)
- break
- endif
- help.sleep(100)
- endwhile
- if(ARP_mark == over_time)
- return "重新登录"
- endif
- if(dm_龍吟.BindWindow(hwnd,"normal","windows2","normal",0)!=1)
- return "绑定失败"
- endif
- while(true) //【判断进入游戏频道】//【注意:涉及循环都加一个判断避免游戏卡死不动】
- if(!window.iswindow(hwnd))
- break
- endif
- dm_龍吟.MoveTo(10,10)
- help.sleep(50)
- intX = 0
- dm_龍吟.FindStr(417,334,606,391,"拍卖行",str.strcat("c8c3a9-",aberration),1.0,intX,intY)
- if(intX>0)
- help.sleep(1000)
- break
- endif
- help.sleep(100)
- endwhile
- if(!window.iswindow(hwnd))
- return "重新登录"
- endif
- if(radio.getstate("radio1"))
- Launcher.channelchoice("radio1",aberration) //【选择频道】
- else
- Launcher.channelchoice("radio0",aberration) //【选择频道】
- endif
- ARP_mark=0
- while(true) //【判断进入游戏频道】//【注意:涉及循环都加一个判断避免游戏卡死不动】
- intX = 0
- intY = 0
- dm_龍吟.FindColor(56,54,182,233,str.strcat("d1b994-",aberration),1.0,0,intX,intY)
- if(intX>0&&intY>0)
- help.sleep(1000)
- break
- endif
- if(!window.iswindow(hwnd))
- break
- endif
- dm_龍吟.FindColor(446,444,553,530,str.strcat("ddc58d-",aberration),1.0,0,intX,intY)
- if(intX>0&&intY>0)
- ARP_mark=ARP_mark + 1
- endif
- if(ARP_mark==250)
- break
- endif
- help.sleep(100)
- endwhile
- if(!window.iswindow(hwnd))
- return "重新登录"
- endif
- if(ARP_mark==250)
- ARP_mark=0
- return "0"
- endif
- int x1,y1,x2,y2,id_mark
- string get_level
- if(radio.getstate("check9")) //【只要满足16就ok】
- //56,53,181,233 第1个角色185,53,310,233 第2个角色56,237,181,417 第二排第1个角色
- //【左边相差129 下边相差 184 初始化:579,69 翻页坐标:580,399 下一页 Lv】
- x1=56
- y1=53
- x2=181
- y2=233
- id_mark=1
- //【扫描第一号没有等级表示登录到错误的区需要换号】
- repeat(2)
- start_entry.mousemoveclick(579,69,0)
- endrepeat
- help.sleep(1000)
- while(true)
- ARP_mark=0
- while(true)
- intX = 0
- intY = 0
- dm_龍吟.FindStr(x1,y1,x2,y2,"Lv",str.strcat("d1b994-",aberration),1.0,intX,intY)
- if(intX>0&&intY>0)
- break
- endif
- if(ARP_mark==20)
- break
- endif
- ARP_mark = ARP_mark + 1
- help.sleep(100)
- endwhile
- if(ARP_mark==20)
- id_mark=0
- break
- endif
- get_level = Launcher.get_word(intX-6,intY-6,intX+27,intY+10,str.strcat("d1b994-",aberration))
- if(str.strleng(get_level)<=0)
- id_mark = 0
- break
- else
- if(convert.strtoint(str.strcut(get_level,2,true),0)>=16&&id_mark==mhyf)
- start_entry.mousemoveclick(x1+118,y1+143,0)
- break
- endif
- endif
- x1 = x1 + 129
- x2 = x2 + 129
- if(id_mark==4||id_mark==12)
- y1 = y1 + 184
- y2 = y2 + 184
- x1 = 56
- x2 = 181
- endif
- if(id_mark==8)
- repeat(2)
- start_entry.mousemoveclick(580,399,0)
- endrepeat
- help.sleep(1000)
- x1=56
- y1=53
- x2=181
- y2=233
- endif
- if(id_mark==16)
- id_mark = 0
- break
- endif
- id_mark = id_mark + 1
- help.sleep(100)
- endwhile
- endif
- if(id_mark>0)
- while(true)
- if(!window.iswindow(hwnd))
- break
- endif
- start_entry.mousemoveclick(357,440,0)
- help.sleep(500)
- intX = 0
- dm_龍吟.FindStr(19,463,56,479,"Lv",str.strcat("ffffff-",aberration),1.0,intX,intY)
- if(intX>0)
- window.setwindowtop(hwnd,false)
- break
- endif
- help.sleep(100)
- endwhile
- endif
- if(!window.iswindow(hwnd))
- return "重新登录"
- endif
- return convert.inttostr(hwnd)
- endfunction
- endnamespace
复制代码
|