-------------------------------------------------------------------
'By:qingfengzhixia
'QQ:360689878
'EMail:qingfengzhixia1@163.com
'Date:2011-4-23
'--------------------------------------------------------------------------
//用户自定义的变量
UserVar DNFpath="D:\Program Files\腾讯游戏\地下城与勇士\start\DNFchina.exe" "游戏路径"
UserVar qq=21545 "QQ帐号"
UserVar psw="4541com" "QQ密码(登录过程中不要打开Caps Lock键)"
UserVar MyDQ=DropList{"否":"0"|"是":"1"}=1 "是否启用自定义大区和服务器"
UserVar Region="广东区" "输入大区名称(可不用加引号)"
UserVar Server="广东1区" "输入服务器名称(可不用加引号)"
UserVar Delay_move=300 "鼠标移动的延迟"
UserVar Delay_click=300 "点击的延迟"
UserVar Delay_window=400 "弹出窗口的延迟"
UserVar V_input=10 "密码输入速度"
UserVar tdPD=DropList{"拥挤":0|"普通":1|"良好":2|"顺畅":3}=1 "自动登录到特定状态的频道"
UserVar Num_role=1 "第几个角色"
//▓▓▓▓▓▓▓▓▓▓▓ 自定义变量判断 ▓▓▓▓▓▓▓▓▓▓
If Plugin.File.ExistFile(DNFpath) = 0 or VarType(qq) <> 3 Then  
    EndScript	
End If
//▓▓▓▓▓▓▓▓▓▓▓全局变量初始化 ▓▓▓▓▓▓▓▓▓▓▓
Dim C(3)
C(0) = "0000FF" '拥挤
C(1) = "0080FF" '普通
C(2) = "00B1FF" '良好
C(3) = "00FF00" '顺畅	
For j = 1 To 2
    For i = 1 To 4
        If i + (j - 1) * 4 = Cint(Num_role) Then 
            Role_x = i : Role_y = j
        End If
    Next
Next 
//▓▓▓▓▓▓▓▓▓▓▓主    程    序 ▓▓▓▓▓▓▓▓▓▓▓
RunApp DNFpath
Delay 5000
//●●●●●●●●● 选大区 ●●●●●●●●
Call 判断窗口("选大区")
Delay 2000
If MyDQ = 1 Then 
    Call 点击子窗口(Region)
    Call 点击子窗口(Server)
End If
Do 
    Delay 50 
    IfColor Ux+116, Uy+363,"676767",1 Then '判断服务器状态
        Exit Do 
    End If 	
Loop
Call 移动并点击(560, 490, 0, 1)  '确认
Delay 2000
//●●●●●●●● 输密码 ●●●●●●●●
Call 判断窗口("输密码")
Call 移动并点击(447, 367, 0, 1)  '账号窗口
KeyPress "BackSpace", 15   
SayString QQ   
Delay 300
KeyPress "Tab", 1 
Call lib.键盘.KeyList(psw, 0, V_input)
Call 移动并点击(570, 380, 0, 1)  '[登录游戏]
Delay 5000
//●●●●●●●● 择频道 ●●●●●●●●
Call 窗口判断("择频道")
Do
    Delay 50
    IfColor Ux+104, Uy+138, "A9C3C8" ,0  Then   '是否在读取频道信息'
        Exit Do 
    End If
Loop
Do
    Delay 50
    FindColor Ux, Uy, Ux + 640, Uy + 480, C(tdPD), intX, intY '不同频道状态不同的颜色'
    If intX > 0 And intY > 0 Then 
        Call 移动并点击(intX - Ux, intY - Uy, 0, 1)
        Exit Do 
    Else 
        If tdPD = 3 Then tdPD = -1  '找不到设定的状态,就找下一种状态'
        tdPD = tdPD + 1
    End If
Loop
Delay Delay_click
Call 移动并点击(320, 445, 0, 1)  '[游戏开始]
Delay 1000
//●●●●●●●● 挑角色 ●●●●●●●●
Call 移动并点击(115 + (role_x - 1) * 130, 135 + (role_y - 1) * 185, 0, 1)    '选择角色
Call 移动并点击(320, 445, 0, 1)  '[游戏开始]
RunApp("cmd.exe /C Taskkill /f /im AutoDNFlogin.exe") '关闭自己,AutoDNFlogin.exe为自己小精灵的文件名
EndScript 
//▓▓▓▓▓▓▓▓▓▓▓ 子    程    序 ▓▓▓▓▓▓▓▓▓▓▓
Sub 点击子窗口(标题)
    Do 
        Delay 50
        Hwnd = Plugin.Window.Find(0, "地下城与勇士")
        HwndEx = Plugin.Window.FindEx(Hwnd, i, 0, 标题)
        If HwndEx <> 0 Then
            Coord = Plugin.Window.GetClientRect(HwndEx)
            MyArray = Split(Coord, "|", - 1 , 1)