TC官方合作论坛

 找回密码
 立即注册
楼主: Abin
打印 上一主题 下一主题

[TC深入浅出系列] TC深入浅出第十讲

  [复制链接]
1861#
发表于 2018-6-9 12:52:44 | 只看该作者
123123123555555555555555555
回复 支持 反对

使用道具 举报

1862#
发表于 2018-6-11 19:40:27 | 只看该作者
Global 检测入场券, 检测材料, 当前刷到第几个角色, 角色名字, foobar, MySec2, 角色名称, 进入黄龙咯
Global 红色小晶块, 无尽的永恒, 黄龙票, 疲劳值, 重新定义
Dimenv 打怪线程, 检测死亡线程, 超时线程, 进图线程, 购买门票线程, 城镇线程, 调控线程
Call 注册
If Form1.赛利亚启动.Value = 1 Then
    Do
        Call 调控
    Loop
ElseIf Form1.自动登入.Value = 1 Then
    TracePrint 1
End If
//Call 打怪测试
//调控线程 = BeginThread(调控)
SDelay 300
Sub 调控
    If 城镇房间 = 1 or 城镇房间 = 2 Then
        //        城镇线程 = BeginThread(城镇caoz)
        Call 城镇caoz
    ElseIf  城镇房间 = 3
        //        进图线程 = BeginThread(进入黄龙)
        Call 进入黄龙
    ElseIf 怪物坐标 = True     
        //        打怪线程 = BeginThread(打怪测试)
        Call 打怪测试
    Else
        Call 更换角色(1)
    End If
End Sub

Sub 城镇caoz
    Dim pl
    Do
        If 城镇房间 = 1 Then
            Call 从赛利亚房间出来
        ElseIf 城镇房间 = 2 Then
            Call 清理背包
            Pl = 识别疲劳值()
            If pl = 0 Then
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 没有疲劳准备切换角色 ]", "ff0000")
                Call 更换角色(0)
            Else        
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 还有疲劳 ]", "ff0000")
            End If
            Call 识别虚弱状态
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检查完成准备进图 ]", "ff0000")
            Call 准备进图
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 退出城镇线程 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Do
    Call 调控
Loop
Do
Loop
Sub 准备进图
    Do
        If 城镇房间 = 3 Then
            DM.KeyUp 39
            DM.KeyUp 39
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入选择地图 ]", "ff0000")
            Exit Do
        Else     
            dm.KeyDown 40
            SDelay 300
            dm.KeyUp 40
            dm.KeyDown 37
            SDelay 300
            dm.KeyUp 37
            SDelay 30
            dm.KeyDown 39
            SDelay 2200
        End If       
    Loop
End Sub
Sub 进入黄龙
    DO
        dm_ret = dm.FindPic(395, 289, 757, 481, "hldh.bmp|hldh2.bmp", "000000", 0.9, 0, intX, intY)
        If intX > 0 Then
            ydsbz intX, intY
            ydsbz intX, intY
            Exit Do
        End If
    Loop
    DO
        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
        If 跳过x > 0 Then
            dm.KeyPress 32
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
        Else     
            If 怪物坐标 = False  Then
                DM.KeyPress 32
            Else
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                进入黄龙咯 = True
                Exit Do
            End If           
        End If
    Loop
    Call 打怪测试
End Sub
Function 城镇房间
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备分解x, 装备分解y)
    dm_ret = dm.FindStr(695, 535, 799, 572, "返回城镇", "ddc593-000000|ffffb8-000000", 1.0, intX, intY)
    dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
    If 赛利亚x > 0 Then
        城镇房间 = 1
    ElseIf 装备分解x > 0 Then
        城镇房间 = 2
    ElseIf intX > 0 Then
        城镇房间 = 3
    ElseIf 跳过x > 0 and 跳过y > 0 Then
        城镇房间 = 4
    End If
End Function
Sub 注册
    PutAttachment "c:\test_game","*.*"
    PutAttachment ".\Plugin" ,"RegDll.dll"
    Call Plugin.Regdll.reg("c:\game_script\dm.dll")
    Set dm = createobject("dm.dmsoft")
    ver = dm.ver()
    If len(ver) = 0 Then
        MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
        EndScript
    Else
        dm_ret = dm.SetPath("C:\黄龙\")
        dm_ret = dm.SetDict(0, "字库.txt")
        hwnd = dm.FindWindow("", "地下城与勇士")
        dm.MoveWindow hwnd, 0, 0
        dm_ret = dm.SetWindowState(hwnd, 12)
        foobar = dm.CreateFoobarRect(shw, 0, 600, 400, 100)
        foobar2 = dm.CreateFoobarRect(shw2, 400, 600, 400, 100)
        dm_ret = dm.FoobarLock(foobar)
        dm_ret = dm.FoobarSetFont(foobar, "宋体", 9, 0)
    End If       
End Sub
Sub SDelay(时间)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : Call Lib.模拟真实键鼠.随机延时(时间 + (增量Y + 增量Y) * (增量Y / 2))
End Sub
SUB ydsbz(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标 + 增量X, 屏幕Y坐标 + 增量Y) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Sub
SUB ydsby(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标, 屏幕Y坐标) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标右键单击()
End Sub
Sub 从赛利亚房间出来
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    If 赛利亚x > 0 and 赛利亚y > 0 Then
        日志 = Now & " [ 切换至赛利亚房间:准备检测疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        SDelay 200
        Call 识别疲劳
        Call 识别材料
        Do
            dm_ret = dm.FindStr(279,0,766,280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
            If 装备栏x > 0 Then
                dm.KeyPress 73
                SDelay 300
            Else     
                Exit Do
            End If
        Loop
        MySec2 = Second(Now)
        Do
            dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
            If 虚祖首都素喃x >= 0 Then
                SDelay 300
                dm.KeyUp 40
                Plugin.lxj_Plug.lxj_ReleaseMemory -1
                日志 = Now & " [ 到达:虚祖首都素喃 准备行走置副本门口 ] "
                dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                SDelay 600
                ydsby 5, 500
                ydsby  5, 500
                SDelay 3000
                dm.KeyDown 38
                SDelay 1200
                dm.KeyUp 38
                dm.KeyUp 38
                SDelay 500
                Do
                    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                    If 装备x > 0 Then
                        dm.KeyUp 39
                        dm.KeyUp 39
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                        Exit Sub
                    Else  
                        dm.KeyDown 39
                    End If
                Loop
                //                Call  城镇寻路
            Else
                dm.KeyDown 40
                MySe2c = Second(Now)
                SDelay 100
                MySe2c3 = MySe2c - MySec2
                If abs(MySe2c3) >= 4 Then
                    日志 = Now & " [ 不在地区:虚祖首都素喃 准备使用瞬间移动药剂前往] "
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    SDelay 300
                Else                              
                    //                    dm_ret = dm.FoobarPrintText(foobar, "出赛利亚房间超时检测剩余秒数:" & abs(MySe2c3 - 4), "ff0000")                          
                End If
            End If
        Loop
    End If
End Sub// 赛利亚放假出来兑换票 扫拍
Sub 识别疲劳
    Dim 疲劳数据
    疲劳数据 = 识别疲劳值
    If 疲劳数据 <> 0 Then
        日志 = Now & " [ 疲劳检测:还有疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
    Else
        dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
        当前刷到第几个角色 = 当前刷到第几个角色 + 1
        日志 =  Now & " [ 疲劳检测:没有疲劳了准备切换角色 当前刷置角色 " & 当前刷到第几个角色 & "]"
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        If 当前刷到第几个角色 = int(Form1.刷多少角色.Text) Then
            dm.KeyPress 123
        Else
            Call 更换角色(0)
        End If             
    End If
End Sub
Sub 更换角色(f)
    Do
        dm_ret = dm.FindStr(132, 530, 304, 564, "删除", "ddc593-000000", 1.0, 删除x, 删除y)
        If 删除x < 0 Then
            dm_ret = dm.FindStr(441, 168, 656, 363, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
            If 游戏指南x < 0 and 游戏指南y < 0 Then
                dm.KeyPress 27
                SDelay 300
            Else
                SDelay 600
                ydsbz 384, 443
                SDelay 300
            End If
        Else     
            SDelay 600
            日志 = Now & " [ 小退游戏进入选择角色界面 ]"
            dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")     
            SDelay 300
            If f = 1 Then
                dm.KeyPress 39
                SDelay 600
            End If
            dm.KeyPress 32
            SDelay 600
            Do
                dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
                If 赛利亚x > 0 Then
                    日志 = Now & " [ 进入赛利亚房间重 ]"
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    Exit Do
                Else
                    dm_ret = dm.FindStr(319, 104, 578, 263, "×", "ede5aa-000000", 1.0, 叉x, 叉y)
                    If 叉x > 0 Then
                        日志 = Now & " [ 出现遮挡物准备关闭 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        ydsbz 叉x, 叉y
                        SDelay 300
                        日志 = Now & " [ 关闭遮挡物 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        Exit Do
                    End If
                End If
            Loop
            RestartScript
            Exit Do
        End If
    Loop
End Sub
Function 城镇寻路()
    x = 350
    y = 315
    dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
    If 虚祖首都素喃x > 0 Then
        Do
            dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
            If 搜索x > 0 and 搜索y > 0 Then
                TracePrint "打开大地图"
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 打开大地图 ]", "ff0000")
                Exit Do  
            Else   
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在打开大地图 ]", "ff0000")
                dm.KeyPress 78
                Delay 300
            End If
        Loop
    End If
    Do
        dm_ret = dm.FindStr(142, 134, 545, 434, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
        If 城镇坐标x >= 0 and 城镇坐标y >= 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在执行前往副本门口 ]", "ff0000")
            相差距离x = 城镇坐标x - x
            相差距离y = 城镇坐标y - y
            If 相差距离x > 0 Then
                dm.KeyDown 37
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 左方向到达 ]", "ff0000")
                        dm.KeyUp 37
                        Exit Do
                    End If
                Loop
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225, 196, 500, 447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 上方向到达 ]", "ff0000")
                            Delay 300
                            dm.KeyUp 38
                            dm.KeyUp 38
                            dm.KeyUp 38
                            Do
                                dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
                                If 搜索x > 0 Then
                                    dm.KeyPress 78
                                    SDelay 300
                                    Exit Do
                                End If
                            Loop
                            dm.KeyDown 39
                            Do
                                dm_ret = dm.FindStr(184, 117, 680, 253, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                                If 装备x > 0 Then
                                    dm.KeyUp 39
                                    dm.KeyUp 39
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                                    Exit Do
                                End If
                            Loop
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                End If
                Exit Do
            ElseIf 相差距离x < 0 Then
                Rem 反方向修复
                dm.KeyDown 39
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        TracePrint "右方向到达"
                        dm.KeyUp 39
                        Exit Do
                    End If
                Loop
                dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                相差距离y = 城镇坐标y - y
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "上方向到达"
                            Delay 300
                            dm.KeyUp 38
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "下方向到达"
                            Delay 300
                            dm.KeyUp 40
                            Exit Do
                        End If
                    Loop                                                                                          
                End If
                Exit Do
            End If
        End If
    Loop
End Function

Sub 识别虚弱状态
    恢复状态 = 1// 1=契约恢复 2=金币恢复 3=站街恢复
    If Form1.金币恢复.Value = 1 Then
        恢复状态 = 2
    ElseIf Form1.契约恢复.Value = 1 Then
        恢复状态 = 1
    ElseIf Form1.站街恢复.Value = 1 Then
        恢复状态 = 3
    End If
    DO   
        dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX,intY)
        If intX > 0 AND intY > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 虚弱状态 ]", "ff0000")
            SDelay 2200
            If 恢复状态 = 1 Then
                ydsbz intX, intY
                SDelay 3000
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "契约恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2, intY2
                End If
            ElseIf 恢复状态 = 2 Then
                ydsbz intX, intY
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "金币恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2 + 10, intY2 + 10
                End If              
            ElseIf 恢复状态 = 3 Then
                Do
                    dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX3,intY3)
                    If intX3 < 0 AND intY3 < 0 Then
                        SDelay 5000
                        Exit Sub
                    End If
                Loop
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 没虚弱 ]", "ff0000")
            Exit Do  
        End If
    Loop
End Sub
Sub 清理背包
    Do
        dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intxX2, intyY2)
        If intxX2 > 0 and intyY2 > 0 Then   
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包满了准备清理背包 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            Rem 修复点击装备分解
            dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解", "e6c89b-000000", 1.0, intX, intY)
            If intX > 0 and intY > 0 Then
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(0, 0, 800, 600, "分解装备", "e6c89b-000000", 1.0, 分解装备X, 分解装备Y)
                    If 分解装备X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击分解装备 ]", "ff0000")
                        ydsbz 分解装备X, 分解装备Y
                        SDelay 300
                        Exit Do
                    Else
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备点分解装备被遮挡将移除遮挡 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        Goto 修复点击装备分解
                    End if
                Loop// 点击分解装备
                SDelay  600
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(全部分解X, 全部分解Y)
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//移动到全部分解
                SDelay 600
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备勾选条件 ]", "ff0000")
                If Form1.分蓝.Value = 1 Then
                    分解模式 = 1// 1 分蓝卖紫白 2 分蓝白卖紫 3 全部分解
                    勾选蓝 = True:勾选白 = False:全部勾选 = False
                ElseIf Form1.分蓝白.Value = 1 Then
                    分解模式 = 2
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = False
                ElseIf Form1.全部分.Value = 1 Then
                    分解模式 = 3
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = True
                End If
                Do
                    dm_ret = dm.FindStrFast(215,358,344,450,"普通","ffffff-000000",1.0,pX,pY)'先查找普通这个字,然后根据返回的坐标来判断是否勾选
                    If pX > 0 And pY > 0 Then
                        dm_ret = dm.FindStrFast(px-1,py-1,px+80,py+14,"√","ffae00-000000",1.0,jX,jY)'根据普通返回的坐标,选择出一个区域能够查找到勾选,如果没有,则点击
                        If jX > 0 And jY > 0 Then
                            If 勾选白 = False Then
                                SDelay 300
                                ydsbz px, py
                                Exit Do
                            Else     
                                Exit Do                           
                            End If
                        Else
                            If 勾选白 = True Then
                                SDelay 300
                                ydsbz px, py
                                SDelay 100
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选白色 ]", "ff0000")
                                Exit Do
                            Else     
                                Exit Do  
                            End If
                        End If
                    End If
                Loop
                SDelay 300
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "高级", "68d5ed-000000", 1.0, gX, gY)
                    If gX > 0 And gY > 0 Then
                        dm_ret = dm.FindStrFast(gx-1,gy-1,gx+80,gy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 勾选蓝 = False Then
                                SDelay 300
                                ydsbz jx, jy
                                Exit Do
                            Else     
                                Exit Do                           
                            End if
                        Else
                            If 勾选蓝 = True Then
                                SDelay 300
                                ydsbz gX, gY
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选蓝色 ]", "ff0000")                              
                                Exit Do
                            Else     
                                Exit Do  
                            End if
                        End If
                    End If
                Loop
                SDelay 500
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "稀有", "b36bff-000000", 1.0, xX, xY)
                    If xX > 0 And xY > 0 Then
                        dm_ret = dm.FindStrFast(xx-1,xy-1,xx+80,xy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 全部分 = False Then
                                SDelay 300
                                ydsbz xx, xy
                                Exit Do
                            Else     
                                Exit Do
                            End If
                        Else
                            If 全部分 = True Then
                                SDelay 300
                                ydsbz xx, xy
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选紫色 ]", "ff0000")                           
                            Else   
                                Exit Do  
                            End If
                            Exit Do
                        End If
                    End If
                Loop
                If 全部分 = True Then
                    Exit Do
                End If
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选条件完毕开始分解 ]", "ff0000")
                Do
                    SDelay 300
                    TracePrint  2222
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        ydsbz 全部分解X, 全部分解Y
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//点击全部分解
                SDelay 300
                SDelay 300
                dm_ret = dm.FindStr(0, 0, 800, 600, "确认", "ddc593-000000", 1.0, 确认X, 确认Y)
                If 确认X > 0 Then
                    SDelay 200
                    ydsbz 确认X, 确认y
                    SDelay 200
                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击确认分解 ]", "ff0000")
                End If
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解成功", "ffffb8-000000", 1.0, 分解成功X, 分解成功Y)
                    If 分解成功X > 0 Then
                        SDelay 300
                        dm.KeyPress 27
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解完成 ]", "ff0000")
                        Exit Do
                    Else  
                        dm_ret = dm.FindStr(0, 0, 800, 600, "缺少全部分解包括的道具", "ffffff-000000", 1.0, 分解失败X, 分解失败Y)
                        If 分解失败X > 0 Then
                            SDelay 300
                            dm.KeyPress 27                                 
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解分解失败 ]", "ff0000")
                            Exit Do
                        End If
                    End If
                Loop
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                    If 游戏指南x > 0 Then
                        dm.KeyPress 27
                        SDelay 300
                    Else   
                        Exit Do
                    End If
                Loop//关闭多余菜单            
                SDelay 1200
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备出售物品 ]", "ff0000")
                SDelay 400
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If      
                SDelay 1200
                dm_ret = dm.FindStr(0, 0, 800, 600, "商店", "e6c89b-000000", 1.0, intX6, intY6)
                If intX6 > 0 and intY6 > 0 Then         
                    SDelay 600
                    ydsbz intX6, intY6
                    SDelay 520
                    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                    SDelay 1200
                    dm_ret = dm.FindStr(6, 41, 310, 205, "商店", "ffffb8-000000", 1.0, intX66, intY66)
                    If intX66 > 0 and intY66 > 0 Then
                        SDelay 700
                        Call 出售物品
                    End if
                End If
            Else            
                ydsbz 525,31      
            End If
        Else     
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包没满 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Sub 出售物品
    ydsbz 493, 245
    SDelay 300
    dm_ret = dm.FindStrS(540, 389, 748, 529, "整理", "ddc593-000000", 0.9, intX2, intY2)
    If intX2 > 0 and intY2 > 0 Then
        ydsbz intX2, intY2
        SDelay 300
    End If
    Do
        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(486 + 增值, 275 + 增值2)
        SDelay 400
        dm_ret = dm.FindStrS(0, 0, 790, 546, "传说|神器|史诗", "ff7800-000000|ff00ff-000000|ffb400-000000", 0.9, 装备X, 装备Y)
        If 装备X > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检测到神器或传说装备跳过出售当前 ]", "ff0000")
        Else
            Call 拖动出售
        End If
        SDelay 100
        Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
        行数 = 行数 + 1
        If 行数 < 8 Then
            增值 = 增值 + 30
        ElseIf 行数 = 8 Then
            增值 = 0
            增值2 = 30
        ElseIf 行数 >= 7 AND 行数 < 16 Then
            增值2 = 30
            增值 = 增值 + 30
        ElseIf 行数 = 16 Then
            增值 = 0
            增值2 = 60
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 出售装备完毕 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                If 游戏指南x > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop//关闭多余菜单            
            Exit Do
        ElseIf 行数 >= 15 AND 行数 < 24 Then
            增值2 = 60
            增值 = 增值 + 30
        ElseIf 行数 = 24 Then
            增值 = 0
            增值2 = 90
        ElseIf 行数 >= 23 AND 行数 < 32 Then
            增值2 = 90
            增值 = 增值 + 30
        ElseIf 行数 = 32 Then
            增值2 = 120
            增值 = 0                
        ElseIf 行数 >= 31 AND 行数 < 40 Then
            增值2 = 120
            增值 = 增值 + 30                 
        End If
    Loop
End Sub
Function 拖动出售()
    MySec = Second(Now)
    增量X = Left(MySec, 1)
    增量Y = Right(MySec, 1)
    SDelay 300 + (增量Y + 增量Y) + (增量Y / 2)
    LeftDown 1
    SDelay 100
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(323 + 增量X, 398 + 增量Y)
    SDelay 100
    LeftUp 1
    SDelay 200
    Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Function
Sub 关闭遮挡
    dm_ret = dm.FindStr(319, 104, 578, 263, "关闭", "f7d65a-000000", 1.0, 关闭x, 关闭y)
    If 关闭x > 0 Then
        ydsbz 关闭x, 关闭y
        SDelay 200
    End If
End Sub
Function  识别疲劳值
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(393, 553)
    SDelay 300
    dm_ret = dm.FindStr(191, 467, 629, 557, "疲劳值:", "ffffff-000000", 1.0, 疲劳x, 疲劳y)
    If 疲劳x > 0 Then
        SDelay 300
        s = dm.Ocr(疲劳x - 1, 疲劳y - 1, 疲劳x + 103, 疲劳y + 14, "ffffff-000000", 1.0)
        疲劳 = Split(s, "疲劳值:")
        疲劳2 = Split(疲劳(1), "/")
        TracePrint 疲劳2(0)
        识别疲劳值 = 疲劳2(0)
    End If
End Function
Function 怪物坐标
    s = dm.Ocr(637,38,754,65, "ffffff-000000", 1.0)
    dm_ret = dm.FindStr(657, 41, 731, 63, s, "ffffff-000000", 1.0, 赛利亚x2, 赛利亚y2)
    If 赛利亚x2 > 0 Then
        怪物坐标 = True
    Else        
        怪物坐标 = False
    End If
End Function
Function 翻牌状态
    dm_ret = dm.FindStrFast(0, 0, 794, 200, "翻牌状态", "d2b709-000000|ffffbb-000000|ffdd55-000000|eecc55-000000|ddaa44-000000|ffffff-000000|664422-000000|aa8833-000000", 0.8, intX, intY)
    //    dm_ret = dm.FindStr(264, 12, 556, 152, "VS", "000000-404040", 1.0, intX2, inty2)
    If intX > 0 Then
        翻牌状态 = True
    Else   
        翻牌状态 = False
    End If
End Function
Sub 打怪测试
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 预备打怪线程 ]", "ff0000")
    Do
        dm_ret = dm.FindColor(479, 70, 491, 78, "000000-000000", 1.0, 0, intX2, intY2)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "808080-404040", 1.0, intXc, intYc)
        Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
        If intX2 < 0 Then
            Call 冷却释放
            首次拾取 = False
        Else  
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 怪物死亡 ]", "ff0000")
            If intX > 0 and intX2c > 0 Then
                If 检测背包 = False Then
                    dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                    ydsbz intX, intY
                    DO
                        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
                        If 跳过x > 0 Then
                            dm.KeyPress 32
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
                        ElseIf 跳过x < 0 Then
                            dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                            If intX < 0 Then
                                If 怪物坐标 = False  Then
                                    DM.KeyPress 32
                                Else
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                                    Exit Do
                                End If
                            Else     
                                ydsbz intX, intY
                                SDelay 300
                                ydsbz 0, 0
                            End If
                        End If
                    Loop
                    Exit Do
                ElseIf 检测背包 = True Then
                    Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                    ydsbz intX2c, intY2c
                    Exit Do
                End If
            ElseIf intX2 > 0 AND intX < 0 AND intX2c < 0 Then
                If 首次拾取 = False Then
                    SDelay 300
                    Call 拾取
                    首次拾取 = True
                    SDelay 200
                End If
            ElseIf intXc > 0 Then
                Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                ydsbz intX2c, intY2c                     
            End If
        End If
    Loop
End Sub
Sub 拾取
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 开始拾取 ]", "ff0000")
    SDelay 300
    DM.KeyPress 86
    SDelay 300
    DM.KeyDown 88
    SDelay 700
    DM.KeyUp 88
End Sub
Sub 释放技能
    Do
        If 怪物坐标 = False  Then
            If Form1.冷却技能.Value = 1 Then
                Call 冷却释放
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 释放技能完毕 ] ", "ff0000")
            Exit Do
        End If
    Loop  
End Sub
Sub 冷却释放
    dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
    If 技能x = 542 AND 技能y = 533 Then
        dm.KeyPress 81
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Q ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 533 Then   
        dm.KeyPress 87
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: W ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 533 Then
        DM.KeyPress 69
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: E ]", "ff0000")
        SDelay 10
    ElseIf  技能x = 632 AND 技能y = 533 Then
        dm.KeyPress 82
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: R ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 533 Then
        dm.KeyPress 84
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: T ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 533 Then
        dm.KeyPress 89
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Y ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 542 AND 技能y = 564 Then
        dm.KeyPress 65
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: A ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 564 Then   
        dm.KeyPress 83
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:S ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 564 Then
        DM.KeyPress 68
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:D ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 632 AND 技能y = 564 Then
        dm.KeyPress 70
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:F ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 564 Then
        dm.KeyPress 71
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: G ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 564 Then
        dm.KeyPress 72
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: H ]", "ff0000")
        SDelay 10
    ElseIf 技能x < 0 Then
        If Form1.普通攻击.Value = 1 Then
            dm.KeyPress 88
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: X ]", "ff0000")
            SDelay 200
        End If
    End If
End Sub
Sub 释放
    Dim 技能键(13)
    分割次数 = len(Form1.赋值技能.Text)
    For i = 1 To 分割次数
        技能键(i)=Mid(技能, i, 1)       
        If 怪物坐标 = True  Then
            TracePrint "通关了退出释放技能"
            Exit Sub
        Else
            dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
            If Form1.普通攻击.Value = 1 Then
                If 技能x < 0 Then
                    dm.KeyPress 88
                End If
            End If
            SDelay 160
            If UCase(技能键(i)) = "A" Then
                dm.KeyPress 65
                SDelay 160
            ElseIf UCase(技能键(i)) = "S" Then
                dm.KeyPress 83
                SDelay 160
            ElseIf UCase(技能键(i)) = "D" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "F" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "G" Then
                dm.KeyPress 71
                SDelay 160
            ElseIf UCase(技能键(i)) = "H" Then
                dm.KeyPress 72
                SDelay 160
            ElseIf UCase(技能键(i)) = "Q" Then
                dm.KeyPress 81
                SDelay 160
            ElseIf UCase(技能键(i)) = "W" Then
                dm.KeyPress 87
                SDelay 160
            ElseIf UCase(技能键(i)) = "E" Then
                dm.KeyPress 69
                SDelay 160
            ElseIf UCase(技能键(i)) = "R" Then
                dm.KeyPress 82
                SDelay 160
            ElseIf UCase(技能键(i)) = "T" Then
                dm.KeyPress 84
                SDelay 160
            ElseIf UCase(技能键(i)) = "Y" Then
                dm.KeyPress 89
                SDelay 160
            ElseIf UCase(技能键(i)) = "X" Then
                dm.KeyPress 88
                SDelay 160
            End If
            SDelay 300            
        End If
    Next
End Sub
Sub 还任务
    Do
        dm_ret = dm.FindStr(268, 497, 506, 548, "完成任务", "cc4411-404040", 1.0, 完成任务x, 完成任务y)
        If 完成任务x > 0 Then
            ydsbz 完成任务x, 完成任务y
        Else   
            For 12
                dm.KeyPress 32
            Next
            Exit Do
        End If
    Loop
    dm.KeyPress 27
End Sub
Function 检测背包
    dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intx2, inty2)
    If intx2 > 0 and inty2 > 0 Then
        检测背包 = True
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包满了 ] ", "ff0000")
    Else
        检测背包 = False
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包没满 ] ", "ff0000")
    End If
End Function
Function 识别疲劳2
    dm_ret = dm.FindColor(278,545,513,559, "e60044-000000|b30026-000000|be6a83-000000", 0.9, 0, intX, intY)
    dm_ret = dm.FindColor(278,545,513,559, "00e6e6-000000|008ff1-000000|80a8a8-000000", 0.9, 0, intX2, intY2)
    If intX > 0 and intY > 0 OR intX2 > 0 and intY2 > 0 Then
        识别疲劳 = True
        TracePrint "还有疲劳"
        SDelay 700
    Else
        识别疲劳 = False
        TracePrint "没疲劳了"
        SDelay 800
    End If
End Function
Sub 识别材料
    Do
        Rem 重新扫描
        dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
        If 装备栏x < 0 Then
            dm.KeyPress 73
            SDelay 300
        Else
            Call Lib.模拟真实键鼠.随机慢慢移动鼠标(装备栏x, 装备栏y)
            SDelay 200
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "材料", "ffffb8-000000", 1.0, 材料x, 材料y)
                If 材料x < 0 Then
                    ydsbz 593, 245
                    ydsbz 593, 245
                Else
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 准备识别材料 ] ", "ff0000")
            红色小晶块 = dm.Ocr(730, 312, 761, 341, "ffffff-000000", 1.0)
            dm_ret = dm.FoobarPrintText(foobar, now & " [红色小晶块数量: ] " & 红色小晶块, "ff0000")
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "wj.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                无尽的永恒 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [无尽的永恒数量: ] " & 无尽的永恒, "ff0000")
            Else     
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 没有找到无尽的永恒 ] " & 无尽的永恒, "ff0000")
            End If
            SDelay 302
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "任务", "ffffb8-000000", 1.0, 材料2x, 材料2y)
                If 材料2x < 0 Then
                    ydsbz 690, 246
                    ydsbz 690, 246
                Else   
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "hl.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                黄龙票 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [黄龙门票数量:] " & 黄龙票, "ff0000")
            End If
            Do
                dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)       
                If 装备栏x > 0 Then
                    DM.KeyPress 73
                    SDelay 300
                Else        
                    Exit Do
                End If
            Loop
            SDelay 150
            疲劳值 = 识别疲劳值
            dm_ret = dm.FoobarPrintText(foobar, now & " [剩余疲劳 ] " & 疲劳值, "ff0000")
            可打次数 = 疲劳值 / 6
            dm_ret = dm.FoobarPrintText(foobar, now & " [可打黄龙次数] " & 可打次数, "ff0000")
            If 1300 > 红色小晶块 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 红色小晶块不足现在开始购买 ] ", "ff0000")
                Call 扫拍("红色小晶块", Form1.HS.Text, "1000")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 130 > 无尽的永恒 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 无尽的永恒块不足现在开始购买 ] " , "ff0000")
                Call 扫拍("无尽的永恒", Form1.wj.Text, "130")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 可打次数 > 黄龙票 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 当前门票不足准备前往小铁柱兑换门票 ] ", "ff0000")
                Call 行走到小铁柱
            End If
            Exit Do
        End If
    Loop
End Sub
Event Form1.Load
    Call 注册
End EventGlobal 检测入场券, 检测材料, 当前刷到第几个角色, 角色名字, foobar, MySec2, 角色名称, 进入黄龙咯
Global 红色小晶块, 无尽的永恒, 黄龙票, 疲劳值, 重新定义
Dimenv 打怪线程, 检测死亡线程, 超时线程, 进图线程, 购买门票线程, 城镇线程, 调控线程
Call 注册
If Form1.赛利亚启动.Value = 1 Then
    Do
        Call 调控
    Loop
ElseIf Form1.自动登入.Value = 1 Then
    TracePrint 1
End If
//Call 打怪测试
//调控线程 = BeginThread(调控)
SDelay 300
Sub 调控
    If 城镇房间 = 1 or 城镇房间 = 2 Then
        //        城镇线程 = BeginThread(城镇caoz)
        Call 城镇caoz
    ElseIf  城镇房间 = 3
        //        进图线程 = BeginThread(进入黄龙)
        Call 进入黄龙
    ElseIf 怪物坐标 = True     
        //        打怪线程 = BeginThread(打怪测试)
        Call 打怪测试
    Else
        Call 更换角色(1)
    End If
End Sub

Sub 城镇caoz
    Dim pl
    Do
        If 城镇房间 = 1 Then
            Call 从赛利亚房间出来
        ElseIf 城镇房间 = 2 Then
            Call 清理背包
            Pl = 识别疲劳值()
            If pl = 0 Then
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 没有疲劳准备切换角色 ]", "ff0000")
                Call 更换角色(0)
            Else        
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 还有疲劳 ]", "ff0000")
            End If
            Call 识别虚弱状态
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检查完成准备进图 ]", "ff0000")
            Call 准备进图
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 退出城镇线程 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Do
    Call 调控
Loop
Do
Loop
Sub 准备进图
    Do
        If 城镇房间 = 3 Then
            DM.KeyUp 39
            DM.KeyUp 39
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入选择地图 ]", "ff0000")
            Exit Do
        Else     
            dm.KeyDown 40
            SDelay 300
            dm.KeyUp 40
            dm.KeyDown 37
            SDelay 300
            dm.KeyUp 37
            SDelay 30
            dm.KeyDown 39
            SDelay 2200
        End If       
    Loop
End Sub
Sub 进入黄龙
    DO
        dm_ret = dm.FindPic(395, 289, 757, 481, "hldh.bmp|hldh2.bmp", "000000", 0.9, 0, intX, intY)
        If intX > 0 Then
            ydsbz intX, intY
            ydsbz intX, intY
            Exit Do
        End If
    Loop
    DO
        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
        If 跳过x > 0 Then
            dm.KeyPress 32
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
        Else     
            If 怪物坐标 = False  Then
                DM.KeyPress 32
            Else
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                进入黄龙咯 = True
                Exit Do
            End If           
        End If
    Loop
    Call 打怪测试
End Sub
Function 城镇房间
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备分解x, 装备分解y)
    dm_ret = dm.FindStr(695, 535, 799, 572, "返回城镇", "ddc593-000000|ffffb8-000000", 1.0, intX, intY)
    dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
    If 赛利亚x > 0 Then
        城镇房间 = 1
    ElseIf 装备分解x > 0 Then
        城镇房间 = 2
    ElseIf intX > 0 Then
        城镇房间 = 3
    ElseIf 跳过x > 0 and 跳过y > 0 Then
        城镇房间 = 4
    End If
End Function
Sub 注册
    PutAttachment "c:\test_game","*.*"
    PutAttachment ".\Plugin" ,"RegDll.dll"
    Call Plugin.Regdll.reg("c:\game_script\dm.dll")
    Set dm = createobject("dm.dmsoft")
    ver = dm.ver()
    If len(ver) = 0 Then
        MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
        EndScript
    Else
        dm_ret = dm.SetPath("C:\黄龙\")
        dm_ret = dm.SetDict(0, "字库.txt")
        hwnd = dm.FindWindow("", "地下城与勇士")
        dm.MoveWindow hwnd, 0, 0
        dm_ret = dm.SetWindowState(hwnd, 12)
        foobar = dm.CreateFoobarRect(shw, 0, 600, 400, 100)
        foobar2 = dm.CreateFoobarRect(shw2, 400, 600, 400, 100)
        dm_ret = dm.FoobarLock(foobar)
        dm_ret = dm.FoobarSetFont(foobar, "宋体", 9, 0)
    End If       
End Sub
Sub SDelay(时间)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : Call Lib.模拟真实键鼠.随机延时(时间 + (增量Y + 增量Y) * (增量Y / 2))
End Sub
SUB ydsbz(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标 + 增量X, 屏幕Y坐标 + 增量Y) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Sub
SUB ydsby(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标, 屏幕Y坐标) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标右键单击()
End Sub
Sub 从赛利亚房间出来
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    If 赛利亚x > 0 and 赛利亚y > 0 Then
        日志 = Now & " [ 切换至赛利亚房间:准备检测疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        SDelay 200
        Call 识别疲劳
        Call 识别材料
        Do
            dm_ret = dm.FindStr(279,0,766,280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
            If 装备栏x > 0 Then
                dm.KeyPress 73
                SDelay 300
            Else     
                Exit Do
            End If
        Loop
        MySec2 = Second(Now)
        Do
            dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
            If 虚祖首都素喃x >= 0 Then
                SDelay 300
                dm.KeyUp 40
                Plugin.lxj_Plug.lxj_ReleaseMemory -1
                日志 = Now & " [ 到达:虚祖首都素喃 准备行走置副本门口 ] "
                dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                SDelay 600
                ydsby 5, 500
                ydsby  5, 500
                SDelay 3000
                dm.KeyDown 38
                SDelay 1200
                dm.KeyUp 38
                dm.KeyUp 38
                SDelay 500
                Do
                    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                    If 装备x > 0 Then
                        dm.KeyUp 39
                        dm.KeyUp 39
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                        Exit Sub
                    Else  
                        dm.KeyDown 39
                    End If
                Loop
                //                Call  城镇寻路
            Else
                dm.KeyDown 40
                MySe2c = Second(Now)
                SDelay 100
                MySe2c3 = MySe2c - MySec2
                If abs(MySe2c3) >= 4 Then
                    日志 = Now & " [ 不在地区:虚祖首都素喃 准备使用瞬间移动药剂前往] "
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    SDelay 300
                Else                              
                    //                    dm_ret = dm.FoobarPrintText(foobar, "出赛利亚房间超时检测剩余秒数:" & abs(MySe2c3 - 4), "ff0000")                          
                End If
            End If
        Loop
    End If
End Sub// 赛利亚放假出来兑换票 扫拍
Sub 识别疲劳
    Dim 疲劳数据
    疲劳数据 = 识别疲劳值
    If 疲劳数据 <> 0 Then
        日志 = Now & " [ 疲劳检测:还有疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
    Else
        dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
        当前刷到第几个角色 = 当前刷到第几个角色 + 1
        日志 =  Now & " [ 疲劳检测:没有疲劳了准备切换角色 当前刷置角色 " & 当前刷到第几个角色 & "]"
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        If 当前刷到第几个角色 = int(Form1.刷多少角色.Text) Then
            dm.KeyPress 123
        Else
            Call 更换角色(0)
        End If             
    End If
End Sub
Sub 更换角色(f)
    Do
        dm_ret = dm.FindStr(132, 530, 304, 564, "删除", "ddc593-000000", 1.0, 删除x, 删除y)
        If 删除x < 0 Then
            dm_ret = dm.FindStr(441, 168, 656, 363, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
            If 游戏指南x < 0 and 游戏指南y < 0 Then
                dm.KeyPress 27
                SDelay 300
            Else
                SDelay 600
                ydsbz 384, 443
                SDelay 300
            End If
        Else     
            SDelay 600
            日志 = Now & " [ 小退游戏进入选择角色界面 ]"
            dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")     
            SDelay 300
            If f = 1 Then
                dm.KeyPress 39
                SDelay 600
            End If
            dm.KeyPress 32
            SDelay 600
            Do
                dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
                If 赛利亚x > 0 Then
                    日志 = Now & " [ 进入赛利亚房间重 ]"
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    Exit Do
                Else
                    dm_ret = dm.FindStr(319, 104, 578, 263, "×", "ede5aa-000000", 1.0, 叉x, 叉y)
                    If 叉x > 0 Then
                        日志 = Now & " [ 出现遮挡物准备关闭 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        ydsbz 叉x, 叉y
                        SDelay 300
                        日志 = Now & " [ 关闭遮挡物 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        Exit Do
                    End If
                End If
            Loop
            RestartScript
            Exit Do
        End If
    Loop
End Sub
Function 城镇寻路()
    x = 350
    y = 315
    dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
    If 虚祖首都素喃x > 0 Then
        Do
            dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
            If 搜索x > 0 and 搜索y > 0 Then
                TracePrint "打开大地图"
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 打开大地图 ]", "ff0000")
                Exit Do  
            Else   
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在打开大地图 ]", "ff0000")
                dm.KeyPress 78
                Delay 300
            End If
        Loop
    End If
    Do
        dm_ret = dm.FindStr(142, 134, 545, 434, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
        If 城镇坐标x >= 0 and 城镇坐标y >= 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在执行前往副本门口 ]", "ff0000")
            相差距离x = 城镇坐标x - x
            相差距离y = 城镇坐标y - y
            If 相差距离x > 0 Then
                dm.KeyDown 37
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 左方向到达 ]", "ff0000")
                        dm.KeyUp 37
                        Exit Do
                    End If
                Loop
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225, 196, 500, 447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 上方向到达 ]", "ff0000")
                            Delay 300
                            dm.KeyUp 38
                            dm.KeyUp 38
                            dm.KeyUp 38
                            Do
                                dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
                                If 搜索x > 0 Then
                                    dm.KeyPress 78
                                    SDelay 300
                                    Exit Do
                                End If
                            Loop
                            dm.KeyDown 39
                            Do
                                dm_ret = dm.FindStr(184, 117, 680, 253, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                                If 装备x > 0 Then
                                    dm.KeyUp 39
                                    dm.KeyUp 39
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                                    Exit Do
                                End If
                            Loop
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                End If
                Exit Do
            ElseIf 相差距离x < 0 Then
                Rem 反方向修复
                dm.KeyDown 39
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        TracePrint "右方向到达"
                        dm.KeyUp 39
                        Exit Do
                    End If
                Loop
                dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                相差距离y = 城镇坐标y - y
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "上方向到达"
                            Delay 300
                            dm.KeyUp 38
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "下方向到达"
                            Delay 300
                            dm.KeyUp 40
                            Exit Do
                        End If
                    Loop                                                                                          
                End If
                Exit Do
            End If
        End If
    Loop
End Function

Sub 识别虚弱状态
    恢复状态 = 1// 1=契约恢复 2=金币恢复 3=站街恢复
    If Form1.金币恢复.Value = 1 Then
        恢复状态 = 2
    ElseIf Form1.契约恢复.Value = 1 Then
        恢复状态 = 1
    ElseIf Form1.站街恢复.Value = 1 Then
        恢复状态 = 3
    End If
    DO   
        dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX,intY)
        If intX > 0 AND intY > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 虚弱状态 ]", "ff0000")
            SDelay 2200
            If 恢复状态 = 1 Then
                ydsbz intX, intY
                SDelay 3000
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "契约恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2, intY2
                End If
            ElseIf 恢复状态 = 2 Then
                ydsbz intX, intY
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "金币恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2 + 10, intY2 + 10
                End If              
            ElseIf 恢复状态 = 3 Then
                Do
                    dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX3,intY3)
                    If intX3 < 0 AND intY3 < 0 Then
                        SDelay 5000
                        Exit Sub
                    End If
                Loop
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 没虚弱 ]", "ff0000")
            Exit Do  
        End If
    Loop
End Sub
Sub 清理背包
    Do
        dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intxX2, intyY2)
        If intxX2 > 0 and intyY2 > 0 Then   
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包满了准备清理背包 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            Rem 修复点击装备分解
            dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解", "e6c89b-000000", 1.0, intX, intY)
            If intX > 0 and intY > 0 Then
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(0, 0, 800, 600, "分解装备", "e6c89b-000000", 1.0, 分解装备X, 分解装备Y)
                    If 分解装备X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击分解装备 ]", "ff0000")
                        ydsbz 分解装备X, 分解装备Y
                        SDelay 300
                        Exit Do
                    Else
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备点分解装备被遮挡将移除遮挡 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        Goto 修复点击装备分解
                    End if
                Loop// 点击分解装备
                SDelay  600
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(全部分解X, 全部分解Y)
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//移动到全部分解
                SDelay 600
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备勾选条件 ]", "ff0000")
                If Form1.分蓝.Value = 1 Then
                    分解模式 = 1// 1 分蓝卖紫白 2 分蓝白卖紫 3 全部分解
                    勾选蓝 = True:勾选白 = False:全部勾选 = False
                ElseIf Form1.分蓝白.Value = 1 Then
                    分解模式 = 2
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = False
                ElseIf Form1.全部分.Value = 1 Then
                    分解模式 = 3
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = True
                End If
                Do
                    dm_ret = dm.FindStrFast(215,358,344,450,"普通","ffffff-000000",1.0,pX,pY)'先查找普通这个字,然后根据返回的坐标来判断是否勾选
                    If pX > 0 And pY > 0 Then
                        dm_ret = dm.FindStrFast(px-1,py-1,px+80,py+14,"√","ffae00-000000",1.0,jX,jY)'根据普通返回的坐标,选择出一个区域能够查找到勾选,如果没有,则点击
                        If jX > 0 And jY > 0 Then
                            If 勾选白 = False Then
                                SDelay 300
                                ydsbz px, py
                                Exit Do
                            Else     
                                Exit Do                           
                            End If
                        Else
                            If 勾选白 = True Then
                                SDelay 300
                                ydsbz px, py
                                SDelay 100
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选白色 ]", "ff0000")
                                Exit Do
                            Else     
                                Exit Do  
                            End If
                        End If
                    End If
                Loop
                SDelay 300
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "高级", "68d5ed-000000", 1.0, gX, gY)
                    If gX > 0 And gY > 0 Then
                        dm_ret = dm.FindStrFast(gx-1,gy-1,gx+80,gy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 勾选蓝 = False Then
                                SDelay 300
                                ydsbz jx, jy
                                Exit Do
                            Else     
                                Exit Do                           
                            End if
                        Else
                            If 勾选蓝 = True Then
                                SDelay 300
                                ydsbz gX, gY
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选蓝色 ]", "ff0000")                              
                                Exit Do
                            Else     
                                Exit Do  
                            End if
                        End If
                    End If
                Loop
                SDelay 500
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "稀有", "b36bff-000000", 1.0, xX, xY)
                    If xX > 0 And xY > 0 Then
                        dm_ret = dm.FindStrFast(xx-1,xy-1,xx+80,xy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 全部分 = False Then
                                SDelay 300
                                ydsbz xx, xy
                                Exit Do
                            Else     
                                Exit Do
                            End If
                        Else
                            If 全部分 = True Then
                                SDelay 300
                                ydsbz xx, xy
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选紫色 ]", "ff0000")                           
                            Else   
                                Exit Do  
                            End If
                            Exit Do
                        End If
                    End If
                Loop
                If 全部分 = True Then
                    Exit Do
                End If
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选条件完毕开始分解 ]", "ff0000")
                Do
                    SDelay 300
                    TracePrint  2222
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        ydsbz 全部分解X, 全部分解Y
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//点击全部分解
                SDelay 300
                SDelay 300
                dm_ret = dm.FindStr(0, 0, 800, 600, "确认", "ddc593-000000", 1.0, 确认X, 确认Y)
                If 确认X > 0 Then
                    SDelay 200
                    ydsbz 确认X, 确认y
                    SDelay 200
                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击确认分解 ]", "ff0000")
                End If
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解成功", "ffffb8-000000", 1.0, 分解成功X, 分解成功Y)
                    If 分解成功X > 0 Then
                        SDelay 300
                        dm.KeyPress 27
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解完成 ]", "ff0000")
                        Exit Do
                    Else  
                        dm_ret = dm.FindStr(0, 0, 800, 600, "缺少全部分解包括的道具", "ffffff-000000", 1.0, 分解失败X, 分解失败Y)
                        If 分解失败X > 0 Then
                            SDelay 300
                            dm.KeyPress 27                                 
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解分解失败 ]", "ff0000")
                            Exit Do
                        End If
                    End If
                Loop
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                    If 游戏指南x > 0 Then
                        dm.KeyPress 27
                        SDelay 300
                    Else   
                        Exit Do
                    End If
                Loop//关闭多余菜单            
                SDelay 1200
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备出售物品 ]", "ff0000")
                SDelay 400
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If      
                SDelay 1200
                dm_ret = dm.FindStr(0, 0, 800, 600, "商店", "e6c89b-000000", 1.0, intX6, intY6)
                If intX6 > 0 and intY6 > 0 Then         
                    SDelay 600
                    ydsbz intX6, intY6
                    SDelay 520
                    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                    SDelay 1200
                    dm_ret = dm.FindStr(6, 41, 310, 205, "商店", "ffffb8-000000", 1.0, intX66, intY66)
                    If intX66 > 0 and intY66 > 0 Then
                        SDelay 700
                        Call 出售物品
                    End if
                End If
            Else            
                ydsbz 525,31      
            End If
        Else     
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包没满 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Sub 出售物品
    ydsbz 493, 245
    SDelay 300
    dm_ret = dm.FindStrS(540, 389, 748, 529, "整理", "ddc593-000000", 0.9, intX2, intY2)
    If intX2 > 0 and intY2 > 0 Then
        ydsbz intX2, intY2
        SDelay 300
    End If
    Do
        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(486 + 增值, 275 + 增值2)
        SDelay 400
        dm_ret = dm.FindStrS(0, 0, 790, 546, "传说|神器|史诗", "ff7800-000000|ff00ff-000000|ffb400-000000", 0.9, 装备X, 装备Y)
        If 装备X > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检测到神器或传说装备跳过出售当前 ]", "ff0000")
        Else
            Call 拖动出售
        End If
        SDelay 100
        Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
        行数 = 行数 + 1
        If 行数 < 8 Then
            增值 = 增值 + 30
        ElseIf 行数 = 8 Then
            增值 = 0
            增值2 = 30
        ElseIf 行数 >= 7 AND 行数 < 16 Then
            增值2 = 30
            增值 = 增值 + 30
        ElseIf 行数 = 16 Then
            增值 = 0
            增值2 = 60
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 出售装备完毕 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                If 游戏指南x > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop//关闭多余菜单            
            Exit Do
        ElseIf 行数 >= 15 AND 行数 < 24 Then
            增值2 = 60
            增值 = 增值 + 30
        ElseIf 行数 = 24 Then
            增值 = 0
            增值2 = 90
        ElseIf 行数 >= 23 AND 行数 < 32 Then
            增值2 = 90
            增值 = 增值 + 30
        ElseIf 行数 = 32 Then
            增值2 = 120
            增值 = 0                
        ElseIf 行数 >= 31 AND 行数 < 40 Then
            增值2 = 120
            增值 = 增值 + 30                 
        End If
    Loop
End Sub
Function 拖动出售()
    MySec = Second(Now)
    增量X = Left(MySec, 1)
    增量Y = Right(MySec, 1)
    SDelay 300 + (增量Y + 增量Y) + (增量Y / 2)
    LeftDown 1
    SDelay 100
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(323 + 增量X, 398 + 增量Y)
    SDelay 100
    LeftUp 1
    SDelay 200
    Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Function
Sub 关闭遮挡
    dm_ret = dm.FindStr(319, 104, 578, 263, "关闭", "f7d65a-000000", 1.0, 关闭x, 关闭y)
    If 关闭x > 0 Then
        ydsbz 关闭x, 关闭y
        SDelay 200
    End If
End Sub
Function  识别疲劳值
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(393, 553)
    SDelay 300
    dm_ret = dm.FindStr(191, 467, 629, 557, "疲劳值:", "ffffff-000000", 1.0, 疲劳x, 疲劳y)
    If 疲劳x > 0 Then
        SDelay 300
        s = dm.Ocr(疲劳x - 1, 疲劳y - 1, 疲劳x + 103, 疲劳y + 14, "ffffff-000000", 1.0)
        疲劳 = Split(s, "疲劳值:")
        疲劳2 = Split(疲劳(1), "/")
        TracePrint 疲劳2(0)
        识别疲劳值 = 疲劳2(0)
    End If
End Function
Function 怪物坐标
    s = dm.Ocr(637,38,754,65, "ffffff-000000", 1.0)
    dm_ret = dm.FindStr(657, 41, 731, 63, s, "ffffff-000000", 1.0, 赛利亚x2, 赛利亚y2)
    If 赛利亚x2 > 0 Then
        怪物坐标 = True
    Else        
        怪物坐标 = False
    End If
End Function
Function 翻牌状态
    dm_ret = dm.FindStrFast(0, 0, 794, 200, "翻牌状态", "d2b709-000000|ffffbb-000000|ffdd55-000000|eecc55-000000|ddaa44-000000|ffffff-000000|664422-000000|aa8833-000000", 0.8, intX, intY)
    //    dm_ret = dm.FindStr(264, 12, 556, 152, "VS", "000000-404040", 1.0, intX2, inty2)
    If intX > 0 Then
        翻牌状态 = True
    Else   
        翻牌状态 = False
    End If
End Function
Sub 打怪测试
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 预备打怪线程 ]", "ff0000")
    Do
        dm_ret = dm.FindColor(479, 70, 491, 78, "000000-000000", 1.0, 0, intX2, intY2)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "808080-404040", 1.0, intXc, intYc)
        Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
        If intX2 < 0 Then
            Call 冷却释放
            首次拾取 = False
        Else  
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 怪物死亡 ]", "ff0000")
            If intX > 0 and intX2c > 0 Then
                If 检测背包 = False Then
                    dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                    ydsbz intX, intY
                    DO
                        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
                        If 跳过x > 0 Then
                            dm.KeyPress 32
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
                        ElseIf 跳过x < 0 Then
                            dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                            If intX < 0 Then
                                If 怪物坐标 = False  Then
                                    DM.KeyPress 32
                                Else
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                                    Exit Do
                                End If
                            Else     
                                ydsbz intX, intY
                                SDelay 300
                                ydsbz 0, 0
                            End If
                        End If
                    Loop
                    Exit Do
                ElseIf 检测背包 = True Then
                    Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                    ydsbz intX2c, intY2c
                    Exit Do
                End If
            ElseIf intX2 > 0 AND intX < 0 AND intX2c < 0 Then
                If 首次拾取 = False Then
                    SDelay 300
                    Call 拾取
                    首次拾取 = True
                    SDelay 200
                End If
            ElseIf intXc > 0 Then
                Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                ydsbz intX2c, intY2c                     
            End If
        End If
    Loop
End Sub
Sub 拾取
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 开始拾取 ]", "ff0000")
    SDelay 300
    DM.KeyPress 86
    SDelay 300
    DM.KeyDown 88
    SDelay 700
    DM.KeyUp 88
End Sub
Sub 释放技能
    Do
        If 怪物坐标 = False  Then
            If Form1.冷却技能.Value = 1 Then
                Call 冷却释放
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 释放技能完毕 ] ", "ff0000")
            Exit Do
        End If
    Loop  
End Sub
Sub 冷却释放
    dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
    If 技能x = 542 AND 技能y = 533 Then
        dm.KeyPress 81
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Q ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 533 Then   
        dm.KeyPress 87
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: W ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 533 Then
        DM.KeyPress 69
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: E ]", "ff0000")
        SDelay 10
    ElseIf  技能x = 632 AND 技能y = 533 Then
        dm.KeyPress 82
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: R ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 533 Then
        dm.KeyPress 84
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: T ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 533 Then
        dm.KeyPress 89
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Y ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 542 AND 技能y = 564 Then
        dm.KeyPress 65
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: A ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 564 Then   
        dm.KeyPress 83
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:S ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 564 Then
        DM.KeyPress 68
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:D ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 632 AND 技能y = 564 Then
        dm.KeyPress 70
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:F ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 564 Then
        dm.KeyPress 71
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: G ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 564 Then
        dm.KeyPress 72
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: H ]", "ff0000")
        SDelay 10
    ElseIf 技能x < 0 Then
        If Form1.普通攻击.Value = 1 Then
            dm.KeyPress 88
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: X ]", "ff0000")
            SDelay 200
        End If
    End If
End Sub
Sub 释放
    Dim 技能键(13)
    分割次数 = len(Form1.赋值技能.Text)
    For i = 1 To 分割次数
        技能键(i)=Mid(技能, i, 1)       
        If 怪物坐标 = True  Then
            TracePrint "通关了退出释放技能"
            Exit Sub
        Else
            dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
            If Form1.普通攻击.Value = 1 Then
                If 技能x < 0 Then
                    dm.KeyPress 88
                End If
            End If
            SDelay 160
            If UCase(技能键(i)) = "A" Then
                dm.KeyPress 65
                SDelay 160
            ElseIf UCase(技能键(i)) = "S" Then
                dm.KeyPress 83
                SDelay 160
            ElseIf UCase(技能键(i)) = "D" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "F" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "G" Then
                dm.KeyPress 71
                SDelay 160
            ElseIf UCase(技能键(i)) = "H" Then
                dm.KeyPress 72
                SDelay 160
            ElseIf UCase(技能键(i)) = "Q" Then
                dm.KeyPress 81
                SDelay 160
            ElseIf UCase(技能键(i)) = "W" Then
                dm.KeyPress 87
                SDelay 160
            ElseIf UCase(技能键(i)) = "E" Then
                dm.KeyPress 69
                SDelay 160
            ElseIf UCase(技能键(i)) = "R" Then
                dm.KeyPress 82
                SDelay 160
            ElseIf UCase(技能键(i)) = "T" Then
                dm.KeyPress 84
                SDelay 160
            ElseIf UCase(技能键(i)) = "Y" Then
                dm.KeyPress 89
                SDelay 160
            ElseIf UCase(技能键(i)) = "X" Then
                dm.KeyPress 88
                SDelay 160
            End If
            SDelay 300            
        End If
    Next
End Sub
Sub 还任务
    Do
        dm_ret = dm.FindStr(268, 497, 506, 548, "完成任务", "cc4411-404040", 1.0, 完成任务x, 完成任务y)
        If 完成任务x > 0 Then
            ydsbz 完成任务x, 完成任务y
        Else   
            For 12
                dm.KeyPress 32
            Next
            Exit Do
        End If
    Loop
    dm.KeyPress 27
End Sub
Function 检测背包
    dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intx2, inty2)
    If intx2 > 0 and inty2 > 0 Then
        检测背包 = True
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包满了 ] ", "ff0000")
    Else
        检测背包 = False
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包没满 ] ", "ff0000")
    End If
End Function
Function 识别疲劳2
    dm_ret = dm.FindColor(278,545,513,559, "e60044-000000|b30026-000000|be6a83-000000", 0.9, 0, intX, intY)
    dm_ret = dm.FindColor(278,545,513,559, "00e6e6-000000|008ff1-000000|80a8a8-000000", 0.9, 0, intX2, intY2)
    If intX > 0 and intY > 0 OR intX2 > 0 and intY2 > 0 Then
        识别疲劳 = True
        TracePrint "还有疲劳"
        SDelay 700
    Else
        识别疲劳 = False
        TracePrint "没疲劳了"
        SDelay 800
    End If
End Function
Sub 识别材料
    Do
        Rem 重新扫描
        dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
        If 装备栏x < 0 Then
            dm.KeyPress 73
            SDelay 300
        Else
            Call Lib.模拟真实键鼠.随机慢慢移动鼠标(装备栏x, 装备栏y)
            SDelay 200
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "材料", "ffffb8-000000", 1.0, 材料x, 材料y)
                If 材料x < 0 Then
                    ydsbz 593, 245
                    ydsbz 593, 245
                Else
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 准备识别材料 ] ", "ff0000")
            红色小晶块 = dm.Ocr(730, 312, 761, 341, "ffffff-000000", 1.0)
            dm_ret = dm.FoobarPrintText(foobar, now & " [红色小晶块数量: ] " & 红色小晶块, "ff0000")
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "wj.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                无尽的永恒 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [无尽的永恒数量: ] " & 无尽的永恒, "ff0000")
            Else     
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 没有找到无尽的永恒 ] " & 无尽的永恒, "ff0000")
            End If
            SDelay 302
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "任务", "ffffb8-000000", 1.0, 材料2x, 材料2y)
                If 材料2x < 0 Then
                    ydsbz 690, 246
                    ydsbz 690, 246
                Else   
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "hl.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                黄龙票 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [黄龙门票数量:] " & 黄龙票, "ff0000")
            End If
            Do
                dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)       
                If 装备栏x > 0 Then
                    DM.KeyPress 73
                    SDelay 300
                Else        
                    Exit Do
                End If
            Loop
            SDelay 150
            疲劳值 = 识别疲劳值
            dm_ret = dm.FoobarPrintText(foobar, now & " [剩余疲劳 ] " & 疲劳值, "ff0000")
            可打次数 = 疲劳值 / 6
            dm_ret = dm.FoobarPrintText(foobar, now & " [可打黄龙次数] " & 可打次数, "ff0000")
            If 1300 > 红色小晶块 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 红色小晶块不足现在开始购买 ] ", "ff0000")
                Call 扫拍("红色小晶块", Form1.HS.Text, "1000")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 130 > 无尽的永恒 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 无尽的永恒块不足现在开始购买 ] " , "ff0000")
                Call 扫拍("无尽的永恒", Form1.wj.Text, "130")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 可打次数 > 黄龙票 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 当前门票不足准备前往小铁柱兑换门票 ] ", "ff0000")
                Call 行走到小铁柱
            End If
            Exit Do
        End If
    Loop
End Sub
Event Form1.Load
    Call 注册
End EventGlobal 检测入场券, 检测材料, 当前刷到第几个角色, 角色名字, foobar, MySec2, 角色名称, 进入黄龙咯
Global 红色小晶块, 无尽的永恒, 黄龙票, 疲劳值, 重新定义
Dimenv 打怪线程, 检测死亡线程, 超时线程, 进图线程, 购买门票线程, 城镇线程, 调控线程
Call 注册
If Form1.赛利亚启动.Value = 1 Then
    Do
        Call 调控
    Loop
ElseIf Form1.自动登入.Value = 1 Then
    TracePrint 1
End If
//Call 打怪测试
//调控线程 = BeginThread(调控)
SDelay 300
Sub 调控
    If 城镇房间 = 1 or 城镇房间 = 2 Then
        //        城镇线程 = BeginThread(城镇caoz)
        Call 城镇caoz
    ElseIf  城镇房间 = 3
        //        进图线程 = BeginThread(进入黄龙)
        Call 进入黄龙
    ElseIf 怪物坐标 = True     
        //        打怪线程 = BeginThread(打怪测试)
        Call 打怪测试
    Else
        Call 更换角色(1)
    End If
End Sub

Sub 城镇caoz
    Dim pl
    Do
        If 城镇房间 = 1 Then
            Call 从赛利亚房间出来
        ElseIf 城镇房间 = 2 Then
            Call 清理背包
            Pl = 识别疲劳值()
            If pl = 0 Then
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 没有疲劳准备切换角色 ]", "ff0000")
                Call 更换角色(0)
            Else        
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 还有疲劳 ]", "ff0000")
            End If
            Call 识别虚弱状态
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检查完成准备进图 ]", "ff0000")
            Call 准备进图
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 退出城镇线程 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Do
    Call 调控
Loop
Do
Loop
Sub 准备进图
    Do
        If 城镇房间 = 3 Then
            DM.KeyUp 39
            DM.KeyUp 39
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入选择地图 ]", "ff0000")
            Exit Do
        Else     
            dm.KeyDown 40
            SDelay 300
            dm.KeyUp 40
            dm.KeyDown 37
            SDelay 300
            dm.KeyUp 37
            SDelay 30
            dm.KeyDown 39
            SDelay 2200
        End If       
    Loop
End Sub
Sub 进入黄龙
    DO
        dm_ret = dm.FindPic(395, 289, 757, 481, "hldh.bmp|hldh2.bmp", "000000", 0.9, 0, intX, intY)
        If intX > 0 Then
            ydsbz intX, intY
            ydsbz intX, intY
            Exit Do
        End If
    Loop
    DO
        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
        If 跳过x > 0 Then
            dm.KeyPress 32
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
        Else     
            If 怪物坐标 = False  Then
                DM.KeyPress 32
            Else
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                进入黄龙咯 = True
                Exit Do
            End If           
        End If
    Loop
    Call 打怪测试
End Sub
Function 城镇房间
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备分解x, 装备分解y)
    dm_ret = dm.FindStr(695, 535, 799, 572, "返回城镇", "ddc593-000000|ffffb8-000000", 1.0, intX, intY)
    dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
    If 赛利亚x > 0 Then
        城镇房间 = 1
    ElseIf 装备分解x > 0 Then
        城镇房间 = 2
    ElseIf intX > 0 Then
        城镇房间 = 3
    ElseIf 跳过x > 0 and 跳过y > 0 Then
        城镇房间 = 4
    End If
End Function
Sub 注册
    PutAttachment "c:\test_game","*.*"
    PutAttachment ".\Plugin" ,"RegDll.dll"
    Call Plugin.Regdll.reg("c:\game_script\dm.dll")
    Set dm = createobject("dm.dmsoft")
    ver = dm.ver()
    If len(ver) = 0 Then
        MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
        EndScript
    Else
        dm_ret = dm.SetPath("C:\黄龙\")
        dm_ret = dm.SetDict(0, "字库.txt")
        hwnd = dm.FindWindow("", "地下城与勇士")
        dm.MoveWindow hwnd, 0, 0
        dm_ret = dm.SetWindowState(hwnd, 12)
        foobar = dm.CreateFoobarRect(shw, 0, 600, 400, 100)
        foobar2 = dm.CreateFoobarRect(shw2, 400, 600, 400, 100)
        dm_ret = dm.FoobarLock(foobar)
        dm_ret = dm.FoobarSetFont(foobar, "宋体", 9, 0)
    End If       
End Sub
Sub SDelay(时间)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : Call Lib.模拟真实键鼠.随机延时(时间 + (增量Y + 增量Y) * (增量Y / 2))
End Sub
SUB ydsbz(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标 + 增量X, 屏幕Y坐标 + 增量Y) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Sub
SUB ydsby(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标, 屏幕Y坐标) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标右键单击()
End Sub
Sub 从赛利亚房间出来
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    If 赛利亚x > 0 and 赛利亚y > 0 Then
        日志 = Now & " [ 切换至赛利亚房间:准备检测疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        SDelay 200
        Call 识别疲劳
        Call 识别材料
        Do
            dm_ret = dm.FindStr(279,0,766,280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
            If 装备栏x > 0 Then
                dm.KeyPress 73
                SDelay 300
            Else     
                Exit Do
            End If
        Loop
        MySec2 = Second(Now)
        Do
            dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
            If 虚祖首都素喃x >= 0 Then
                SDelay 300
                dm.KeyUp 40
                Plugin.lxj_Plug.lxj_ReleaseMemory -1
                日志 = Now & " [ 到达:虚祖首都素喃 准备行走置副本门口 ] "
                dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                SDelay 600
                ydsby 5, 500
                ydsby  5, 500
                SDelay 3000
                dm.KeyDown 38
                SDelay 1200
                dm.KeyUp 38
                dm.KeyUp 38
                SDelay 500
                Do
                    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                    If 装备x > 0 Then
                        dm.KeyUp 39
                        dm.KeyUp 39
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                        Exit Sub
                    Else  
                        dm.KeyDown 39
                    End If
                Loop
                //                Call  城镇寻路
            Else
                dm.KeyDown 40
                MySe2c = Second(Now)
                SDelay 100
                MySe2c3 = MySe2c - MySec2
                If abs(MySe2c3) >= 4 Then
                    日志 = Now & " [ 不在地区:虚祖首都素喃 准备使用瞬间移动药剂前往] "
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    SDelay 300
                Else                              
                    //                    dm_ret = dm.FoobarPrintText(foobar, "出赛利亚房间超时检测剩余秒数:" & abs(MySe2c3 - 4), "ff0000")                          
                End If
            End If
        Loop
    End If
End Sub// 赛利亚放假出来兑换票 扫拍
Sub 识别疲劳
    Dim 疲劳数据
    疲劳数据 = 识别疲劳值
    If 疲劳数据 <> 0 Then
        日志 = Now & " [ 疲劳检测:还有疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
    Else
        dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
        当前刷到第几个角色 = 当前刷到第几个角色 + 1
        日志 =  Now & " [ 疲劳检测:没有疲劳了准备切换角色 当前刷置角色 " & 当前刷到第几个角色 & "]"
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        If 当前刷到第几个角色 = int(Form1.刷多少角色.Text) Then
            dm.KeyPress 123
        Else
            Call 更换角色(0)
        End If             
    End If
End Sub
Sub 更换角色(f)
    Do
        dm_ret = dm.FindStr(132, 530, 304, 564, "删除", "ddc593-000000", 1.0, 删除x, 删除y)
        If 删除x < 0 Then
            dm_ret = dm.FindStr(441, 168, 656, 363, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
            If 游戏指南x < 0 and 游戏指南y < 0 Then
                dm.KeyPress 27
                SDelay 300
            Else
                SDelay 600
                ydsbz 384, 443
                SDelay 300
            End If
        Else     
            SDelay 600
            日志 = Now & " [ 小退游戏进入选择角色界面 ]"
            dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")     
            SDelay 300
            If f = 1 Then
                dm.KeyPress 39
                SDelay 600
            End If
            dm.KeyPress 32
            SDelay 600
            Do
                dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
                If 赛利亚x > 0 Then
                    日志 = Now & " [ 进入赛利亚房间重 ]"
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    Exit Do
                Else
                    dm_ret = dm.FindStr(319, 104, 578, 263, "×", "ede5aa-000000", 1.0, 叉x, 叉y)
                    If 叉x > 0 Then
                        日志 = Now & " [ 出现遮挡物准备关闭 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        ydsbz 叉x, 叉y
                        SDelay 300
                        日志 = Now & " [ 关闭遮挡物 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        Exit Do
                    End If
                End If
            Loop
            RestartScript
            Exit Do
        End If
    Loop
End Sub
Function 城镇寻路()
    x = 350
    y = 315
    dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
    If 虚祖首都素喃x > 0 Then
        Do
            dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
            If 搜索x > 0 and 搜索y > 0 Then
                TracePrint "打开大地图"
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 打开大地图 ]", "ff0000")
                Exit Do  
            Else   
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在打开大地图 ]", "ff0000")
                dm.KeyPress 78
                Delay 300
            End If
        Loop
    End If
    Do
        dm_ret = dm.FindStr(142, 134, 545, 434, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
        If 城镇坐标x >= 0 and 城镇坐标y >= 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在执行前往副本门口 ]", "ff0000")
            相差距离x = 城镇坐标x - x
            相差距离y = 城镇坐标y - y
            If 相差距离x > 0 Then
                dm.KeyDown 37
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 左方向到达 ]", "ff0000")
                        dm.KeyUp 37
                        Exit Do
                    End If
                Loop
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225, 196, 500, 447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 上方向到达 ]", "ff0000")
                            Delay 300
                            dm.KeyUp 38
                            dm.KeyUp 38
                            dm.KeyUp 38
                            Do
                                dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
                                If 搜索x > 0 Then
                                    dm.KeyPress 78
                                    SDelay 300
                                    Exit Do
                                End If
                            Loop
                            dm.KeyDown 39
                            Do
                                dm_ret = dm.FindStr(184, 117, 680, 253, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                                If 装备x > 0 Then
                                    dm.KeyUp 39
                                    dm.KeyUp 39
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                                    Exit Do
                                End If
                            Loop
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                End If
                Exit Do
            ElseIf 相差距离x < 0 Then
                Rem 反方向修复
                dm.KeyDown 39
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        TracePrint "右方向到达"
                        dm.KeyUp 39
                        Exit Do
                    End If
                Loop
                dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                相差距离y = 城镇坐标y - y
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "上方向到达"
                            Delay 300
                            dm.KeyUp 38
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "下方向到达"
                            Delay 300
                            dm.KeyUp 40
                            Exit Do
                        End If
                    Loop                                                                                          
                End If
                Exit Do
            End If
        End If
    Loop
End Function

Sub 识别虚弱状态
    恢复状态 = 1// 1=契约恢复 2=金币恢复 3=站街恢复
    If Form1.金币恢复.Value = 1 Then
        恢复状态 = 2
    ElseIf Form1.契约恢复.Value = 1 Then
        恢复状态 = 1
    ElseIf Form1.站街恢复.Value = 1 Then
        恢复状态 = 3
    End If
    DO   
        dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX,intY)
        If intX > 0 AND intY > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 虚弱状态 ]", "ff0000")
            SDelay 2200
            If 恢复状态 = 1 Then
                ydsbz intX, intY
                SDelay 3000
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "契约恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2, intY2
                End If
            ElseIf 恢复状态 = 2 Then
                ydsbz intX, intY
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "金币恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2 + 10, intY2 + 10
                End If              
            ElseIf 恢复状态 = 3 Then
                Do
                    dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX3,intY3)
                    If intX3 < 0 AND intY3 < 0 Then
                        SDelay 5000
                        Exit Sub
                    End If
                Loop
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 没虚弱 ]", "ff0000")
            Exit Do  
        End If
    Loop
End Sub
Sub 清理背包
    Do
        dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intxX2, intyY2)
        If intxX2 > 0 and intyY2 > 0 Then   
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包满了准备清理背包 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            Rem 修复点击装备分解
            dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解", "e6c89b-000000", 1.0, intX, intY)
            If intX > 0 and intY > 0 Then
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(0, 0, 800, 600, "分解装备", "e6c89b-000000", 1.0, 分解装备X, 分解装备Y)
                    If 分解装备X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击分解装备 ]", "ff0000")
                        ydsbz 分解装备X, 分解装备Y
                        SDelay 300
                        Exit Do
                    Else
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备点分解装备被遮挡将移除遮挡 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        Goto 修复点击装备分解
                    End if
                Loop// 点击分解装备
                SDelay  600
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(全部分解X, 全部分解Y)
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//移动到全部分解
                SDelay 600
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备勾选条件 ]", "ff0000")
                If Form1.分蓝.Value = 1 Then
                    分解模式 = 1// 1 分蓝卖紫白 2 分蓝白卖紫 3 全部分解
                    勾选蓝 = True:勾选白 = False:全部勾选 = False
                ElseIf Form1.分蓝白.Value = 1 Then
                    分解模式 = 2
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = False
                ElseIf Form1.全部分.Value = 1 Then
                    分解模式 = 3
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = True
                End If
                Do
                    dm_ret = dm.FindStrFast(215,358,344,450,"普通","ffffff-000000",1.0,pX,pY)'先查找普通这个字,然后根据返回的坐标来判断是否勾选
                    If pX > 0 And pY > 0 Then
                        dm_ret = dm.FindStrFast(px-1,py-1,px+80,py+14,"√","ffae00-000000",1.0,jX,jY)'根据普通返回的坐标,选择出一个区域能够查找到勾选,如果没有,则点击
                        If jX > 0 And jY > 0 Then
                            If 勾选白 = False Then
                                SDelay 300
                                ydsbz px, py
                                Exit Do
                            Else     
                                Exit Do                           
                            End If
                        Else
                            If 勾选白 = True Then
                                SDelay 300
                                ydsbz px, py
                                SDelay 100
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选白色 ]", "ff0000")
                                Exit Do
                            Else     
                                Exit Do  
                            End If
                        End If
                    End If
                Loop
                SDelay 300
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "高级", "68d5ed-000000", 1.0, gX, gY)
                    If gX > 0 And gY > 0 Then
                        dm_ret = dm.FindStrFast(gx-1,gy-1,gx+80,gy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 勾选蓝 = False Then
                                SDelay 300
                                ydsbz jx, jy
                                Exit Do
                            Else     
                                Exit Do                           
                            End if
                        Else
                            If 勾选蓝 = True Then
                                SDelay 300
                                ydsbz gX, gY
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选蓝色 ]", "ff0000")                              
                                Exit Do
                            Else     
                                Exit Do  
                            End if
                        End If
                    End If
                Loop
                SDelay 500
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "稀有", "b36bff-000000", 1.0, xX, xY)
                    If xX > 0 And xY > 0 Then
                        dm_ret = dm.FindStrFast(xx-1,xy-1,xx+80,xy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 全部分 = False Then
                                SDelay 300
                                ydsbz xx, xy
                                Exit Do
                            Else     
                                Exit Do
                            End If
                        Else
                            If 全部分 = True Then
                                SDelay 300
                                ydsbz xx, xy
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选紫色 ]", "ff0000")                           
                            Else   
                                Exit Do  
                            End If
                            Exit Do
                        End If
                    End If
                Loop
                If 全部分 = True Then
                    Exit Do
                End If
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选条件完毕开始分解 ]", "ff0000")
                Do
                    SDelay 300
                    TracePrint  2222
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        ydsbz 全部分解X, 全部分解Y
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//点击全部分解
                SDelay 300
                SDelay 300
                dm_ret = dm.FindStr(0, 0, 800, 600, "确认", "ddc593-000000", 1.0, 确认X, 确认Y)
                If 确认X > 0 Then
                    SDelay 200
                    ydsbz 确认X, 确认y
                    SDelay 200
                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击确认分解 ]", "ff0000")
                End If
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解成功", "ffffb8-000000", 1.0, 分解成功X, 分解成功Y)
                    If 分解成功X > 0 Then
                        SDelay 300
                        dm.KeyPress 27
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解完成 ]", "ff0000")
                        Exit Do
                    Else  
                        dm_ret = dm.FindStr(0, 0, 800, 600, "缺少全部分解包括的道具", "ffffff-000000", 1.0, 分解失败X, 分解失败Y)
                        If 分解失败X > 0 Then
                            SDelay 300
                            dm.KeyPress 27                                 
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解分解失败 ]", "ff0000")
                            Exit Do
                        End If
                    End If
                Loop
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                    If 游戏指南x > 0 Then
                        dm.KeyPress 27
                        SDelay 300
                    Else   
                        Exit Do
                    End If
                Loop//关闭多余菜单            
                SDelay 1200
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备出售物品 ]", "ff0000")
                SDelay 400
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If      
                SDelay 1200
                dm_ret = dm.FindStr(0, 0, 800, 600, "商店", "e6c89b-000000", 1.0, intX6, intY6)
                If intX6 > 0 and intY6 > 0 Then         
                    SDelay 600
                    ydsbz intX6, intY6
                    SDelay 520
                    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                    SDelay 1200
                    dm_ret = dm.FindStr(6, 41, 310, 205, "商店", "ffffb8-000000", 1.0, intX66, intY66)
                    If intX66 > 0 and intY66 > 0 Then
                        SDelay 700
                        Call 出售物品
                    End if
                End If
            Else            
                ydsbz 525,31      
            End If
        Else     
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包没满 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Sub 出售物品
    ydsbz 493, 245
    SDelay 300
    dm_ret = dm.FindStrS(540, 389, 748, 529, "整理", "ddc593-000000", 0.9, intX2, intY2)
    If intX2 > 0 and intY2 > 0 Then
        ydsbz intX2, intY2
        SDelay 300
    End If
    Do
        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(486 + 增值, 275 + 增值2)
        SDelay 400
        dm_ret = dm.FindStrS(0, 0, 790, 546, "传说|神器|史诗", "ff7800-000000|ff00ff-000000|ffb400-000000", 0.9, 装备X, 装备Y)
        If 装备X > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检测到神器或传说装备跳过出售当前 ]", "ff0000")
        Else
            Call 拖动出售
        End If
        SDelay 100
        Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
        行数 = 行数 + 1
        If 行数 < 8 Then
            增值 = 增值 + 30
        ElseIf 行数 = 8 Then
            增值 = 0
            增值2 = 30
        ElseIf 行数 >= 7 AND 行数 < 16 Then
            增值2 = 30
            增值 = 增值 + 30
        ElseIf 行数 = 16 Then
            增值 = 0
            增值2 = 60
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 出售装备完毕 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                If 游戏指南x > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop//关闭多余菜单            
            Exit Do
        ElseIf 行数 >= 15 AND 行数 < 24 Then
            增值2 = 60
            增值 = 增值 + 30
        ElseIf 行数 = 24 Then
            增值 = 0
            增值2 = 90
        ElseIf 行数 >= 23 AND 行数 < 32 Then
            增值2 = 90
            增值 = 增值 + 30
        ElseIf 行数 = 32 Then
            增值2 = 120
            增值 = 0                
        ElseIf 行数 >= 31 AND 行数 < 40 Then
            增值2 = 120
            增值 = 增值 + 30                 
        End If
    Loop
End Sub
Function 拖动出售()
    MySec = Second(Now)
    增量X = Left(MySec, 1)
    增量Y = Right(MySec, 1)
    SDelay 300 + (增量Y + 增量Y) + (增量Y / 2)
    LeftDown 1
    SDelay 100
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(323 + 增量X, 398 + 增量Y)
    SDelay 100
    LeftUp 1
    SDelay 200
    Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Function
Sub 关闭遮挡
    dm_ret = dm.FindStr(319, 104, 578, 263, "关闭", "f7d65a-000000", 1.0, 关闭x, 关闭y)
    If 关闭x > 0 Then
        ydsbz 关闭x, 关闭y
        SDelay 200
    End If
End Sub
Function  识别疲劳值
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(393, 553)
    SDelay 300
    dm_ret = dm.FindStr(191, 467, 629, 557, "疲劳值:", "ffffff-000000", 1.0, 疲劳x, 疲劳y)
    If 疲劳x > 0 Then
        SDelay 300
        s = dm.Ocr(疲劳x - 1, 疲劳y - 1, 疲劳x + 103, 疲劳y + 14, "ffffff-000000", 1.0)
        疲劳 = Split(s, "疲劳值:")
        疲劳2 = Split(疲劳(1), "/")
        TracePrint 疲劳2(0)
        识别疲劳值 = 疲劳2(0)
    End If
End Function
Function 怪物坐标
    s = dm.Ocr(637,38,754,65, "ffffff-000000", 1.0)
    dm_ret = dm.FindStr(657, 41, 731, 63, s, "ffffff-000000", 1.0, 赛利亚x2, 赛利亚y2)
    If 赛利亚x2 > 0 Then
        怪物坐标 = True
    Else        
        怪物坐标 = False
    End If
End Function
Function 翻牌状态
    dm_ret = dm.FindStrFast(0, 0, 794, 200, "翻牌状态", "d2b709-000000|ffffbb-000000|ffdd55-000000|eecc55-000000|ddaa44-000000|ffffff-000000|664422-000000|aa8833-000000", 0.8, intX, intY)
    //    dm_ret = dm.FindStr(264, 12, 556, 152, "VS", "000000-404040", 1.0, intX2, inty2)
    If intX > 0 Then
        翻牌状态 = True
    Else   
        翻牌状态 = False
    End If
End Function
Sub 打怪测试
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 预备打怪线程 ]", "ff0000")
    Do
        dm_ret = dm.FindColor(479, 70, 491, 78, "000000-000000", 1.0, 0, intX2, intY2)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "808080-404040", 1.0, intXc, intYc)
        Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
        If intX2 < 0 Then
            Call 冷却释放
            首次拾取 = False
        Else  
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 怪物死亡 ]", "ff0000")
            If intX > 0 and intX2c > 0 Then
                If 检测背包 = False Then
                    dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                    ydsbz intX, intY
                    DO
                        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
                        If 跳过x > 0 Then
                            dm.KeyPress 32
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
                        ElseIf 跳过x < 0 Then
                            dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                            If intX < 0 Then
                                If 怪物坐标 = False  Then
                                    DM.KeyPress 32
                                Else
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                                    Exit Do
                                End If
                            Else     
                                ydsbz intX, intY
                                SDelay 300
                                ydsbz 0, 0
                            End If
                        End If
                    Loop
                    Exit Do
                ElseIf 检测背包 = True Then
                    Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                    ydsbz intX2c, intY2c
                    Exit Do
                End If
            ElseIf intX2 > 0 AND intX < 0 AND intX2c < 0 Then
                If 首次拾取 = False Then
                    SDelay 300
                    Call 拾取
                    首次拾取 = True
                    SDelay 200
                End If
            ElseIf intXc > 0 Then
                Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                ydsbz intX2c, intY2c                     
            End If
        End If
    Loop
End Sub
Sub 拾取
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 开始拾取 ]", "ff0000")
    SDelay 300
    DM.KeyPress 86
    SDelay 300
    DM.KeyDown 88
    SDelay 700
    DM.KeyUp 88
End Sub
Sub 释放技能
    Do
        If 怪物坐标 = False  Then
            If Form1.冷却技能.Value = 1 Then
                Call 冷却释放
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 释放技能完毕 ] ", "ff0000")
            Exit Do
        End If
    Loop  
End Sub
Sub 冷却释放
    dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
    If 技能x = 542 AND 技能y = 533 Then
        dm.KeyPress 81
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Q ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 533 Then   
        dm.KeyPress 87
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: W ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 533 Then
        DM.KeyPress 69
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: E ]", "ff0000")
        SDelay 10
    ElseIf  技能x = 632 AND 技能y = 533 Then
        dm.KeyPress 82
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: R ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 533 Then
        dm.KeyPress 84
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: T ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 533 Then
        dm.KeyPress 89
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Y ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 542 AND 技能y = 564 Then
        dm.KeyPress 65
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: A ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 564 Then   
        dm.KeyPress 83
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:S ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 564 Then
        DM.KeyPress 68
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:D ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 632 AND 技能y = 564 Then
        dm.KeyPress 70
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:F ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 564 Then
        dm.KeyPress 71
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: G ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 564 Then
        dm.KeyPress 72
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: H ]", "ff0000")
        SDelay 10
    ElseIf 技能x < 0 Then
        If Form1.普通攻击.Value = 1 Then
            dm.KeyPress 88
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: X ]", "ff0000")
            SDelay 200
        End If
    End If
End Sub
Sub 释放
    Dim 技能键(13)
    分割次数 = len(Form1.赋值技能.Text)
    For i = 1 To 分割次数
        技能键(i)=Mid(技能, i, 1)       
        If 怪物坐标 = True  Then
            TracePrint "通关了退出释放技能"
            Exit Sub
        Else
            dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
            If Form1.普通攻击.Value = 1 Then
                If 技能x < 0 Then
                    dm.KeyPress 88
                End If
            End If
            SDelay 160
            If UCase(技能键(i)) = "A" Then
                dm.KeyPress 65
                SDelay 160
            ElseIf UCase(技能键(i)) = "S" Then
                dm.KeyPress 83
                SDelay 160
            ElseIf UCase(技能键(i)) = "D" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "F" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "G" Then
                dm.KeyPress 71
                SDelay 160
            ElseIf UCase(技能键(i)) = "H" Then
                dm.KeyPress 72
                SDelay 160
            ElseIf UCase(技能键(i)) = "Q" Then
                dm.KeyPress 81
                SDelay 160
            ElseIf UCase(技能键(i)) = "W" Then
                dm.KeyPress 87
                SDelay 160
            ElseIf UCase(技能键(i)) = "E" Then
                dm.KeyPress 69
                SDelay 160
            ElseIf UCase(技能键(i)) = "R" Then
                dm.KeyPress 82
                SDelay 160
            ElseIf UCase(技能键(i)) = "T" Then
                dm.KeyPress 84
                SDelay 160
            ElseIf UCase(技能键(i)) = "Y" Then
                dm.KeyPress 89
                SDelay 160
            ElseIf UCase(技能键(i)) = "X" Then
                dm.KeyPress 88
                SDelay 160
            End If
            SDelay 300            
        End If
    Next
End Sub
Sub 还任务
    Do
        dm_ret = dm.FindStr(268, 497, 506, 548, "完成任务", "cc4411-404040", 1.0, 完成任务x, 完成任务y)
        If 完成任务x > 0 Then
            ydsbz 完成任务x, 完成任务y
        Else   
            For 12
                dm.KeyPress 32
            Next
            Exit Do
        End If
    Loop
    dm.KeyPress 27
End Sub
Function 检测背包
    dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intx2, inty2)
    If intx2 > 0 and inty2 > 0 Then
        检测背包 = True
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包满了 ] ", "ff0000")
    Else
        检测背包 = False
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包没满 ] ", "ff0000")
    End If
End Function
Function 识别疲劳2
    dm_ret = dm.FindColor(278,545,513,559, "e60044-000000|b30026-000000|be6a83-000000", 0.9, 0, intX, intY)
    dm_ret = dm.FindColor(278,545,513,559, "00e6e6-000000|008ff1-000000|80a8a8-000000", 0.9, 0, intX2, intY2)
    If intX > 0 and intY > 0 OR intX2 > 0 and intY2 > 0 Then
        识别疲劳 = True
        TracePrint "还有疲劳"
        SDelay 700
    Else
        识别疲劳 = False
        TracePrint "没疲劳了"
        SDelay 800
    End If
End Function
Sub 识别材料
    Do
        Rem 重新扫描
        dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
        If 装备栏x < 0 Then
            dm.KeyPress 73
            SDelay 300
        Else
            Call Lib.模拟真实键鼠.随机慢慢移动鼠标(装备栏x, 装备栏y)
            SDelay 200
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "材料", "ffffb8-000000", 1.0, 材料x, 材料y)
                If 材料x < 0 Then
                    ydsbz 593, 245
                    ydsbz 593, 245
                Else
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 准备识别材料 ] ", "ff0000")
            红色小晶块 = dm.Ocr(730, 312, 761, 341, "ffffff-000000", 1.0)
            dm_ret = dm.FoobarPrintText(foobar, now & " [红色小晶块数量: ] " & 红色小晶块, "ff0000")
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "wj.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                无尽的永恒 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [无尽的永恒数量: ] " & 无尽的永恒, "ff0000")
            Else     
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 没有找到无尽的永恒 ] " & 无尽的永恒, "ff0000")
            End If
            SDelay 302
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "任务", "ffffb8-000000", 1.0, 材料2x, 材料2y)
                If 材料2x < 0 Then
                    ydsbz 690, 246
                    ydsbz 690, 246
                Else   
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "hl.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                黄龙票 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [黄龙门票数量:] " & 黄龙票, "ff0000")
            End If
            Do
                dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)       
                If 装备栏x > 0 Then
                    DM.KeyPress 73
                    SDelay 300
                Else        
                    Exit Do
                End If
            Loop
            SDelay 150
            疲劳值 = 识别疲劳值
            dm_ret = dm.FoobarPrintText(foobar, now & " [剩余疲劳 ] " & 疲劳值, "ff0000")
            可打次数 = 疲劳值 / 6
            dm_ret = dm.FoobarPrintText(foobar, now & " [可打黄龙次数] " & 可打次数, "ff0000")
            If 1300 > 红色小晶块 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 红色小晶块不足现在开始购买 ] ", "ff0000")
                Call 扫拍("红色小晶块", Form1.HS.Text, "1000")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 130 > 无尽的永恒 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 无尽的永恒块不足现在开始购买 ] " , "ff0000")
                Call 扫拍("无尽的永恒", Form1.wj.Text, "130")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 可打次数 > 黄龙票 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 当前门票不足准备前往小铁柱兑换门票 ] ", "ff0000")
                Call 行走到小铁柱
            End If
            Exit Do
        End If
    Loop
End Sub
Event Form1.Load
    Call 注册
End EventGlobal 检测入场券, 检测材料, 当前刷到第几个角色, 角色名字, foobar, MySec2, 角色名称, 进入黄龙咯
Global 红色小晶块, 无尽的永恒, 黄龙票, 疲劳值, 重新定义
Dimenv 打怪线程, 检测死亡线程, 超时线程, 进图线程, 购买门票线程, 城镇线程, 调控线程
Call 注册
If Form1.赛利亚启动.Value = 1 Then
    Do
        Call 调控
    Loop
ElseIf Form1.自动登入.Value = 1 Then
    TracePrint 1
End If
//Call 打怪测试
//调控线程 = BeginThread(调控)
SDelay 300
Sub 调控
    If 城镇房间 = 1 or 城镇房间 = 2 Then
        //        城镇线程 = BeginThread(城镇caoz)
        Call 城镇caoz
    ElseIf  城镇房间 = 3
        //        进图线程 = BeginThread(进入黄龙)
        Call 进入黄龙
    ElseIf 怪物坐标 = True     
        //        打怪线程 = BeginThread(打怪测试)
        Call 打怪测试
    Else
        Call 更换角色(1)
    End If
End Sub

Sub 城镇caoz
    Dim pl
    Do
        If 城镇房间 = 1 Then
            Call 从赛利亚房间出来
        ElseIf 城镇房间 = 2 Then
            Call 清理背包
            Pl = 识别疲劳值()
            If pl = 0 Then
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 没有疲劳准备切换角色 ]", "ff0000")
                Call 更换角色(0)
            Else        
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 还有疲劳 ]", "ff0000")
            End If
            Call 识别虚弱状态
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检查完成准备进图 ]", "ff0000")
            Call 准备进图
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 退出城镇线程 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Do
    Call 调控
Loop
Do
Loop
Sub 准备进图
    Do
        If 城镇房间 = 3 Then
            DM.KeyUp 39
            DM.KeyUp 39
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入选择地图 ]", "ff0000")
            Exit Do
        Else     
            dm.KeyDown 40
            SDelay 300
            dm.KeyUp 40
            dm.KeyDown 37
            SDelay 300
            dm.KeyUp 37
            SDelay 30
            dm.KeyDown 39
            SDelay 2200
        End If       
    Loop
End Sub
Sub 进入黄龙
    DO
        dm_ret = dm.FindPic(395, 289, 757, 481, "hldh.bmp|hldh2.bmp", "000000", 0.9, 0, intX, intY)
        If intX > 0 Then
            ydsbz intX, intY
            ydsbz intX, intY
            Exit Do
        End If
    Loop
    DO
        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
        If 跳过x > 0 Then
            dm.KeyPress 32
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
        Else     
            If 怪物坐标 = False  Then
                DM.KeyPress 32
            Else
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                进入黄龙咯 = True
                Exit Do
            End If           
        End If
    Loop
    Call 打怪测试
End Sub
Function 城镇房间
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备分解x, 装备分解y)
    dm_ret = dm.FindStr(695, 535, 799, 572, "返回城镇", "ddc593-000000|ffffb8-000000", 1.0, intX, intY)
    dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
    If 赛利亚x > 0 Then
        城镇房间 = 1
    ElseIf 装备分解x > 0 Then
        城镇房间 = 2
    ElseIf intX > 0 Then
        城镇房间 = 3
    ElseIf 跳过x > 0 and 跳过y > 0 Then
        城镇房间 = 4
    End If
End Function
Sub 注册
    PutAttachment "c:\test_game","*.*"
    PutAttachment ".\Plugin" ,"RegDll.dll"
    Call Plugin.Regdll.reg("c:\game_script\dm.dll")
    Set dm = createobject("dm.dmsoft")
    ver = dm.ver()
    If len(ver) = 0 Then
        MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
        EndScript
    Else
        dm_ret = dm.SetPath("C:\黄龙\")
        dm_ret = dm.SetDict(0, "字库.txt")
        hwnd = dm.FindWindow("", "地下城与勇士")
        dm.MoveWindow hwnd, 0, 0
        dm_ret = dm.SetWindowState(hwnd, 12)
        foobar = dm.CreateFoobarRect(shw, 0, 600, 400, 100)
        foobar2 = dm.CreateFoobarRect(shw2, 400, 600, 400, 100)
        dm_ret = dm.FoobarLock(foobar)
        dm_ret = dm.FoobarSetFont(foobar, "宋体", 9, 0)
    End If       
End Sub
Sub SDelay(时间)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : Call Lib.模拟真实键鼠.随机延时(时间 + (增量Y + 增量Y) * (增量Y / 2))
End Sub
SUB ydsbz(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标 + 增量X, 屏幕Y坐标 + 增量Y) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Sub
SUB ydsby(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标, 屏幕Y坐标) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标右键单击()
End Sub
Sub 从赛利亚房间出来
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    If 赛利亚x > 0 and 赛利亚y > 0 Then
        日志 = Now & " [ 切换至赛利亚房间:准备检测疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        SDelay 200
        Call 识别疲劳
        Call 识别材料
        Do
            dm_ret = dm.FindStr(279,0,766,280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
            If 装备栏x > 0 Then
                dm.KeyPress 73
                SDelay 300
            Else     
                Exit Do
            End If
        Loop
        MySec2 = Second(Now)
        Do
            dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
            If 虚祖首都素喃x >= 0 Then
                SDelay 300
                dm.KeyUp 40
                Plugin.lxj_Plug.lxj_ReleaseMemory -1
                日志 = Now & " [ 到达:虚祖首都素喃 准备行走置副本门口 ] "
                dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                SDelay 600
                ydsby 5, 500
                ydsby  5, 500
                SDelay 3000
                dm.KeyDown 38
                SDelay 1200
                dm.KeyUp 38
                dm.KeyUp 38
                SDelay 500
                Do
                    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                    If 装备x > 0 Then
                        dm.KeyUp 39
                        dm.KeyUp 39
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                        Exit Sub
                    Else  
                        dm.KeyDown 39
                    End If
                Loop
                //                Call  城镇寻路
            Else
                dm.KeyDown 40
                MySe2c = Second(Now)
                SDelay 100
                MySe2c3 = MySe2c - MySec2
                If abs(MySe2c3) >= 4 Then
                    日志 = Now & " [ 不在地区:虚祖首都素喃 准备使用瞬间移动药剂前往] "
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    SDelay 300
                Else                              
                    //                    dm_ret = dm.FoobarPrintText(foobar, "出赛利亚房间超时检测剩余秒数:" & abs(MySe2c3 - 4), "ff0000")                          
                End If
            End If
        Loop
    End If
End Sub// 赛利亚放假出来兑换票 扫拍
Sub 识别疲劳
    Dim 疲劳数据
    疲劳数据 = 识别疲劳值
    If 疲劳数据 <> 0 Then
        日志 = Now & " [ 疲劳检测:还有疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
    Else
        dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
        当前刷到第几个角色 = 当前刷到第几个角色 + 1
        日志 =  Now & " [ 疲劳检测:没有疲劳了准备切换角色 当前刷置角色 " & 当前刷到第几个角色 & "]"
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        If 当前刷到第几个角色 = int(Form1.刷多少角色.Text) Then
            dm.KeyPress 123
        Else
            Call 更换角色(0)
        End If             
    End If
End Sub
Sub 更换角色(f)
    Do
        dm_ret = dm.FindStr(132, 530, 304, 564, "删除", "ddc593-000000", 1.0, 删除x, 删除y)
        If 删除x < 0 Then
            dm_ret = dm.FindStr(441, 168, 656, 363, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
            If 游戏指南x < 0 and 游戏指南y < 0 Then
                dm.KeyPress 27
                SDelay 300
            Else
                SDelay 600
                ydsbz 384, 443
                SDelay 300
            End If
        Else     
            SDelay 600
            日志 = Now & " [ 小退游戏进入选择角色界面 ]"
            dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")     
            SDelay 300
            If f = 1 Then
                dm.KeyPress 39
                SDelay 600
            End If
            dm.KeyPress 32
            SDelay 600
            Do
                dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
                If 赛利亚x > 0 Then
                    日志 = Now & " [ 进入赛利亚房间重 ]"
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    Exit Do
                Else
                    dm_ret = dm.FindStr(319, 104, 578, 263, "×", "ede5aa-000000", 1.0, 叉x, 叉y)
                    If 叉x > 0 Then
                        日志 = Now & " [ 出现遮挡物准备关闭 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        ydsbz 叉x, 叉y
                        SDelay 300
                        日志 = Now & " [ 关闭遮挡物 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        Exit Do
                    End If
                End If
            Loop
            RestartScript
            Exit Do
        End If
    Loop
End Sub
Function 城镇寻路()
    x = 350
    y = 315
    dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
    If 虚祖首都素喃x > 0 Then
        Do
            dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
            If 搜索x > 0 and 搜索y > 0 Then
                TracePrint "打开大地图"
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 打开大地图 ]", "ff0000")
                Exit Do  
            Else   
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在打开大地图 ]", "ff0000")
                dm.KeyPress 78
                Delay 300
            End If
        Loop
    End If
    Do
        dm_ret = dm.FindStr(142, 134, 545, 434, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
        If 城镇坐标x >= 0 and 城镇坐标y >= 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在执行前往副本门口 ]", "ff0000")
            相差距离x = 城镇坐标x - x
            相差距离y = 城镇坐标y - y
            If 相差距离x > 0 Then
                dm.KeyDown 37
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 左方向到达 ]", "ff0000")
                        dm.KeyUp 37
                        Exit Do
                    End If
                Loop
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225, 196, 500, 447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 上方向到达 ]", "ff0000")
                            Delay 300
                            dm.KeyUp 38
                            dm.KeyUp 38
                            dm.KeyUp 38
                            Do
                                dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
                                If 搜索x > 0 Then
                                    dm.KeyPress 78
                                    SDelay 300
                                    Exit Do
                                End If
                            Loop
                            dm.KeyDown 39
                            Do
                                dm_ret = dm.FindStr(184, 117, 680, 253, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                                If 装备x > 0 Then
                                    dm.KeyUp 39
                                    dm.KeyUp 39
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                                    Exit Do
                                End If
                            Loop
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                End If
                Exit Do
            ElseIf 相差距离x < 0 Then
                Rem 反方向修复
                dm.KeyDown 39
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        TracePrint "右方向到达"
                        dm.KeyUp 39
                        Exit Do
                    End If
                Loop
                dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                相差距离y = 城镇坐标y - y
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "上方向到达"
                            Delay 300
                            dm.KeyUp 38
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "下方向到达"
                            Delay 300
                            dm.KeyUp 40
                            Exit Do
                        End If
                    Loop                                                                                          
                End If
                Exit Do
            End If
        End If
    Loop
End Function

Sub 识别虚弱状态
    恢复状态 = 1// 1=契约恢复 2=金币恢复 3=站街恢复
    If Form1.金币恢复.Value = 1 Then
        恢复状态 = 2
    ElseIf Form1.契约恢复.Value = 1 Then
        恢复状态 = 1
    ElseIf Form1.站街恢复.Value = 1 Then
        恢复状态 = 3
    End If
    DO   
        dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX,intY)
        If intX > 0 AND intY > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 虚弱状态 ]", "ff0000")
            SDelay 2200
            If 恢复状态 = 1 Then
                ydsbz intX, intY
                SDelay 3000
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "契约恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2, intY2
                End If
            ElseIf 恢复状态 = 2 Then
                ydsbz intX, intY
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "金币恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2 + 10, intY2 + 10
                End If              
            ElseIf 恢复状态 = 3 Then
                Do
                    dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX3,intY3)
                    If intX3 < 0 AND intY3 < 0 Then
                        SDelay 5000
                        Exit Sub
                    End If
                Loop
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 没虚弱 ]", "ff0000")
            Exit Do  
        End If
    Loop
End Sub
Sub 清理背包
    Do
        dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intxX2, intyY2)
        If intxX2 > 0 and intyY2 > 0 Then   
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包满了准备清理背包 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            Rem 修复点击装备分解
            dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解", "e6c89b-000000", 1.0, intX, intY)
            If intX > 0 and intY > 0 Then
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(0, 0, 800, 600, "分解装备", "e6c89b-000000", 1.0, 分解装备X, 分解装备Y)
                    If 分解装备X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击分解装备 ]", "ff0000")
                        ydsbz 分解装备X, 分解装备Y
                        SDelay 300
                        Exit Do
                    Else
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备点分解装备被遮挡将移除遮挡 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        Goto 修复点击装备分解
                    End if
                Loop// 点击分解装备
                SDelay  600
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(全部分解X, 全部分解Y)
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//移动到全部分解
                SDelay 600
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备勾选条件 ]", "ff0000")
                If Form1.分蓝.Value = 1 Then
                    分解模式 = 1// 1 分蓝卖紫白 2 分蓝白卖紫 3 全部分解
                    勾选蓝 = True:勾选白 = False:全部勾选 = False
                ElseIf Form1.分蓝白.Value = 1 Then
                    分解模式 = 2
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = False
                ElseIf Form1.全部分.Value = 1 Then
                    分解模式 = 3
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = True
                End If
                Do
                    dm_ret = dm.FindStrFast(215,358,344,450,"普通","ffffff-000000",1.0,pX,pY)'先查找普通这个字,然后根据返回的坐标来判断是否勾选
                    If pX > 0 And pY > 0 Then
                        dm_ret = dm.FindStrFast(px-1,py-1,px+80,py+14,"√","ffae00-000000",1.0,jX,jY)'根据普通返回的坐标,选择出一个区域能够查找到勾选,如果没有,则点击
                        If jX > 0 And jY > 0 Then
                            If 勾选白 = False Then
                                SDelay 300
                                ydsbz px, py
                                Exit Do
                            Else     
                                Exit Do                           
                            End If
                        Else
                            If 勾选白 = True Then
                                SDelay 300
                                ydsbz px, py
                                SDelay 100
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选白色 ]", "ff0000")
                                Exit Do
                            Else     
                                Exit Do  
                            End If
                        End If
                    End If
                Loop
                SDelay 300
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "高级", "68d5ed-000000", 1.0, gX, gY)
                    If gX > 0 And gY > 0 Then
                        dm_ret = dm.FindStrFast(gx-1,gy-1,gx+80,gy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 勾选蓝 = False Then
                                SDelay 300
                                ydsbz jx, jy
                                Exit Do
                            Else     
                                Exit Do                           
                            End if
                        Else
                            If 勾选蓝 = True Then
                                SDelay 300
                                ydsbz gX, gY
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选蓝色 ]", "ff0000")                              
                                Exit Do
                            Else     
                                Exit Do  
                            End if
                        End If
                    End If
                Loop
                SDelay 500
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "稀有", "b36bff-000000", 1.0, xX, xY)
                    If xX > 0 And xY > 0 Then
                        dm_ret = dm.FindStrFast(xx-1,xy-1,xx+80,xy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 全部分 = False Then
                                SDelay 300
                                ydsbz xx, xy
                                Exit Do
                            Else     
                                Exit Do
                            End If
                        Else
                            If 全部分 = True Then
                                SDelay 300
                                ydsbz xx, xy
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选紫色 ]", "ff0000")                           
                            Else   
                                Exit Do  
                            End If
                            Exit Do
                        End If
                    End If
                Loop
                If 全部分 = True Then
                    Exit Do
                End If
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选条件完毕开始分解 ]", "ff0000")
                Do
                    SDelay 300
                    TracePrint  2222
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        ydsbz 全部分解X, 全部分解Y
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//点击全部分解
                SDelay 300
                SDelay 300
                dm_ret = dm.FindStr(0, 0, 800, 600, "确认", "ddc593-000000", 1.0, 确认X, 确认Y)
                If 确认X > 0 Then
                    SDelay 200
                    ydsbz 确认X, 确认y
                    SDelay 200
                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击确认分解 ]", "ff0000")
                End If
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解成功", "ffffb8-000000", 1.0, 分解成功X, 分解成功Y)
                    If 分解成功X > 0 Then
                        SDelay 300
                        dm.KeyPress 27
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解完成 ]", "ff0000")
                        Exit Do
                    Else  
                        dm_ret = dm.FindStr(0, 0, 800, 600, "缺少全部分解包括的道具", "ffffff-000000", 1.0, 分解失败X, 分解失败Y)
                        If 分解失败X > 0 Then
                            SDelay 300
                            dm.KeyPress 27                                 
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解分解失败 ]", "ff0000")
                            Exit Do
                        End If
                    End If
                Loop
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                    If 游戏指南x > 0 Then
                        dm.KeyPress 27
                        SDelay 300
                    Else   
                        Exit Do
                    End If
                Loop//关闭多余菜单            
                SDelay 1200
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备出售物品 ]", "ff0000")
                SDelay 400
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If      
                SDelay 1200
                dm_ret = dm.FindStr(0, 0, 800, 600, "商店", "e6c89b-000000", 1.0, intX6, intY6)
                If intX6 > 0 and intY6 > 0 Then         
                    SDelay 600
                    ydsbz intX6, intY6
                    SDelay 520
                    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                    SDelay 1200
                    dm_ret = dm.FindStr(6, 41, 310, 205, "商店", "ffffb8-000000", 1.0, intX66, intY66)
                    If intX66 > 0 and intY66 > 0 Then
                        SDelay 700
                        Call 出售物品
                    End if
                End If
            Else            
                ydsbz 525,31      
            End If
        Else     
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包没满 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Sub 出售物品
    ydsbz 493, 245
    SDelay 300
    dm_ret = dm.FindStrS(540, 389, 748, 529, "整理", "ddc593-000000", 0.9, intX2, intY2)
    If intX2 > 0 and intY2 > 0 Then
        ydsbz intX2, intY2
        SDelay 300
    End If
    Do
        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(486 + 增值, 275 + 增值2)
        SDelay 400
        dm_ret = dm.FindStrS(0, 0, 790, 546, "传说|神器|史诗", "ff7800-000000|ff00ff-000000|ffb400-000000", 0.9, 装备X, 装备Y)
        If 装备X > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检测到神器或传说装备跳过出售当前 ]", "ff0000")
        Else
            Call 拖动出售
        End If
        SDelay 100
        Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
        行数 = 行数 + 1
        If 行数 < 8 Then
            增值 = 增值 + 30
        ElseIf 行数 = 8 Then
            增值 = 0
            增值2 = 30
        ElseIf 行数 >= 7 AND 行数 < 16 Then
            增值2 = 30
            增值 = 增值 + 30
        ElseIf 行数 = 16 Then
            增值 = 0
            增值2 = 60
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 出售装备完毕 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                If 游戏指南x > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop//关闭多余菜单            
            Exit Do
        ElseIf 行数 >= 15 AND 行数 < 24 Then
            增值2 = 60
            增值 = 增值 + 30
        ElseIf 行数 = 24 Then
            增值 = 0
            增值2 = 90
        ElseIf 行数 >= 23 AND 行数 < 32 Then
            增值2 = 90
            增值 = 增值 + 30
        ElseIf 行数 = 32 Then
            增值2 = 120
            增值 = 0                
        ElseIf 行数 >= 31 AND 行数 < 40 Then
            增值2 = 120
            增值 = 增值 + 30                 
        End If
    Loop
End Sub
Function 拖动出售()
    MySec = Second(Now)
    增量X = Left(MySec, 1)
    增量Y = Right(MySec, 1)
    SDelay 300 + (增量Y + 增量Y) + (增量Y / 2)
    LeftDown 1
    SDelay 100
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(323 + 增量X, 398 + 增量Y)
    SDelay 100
    LeftUp 1
    SDelay 200
    Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Function
Sub 关闭遮挡
    dm_ret = dm.FindStr(319, 104, 578, 263, "关闭", "f7d65a-000000", 1.0, 关闭x, 关闭y)
    If 关闭x > 0 Then
        ydsbz 关闭x, 关闭y
        SDelay 200
    End If
End Sub
Function  识别疲劳值
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(393, 553)
    SDelay 300
    dm_ret = dm.FindStr(191, 467, 629, 557, "疲劳值:", "ffffff-000000", 1.0, 疲劳x, 疲劳y)
    If 疲劳x > 0 Then
        SDelay 300
        s = dm.Ocr(疲劳x - 1, 疲劳y - 1, 疲劳x + 103, 疲劳y + 14, "ffffff-000000", 1.0)
        疲劳 = Split(s, "疲劳值:")
        疲劳2 = Split(疲劳(1), "/")
        TracePrint 疲劳2(0)
        识别疲劳值 = 疲劳2(0)
    End If
End Function
Function 怪物坐标
    s = dm.Ocr(637,38,754,65, "ffffff-000000", 1.0)
    dm_ret = dm.FindStr(657, 41, 731, 63, s, "ffffff-000000", 1.0, 赛利亚x2, 赛利亚y2)
    If 赛利亚x2 > 0 Then
        怪物坐标 = True
    Else        
        怪物坐标 = False
    End If
End Function
Function 翻牌状态
    dm_ret = dm.FindStrFast(0, 0, 794, 200, "翻牌状态", "d2b709-000000|ffffbb-000000|ffdd55-000000|eecc55-000000|ddaa44-000000|ffffff-000000|664422-000000|aa8833-000000", 0.8, intX, intY)
    //    dm_ret = dm.FindStr(264, 12, 556, 152, "VS", "000000-404040", 1.0, intX2, inty2)
    If intX > 0 Then
        翻牌状态 = True
    Else   
        翻牌状态 = False
    End If
End Function
Sub 打怪测试
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 预备打怪线程 ]", "ff0000")
    Do
        dm_ret = dm.FindColor(479, 70, 491, 78, "000000-000000", 1.0, 0, intX2, intY2)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "808080-404040", 1.0, intXc, intYc)
        Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
        If intX2 < 0 Then
            Call 冷却释放
            首次拾取 = False
        Else  
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 怪物死亡 ]", "ff0000")
            If intX > 0 and intX2c > 0 Then
                If 检测背包 = False Then
                    dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                    ydsbz intX, intY
                    DO
                        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
                        If 跳过x > 0 Then
                            dm.KeyPress 32
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
                        ElseIf 跳过x < 0 Then
                            dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                            If intX < 0 Then
                                If 怪物坐标 = False  Then
                                    DM.KeyPress 32
                                Else
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                                    Exit Do
                                End If
                            Else     
                                ydsbz intX, intY
                                SDelay 300
                                ydsbz 0, 0
                            End If
                        End If
                    Loop
                    Exit Do
                ElseIf 检测背包 = True Then
                    Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                    ydsbz intX2c, intY2c
                    Exit Do
                End If
            ElseIf intX2 > 0 AND intX < 0 AND intX2c < 0 Then
                If 首次拾取 = False Then
                    SDelay 300
                    Call 拾取
                    首次拾取 = True
                    SDelay 200
                End If
            ElseIf intXc > 0 Then
                Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                ydsbz intX2c, intY2c                     
            End If
        End If
    Loop
End Sub
Sub 拾取
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 开始拾取 ]", "ff0000")
    SDelay 300
    DM.KeyPress 86
    SDelay 300
    DM.KeyDown 88
    SDelay 700
    DM.KeyUp 88
End Sub
Sub 释放技能
    Do
        If 怪物坐标 = False  Then
            If Form1.冷却技能.Value = 1 Then
                Call 冷却释放
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 释放技能完毕 ] ", "ff0000")
            Exit Do
        End If
    Loop  
End Sub
Sub 冷却释放
    dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
    If 技能x = 542 AND 技能y = 533 Then
        dm.KeyPress 81
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Q ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 533 Then   
        dm.KeyPress 87
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: W ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 533 Then
        DM.KeyPress 69
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: E ]", "ff0000")
        SDelay 10
    ElseIf  技能x = 632 AND 技能y = 533 Then
        dm.KeyPress 82
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: R ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 533 Then
        dm.KeyPress 84
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: T ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 533 Then
        dm.KeyPress 89
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Y ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 542 AND 技能y = 564 Then
        dm.KeyPress 65
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: A ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 564 Then   
        dm.KeyPress 83
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:S ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 564 Then
        DM.KeyPress 68
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:D ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 632 AND 技能y = 564 Then
        dm.KeyPress 70
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:F ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 564 Then
        dm.KeyPress 71
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: G ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 564 Then
        dm.KeyPress 72
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: H ]", "ff0000")
        SDelay 10
    ElseIf 技能x < 0 Then
        If Form1.普通攻击.Value = 1 Then
            dm.KeyPress 88
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: X ]", "ff0000")
            SDelay 200
        End If
    End If
End Sub
Sub 释放
    Dim 技能键(13)
    分割次数 = len(Form1.赋值技能.Text)
    For i = 1 To 分割次数
        技能键(i)=Mid(技能, i, 1)       
        If 怪物坐标 = True  Then
            TracePrint "通关了退出释放技能"
            Exit Sub
        Else
            dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
            If Form1.普通攻击.Value = 1 Then
                If 技能x < 0 Then
                    dm.KeyPress 88
                End If
            End If
            SDelay 160
            If UCase(技能键(i)) = "A" Then
                dm.KeyPress 65
                SDelay 160
            ElseIf UCase(技能键(i)) = "S" Then
                dm.KeyPress 83
                SDelay 160
            ElseIf UCase(技能键(i)) = "D" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "F" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "G" Then
                dm.KeyPress 71
                SDelay 160
            ElseIf UCase(技能键(i)) = "H" Then
                dm.KeyPress 72
                SDelay 160
            ElseIf UCase(技能键(i)) = "Q" Then
                dm.KeyPress 81
                SDelay 160
            ElseIf UCase(技能键(i)) = "W" Then
                dm.KeyPress 87
                SDelay 160
            ElseIf UCase(技能键(i)) = "E" Then
                dm.KeyPress 69
                SDelay 160
            ElseIf UCase(技能键(i)) = "R" Then
                dm.KeyPress 82
                SDelay 160
            ElseIf UCase(技能键(i)) = "T" Then
                dm.KeyPress 84
                SDelay 160
            ElseIf UCase(技能键(i)) = "Y" Then
                dm.KeyPress 89
                SDelay 160
            ElseIf UCase(技能键(i)) = "X" Then
                dm.KeyPress 88
                SDelay 160
            End If
            SDelay 300            
        End If
    Next
End Sub
Sub 还任务
    Do
        dm_ret = dm.FindStr(268, 497, 506, 548, "完成任务", "cc4411-404040", 1.0, 完成任务x, 完成任务y)
        If 完成任务x > 0 Then
            ydsbz 完成任务x, 完成任务y
        Else   
            For 12
                dm.KeyPress 32
            Next
            Exit Do
        End If
    Loop
    dm.KeyPress 27
End Sub
Function 检测背包
    dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intx2, inty2)
    If intx2 > 0 and inty2 > 0 Then
        检测背包 = True
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包满了 ] ", "ff0000")
    Else
        检测背包 = False
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包没满 ] ", "ff0000")
    End If
End Function
Function 识别疲劳2
    dm_ret = dm.FindColor(278,545,513,559, "e60044-000000|b30026-000000|be6a83-000000", 0.9, 0, intX, intY)
    dm_ret = dm.FindColor(278,545,513,559, "00e6e6-000000|008ff1-000000|80a8a8-000000", 0.9, 0, intX2, intY2)
    If intX > 0 and intY > 0 OR intX2 > 0 and intY2 > 0 Then
        识别疲劳 = True
        TracePrint "还有疲劳"
        SDelay 700
    Else
        识别疲劳 = False
        TracePrint "没疲劳了"
        SDelay 800
    End If
End Function
Sub 识别材料
    Do
        Rem 重新扫描
        dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
        If 装备栏x < 0 Then
            dm.KeyPress 73
            SDelay 300
        Else
            Call Lib.模拟真实键鼠.随机慢慢移动鼠标(装备栏x, 装备栏y)
            SDelay 200
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "材料", "ffffb8-000000", 1.0, 材料x, 材料y)
                If 材料x < 0 Then
                    ydsbz 593, 245
                    ydsbz 593, 245
                Else
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 准备识别材料 ] ", "ff0000")
            红色小晶块 = dm.Ocr(730, 312, 761, 341, "ffffff-000000", 1.0)
            dm_ret = dm.FoobarPrintText(foobar, now & " [红色小晶块数量: ] " & 红色小晶块, "ff0000")
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "wj.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                无尽的永恒 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [无尽的永恒数量: ] " & 无尽的永恒, "ff0000")
            Else     
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 没有找到无尽的永恒 ] " & 无尽的永恒, "ff0000")
            End If
            SDelay 302
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "任务", "ffffb8-000000", 1.0, 材料2x, 材料2y)
                If 材料2x < 0 Then
                    ydsbz 690, 246
                    ydsbz 690, 246
                Else   
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "hl.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                黄龙票 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [黄龙门票数量:] " & 黄龙票, "ff0000")
            End If
            Do
                dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)       
                If 装备栏x > 0 Then
                    DM.KeyPress 73
                    SDelay 300
                Else        
                    Exit Do
                End If
            Loop
            SDelay 150
            疲劳值 = 识别疲劳值
            dm_ret = dm.FoobarPrintText(foobar, now & " [剩余疲劳 ] " & 疲劳值, "ff0000")
            可打次数 = 疲劳值 / 6
            dm_ret = dm.FoobarPrintText(foobar, now & " [可打黄龙次数] " & 可打次数, "ff0000")
            If 1300 > 红色小晶块 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 红色小晶块不足现在开始购买 ] ", "ff0000")
                Call 扫拍("红色小晶块", Form1.HS.Text, "1000")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 130 > 无尽的永恒 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 无尽的永恒块不足现在开始购买 ] " , "ff0000")
                Call 扫拍("无尽的永恒", Form1.wj.Text, "130")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 可打次数 > 黄龙票 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 当前门票不足准备前往小铁柱兑换门票 ] ", "ff0000")
                Call 行走到小铁柱
            End If
            Exit Do
        End If
    Loop
End Sub
Event Form1.Load
    Call 注册
End EventGlobal 检测入场券, 检测材料, 当前刷到第几个角色, 角色名字, foobar, MySec2, 角色名称, 进入黄龙咯
Global 红色小晶块, 无尽的永恒, 黄龙票, 疲劳值, 重新定义
Dimenv 打怪线程, 检测死亡线程, 超时线程, 进图线程, 购买门票线程, 城镇线程, 调控线程
Call 注册
If Form1.赛利亚启动.Value = 1 Then
    Do
        Call 调控
    Loop
ElseIf Form1.自动登入.Value = 1 Then
    TracePrint 1
End If
//Call 打怪测试
//调控线程 = BeginThread(调控)
SDelay 300
Sub 调控
    If 城镇房间 = 1 or 城镇房间 = 2 Then
        //        城镇线程 = BeginThread(城镇caoz)
        Call 城镇caoz
    ElseIf  城镇房间 = 3
        //        进图线程 = BeginThread(进入黄龙)
        Call 进入黄龙
    ElseIf 怪物坐标 = True     
        //        打怪线程 = BeginThread(打怪测试)
        Call 打怪测试
    Else
        Call 更换角色(1)
    End If
End Sub

Sub 城镇caoz
    Dim pl
    Do
        If 城镇房间 = 1 Then
            Call 从赛利亚房间出来
        ElseIf 城镇房间 = 2 Then
            Call 清理背包
            Pl = 识别疲劳值()
            If pl = 0 Then
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 没有疲劳准备切换角色 ]", "ff0000")
                Call 更换角色(0)
            Else        
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 还有疲劳 ]", "ff0000")
            End If
            Call 识别虚弱状态
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检查完成准备进图 ]", "ff0000")
            Call 准备进图
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 退出城镇线程 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Do
    Call 调控
Loop
Do
Loop
Sub 准备进图
    Do
        If 城镇房间 = 3 Then
            DM.KeyUp 39
            DM.KeyUp 39
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入选择地图 ]", "ff0000")
            Exit Do
        Else     
            dm.KeyDown 40
            SDelay 300
            dm.KeyUp 40
            dm.KeyDown 37
            SDelay 300
            dm.KeyUp 37
            SDelay 30
            dm.KeyDown 39
            SDelay 2200
        End If       
    Loop
End Sub
Sub 进入黄龙
    DO
        dm_ret = dm.FindPic(395, 289, 757, 481, "hldh.bmp|hldh2.bmp", "000000", 0.9, 0, intX, intY)
        If intX > 0 Then
            ydsbz intX, intY
            ydsbz intX, intY
            Exit Do
        End If
    Loop
    DO
        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
        If 跳过x > 0 Then
            dm.KeyPress 32
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
        Else     
            If 怪物坐标 = False  Then
                DM.KeyPress 32
            Else
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                进入黄龙咯 = True
                Exit Do
            End If           
        End If
    Loop
    Call 打怪测试
End Sub
Function 城镇房间
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备分解x, 装备分解y)
    dm_ret = dm.FindStr(695, 535, 799, 572, "返回城镇", "ddc593-000000|ffffb8-000000", 1.0, intX, intY)
    dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
    If 赛利亚x > 0 Then
        城镇房间 = 1
    ElseIf 装备分解x > 0 Then
        城镇房间 = 2
    ElseIf intX > 0 Then
        城镇房间 = 3
    ElseIf 跳过x > 0 and 跳过y > 0 Then
        城镇房间 = 4
    End If
End Function
Sub 注册
    PutAttachment "c:\test_game","*.*"
    PutAttachment ".\Plugin" ,"RegDll.dll"
    Call Plugin.Regdll.reg("c:\game_script\dm.dll")
    Set dm = createobject("dm.dmsoft")
    ver = dm.ver()
    If len(ver) = 0 Then
        MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
        EndScript
    Else
        dm_ret = dm.SetPath("C:\黄龙\")
        dm_ret = dm.SetDict(0, "字库.txt")
        hwnd = dm.FindWindow("", "地下城与勇士")
        dm.MoveWindow hwnd, 0, 0
        dm_ret = dm.SetWindowState(hwnd, 12)
        foobar = dm.CreateFoobarRect(shw, 0, 600, 400, 100)
        foobar2 = dm.CreateFoobarRect(shw2, 400, 600, 400, 100)
        dm_ret = dm.FoobarLock(foobar)
        dm_ret = dm.FoobarSetFont(foobar, "宋体", 9, 0)
    End If       
End Sub
Sub SDelay(时间)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : Call Lib.模拟真实键鼠.随机延时(时间 + (增量Y + 增量Y) * (增量Y / 2))
End Sub
SUB ydsbz(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标 + 增量X, 屏幕Y坐标 + 增量Y) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Sub
SUB ydsby(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标, 屏幕Y坐标) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标右键单击()
End Sub
Sub 从赛利亚房间出来
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    If 赛利亚x > 0 and 赛利亚y > 0 Then
        日志 = Now & " [ 切换至赛利亚房间:准备检测疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        SDelay 200
        Call 识别疲劳
        Call 识别材料
        Do
            dm_ret = dm.FindStr(279,0,766,280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
            If 装备栏x > 0 Then
                dm.KeyPress 73
                SDelay 300
            Else     
                Exit Do
            End If
        Loop
        MySec2 = Second(Now)
        Do
            dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
            If 虚祖首都素喃x >= 0 Then
                SDelay 300
                dm.KeyUp 40
                Plugin.lxj_Plug.lxj_ReleaseMemory -1
                日志 = Now & " [ 到达:虚祖首都素喃 准备行走置副本门口 ] "
                dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                SDelay 600
                ydsby 5, 500
                ydsby  5, 500
                SDelay 3000
                dm.KeyDown 38
                SDelay 1200
                dm.KeyUp 38
                dm.KeyUp 38
                SDelay 500
                Do
                    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                    If 装备x > 0 Then
                        dm.KeyUp 39
                        dm.KeyUp 39
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                        Exit Sub
                    Else  
                        dm.KeyDown 39
                    End If
                Loop
                //                Call  城镇寻路
            Else
                dm.KeyDown 40
                MySe2c = Second(Now)
                SDelay 100
                MySe2c3 = MySe2c - MySec2
                If abs(MySe2c3) >= 4 Then
                    日志 = Now & " [ 不在地区:虚祖首都素喃 准备使用瞬间移动药剂前往] "
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    SDelay 300
                Else                              
                    //                    dm_ret = dm.FoobarPrintText(foobar, "出赛利亚房间超时检测剩余秒数:" & abs(MySe2c3 - 4), "ff0000")                          
                End If
            End If
        Loop
    End If
End Sub// 赛利亚放假出来兑换票 扫拍
Sub 识别疲劳
    Dim 疲劳数据
    疲劳数据 = 识别疲劳值
    If 疲劳数据 <> 0 Then
        日志 = Now & " [ 疲劳检测:还有疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
    Else
        dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
        当前刷到第几个角色 = 当前刷到第几个角色 + 1
        日志 =  Now & " [ 疲劳检测:没有疲劳了准备切换角色 当前刷置角色 " & 当前刷到第几个角色 & "]"
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        If 当前刷到第几个角色 = int(Form1.刷多少角色.Text) Then
            dm.KeyPress 123
        Else
            Call 更换角色(0)
        End If             
    End If
End Sub
Sub 更换角色(f)
    Do
        dm_ret = dm.FindStr(132, 530, 304, 564, "删除", "ddc593-000000", 1.0, 删除x, 删除y)
        If 删除x < 0 Then
            dm_ret = dm.FindStr(441, 168, 656, 363, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
            If 游戏指南x < 0 and 游戏指南y < 0 Then
                dm.KeyPress 27
                SDelay 300
            Else
                SDelay 600
                ydsbz 384, 443
                SDelay 300
            End If
        Else     
            SDelay 600
            日志 = Now & " [ 小退游戏进入选择角色界面 ]"
            dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")     
            SDelay 300
            If f = 1 Then
                dm.KeyPress 39
                SDelay 600
            End If
            dm.KeyPress 32
            SDelay 600
            Do
                dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
                If 赛利亚x > 0 Then
                    日志 = Now & " [ 进入赛利亚房间重 ]"
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    Exit Do
                Else
                    dm_ret = dm.FindStr(319, 104, 578, 263, "×", "ede5aa-000000", 1.0, 叉x, 叉y)
                    If 叉x > 0 Then
                        日志 = Now & " [ 出现遮挡物准备关闭 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        ydsbz 叉x, 叉y
                        SDelay 300
                        日志 = Now & " [ 关闭遮挡物 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        Exit Do
                    End If
                End If
            Loop
            RestartScript
            Exit Do
        End If
    Loop
End Sub
Function 城镇寻路()
    x = 350
    y = 315
    dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
    If 虚祖首都素喃x > 0 Then
        Do
            dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
            If 搜索x > 0 and 搜索y > 0 Then
                TracePrint "打开大地图"
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 打开大地图 ]", "ff0000")
                Exit Do  
            Else   
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在打开大地图 ]", "ff0000")
                dm.KeyPress 78
                Delay 300
            End If
        Loop
    End If
    Do
        dm_ret = dm.FindStr(142, 134, 545, 434, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
        If 城镇坐标x >= 0 and 城镇坐标y >= 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在执行前往副本门口 ]", "ff0000")
            相差距离x = 城镇坐标x - x
            相差距离y = 城镇坐标y - y
            If 相差距离x > 0 Then
                dm.KeyDown 37
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 左方向到达 ]", "ff0000")
                        dm.KeyUp 37
                        Exit Do
                    End If
                Loop
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225, 196, 500, 447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 上方向到达 ]", "ff0000")
                            Delay 300
                            dm.KeyUp 38
                            dm.KeyUp 38
                            dm.KeyUp 38
                            Do
                                dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
                                If 搜索x > 0 Then
                                    dm.KeyPress 78
                                    SDelay 300
                                    Exit Do
                                End If
                            Loop
                            dm.KeyDown 39
                            Do
                                dm_ret = dm.FindStr(184, 117, 680, 253, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                                If 装备x > 0 Then
                                    dm.KeyUp 39
                                    dm.KeyUp 39
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                                    Exit Do
                                End If
                            Loop
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                End If
                Exit Do
            ElseIf 相差距离x < 0 Then
                Rem 反方向修复
                dm.KeyDown 39
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        TracePrint "右方向到达"
                        dm.KeyUp 39
                        Exit Do
                    End If
                Loop
                dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                相差距离y = 城镇坐标y - y
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "上方向到达"
                            Delay 300
                            dm.KeyUp 38
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "下方向到达"
                            Delay 300
                            dm.KeyUp 40
                            Exit Do
                        End If
                    Loop                                                                                          
                End If
                Exit Do
            End If
        End If
    Loop
End Function

Sub 识别虚弱状态
    恢复状态 = 1// 1=契约恢复 2=金币恢复 3=站街恢复
    If Form1.金币恢复.Value = 1 Then
        恢复状态 = 2
    ElseIf Form1.契约恢复.Value = 1 Then
        恢复状态 = 1
    ElseIf Form1.站街恢复.Value = 1 Then
        恢复状态 = 3
    End If
    DO   
        dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX,intY)
        If intX > 0 AND intY > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 虚弱状态 ]", "ff0000")
            SDelay 2200
            If 恢复状态 = 1 Then
                ydsbz intX, intY
                SDelay 3000
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "契约恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2, intY2
                End If
            ElseIf 恢复状态 = 2 Then
                ydsbz intX, intY
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "金币恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2 + 10, intY2 + 10
                End If              
            ElseIf 恢复状态 = 3 Then
                Do
                    dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX3,intY3)
                    If intX3 < 0 AND intY3 < 0 Then
                        SDelay 5000
                        Exit Sub
                    End If
                Loop
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 没虚弱 ]", "ff0000")
            Exit Do  
        End If
    Loop
End Sub
Sub 清理背包
    Do
        dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intxX2, intyY2)
        If intxX2 > 0 and intyY2 > 0 Then   
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包满了准备清理背包 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            Rem 修复点击装备分解
            dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解", "e6c89b-000000", 1.0, intX, intY)
            If intX > 0 and intY > 0 Then
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(0, 0, 800, 600, "分解装备", "e6c89b-000000", 1.0, 分解装备X, 分解装备Y)
                    If 分解装备X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击分解装备 ]", "ff0000")
                        ydsbz 分解装备X, 分解装备Y
                        SDelay 300
                        Exit Do
                    Else
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备点分解装备被遮挡将移除遮挡 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        Goto 修复点击装备分解
                    End if
                Loop// 点击分解装备
                SDelay  600
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(全部分解X, 全部分解Y)
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//移动到全部分解
                SDelay 600
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备勾选条件 ]", "ff0000")
                If Form1.分蓝.Value = 1 Then
                    分解模式 = 1// 1 分蓝卖紫白 2 分蓝白卖紫 3 全部分解
                    勾选蓝 = True:勾选白 = False:全部勾选 = False
                ElseIf Form1.分蓝白.Value = 1 Then
                    分解模式 = 2
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = False
                ElseIf Form1.全部分.Value = 1 Then
                    分解模式 = 3
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = True
                End If
                Do
                    dm_ret = dm.FindStrFast(215,358,344,450,"普通","ffffff-000000",1.0,pX,pY)'先查找普通这个字,然后根据返回的坐标来判断是否勾选
                    If pX > 0 And pY > 0 Then
                        dm_ret = dm.FindStrFast(px-1,py-1,px+80,py+14,"√","ffae00-000000",1.0,jX,jY)'根据普通返回的坐标,选择出一个区域能够查找到勾选,如果没有,则点击
                        If jX > 0 And jY > 0 Then
                            If 勾选白 = False Then
                                SDelay 300
                                ydsbz px, py
                                Exit Do
                            Else     
                                Exit Do                           
                            End If
                        Else
                            If 勾选白 = True Then
                                SDelay 300
                                ydsbz px, py
                                SDelay 100
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选白色 ]", "ff0000")
                                Exit Do
                            Else     
                                Exit Do  
                            End If
                        End If
                    End If
                Loop
                SDelay 300
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "高级", "68d5ed-000000", 1.0, gX, gY)
                    If gX > 0 And gY > 0 Then
                        dm_ret = dm.FindStrFast(gx-1,gy-1,gx+80,gy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 勾选蓝 = False Then
                                SDelay 300
                                ydsbz jx, jy
                                Exit Do
                            Else     
                                Exit Do                           
                            End if
                        Else
                            If 勾选蓝 = True Then
                                SDelay 300
                                ydsbz gX, gY
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选蓝色 ]", "ff0000")                              
                                Exit Do
                            Else     
                                Exit Do  
                            End if
                        End If
                    End If
                Loop
                SDelay 500
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "稀有", "b36bff-000000", 1.0, xX, xY)
                    If xX > 0 And xY > 0 Then
                        dm_ret = dm.FindStrFast(xx-1,xy-1,xx+80,xy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 全部分 = False Then
                                SDelay 300
                                ydsbz xx, xy
                                Exit Do
                            Else     
                                Exit Do
                            End If
                        Else
                            If 全部分 = True Then
                                SDelay 300
                                ydsbz xx, xy
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选紫色 ]", "ff0000")                           
                            Else   
                                Exit Do  
                            End If
                            Exit Do
                        End If
                    End If
                Loop
                If 全部分 = True Then
                    Exit Do
                End If
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选条件完毕开始分解 ]", "ff0000")
                Do
                    SDelay 300
                    TracePrint  2222
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        ydsbz 全部分解X, 全部分解Y
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//点击全部分解
                SDelay 300
                SDelay 300
                dm_ret = dm.FindStr(0, 0, 800, 600, "确认", "ddc593-000000", 1.0, 确认X, 确认Y)
                If 确认X > 0 Then
                    SDelay 200
                    ydsbz 确认X, 确认y
                    SDelay 200
                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击确认分解 ]", "ff0000")
                End If
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解成功", "ffffb8-000000", 1.0, 分解成功X, 分解成功Y)
                    If 分解成功X > 0 Then
                        SDelay 300
                        dm.KeyPress 27
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解完成 ]", "ff0000")
                        Exit Do
                    Else  
                        dm_ret = dm.FindStr(0, 0, 800, 600, "缺少全部分解包括的道具", "ffffff-000000", 1.0, 分解失败X, 分解失败Y)
                        If 分解失败X > 0 Then
                            SDelay 300
                            dm.KeyPress 27                                 
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解分解失败 ]", "ff0000")
                            Exit Do
                        End If
                    End If
                Loop
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                    If 游戏指南x > 0 Then
                        dm.KeyPress 27
                        SDelay 300
                    Else   
                        Exit Do
                    End If
                Loop//关闭多余菜单            
                SDelay 1200
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备出售物品 ]", "ff0000")
                SDelay 400
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If      
                SDelay 1200
                dm_ret = dm.FindStr(0, 0, 800, 600, "商店", "e6c89b-000000", 1.0, intX6, intY6)
                If intX6 > 0 and intY6 > 0 Then         
                    SDelay 600
                    ydsbz intX6, intY6
                    SDelay 520
                    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                    SDelay 1200
                    dm_ret = dm.FindStr(6, 41, 310, 205, "商店", "ffffb8-000000", 1.0, intX66, intY66)
                    If intX66 > 0 and intY66 > 0 Then
                        SDelay 700
                        Call 出售物品
                    End if
                End If
            Else            
                ydsbz 525,31      
            End If
        Else     
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包没满 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Sub 出售物品
    ydsbz 493, 245
    SDelay 300
    dm_ret = dm.FindStrS(540, 389, 748, 529, "整理", "ddc593-000000", 0.9, intX2, intY2)
    If intX2 > 0 and intY2 > 0 Then
        ydsbz intX2, intY2
        SDelay 300
    End If
    Do
        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(486 + 增值, 275 + 增值2)
        SDelay 400
        dm_ret = dm.FindStrS(0, 0, 790, 546, "传说|神器|史诗", "ff7800-000000|ff00ff-000000|ffb400-000000", 0.9, 装备X, 装备Y)
        If 装备X > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检测到神器或传说装备跳过出售当前 ]", "ff0000")
        Else
            Call 拖动出售
        End If
        SDelay 100
        Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
        行数 = 行数 + 1
        If 行数 < 8 Then
            增值 = 增值 + 30
        ElseIf 行数 = 8 Then
            增值 = 0
            增值2 = 30
        ElseIf 行数 >= 7 AND 行数 < 16 Then
            增值2 = 30
            增值 = 增值 + 30
        ElseIf 行数 = 16 Then
            增值 = 0
            增值2 = 60
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 出售装备完毕 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                If 游戏指南x > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop//关闭多余菜单            
            Exit Do
        ElseIf 行数 >= 15 AND 行数 < 24 Then
            增值2 = 60
            增值 = 增值 + 30
        ElseIf 行数 = 24 Then
            增值 = 0
            增值2 = 90
        ElseIf 行数 >= 23 AND 行数 < 32 Then
            增值2 = 90
            增值 = 增值 + 30
        ElseIf 行数 = 32 Then
            增值2 = 120
            增值 = 0                
        ElseIf 行数 >= 31 AND 行数 < 40 Then
            增值2 = 120
            增值 = 增值 + 30                 
        End If
    Loop
End Sub
Function 拖动出售()
    MySec = Second(Now)
    增量X = Left(MySec, 1)
    增量Y = Right(MySec, 1)
    SDelay 300 + (增量Y + 增量Y) + (增量Y / 2)
    LeftDown 1
    SDelay 100
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(323 + 增量X, 398 + 增量Y)
    SDelay 100
    LeftUp 1
    SDelay 200
    Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Function
Sub 关闭遮挡
    dm_ret = dm.FindStr(319, 104, 578, 263, "关闭", "f7d65a-000000", 1.0, 关闭x, 关闭y)
    If 关闭x > 0 Then
        ydsbz 关闭x, 关闭y
        SDelay 200
    End If
End Sub
Function  识别疲劳值
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(393, 553)
    SDelay 300
    dm_ret = dm.FindStr(191, 467, 629, 557, "疲劳值:", "ffffff-000000", 1.0, 疲劳x, 疲劳y)
    If 疲劳x > 0 Then
        SDelay 300
        s = dm.Ocr(疲劳x - 1, 疲劳y - 1, 疲劳x + 103, 疲劳y + 14, "ffffff-000000", 1.0)
        疲劳 = Split(s, "疲劳值:")
        疲劳2 = Split(疲劳(1), "/")
        TracePrint 疲劳2(0)
        识别疲劳值 = 疲劳2(0)
    End If
End Function
Function 怪物坐标
    s = dm.Ocr(637,38,754,65, "ffffff-000000", 1.0)
    dm_ret = dm.FindStr(657, 41, 731, 63, s, "ffffff-000000", 1.0, 赛利亚x2, 赛利亚y2)
    If 赛利亚x2 > 0 Then
        怪物坐标 = True
    Else        
        怪物坐标 = False
    End If
End Function
Function 翻牌状态
    dm_ret = dm.FindStrFast(0, 0, 794, 200, "翻牌状态", "d2b709-000000|ffffbb-000000|ffdd55-000000|eecc55-000000|ddaa44-000000|ffffff-000000|664422-000000|aa8833-000000", 0.8, intX, intY)
    //    dm_ret = dm.FindStr(264, 12, 556, 152, "VS", "000000-404040", 1.0, intX2, inty2)
    If intX > 0 Then
        翻牌状态 = True
    Else   
        翻牌状态 = False
    End If
End Function
Sub 打怪测试
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 预备打怪线程 ]", "ff0000")
    Do
        dm_ret = dm.FindColor(479, 70, 491, 78, "000000-000000", 1.0, 0, intX2, intY2)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "808080-404040", 1.0, intXc, intYc)
        Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
        If intX2 < 0 Then
            Call 冷却释放
            首次拾取 = False
        Else  
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 怪物死亡 ]", "ff0000")
            If intX > 0 and intX2c > 0 Then
                If 检测背包 = False Then
                    dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                    ydsbz intX, intY
                    DO
                        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
                        If 跳过x > 0 Then
                            dm.KeyPress 32
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
                        ElseIf 跳过x < 0 Then
                            dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                            If intX < 0 Then
                                If 怪物坐标 = False  Then
                                    DM.KeyPress 32
                                Else
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                                    Exit Do
                                End If
                            Else     
                                ydsbz intX, intY
                                SDelay 300
                                ydsbz 0, 0
                            End If
                        End If
                    Loop
                    Exit Do
                ElseIf 检测背包 = True Then
                    Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                    ydsbz intX2c, intY2c
                    Exit Do
                End If
            ElseIf intX2 > 0 AND intX < 0 AND intX2c < 0 Then
                If 首次拾取 = False Then
                    SDelay 300
                    Call 拾取
                    首次拾取 = True
                    SDelay 200
                End If
            ElseIf intXc > 0 Then
                Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                ydsbz intX2c, intY2c                     
            End If
        End If
    Loop
End Sub
Sub 拾取
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 开始拾取 ]", "ff0000")
    SDelay 300
    DM.KeyPress 86
    SDelay 300
    DM.KeyDown 88
    SDelay 700
    DM.KeyUp 88
End Sub
Sub 释放技能
    Do
        If 怪物坐标 = False  Then
            If Form1.冷却技能.Value = 1 Then
                Call 冷却释放
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 释放技能完毕 ] ", "ff0000")
            Exit Do
        End If
    Loop  
End Sub
Sub 冷却释放
    dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
    If 技能x = 542 AND 技能y = 533 Then
        dm.KeyPress 81
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Q ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 533 Then   
        dm.KeyPress 87
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: W ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 533 Then
        DM.KeyPress 69
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: E ]", "ff0000")
        SDelay 10
    ElseIf  技能x = 632 AND 技能y = 533 Then
        dm.KeyPress 82
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: R ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 533 Then
        dm.KeyPress 84
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: T ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 533 Then
        dm.KeyPress 89
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Y ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 542 AND 技能y = 564 Then
        dm.KeyPress 65
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: A ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 564 Then   
        dm.KeyPress 83
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:S ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 564 Then
        DM.KeyPress 68
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:D ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 632 AND 技能y = 564 Then
        dm.KeyPress 70
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:F ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 564 Then
        dm.KeyPress 71
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: G ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 564 Then
        dm.KeyPress 72
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: H ]", "ff0000")
        SDelay 10
    ElseIf 技能x < 0 Then
        If Form1.普通攻击.Value = 1 Then
            dm.KeyPress 88
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: X ]", "ff0000")
            SDelay 200
        End If
    End If
End Sub
Sub 释放
    Dim 技能键(13)
    分割次数 = len(Form1.赋值技能.Text)
    For i = 1 To 分割次数
        技能键(i)=Mid(技能, i, 1)       
        If 怪物坐标 = True  Then
            TracePrint "通关了退出释放技能"
            Exit Sub
        Else
            dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
            If Form1.普通攻击.Value = 1 Then
                If 技能x < 0 Then
                    dm.KeyPress 88
                End If
            End If
            SDelay 160
            If UCase(技能键(i)) = "A" Then
                dm.KeyPress 65
                SDelay 160
            ElseIf UCase(技能键(i)) = "S" Then
                dm.KeyPress 83
                SDelay 160
            ElseIf UCase(技能键(i)) = "D" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "F" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "G" Then
                dm.KeyPress 71
                SDelay 160
            ElseIf UCase(技能键(i)) = "H" Then
                dm.KeyPress 72
                SDelay 160
            ElseIf UCase(技能键(i)) = "Q" Then
                dm.KeyPress 81
                SDelay 160
            ElseIf UCase(技能键(i)) = "W" Then
                dm.KeyPress 87
                SDelay 160
            ElseIf UCase(技能键(i)) = "E" Then
                dm.KeyPress 69
                SDelay 160
            ElseIf UCase(技能键(i)) = "R" Then
                dm.KeyPress 82
                SDelay 160
            ElseIf UCase(技能键(i)) = "T" Then
                dm.KeyPress 84
                SDelay 160
            ElseIf UCase(技能键(i)) = "Y" Then
                dm.KeyPress 89
                SDelay 160
            ElseIf UCase(技能键(i)) = "X" Then
                dm.KeyPress 88
                SDelay 160
            End If
            SDelay 300            
        End If
    Next
End Sub
Sub 还任务
    Do
        dm_ret = dm.FindStr(268, 497, 506, 548, "完成任务", "cc4411-404040", 1.0, 完成任务x, 完成任务y)
        If 完成任务x > 0 Then
            ydsbz 完成任务x, 完成任务y
        Else   
            For 12
                dm.KeyPress 32
            Next
            Exit Do
        End If
    Loop
    dm.KeyPress 27
End Sub
Function 检测背包
    dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intx2, inty2)
    If intx2 > 0 and inty2 > 0 Then
        检测背包 = True
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包满了 ] ", "ff0000")
    Else
        检测背包 = False
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包没满 ] ", "ff0000")
    End If
End Function
Function 识别疲劳2
    dm_ret = dm.FindColor(278,545,513,559, "e60044-000000|b30026-000000|be6a83-000000", 0.9, 0, intX, intY)
    dm_ret = dm.FindColor(278,545,513,559, "00e6e6-000000|008ff1-000000|80a8a8-000000", 0.9, 0, intX2, intY2)
    If intX > 0 and intY > 0 OR intX2 > 0 and intY2 > 0 Then
        识别疲劳 = True
        TracePrint "还有疲劳"
        SDelay 700
    Else
        识别疲劳 = False
        TracePrint "没疲劳了"
        SDelay 800
    End If
End Function
Sub 识别材料
    Do
        Rem 重新扫描
        dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
        If 装备栏x < 0 Then
            dm.KeyPress 73
            SDelay 300
        Else
            Call Lib.模拟真实键鼠.随机慢慢移动鼠标(装备栏x, 装备栏y)
            SDelay 200
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "材料", "ffffb8-000000", 1.0, 材料x, 材料y)
                If 材料x < 0 Then
                    ydsbz 593, 245
                    ydsbz 593, 245
                Else
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 准备识别材料 ] ", "ff0000")
            红色小晶块 = dm.Ocr(730, 312, 761, 341, "ffffff-000000", 1.0)
            dm_ret = dm.FoobarPrintText(foobar, now & " [红色小晶块数量: ] " & 红色小晶块, "ff0000")
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "wj.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                无尽的永恒 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [无尽的永恒数量: ] " & 无尽的永恒, "ff0000")
            Else     
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 没有找到无尽的永恒 ] " & 无尽的永恒, "ff0000")
            End If
            SDelay 302
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "任务", "ffffb8-000000", 1.0, 材料2x, 材料2y)
                If 材料2x < 0 Then
                    ydsbz 690, 246
                    ydsbz 690, 246
                Else   
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "hl.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                黄龙票 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [黄龙门票数量:] " & 黄龙票, "ff0000")
            End If
            Do
                dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)       
                If 装备栏x > 0 Then
                    DM.KeyPress 73
                    SDelay 300
                Else        
                    Exit Do
                End If
            Loop
            SDelay 150
            疲劳值 = 识别疲劳值
            dm_ret = dm.FoobarPrintText(foobar, now & " [剩余疲劳 ] " & 疲劳值, "ff0000")
            可打次数 = 疲劳值 / 6
            dm_ret = dm.FoobarPrintText(foobar, now & " [可打黄龙次数] " & 可打次数, "ff0000")
            If 1300 > 红色小晶块 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 红色小晶块不足现在开始购买 ] ", "ff0000")
                Call 扫拍("红色小晶块", Form1.HS.Text, "1000")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 130 > 无尽的永恒 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 无尽的永恒块不足现在开始购买 ] " , "ff0000")
                Call 扫拍("无尽的永恒", Form1.wj.Text, "130")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 可打次数 > 黄龙票 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 当前门票不足准备前往小铁柱兑换门票 ] ", "ff0000")
                Call 行走到小铁柱
            End If
            Exit Do
        End If
    Loop
End Sub
Event Form1.Load
    Call 注册
End EventGlobal 检测入场券, 检测材料, 当前刷到第几个角色, 角色名字, foobar, MySec2, 角色名称, 进入黄龙咯
Global 红色小晶块, 无尽的永恒, 黄龙票, 疲劳值, 重新定义
Dimenv 打怪线程, 检测死亡线程, 超时线程, 进图线程, 购买门票线程, 城镇线程, 调控线程
Call 注册
If Form1.赛利亚启动.Value = 1 Then
    Do
        Call 调控
    Loop
ElseIf Form1.自动登入.Value = 1 Then
    TracePrint 1
End If
//Call 打怪测试
//调控线程 = BeginThread(调控)
SDelay 300
Sub 调控
    If 城镇房间 = 1 or 城镇房间 = 2 Then
        //        城镇线程 = BeginThread(城镇caoz)
        Call 城镇caoz
    ElseIf  城镇房间 = 3
        //        进图线程 = BeginThread(进入黄龙)
        Call 进入黄龙
    ElseIf 怪物坐标 = True     
        //        打怪线程 = BeginThread(打怪测试)
        Call 打怪测试
    Else
        Call 更换角色(1)
    End If
End Sub

Sub 城镇caoz
    Dim pl
    Do
        If 城镇房间 = 1 Then
            Call 从赛利亚房间出来
        ElseIf 城镇房间 = 2 Then
            Call 清理背包
            Pl = 识别疲劳值()
            If pl = 0 Then
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 没有疲劳准备切换角色 ]", "ff0000")
                Call 更换角色(0)
            Else        
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 还有疲劳 ]", "ff0000")
            End If
            Call 识别虚弱状态
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检查完成准备进图 ]", "ff0000")
            Call 准备进图
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 退出城镇线程 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Do
    Call 调控
Loop
Do
Loop
Sub 准备进图
    Do
        If 城镇房间 = 3 Then
            DM.KeyUp 39
            DM.KeyUp 39
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入选择地图 ]", "ff0000")
            Exit Do
        Else     
            dm.KeyDown 40
            SDelay 300
            dm.KeyUp 40
            dm.KeyDown 37
            SDelay 300
            dm.KeyUp 37
            SDelay 30
            dm.KeyDown 39
            SDelay 2200
        End If       
    Loop
End Sub
Sub 进入黄龙
    DO
        dm_ret = dm.FindPic(395, 289, 757, 481, "hldh.bmp|hldh2.bmp", "000000", 0.9, 0, intX, intY)
        If intX > 0 Then
            ydsbz intX, intY
            ydsbz intX, intY
            Exit Do
        End If
    Loop
    DO
        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
        If 跳过x > 0 Then
            dm.KeyPress 32
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
        Else     
            If 怪物坐标 = False  Then
                DM.KeyPress 32
            Else
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                进入黄龙咯 = True
                Exit Do
            End If           
        End If
    Loop
    Call 打怪测试
End Sub
Function 城镇房间
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备分解x, 装备分解y)
    dm_ret = dm.FindStr(695, 535, 799, 572, "返回城镇", "ddc593-000000|ffffb8-000000", 1.0, intX, intY)
    dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
    If 赛利亚x > 0 Then
        城镇房间 = 1
    ElseIf 装备分解x > 0 Then
        城镇房间 = 2
    ElseIf intX > 0 Then
        城镇房间 = 3
    ElseIf 跳过x > 0 and 跳过y > 0 Then
        城镇房间 = 4
    End If
End Function
Sub 注册
    PutAttachment "c:\test_game","*.*"
    PutAttachment ".\Plugin" ,"RegDll.dll"
    Call Plugin.Regdll.reg("c:\game_script\dm.dll")
    Set dm = createobject("dm.dmsoft")
    ver = dm.ver()
    If len(ver) = 0 Then
        MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
        EndScript
    Else
        dm_ret = dm.SetPath("C:\黄龙\")
        dm_ret = dm.SetDict(0, "字库.txt")
        hwnd = dm.FindWindow("", "地下城与勇士")
        dm.MoveWindow hwnd, 0, 0
        dm_ret = dm.SetWindowState(hwnd, 12)
        foobar = dm.CreateFoobarRect(shw, 0, 600, 400, 100)
        foobar2 = dm.CreateFoobarRect(shw2, 400, 600, 400, 100)
        dm_ret = dm.FoobarLock(foobar)
        dm_ret = dm.FoobarSetFont(foobar, "宋体", 9, 0)
    End If       
End Sub
Sub SDelay(时间)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : Call Lib.模拟真实键鼠.随机延时(时间 + (增量Y + 增量Y) * (增量Y / 2))
End Sub
SUB ydsbz(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标 + 增量X, 屏幕Y坐标 + 增量Y) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Sub
SUB ydsby(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标, 屏幕Y坐标) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标右键单击()
End Sub
Sub 从赛利亚房间出来
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    If 赛利亚x > 0 and 赛利亚y > 0 Then
        日志 = Now & " [ 切换至赛利亚房间:准备检测疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        SDelay 200
        Call 识别疲劳
        Call 识别材料
        Do
            dm_ret = dm.FindStr(279,0,766,280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
            If 装备栏x > 0 Then
                dm.KeyPress 73
                SDelay 300
            Else     
                Exit Do
            End If
        Loop
        MySec2 = Second(Now)
        Do
            dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
            If 虚祖首都素喃x >= 0 Then
                SDelay 300
                dm.KeyUp 40
                Plugin.lxj_Plug.lxj_ReleaseMemory -1
                日志 = Now & " [ 到达:虚祖首都素喃 准备行走置副本门口 ] "
                dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                SDelay 600
                ydsby 5, 500
                ydsby  5, 500
                SDelay 3000
                dm.KeyDown 38
                SDelay 1200
                dm.KeyUp 38
                dm.KeyUp 38
                SDelay 500
                Do
                    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                    If 装备x > 0 Then
                        dm.KeyUp 39
                        dm.KeyUp 39
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                        Exit Sub
                    Else  
                        dm.KeyDown 39
                    End If
                Loop
                //                Call  城镇寻路
            Else
                dm.KeyDown 40
                MySe2c = Second(Now)
                SDelay 100
                MySe2c3 = MySe2c - MySec2
                If abs(MySe2c3) >= 4 Then
                    日志 = Now & " [ 不在地区:虚祖首都素喃 准备使用瞬间移动药剂前往] "
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    SDelay 300
                Else                              
                    //                    dm_ret = dm.FoobarPrintText(foobar, "出赛利亚房间超时检测剩余秒数:" & abs(MySe2c3 - 4), "ff0000")                          
                End If
            End If
        Loop
    End If
End Sub// 赛利亚放假出来兑换票 扫拍
Sub 识别疲劳
    Dim 疲劳数据
    疲劳数据 = 识别疲劳值
    If 疲劳数据 <> 0 Then
        日志 = Now & " [ 疲劳检测:还有疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
    Else
        dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
        当前刷到第几个角色 = 当前刷到第几个角色 + 1
        日志 =  Now & " [ 疲劳检测:没有疲劳了准备切换角色 当前刷置角色 " & 当前刷到第几个角色 & "]"
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        If 当前刷到第几个角色 = int(Form1.刷多少角色.Text) Then
            dm.KeyPress 123
        Else
            Call 更换角色(0)
        End If             
    End If
End Sub
Sub 更换角色(f)
    Do
        dm_ret = dm.FindStr(132, 530, 304, 564, "删除", "ddc593-000000", 1.0, 删除x, 删除y)
        If 删除x < 0 Then
            dm_ret = dm.FindStr(441, 168, 656, 363, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
            If 游戏指南x < 0 and 游戏指南y < 0 Then
                dm.KeyPress 27
                SDelay 300
            Else
                SDelay 600
                ydsbz 384, 443
                SDelay 300
            End If
        Else     
            SDelay 600
            日志 = Now & " [ 小退游戏进入选择角色界面 ]"
            dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")     
            SDelay 300
            If f = 1 Then
                dm.KeyPress 39
                SDelay 600
            End If
            dm.KeyPress 32
            SDelay 600
            Do
                dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
                If 赛利亚x > 0 Then
                    日志 = Now & " [ 进入赛利亚房间重 ]"
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    Exit Do
                Else
                    dm_ret = dm.FindStr(319, 104, 578, 263, "×", "ede5aa-000000", 1.0, 叉x, 叉y)
                    If 叉x > 0 Then
                        日志 = Now & " [ 出现遮挡物准备关闭 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        ydsbz 叉x, 叉y
                        SDelay 300
                        日志 = Now & " [ 关闭遮挡物 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        Exit Do
                    End If
                End If
            Loop
            RestartScript
            Exit Do
        End If
    Loop
End Sub
Function 城镇寻路()
    x = 350
    y = 315
    dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
    If 虚祖首都素喃x > 0 Then
        Do
            dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
            If 搜索x > 0 and 搜索y > 0 Then
                TracePrint "打开大地图"
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 打开大地图 ]", "ff0000")
                Exit Do  
            Else   
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在打开大地图 ]", "ff0000")
                dm.KeyPress 78
                Delay 300
            End If
        Loop
    End If
    Do
        dm_ret = dm.FindStr(142, 134, 545, 434, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
        If 城镇坐标x >= 0 and 城镇坐标y >= 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在执行前往副本门口 ]", "ff0000")
            相差距离x = 城镇坐标x - x
            相差距离y = 城镇坐标y - y
            If 相差距离x > 0 Then
                dm.KeyDown 37
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 左方向到达 ]", "ff0000")
                        dm.KeyUp 37
                        Exit Do
                    End If
                Loop
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225, 196, 500, 447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 上方向到达 ]", "ff0000")
                            Delay 300
                            dm.KeyUp 38
                            dm.KeyUp 38
                            dm.KeyUp 38
                            Do
                                dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
                                If 搜索x > 0 Then
                                    dm.KeyPress 78
                                    SDelay 300
                                    Exit Do
                                End If
                            Loop
                            dm.KeyDown 39
                            Do
                                dm_ret = dm.FindStr(184, 117, 680, 253, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                                If 装备x > 0 Then
                                    dm.KeyUp 39
                                    dm.KeyUp 39
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                                    Exit Do
                                End If
                            Loop
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                End If
                Exit Do
            ElseIf 相差距离x < 0 Then
                Rem 反方向修复
                dm.KeyDown 39
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        TracePrint "右方向到达"
                        dm.KeyUp 39
                        Exit Do
                    End If
                Loop
                dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                相差距离y = 城镇坐标y - y
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "上方向到达"
                            Delay 300
                            dm.KeyUp 38
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "下方向到达"
                            Delay 300
                            dm.KeyUp 40
                            Exit Do
                        End If
                    Loop                                                                                          
                End If
                Exit Do
            End If
        End If
    Loop
End Function

Sub 识别虚弱状态
    恢复状态 = 1// 1=契约恢复 2=金币恢复 3=站街恢复
    If Form1.金币恢复.Value = 1 Then
        恢复状态 = 2
    ElseIf Form1.契约恢复.Value = 1 Then
        恢复状态 = 1
    ElseIf Form1.站街恢复.Value = 1 Then
        恢复状态 = 3
    End If
    DO   
        dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX,intY)
        If intX > 0 AND intY > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 虚弱状态 ]", "ff0000")
            SDelay 2200
            If 恢复状态 = 1 Then
                ydsbz intX, intY
                SDelay 3000
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "契约恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2, intY2
                End If
            ElseIf 恢复状态 = 2 Then
                ydsbz intX, intY
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "金币恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2 + 10, intY2 + 10
                End If              
            ElseIf 恢复状态 = 3 Then
                Do
                    dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX3,intY3)
                    If intX3 < 0 AND intY3 < 0 Then
                        SDelay 5000
                        Exit Sub
                    End If
                Loop
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 没虚弱 ]", "ff0000")
            Exit Do  
        End If
    Loop
End Sub
Sub 清理背包
    Do
        dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intxX2, intyY2)
        If intxX2 > 0 and intyY2 > 0 Then   
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包满了准备清理背包 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            Rem 修复点击装备分解
            dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解", "e6c89b-000000", 1.0, intX, intY)
            If intX > 0 and intY > 0 Then
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(0, 0, 800, 600, "分解装备", "e6c89b-000000", 1.0, 分解装备X, 分解装备Y)
                    If 分解装备X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击分解装备 ]", "ff0000")
                        ydsbz 分解装备X, 分解装备Y
                        SDelay 300
                        Exit Do
                    Else
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备点分解装备被遮挡将移除遮挡 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        Goto 修复点击装备分解
                    End if
                Loop// 点击分解装备
                SDelay  600
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(全部分解X, 全部分解Y)
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//移动到全部分解
                SDelay 600
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备勾选条件 ]", "ff0000")
                If Form1.分蓝.Value = 1 Then
                    分解模式 = 1// 1 分蓝卖紫白 2 分蓝白卖紫 3 全部分解
                    勾选蓝 = True:勾选白 = False:全部勾选 = False
                ElseIf Form1.分蓝白.Value = 1 Then
                    分解模式 = 2
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = False
                ElseIf Form1.全部分.Value = 1 Then
                    分解模式 = 3
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = True
                End If
                Do
                    dm_ret = dm.FindStrFast(215,358,344,450,"普通","ffffff-000000",1.0,pX,pY)'先查找普通这个字,然后根据返回的坐标来判断是否勾选
                    If pX > 0 And pY > 0 Then
                        dm_ret = dm.FindStrFast(px-1,py-1,px+80,py+14,"√","ffae00-000000",1.0,jX,jY)'根据普通返回的坐标,选择出一个区域能够查找到勾选,如果没有,则点击
                        If jX > 0 And jY > 0 Then
                            If 勾选白 = False Then
                                SDelay 300
                                ydsbz px, py
                                Exit Do
                            Else     
                                Exit Do                           
                            End If
                        Else
                            If 勾选白 = True Then
                                SDelay 300
                                ydsbz px, py
                                SDelay 100
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选白色 ]", "ff0000")
                                Exit Do
                            Else     
                                Exit Do  
                            End If
                        End If
                    End If
                Loop
                SDelay 300
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "高级", "68d5ed-000000", 1.0, gX, gY)
                    If gX > 0 And gY > 0 Then
                        dm_ret = dm.FindStrFast(gx-1,gy-1,gx+80,gy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 勾选蓝 = False Then
                                SDelay 300
                                ydsbz jx, jy
                                Exit Do
                            Else     
                                Exit Do                           
                            End if
                        Else
                            If 勾选蓝 = True Then
                                SDelay 300
                                ydsbz gX, gY
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选蓝色 ]", "ff0000")                              
                                Exit Do
                            Else     
                                Exit Do  
                            End if
                        End If
                    End If
                Loop
                SDelay 500
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "稀有", "b36bff-000000", 1.0, xX, xY)
                    If xX > 0 And xY > 0 Then
                        dm_ret = dm.FindStrFast(xx-1,xy-1,xx+80,xy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 全部分 = False Then
                                SDelay 300
                                ydsbz xx, xy
                                Exit Do
                            Else     
                                Exit Do
                            End If
                        Else
                            If 全部分 = True Then
                                SDelay 300
                                ydsbz xx, xy
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选紫色 ]", "ff0000")                           
                            Else   
                                Exit Do  
                            End If
                            Exit Do
                        End If
                    End If
                Loop
                If 全部分 = True Then
                    Exit Do
                End If
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选条件完毕开始分解 ]", "ff0000")
                Do
                    SDelay 300
                    TracePrint  2222
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        ydsbz 全部分解X, 全部分解Y
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//点击全部分解
                SDelay 300
                SDelay 300
                dm_ret = dm.FindStr(0, 0, 800, 600, "确认", "ddc593-000000", 1.0, 确认X, 确认Y)
                If 确认X > 0 Then
                    SDelay 200
                    ydsbz 确认X, 确认y
                    SDelay 200
                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击确认分解 ]", "ff0000")
                End If
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解成功", "ffffb8-000000", 1.0, 分解成功X, 分解成功Y)
                    If 分解成功X > 0 Then
                        SDelay 300
                        dm.KeyPress 27
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解完成 ]", "ff0000")
                        Exit Do
                    Else  
                        dm_ret = dm.FindStr(0, 0, 800, 600, "缺少全部分解包括的道具", "ffffff-000000", 1.0, 分解失败X, 分解失败Y)
                        If 分解失败X > 0 Then
                            SDelay 300
                            dm.KeyPress 27                                 
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解分解失败 ]", "ff0000")
                            Exit Do
                        End If
                    End If
                Loop
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                    If 游戏指南x > 0 Then
                        dm.KeyPress 27
                        SDelay 300
                    Else   
                        Exit Do
                    End If
                Loop//关闭多余菜单            
                SDelay 1200
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备出售物品 ]", "ff0000")
                SDelay 400
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If      
                SDelay 1200
                dm_ret = dm.FindStr(0, 0, 800, 600, "商店", "e6c89b-000000", 1.0, intX6, intY6)
                If intX6 > 0 and intY6 > 0 Then         
                    SDelay 600
                    ydsbz intX6, intY6
                    SDelay 520
                    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                    SDelay 1200
                    dm_ret = dm.FindStr(6, 41, 310, 205, "商店", "ffffb8-000000", 1.0, intX66, intY66)
                    If intX66 > 0 and intY66 > 0 Then
                        SDelay 700
                        Call 出售物品
                    End if
                End If
            Else            
                ydsbz 525,31      
            End If
        Else     
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包没满 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Sub 出售物品
    ydsbz 493, 245
    SDelay 300
    dm_ret = dm.FindStrS(540, 389, 748, 529, "整理", "ddc593-000000", 0.9, intX2, intY2)
    If intX2 > 0 and intY2 > 0 Then
        ydsbz intX2, intY2
        SDelay 300
    End If
    Do
        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(486 + 增值, 275 + 增值2)
        SDelay 400
        dm_ret = dm.FindStrS(0, 0, 790, 546, "传说|神器|史诗", "ff7800-000000|ff00ff-000000|ffb400-000000", 0.9, 装备X, 装备Y)
        If 装备X > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检测到神器或传说装备跳过出售当前 ]", "ff0000")
        Else
            Call 拖动出售
        End If
        SDelay 100
        Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
        行数 = 行数 + 1
        If 行数 < 8 Then
            增值 = 增值 + 30
        ElseIf 行数 = 8 Then
            增值 = 0
            增值2 = 30
        ElseIf 行数 >= 7 AND 行数 < 16 Then
            增值2 = 30
            增值 = 增值 + 30
        ElseIf 行数 = 16 Then
            增值 = 0
            增值2 = 60
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 出售装备完毕 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                If 游戏指南x > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop//关闭多余菜单            
            Exit Do
        ElseIf 行数 >= 15 AND 行数 < 24 Then
            增值2 = 60
            增值 = 增值 + 30
        ElseIf 行数 = 24 Then
            增值 = 0
            增值2 = 90
        ElseIf 行数 >= 23 AND 行数 < 32 Then
            增值2 = 90
            增值 = 增值 + 30
        ElseIf 行数 = 32 Then
            增值2 = 120
            增值 = 0                
        ElseIf 行数 >= 31 AND 行数 < 40 Then
            增值2 = 120
            增值 = 增值 + 30                 
        End If
    Loop
End Sub
Function 拖动出售()
    MySec = Second(Now)
    增量X = Left(MySec, 1)
    增量Y = Right(MySec, 1)
    SDelay 300 + (增量Y + 增量Y) + (增量Y / 2)
    LeftDown 1
    SDelay 100
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(323 + 增量X, 398 + 增量Y)
    SDelay 100
    LeftUp 1
    SDelay 200
    Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Function
Sub 关闭遮挡
    dm_ret = dm.FindStr(319, 104, 578, 263, "关闭", "f7d65a-000000", 1.0, 关闭x, 关闭y)
    If 关闭x > 0 Then
        ydsbz 关闭x, 关闭y
        SDelay 200
    End If
End Sub
Function  识别疲劳值
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(393, 553)
    SDelay 300
    dm_ret = dm.FindStr(191, 467, 629, 557, "疲劳值:", "ffffff-000000", 1.0, 疲劳x, 疲劳y)
    If 疲劳x > 0 Then
        SDelay 300
        s = dm.Ocr(疲劳x - 1, 疲劳y - 1, 疲劳x + 103, 疲劳y + 14, "ffffff-000000", 1.0)
        疲劳 = Split(s, "疲劳值:")
        疲劳2 = Split(疲劳(1), "/")
        TracePrint 疲劳2(0)
        识别疲劳值 = 疲劳2(0)
    End If
End Function
Function 怪物坐标
    s = dm.Ocr(637,38,754,65, "ffffff-000000", 1.0)
    dm_ret = dm.FindStr(657, 41, 731, 63, s, "ffffff-000000", 1.0, 赛利亚x2, 赛利亚y2)
    If 赛利亚x2 > 0 Then
        怪物坐标 = True
    Else        
        怪物坐标 = False
    End If
End Function
Function 翻牌状态
    dm_ret = dm.FindStrFast(0, 0, 794, 200, "翻牌状态", "d2b709-000000|ffffbb-000000|ffdd55-000000|eecc55-000000|ddaa44-000000|ffffff-000000|664422-000000|aa8833-000000", 0.8, intX, intY)
    //    dm_ret = dm.FindStr(264, 12, 556, 152, "VS", "000000-404040", 1.0, intX2, inty2)
    If intX > 0 Then
        翻牌状态 = True
    Else   
        翻牌状态 = False
    End If
End Function
Sub 打怪测试
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 预备打怪线程 ]", "ff0000")
    Do
        dm_ret = dm.FindColor(479, 70, 491, 78, "000000-000000", 1.0, 0, intX2, intY2)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "808080-404040", 1.0, intXc, intYc)
        Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
        If intX2 < 0 Then
            Call 冷却释放
            首次拾取 = False
        Else  
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 怪物死亡 ]", "ff0000")
            If intX > 0 and intX2c > 0 Then
                If 检测背包 = False Then
                    dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                    ydsbz intX, intY
                    DO
                        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
                        If 跳过x > 0 Then
                            dm.KeyPress 32
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
                        ElseIf 跳过x < 0 Then
                            dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                            If intX < 0 Then
                                If 怪物坐标 = False  Then
                                    DM.KeyPress 32
                                Else
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                                    Exit Do
                                End If
                            Else     
                                ydsbz intX, intY
                                SDelay 300
                                ydsbz 0, 0
                            End If
                        End If
                    Loop
                    Exit Do
                ElseIf 检测背包 = True Then
                    Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                    ydsbz intX2c, intY2c
                    Exit Do
                End If
            ElseIf intX2 > 0 AND intX < 0 AND intX2c < 0 Then
                If 首次拾取 = False Then
                    SDelay 300
                    Call 拾取
                    首次拾取 = True
                    SDelay 200
                End If
            ElseIf intXc > 0 Then
                Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                ydsbz intX2c, intY2c                     
            End If
        End If
    Loop
End Sub
Sub 拾取
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 开始拾取 ]", "ff0000")
    SDelay 300
    DM.KeyPress 86
    SDelay 300
    DM.KeyDown 88
    SDelay 700
    DM.KeyUp 88
End Sub
Sub 释放技能
    Do
        If 怪物坐标 = False  Then
            If Form1.冷却技能.Value = 1 Then
                Call 冷却释放
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 释放技能完毕 ] ", "ff0000")
            Exit Do
        End If
    Loop  
End Sub
Sub 冷却释放
    dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
    If 技能x = 542 AND 技能y = 533 Then
        dm.KeyPress 81
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Q ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 533 Then   
        dm.KeyPress 87
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: W ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 533 Then
        DM.KeyPress 69
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: E ]", "ff0000")
        SDelay 10
    ElseIf  技能x = 632 AND 技能y = 533 Then
        dm.KeyPress 82
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: R ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 533 Then
        dm.KeyPress 84
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: T ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 533 Then
        dm.KeyPress 89
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Y ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 542 AND 技能y = 564 Then
        dm.KeyPress 65
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: A ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 564 Then   
        dm.KeyPress 83
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:S ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 564 Then
        DM.KeyPress 68
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:D ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 632 AND 技能y = 564 Then
        dm.KeyPress 70
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:F ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 564 Then
        dm.KeyPress 71
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: G ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 564 Then
        dm.KeyPress 72
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: H ]", "ff0000")
        SDelay 10
    ElseIf 技能x < 0 Then
        If Form1.普通攻击.Value = 1 Then
            dm.KeyPress 88
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: X ]", "ff0000")
            SDelay 200
        End If
    End If
End Sub
Sub 释放
    Dim 技能键(13)
    分割次数 = len(Form1.赋值技能.Text)
    For i = 1 To 分割次数
        技能键(i)=Mid(技能, i, 1)       
        If 怪物坐标 = True  Then
            TracePrint "通关了退出释放技能"
            Exit Sub
        Else
            dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
            If Form1.普通攻击.Value = 1 Then
                If 技能x < 0 Then
                    dm.KeyPress 88
                End If
            End If
            SDelay 160
            If UCase(技能键(i)) = "A" Then
                dm.KeyPress 65
                SDelay 160
            ElseIf UCase(技能键(i)) = "S" Then
                dm.KeyPress 83
                SDelay 160
            ElseIf UCase(技能键(i)) = "D" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "F" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "G" Then
                dm.KeyPress 71
                SDelay 160
            ElseIf UCase(技能键(i)) = "H" Then
                dm.KeyPress 72
                SDelay 160
            ElseIf UCase(技能键(i)) = "Q" Then
                dm.KeyPress 81
                SDelay 160
            ElseIf UCase(技能键(i)) = "W" Then
                dm.KeyPress 87
                SDelay 160
            ElseIf UCase(技能键(i)) = "E" Then
                dm.KeyPress 69
                SDelay 160
            ElseIf UCase(技能键(i)) = "R" Then
                dm.KeyPress 82
                SDelay 160
            ElseIf UCase(技能键(i)) = "T" Then
                dm.KeyPress 84
                SDelay 160
            ElseIf UCase(技能键(i)) = "Y" Then
                dm.KeyPress 89
                SDelay 160
            ElseIf UCase(技能键(i)) = "X" Then
                dm.KeyPress 88
                SDelay 160
            End If
            SDelay 300            
        End If
    Next
End Sub
Sub 还任务
    Do
        dm_ret = dm.FindStr(268, 497, 506, 548, "完成任务", "cc4411-404040", 1.0, 完成任务x, 完成任务y)
        If 完成任务x > 0 Then
            ydsbz 完成任务x, 完成任务y
        Else   
            For 12
                dm.KeyPress 32
            Next
            Exit Do
        End If
    Loop
    dm.KeyPress 27
End Sub
Function 检测背包
    dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intx2, inty2)
    If intx2 > 0 and inty2 > 0 Then
        检测背包 = True
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包满了 ] ", "ff0000")
    Else
        检测背包 = False
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包没满 ] ", "ff0000")
    End If
End Function
Function 识别疲劳2
    dm_ret = dm.FindColor(278,545,513,559, "e60044-000000|b30026-000000|be6a83-000000", 0.9, 0, intX, intY)
    dm_ret = dm.FindColor(278,545,513,559, "00e6e6-000000|008ff1-000000|80a8a8-000000", 0.9, 0, intX2, intY2)
    If intX > 0 and intY > 0 OR intX2 > 0 and intY2 > 0 Then
        识别疲劳 = True
        TracePrint "还有疲劳"
        SDelay 700
    Else
        识别疲劳 = False
        TracePrint "没疲劳了"
        SDelay 800
    End If
End Function
Sub 识别材料
    Do
        Rem 重新扫描
        dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
        If 装备栏x < 0 Then
            dm.KeyPress 73
            SDelay 300
        Else
            Call Lib.模拟真实键鼠.随机慢慢移动鼠标(装备栏x, 装备栏y)
            SDelay 200
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "材料", "ffffb8-000000", 1.0, 材料x, 材料y)
                If 材料x < 0 Then
                    ydsbz 593, 245
                    ydsbz 593, 245
                Else
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 准备识别材料 ] ", "ff0000")
            红色小晶块 = dm.Ocr(730, 312, 761, 341, "ffffff-000000", 1.0)
            dm_ret = dm.FoobarPrintText(foobar, now & " [红色小晶块数量: ] " & 红色小晶块, "ff0000")
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "wj.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                无尽的永恒 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [无尽的永恒数量: ] " & 无尽的永恒, "ff0000")
            Else     
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 没有找到无尽的永恒 ] " & 无尽的永恒, "ff0000")
            End If
            SDelay 302
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "任务", "ffffb8-000000", 1.0, 材料2x, 材料2y)
                If 材料2x < 0 Then
                    ydsbz 690, 246
                    ydsbz 690, 246
                Else   
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "hl.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                黄龙票 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [黄龙门票数量:] " & 黄龙票, "ff0000")
            End If
            Do
                dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)       
                If 装备栏x > 0 Then
                    DM.KeyPress 73
                    SDelay 300
                Else        
                    Exit Do
                End If
            Loop
            SDelay 150
            疲劳值 = 识别疲劳值
            dm_ret = dm.FoobarPrintText(foobar, now & " [剩余疲劳 ] " & 疲劳值, "ff0000")
            可打次数 = 疲劳值 / 6
            dm_ret = dm.FoobarPrintText(foobar, now & " [可打黄龙次数] " & 可打次数, "ff0000")
            If 1300 > 红色小晶块 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 红色小晶块不足现在开始购买 ] ", "ff0000")
                Call 扫拍("红色小晶块", Form1.HS.Text, "1000")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 130 > 无尽的永恒 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 无尽的永恒块不足现在开始购买 ] " , "ff0000")
                Call 扫拍("无尽的永恒", Form1.wj.Text, "130")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 可打次数 > 黄龙票 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 当前门票不足准备前往小铁柱兑换门票 ] ", "ff0000")
                Call 行走到小铁柱
            End If
            Exit Do
        End If
    Loop
End Sub
Event Form1.Load
    Call 注册
End EventGlobal 检测入场券, 检测材料, 当前刷到第几个角色, 角色名字, foobar, MySec2, 角色名称, 进入黄龙咯
Global 红色小晶块, 无尽的永恒, 黄龙票, 疲劳值, 重新定义
Dimenv 打怪线程, 检测死亡线程, 超时线程, 进图线程, 购买门票线程, 城镇线程, 调控线程
Call 注册
If Form1.赛利亚启动.Value = 1 Then
    Do
        Call 调控
    Loop
ElseIf Form1.自动登入.Value = 1 Then
    TracePrint 1
End If
//Call 打怪测试
//调控线程 = BeginThread(调控)
SDelay 300
Sub 调控
    If 城镇房间 = 1 or 城镇房间 = 2 Then
        //        城镇线程 = BeginThread(城镇caoz)
        Call 城镇caoz
    ElseIf  城镇房间 = 3
        //        进图线程 = BeginThread(进入黄龙)
        Call 进入黄龙
    ElseIf 怪物坐标 = True     
        //        打怪线程 = BeginThread(打怪测试)
        Call 打怪测试
    Else
        Call 更换角色(1)
    End If
End Sub

Sub 城镇caoz
    Dim pl
    Do
        If 城镇房间 = 1 Then
            Call 从赛利亚房间出来
        ElseIf 城镇房间 = 2 Then
            Call 清理背包
            Pl = 识别疲劳值()
            If pl = 0 Then
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 没有疲劳准备切换角色 ]", "ff0000")
                Call 更换角色(0)
            Else        
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 还有疲劳 ]", "ff0000")
            End If
            Call 识别虚弱状态
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检查完成准备进图 ]", "ff0000")
            Call 准备进图
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 退出城镇线程 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Do
    Call 调控
Loop
Do
Loop
Sub 准备进图
    Do
        If 城镇房间 = 3 Then
            DM.KeyUp 39
            DM.KeyUp 39
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入选择地图 ]", "ff0000")
            Exit Do
        Else     
            dm.KeyDown 40
            SDelay 300
            dm.KeyUp 40
            dm.KeyDown 37
            SDelay 300
            dm.KeyUp 37
            SDelay 30
            dm.KeyDown 39
            SDelay 2200
        End If       
    Loop
End Sub
Sub 进入黄龙
    DO
        dm_ret = dm.FindPic(395, 289, 757, 481, "hldh.bmp|hldh2.bmp", "000000", 0.9, 0, intX, intY)
        If intX > 0 Then
            ydsbz intX, intY
            ydsbz intX, intY
            Exit Do
        End If
    Loop
    DO
        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
        If 跳过x > 0 Then
            dm.KeyPress 32
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
        Else     
            If 怪物坐标 = False  Then
                DM.KeyPress 32
            Else
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                进入黄龙咯 = True
                Exit Do
            End If           
        End If
    Loop
    Call 打怪测试
End Sub
Function 城镇房间
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备分解x, 装备分解y)
    dm_ret = dm.FindStr(695, 535, 799, 572, "返回城镇", "ddc593-000000|ffffb8-000000", 1.0, intX, intY)
    dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
    If 赛利亚x > 0 Then
        城镇房间 = 1
    ElseIf 装备分解x > 0 Then
        城镇房间 = 2
    ElseIf intX > 0 Then
        城镇房间 = 3
    ElseIf 跳过x > 0 and 跳过y > 0 Then
        城镇房间 = 4
    End If
End Function
Sub 注册
    PutAttachment "c:\test_game","*.*"
    PutAttachment ".\Plugin" ,"RegDll.dll"
    Call Plugin.Regdll.reg("c:\game_script\dm.dll")
    Set dm = createobject("dm.dmsoft")
    ver = dm.ver()
    If len(ver) = 0 Then
        MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
        EndScript
    Else
        dm_ret = dm.SetPath("C:\黄龙\")
        dm_ret = dm.SetDict(0, "字库.txt")
        hwnd = dm.FindWindow("", "地下城与勇士")
        dm.MoveWindow hwnd, 0, 0
        dm_ret = dm.SetWindowState(hwnd, 12)
        foobar = dm.CreateFoobarRect(shw, 0, 600, 400, 100)
        foobar2 = dm.CreateFoobarRect(shw2, 400, 600, 400, 100)
        dm_ret = dm.FoobarLock(foobar)
        dm_ret = dm.FoobarSetFont(foobar, "宋体", 9, 0)
    End If       
End Sub
Sub SDelay(时间)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : Call Lib.模拟真实键鼠.随机延时(时间 + (增量Y + 增量Y) * (增量Y / 2))
End Sub
SUB ydsbz(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标 + 增量X, 屏幕Y坐标 + 增量Y) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Sub
SUB ydsby(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标, 屏幕Y坐标) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标右键单击()
End Sub
Sub 从赛利亚房间出来
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    If 赛利亚x > 0 and 赛利亚y > 0 Then
        日志 = Now & " [ 切换至赛利亚房间:准备检测疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        SDelay 200
        Call 识别疲劳
        Call 识别材料
        Do
            dm_ret = dm.FindStr(279,0,766,280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
            If 装备栏x > 0 Then
                dm.KeyPress 73
                SDelay 300
            Else     
                Exit Do
            End If
        Loop
        MySec2 = Second(Now)
        Do
            dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
            If 虚祖首都素喃x >= 0 Then
                SDelay 300
                dm.KeyUp 40
                Plugin.lxj_Plug.lxj_ReleaseMemory -1
                日志 = Now & " [ 到达:虚祖首都素喃 准备行走置副本门口 ] "
                dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                SDelay 600
                ydsby 5, 500
                ydsby  5, 500
                SDelay 3000
                dm.KeyDown 38
                SDelay 1200
                dm.KeyUp 38
                dm.KeyUp 38
                SDelay 500
                Do
                    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                    If 装备x > 0 Then
                        dm.KeyUp 39
                        dm.KeyUp 39
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                        Exit Sub
                    Else  
                        dm.KeyDown 39
                    End If
                Loop
                //                Call  城镇寻路
            Else
                dm.KeyDown 40
                MySe2c = Second(Now)
                SDelay 100
                MySe2c3 = MySe2c - MySec2
                If abs(MySe2c3) >= 4 Then
                    日志 = Now & " [ 不在地区:虚祖首都素喃 准备使用瞬间移动药剂前往] "
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    SDelay 300
                Else                              
                    //                    dm_ret = dm.FoobarPrintText(foobar, "出赛利亚房间超时检测剩余秒数:" & abs(MySe2c3 - 4), "ff0000")                          
                End If
            End If
        Loop
    End If
End Sub// 赛利亚放假出来兑换票 扫拍
Sub 识别疲劳
    Dim 疲劳数据
    疲劳数据 = 识别疲劳值
    If 疲劳数据 <> 0 Then
        日志 = Now & " [ 疲劳检测:还有疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
    Else
        dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
        当前刷到第几个角色 = 当前刷到第几个角色 + 1
        日志 =  Now & " [ 疲劳检测:没有疲劳了准备切换角色 当前刷置角色 " & 当前刷到第几个角色 & "]"
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        If 当前刷到第几个角色 = int(Form1.刷多少角色.Text) Then
            dm.KeyPress 123
        Else
            Call 更换角色(0)
        End If             
    End If
End Sub
Sub 更换角色(f)
    Do
        dm_ret = dm.FindStr(132, 530, 304, 564, "删除", "ddc593-000000", 1.0, 删除x, 删除y)
        If 删除x < 0 Then
            dm_ret = dm.FindStr(441, 168, 656, 363, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
            If 游戏指南x < 0 and 游戏指南y < 0 Then
                dm.KeyPress 27
                SDelay 300
            Else
                SDelay 600
                ydsbz 384, 443
                SDelay 300
            End If
        Else     
            SDelay 600
            日志 = Now & " [ 小退游戏进入选择角色界面 ]"
            dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")     
            SDelay 300
            If f = 1 Then
                dm.KeyPress 39
                SDelay 600
            End If
            dm.KeyPress 32
            SDelay 600
            Do
                dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
                If 赛利亚x > 0 Then
                    日志 = Now & " [ 进入赛利亚房间重 ]"
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    Exit Do
                Else
                    dm_ret = dm.FindStr(319, 104, 578, 263, "×", "ede5aa-000000", 1.0, 叉x, 叉y)
                    If 叉x > 0 Then
                        日志 = Now & " [ 出现遮挡物准备关闭 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        ydsbz 叉x, 叉y
                        SDelay 300
                        日志 = Now & " [ 关闭遮挡物 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        Exit Do
                    End If
                End If
            Loop
            RestartScript
            Exit Do
        End If
    Loop
End Sub
Function 城镇寻路()
    x = 350
    y = 315
    dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
    If 虚祖首都素喃x > 0 Then
        Do
            dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
            If 搜索x > 0 and 搜索y > 0 Then
                TracePrint "打开大地图"
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 打开大地图 ]", "ff0000")
                Exit Do  
            Else   
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在打开大地图 ]", "ff0000")
                dm.KeyPress 78
                Delay 300
            End If
        Loop
    End If
    Do
        dm_ret = dm.FindStr(142, 134, 545, 434, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
        If 城镇坐标x >= 0 and 城镇坐标y >= 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在执行前往副本门口 ]", "ff0000")
            相差距离x = 城镇坐标x - x
            相差距离y = 城镇坐标y - y
            If 相差距离x > 0 Then
                dm.KeyDown 37
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 左方向到达 ]", "ff0000")
                        dm.KeyUp 37
                        Exit Do
                    End If
                Loop
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225, 196, 500, 447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 上方向到达 ]", "ff0000")
                            Delay 300
                            dm.KeyUp 38
                            dm.KeyUp 38
                            dm.KeyUp 38
                            Do
                                dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
                                If 搜索x > 0 Then
                                    dm.KeyPress 78
                                    SDelay 300
                                    Exit Do
                                End If
                            Loop
                            dm.KeyDown 39
                            Do
                                dm_ret = dm.FindStr(184, 117, 680, 253, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                                If 装备x > 0 Then
                                    dm.KeyUp 39
                                    dm.KeyUp 39
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                                    Exit Do
                                End If
                            Loop
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                End If
                Exit Do
            ElseIf 相差距离x < 0 Then
                Rem 反方向修复
                dm.KeyDown 39
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        TracePrint "右方向到达"
                        dm.KeyUp 39
                        Exit Do
                    End If
                Loop
                dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                相差距离y = 城镇坐标y - y
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "上方向到达"
                            Delay 300
                            dm.KeyUp 38
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "下方向到达"
                            Delay 300
                            dm.KeyUp 40
                            Exit Do
                        End If
                    Loop                                                                                          
                End If
                Exit Do
            End If
        End If
    Loop
End Function

Sub 识别虚弱状态
    恢复状态 = 1// 1=契约恢复 2=金币恢复 3=站街恢复
    If Form1.金币恢复.Value = 1 Then
        恢复状态 = 2
    ElseIf Form1.契约恢复.Value = 1 Then
        恢复状态 = 1
    ElseIf Form1.站街恢复.Value = 1 Then
        恢复状态 = 3
    End If
    DO   
        dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX,intY)
        If intX > 0 AND intY > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 虚弱状态 ]", "ff0000")
            SDelay 2200
            If 恢复状态 = 1 Then
                ydsbz intX, intY
                SDelay 3000
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "契约恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2, intY2
                End If
            ElseIf 恢复状态 = 2 Then
                ydsbz intX, intY
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "金币恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2 + 10, intY2 + 10
                End If              
            ElseIf 恢复状态 = 3 Then
                Do
                    dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX3,intY3)
                    If intX3 < 0 AND intY3 < 0 Then
                        SDelay 5000
                        Exit Sub
                    End If
                Loop
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 没虚弱 ]", "ff0000")
            Exit Do  
        End If
    Loop
End Sub
Sub 清理背包
    Do
        dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intxX2, intyY2)
        If intxX2 > 0 and intyY2 > 0 Then   
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包满了准备清理背包 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            Rem 修复点击装备分解
            dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解", "e6c89b-000000", 1.0, intX, intY)
            If intX > 0 and intY > 0 Then
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(0, 0, 800, 600, "分解装备", "e6c89b-000000", 1.0, 分解装备X, 分解装备Y)
                    If 分解装备X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击分解装备 ]", "ff0000")
                        ydsbz 分解装备X, 分解装备Y
                        SDelay 300
                        Exit Do
                    Else
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备点分解装备被遮挡将移除遮挡 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        Goto 修复点击装备分解
                    End if
                Loop// 点击分解装备
                SDelay  600
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(全部分解X, 全部分解Y)
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//移动到全部分解
                SDelay 600
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备勾选条件 ]", "ff0000")
                If Form1.分蓝.Value = 1 Then
                    分解模式 = 1// 1 分蓝卖紫白 2 分蓝白卖紫 3 全部分解
                    勾选蓝 = True:勾选白 = False:全部勾选 = False
                ElseIf Form1.分蓝白.Value = 1 Then
                    分解模式 = 2
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = False
                ElseIf Form1.全部分.Value = 1 Then
                    分解模式 = 3
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = True
                End If
                Do
                    dm_ret = dm.FindStrFast(215,358,344,450,"普通","ffffff-000000",1.0,pX,pY)'先查找普通这个字,然后根据返回的坐标来判断是否勾选
                    If pX > 0 And pY > 0 Then
                        dm_ret = dm.FindStrFast(px-1,py-1,px+80,py+14,"√","ffae00-000000",1.0,jX,jY)'根据普通返回的坐标,选择出一个区域能够查找到勾选,如果没有,则点击
                        If jX > 0 And jY > 0 Then
                            If 勾选白 = False Then
                                SDelay 300
                                ydsbz px, py
                                Exit Do
                            Else     
                                Exit Do                           
                            End If
                        Else
                            If 勾选白 = True Then
                                SDelay 300
                                ydsbz px, py
                                SDelay 100
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选白色 ]", "ff0000")
                                Exit Do
                            Else     
                                Exit Do  
                            End If
                        End If
                    End If
                Loop
                SDelay 300
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "高级", "68d5ed-000000", 1.0, gX, gY)
                    If gX > 0 And gY > 0 Then
                        dm_ret = dm.FindStrFast(gx-1,gy-1,gx+80,gy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 勾选蓝 = False Then
                                SDelay 300
                                ydsbz jx, jy
                                Exit Do
                            Else     
                                Exit Do                           
                            End if
                        Else
                            If 勾选蓝 = True Then
                                SDelay 300
                                ydsbz gX, gY
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选蓝色 ]", "ff0000")                              
                                Exit Do
                            Else     
                                Exit Do  
                            End if
                        End If
                    End If
                Loop
                SDelay 500
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "稀有", "b36bff-000000", 1.0, xX, xY)
                    If xX > 0 And xY > 0 Then
                        dm_ret = dm.FindStrFast(xx-1,xy-1,xx+80,xy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 全部分 = False Then
                                SDelay 300
                                ydsbz xx, xy
                                Exit Do
                            Else     
                                Exit Do
                            End If
                        Else
                            If 全部分 = True Then
                                SDelay 300
                                ydsbz xx, xy
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选紫色 ]", "ff0000")                           
                            Else   
                                Exit Do  
                            End If
                            Exit Do
                        End If
                    End If
                Loop
                If 全部分 = True Then
                    Exit Do
                End If
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选条件完毕开始分解 ]", "ff0000")
                Do
                    SDelay 300
                    TracePrint  2222
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        ydsbz 全部分解X, 全部分解Y
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//点击全部分解
                SDelay 300
                SDelay 300
                dm_ret = dm.FindStr(0, 0, 800, 600, "确认", "ddc593-000000", 1.0, 确认X, 确认Y)
                If 确认X > 0 Then
                    SDelay 200
                    ydsbz 确认X, 确认y
                    SDelay 200
                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击确认分解 ]", "ff0000")
                End If
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解成功", "ffffb8-000000", 1.0, 分解成功X, 分解成功Y)
                    If 分解成功X > 0 Then
                        SDelay 300
                        dm.KeyPress 27
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解完成 ]", "ff0000")
                        Exit Do
                    Else  
                        dm_ret = dm.FindStr(0, 0, 800, 600, "缺少全部分解包括的道具", "ffffff-000000", 1.0, 分解失败X, 分解失败Y)
                        If 分解失败X > 0 Then
                            SDelay 300
                            dm.KeyPress 27                                 
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解分解失败 ]", "ff0000")
                            Exit Do
                        End If
                    End If
                Loop
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                    If 游戏指南x > 0 Then
                        dm.KeyPress 27
                        SDelay 300
                    Else   
                        Exit Do
                    End If
                Loop//关闭多余菜单            
                SDelay 1200
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备出售物品 ]", "ff0000")
                SDelay 400
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If      
                SDelay 1200
                dm_ret = dm.FindStr(0, 0, 800, 600, "商店", "e6c89b-000000", 1.0, intX6, intY6)
                If intX6 > 0 and intY6 > 0 Then         
                    SDelay 600
                    ydsbz intX6, intY6
                    SDelay 520
                    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                    SDelay 1200
                    dm_ret = dm.FindStr(6, 41, 310, 205, "商店", "ffffb8-000000", 1.0, intX66, intY66)
                    If intX66 > 0 and intY66 > 0 Then
                        SDelay 700
                        Call 出售物品
                    End if
                End If
            Else            
                ydsbz 525,31      
            End If
        Else     
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包没满 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Sub 出售物品
    ydsbz 493, 245
    SDelay 300
    dm_ret = dm.FindStrS(540, 389, 748, 529, "整理", "ddc593-000000", 0.9, intX2, intY2)
    If intX2 > 0 and intY2 > 0 Then
        ydsbz intX2, intY2
        SDelay 300
    End If
    Do
        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(486 + 增值, 275 + 增值2)
        SDelay 400
        dm_ret = dm.FindStrS(0, 0, 790, 546, "传说|神器|史诗", "ff7800-000000|ff00ff-000000|ffb400-000000", 0.9, 装备X, 装备Y)
        If 装备X > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检测到神器或传说装备跳过出售当前 ]", "ff0000")
        Else
            Call 拖动出售
        End If
        SDelay 100
        Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
        行数 = 行数 + 1
        If 行数 < 8 Then
            增值 = 增值 + 30
        ElseIf 行数 = 8 Then
            增值 = 0
            增值2 = 30
        ElseIf 行数 >= 7 AND 行数 < 16 Then
            增值2 = 30
            增值 = 增值 + 30
        ElseIf 行数 = 16 Then
            增值 = 0
            增值2 = 60
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 出售装备完毕 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                If 游戏指南x > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop//关闭多余菜单            
            Exit Do
        ElseIf 行数 >= 15 AND 行数 < 24 Then
            增值2 = 60
            增值 = 增值 + 30
        ElseIf 行数 = 24 Then
            增值 = 0
            增值2 = 90
        ElseIf 行数 >= 23 AND 行数 < 32 Then
            增值2 = 90
            增值 = 增值 + 30
        ElseIf 行数 = 32 Then
            增值2 = 120
            增值 = 0                
        ElseIf 行数 >= 31 AND 行数 < 40 Then
            增值2 = 120
            增值 = 增值 + 30                 
        End If
    Loop
End Sub
Function 拖动出售()
    MySec = Second(Now)
    增量X = Left(MySec, 1)
    增量Y = Right(MySec, 1)
    SDelay 300 + (增量Y + 增量Y) + (增量Y / 2)
    LeftDown 1
    SDelay 100
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(323 + 增量X, 398 + 增量Y)
    SDelay 100
    LeftUp 1
    SDelay 200
    Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Function
Sub 关闭遮挡
    dm_ret = dm.FindStr(319, 104, 578, 263, "关闭", "f7d65a-000000", 1.0, 关闭x, 关闭y)
    If 关闭x > 0 Then
        ydsbz 关闭x, 关闭y
        SDelay 200
    End If
End Sub
Function  识别疲劳值
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(393, 553)
    SDelay 300
    dm_ret = dm.FindStr(191, 467, 629, 557, "疲劳值:", "ffffff-000000", 1.0, 疲劳x, 疲劳y)
    If 疲劳x > 0 Then
        SDelay 300
        s = dm.Ocr(疲劳x - 1, 疲劳y - 1, 疲劳x + 103, 疲劳y + 14, "ffffff-000000", 1.0)
        疲劳 = Split(s, "疲劳值:")
        疲劳2 = Split(疲劳(1), "/")
        TracePrint 疲劳2(0)
        识别疲劳值 = 疲劳2(0)
    End If
End Function
Function 怪物坐标
    s = dm.Ocr(637,38,754,65, "ffffff-000000", 1.0)
    dm_ret = dm.FindStr(657, 41, 731, 63, s, "ffffff-000000", 1.0, 赛利亚x2, 赛利亚y2)
    If 赛利亚x2 > 0 Then
        怪物坐标 = True
    Else        
        怪物坐标 = False
    End If
End Function
Function 翻牌状态
    dm_ret = dm.FindStrFast(0, 0, 794, 200, "翻牌状态", "d2b709-000000|ffffbb-000000|ffdd55-000000|eecc55-000000|ddaa44-000000|ffffff-000000|664422-000000|aa8833-000000", 0.8, intX, intY)
    //    dm_ret = dm.FindStr(264, 12, 556, 152, "VS", "000000-404040", 1.0, intX2, inty2)
    If intX > 0 Then
        翻牌状态 = True
    Else   
        翻牌状态 = False
    End If
End Function
Sub 打怪测试
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 预备打怪线程 ]", "ff0000")
    Do
        dm_ret = dm.FindColor(479, 70, 491, 78, "000000-000000", 1.0, 0, intX2, intY2)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "808080-404040", 1.0, intXc, intYc)
        Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
        If intX2 < 0 Then
            Call 冷却释放
            首次拾取 = False
        Else  
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 怪物死亡 ]", "ff0000")
            If intX > 0 and intX2c > 0 Then
                If 检测背包 = False Then
                    dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                    ydsbz intX, intY
                    DO
                        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
                        If 跳过x > 0 Then
                            dm.KeyPress 32
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
                        ElseIf 跳过x < 0 Then
                            dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                            If intX < 0 Then
                                If 怪物坐标 = False  Then
                                    DM.KeyPress 32
                                Else
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                                    Exit Do
                                End If
                            Else     
                                ydsbz intX, intY
                                SDelay 300
                                ydsbz 0, 0
                            End If
                        End If
                    Loop
                    Exit Do
                ElseIf 检测背包 = True Then
                    Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                    ydsbz intX2c, intY2c
                    Exit Do
                End If
            ElseIf intX2 > 0 AND intX < 0 AND intX2c < 0 Then
                If 首次拾取 = False Then
                    SDelay 300
                    Call 拾取
                    首次拾取 = True
                    SDelay 200
                End If
            ElseIf intXc > 0 Then
                Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                ydsbz intX2c, intY2c                     
            End If
        End If
    Loop
End Sub
Sub 拾取
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 开始拾取 ]", "ff0000")
    SDelay 300
    DM.KeyPress 86
    SDelay 300
    DM.KeyDown 88
    SDelay 700
    DM.KeyUp 88
End Sub
Sub 释放技能
    Do
        If 怪物坐标 = False  Then
            If Form1.冷却技能.Value = 1 Then
                Call 冷却释放
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 释放技能完毕 ] ", "ff0000")
            Exit Do
        End If
    Loop  
End Sub
Sub 冷却释放
    dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
    If 技能x = 542 AND 技能y = 533 Then
        dm.KeyPress 81
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Q ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 533 Then   
        dm.KeyPress 87
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: W ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 533 Then
        DM.KeyPress 69
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: E ]", "ff0000")
        SDelay 10
    ElseIf  技能x = 632 AND 技能y = 533 Then
        dm.KeyPress 82
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: R ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 533 Then
        dm.KeyPress 84
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: T ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 533 Then
        dm.KeyPress 89
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Y ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 542 AND 技能y = 564 Then
        dm.KeyPress 65
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: A ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 564 Then   
        dm.KeyPress 83
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:S ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 564 Then
        DM.KeyPress 68
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:D ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 632 AND 技能y = 564 Then
        dm.KeyPress 70
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:F ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 564 Then
        dm.KeyPress 71
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: G ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 564 Then
        dm.KeyPress 72
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: H ]", "ff0000")
        SDelay 10
    ElseIf 技能x < 0 Then
        If Form1.普通攻击.Value = 1 Then
            dm.KeyPress 88
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: X ]", "ff0000")
            SDelay 200
        End If
    End If
End Sub
Sub 释放
    Dim 技能键(13)
    分割次数 = len(Form1.赋值技能.Text)
    For i = 1 To 分割次数
        技能键(i)=Mid(技能, i, 1)       
        If 怪物坐标 = True  Then
            TracePrint "通关了退出释放技能"
            Exit Sub
        Else
            dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
            If Form1.普通攻击.Value = 1 Then
                If 技能x < 0 Then
                    dm.KeyPress 88
                End If
            End If
            SDelay 160
            If UCase(技能键(i)) = "A" Then
                dm.KeyPress 65
                SDelay 160
            ElseIf UCase(技能键(i)) = "S" Then
                dm.KeyPress 83
                SDelay 160
            ElseIf UCase(技能键(i)) = "D" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "F" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "G" Then
                dm.KeyPress 71
                SDelay 160
            ElseIf UCase(技能键(i)) = "H" Then
                dm.KeyPress 72
                SDelay 160
            ElseIf UCase(技能键(i)) = "Q" Then
                dm.KeyPress 81
                SDelay 160
            ElseIf UCase(技能键(i)) = "W" Then
                dm.KeyPress 87
                SDelay 160
            ElseIf UCase(技能键(i)) = "E" Then
                dm.KeyPress 69
                SDelay 160
            ElseIf UCase(技能键(i)) = "R" Then
                dm.KeyPress 82
                SDelay 160
            ElseIf UCase(技能键(i)) = "T" Then
                dm.KeyPress 84
                SDelay 160
            ElseIf UCase(技能键(i)) = "Y" Then
                dm.KeyPress 89
                SDelay 160
            ElseIf UCase(技能键(i)) = "X" Then
                dm.KeyPress 88
                SDelay 160
            End If
            SDelay 300            
        End If
    Next
End Sub
Sub 还任务
    Do
        dm_ret = dm.FindStr(268, 497, 506, 548, "完成任务", "cc4411-404040", 1.0, 完成任务x, 完成任务y)
        If 完成任务x > 0 Then
            ydsbz 完成任务x, 完成任务y
        Else   
            For 12
                dm.KeyPress 32
            Next
            Exit Do
        End If
    Loop
    dm.KeyPress 27
End Sub
Function 检测背包
    dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intx2, inty2)
    If intx2 > 0 and inty2 > 0 Then
        检测背包 = True
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包满了 ] ", "ff0000")
    Else
        检测背包 = False
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包没满 ] ", "ff0000")
    End If
End Function
Function 识别疲劳2
    dm_ret = dm.FindColor(278,545,513,559, "e60044-000000|b30026-000000|be6a83-000000", 0.9, 0, intX, intY)
    dm_ret = dm.FindColor(278,545,513,559, "00e6e6-000000|008ff1-000000|80a8a8-000000", 0.9, 0, intX2, intY2)
    If intX > 0 and intY > 0 OR intX2 > 0 and intY2 > 0 Then
        识别疲劳 = True
        TracePrint "还有疲劳"
        SDelay 700
    Else
        识别疲劳 = False
        TracePrint "没疲劳了"
        SDelay 800
    End If
End Function
Sub 识别材料
    Do
        Rem 重新扫描
        dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
        If 装备栏x < 0 Then
            dm.KeyPress 73
            SDelay 300
        Else
            Call Lib.模拟真实键鼠.随机慢慢移动鼠标(装备栏x, 装备栏y)
            SDelay 200
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "材料", "ffffb8-000000", 1.0, 材料x, 材料y)
                If 材料x < 0 Then
                    ydsbz 593, 245
                    ydsbz 593, 245
                Else
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 准备识别材料 ] ", "ff0000")
            红色小晶块 = dm.Ocr(730, 312, 761, 341, "ffffff-000000", 1.0)
            dm_ret = dm.FoobarPrintText(foobar, now & " [红色小晶块数量: ] " & 红色小晶块, "ff0000")
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "wj.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                无尽的永恒 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [无尽的永恒数量: ] " & 无尽的永恒, "ff0000")
            Else     
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 没有找到无尽的永恒 ] " & 无尽的永恒, "ff0000")
            End If
            SDelay 302
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "任务", "ffffb8-000000", 1.0, 材料2x, 材料2y)
                If 材料2x < 0 Then
                    ydsbz 690, 246
                    ydsbz 690, 246
                Else   
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "hl.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                黄龙票 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [黄龙门票数量:] " & 黄龙票, "ff0000")
            End If
            Do
                dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)       
                If 装备栏x > 0 Then
                    DM.KeyPress 73
                    SDelay 300
                Else        
                    Exit Do
                End If
            Loop
            SDelay 150
            疲劳值 = 识别疲劳值
            dm_ret = dm.FoobarPrintText(foobar, now & " [剩余疲劳 ] " & 疲劳值, "ff0000")
            可打次数 = 疲劳值 / 6
            dm_ret = dm.FoobarPrintText(foobar, now & " [可打黄龙次数] " & 可打次数, "ff0000")
            If 1300 > 红色小晶块 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 红色小晶块不足现在开始购买 ] ", "ff0000")
                Call 扫拍("红色小晶块", Form1.HS.Text, "1000")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 130 > 无尽的永恒 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 无尽的永恒块不足现在开始购买 ] " , "ff0000")
                Call 扫拍("无尽的永恒", Form1.wj.Text, "130")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 可打次数 > 黄龙票 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 当前门票不足准备前往小铁柱兑换门票 ] ", "ff0000")
                Call 行走到小铁柱
            End If
            Exit Do
        End If
    Loop
End Sub
Event Form1.Load
    Call 注册
End EventGlobal 检测入场券, 检测材料, 当前刷到第几个角色, 角色名字, foobar, MySec2, 角色名称, 进入黄龙咯
Global 红色小晶块, 无尽的永恒, 黄龙票, 疲劳值, 重新定义
Dimenv 打怪线程, 检测死亡线程, 超时线程, 进图线程, 购买门票线程, 城镇线程, 调控线程
Call 注册
If Form1.赛利亚启动.Value = 1 Then
    Do
        Call 调控
    Loop
ElseIf Form1.自动登入.Value = 1 Then
    TracePrint 1
End If
//Call 打怪测试
//调控线程 = BeginThread(调控)
SDelay 300
Sub 调控
    If 城镇房间 = 1 or 城镇房间 = 2 Then
        //        城镇线程 = BeginThread(城镇caoz)
        Call 城镇caoz
    ElseIf  城镇房间 = 3
        //        进图线程 = BeginThread(进入黄龙)
        Call 进入黄龙
    ElseIf 怪物坐标 = True     
        //        打怪线程 = BeginThread(打怪测试)
        Call 打怪测试
    Else
        Call 更换角色(1)
    End If
End Sub

Sub 城镇caoz
    Dim pl
    Do
        If 城镇房间 = 1 Then
            Call 从赛利亚房间出来
        ElseIf 城镇房间 = 2 Then
            Call 清理背包
            Pl = 识别疲劳值()
            If pl = 0 Then
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 没有疲劳准备切换角色 ]", "ff0000")
                Call 更换角色(0)
            Else        
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 还有疲劳 ]", "ff0000")
            End If
            Call 识别虚弱状态
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检查完成准备进图 ]", "ff0000")
            Call 准备进图
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 退出城镇线程 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Do
    Call 调控
Loop
Do
Loop
Sub 准备进图
    Do
        If 城镇房间 = 3 Then
            DM.KeyUp 39
            DM.KeyUp 39
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入选择地图 ]", "ff0000")
            Exit Do
        Else     
            dm.KeyDown 40
            SDelay 300
            dm.KeyUp 40
            dm.KeyDown 37
            SDelay 300
            dm.KeyUp 37
            SDelay 30
            dm.KeyDown 39
            SDelay 2200
        End If       
    Loop
End Sub
Sub 进入黄龙
    DO
        dm_ret = dm.FindPic(395, 289, 757, 481, "hldh.bmp|hldh2.bmp", "000000", 0.9, 0, intX, intY)
        If intX > 0 Then
            ydsbz intX, intY
            ydsbz intX, intY
            Exit Do
        End If
    Loop
    DO
        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
        If 跳过x > 0 Then
            dm.KeyPress 32
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
        Else     
            If 怪物坐标 = False  Then
                DM.KeyPress 32
            Else
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                进入黄龙咯 = True
                Exit Do
            End If           
        End If
    Loop
    Call 打怪测试
End Sub
Function 城镇房间
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备分解x, 装备分解y)
    dm_ret = dm.FindStr(695, 535, 799, 572, "返回城镇", "ddc593-000000|ffffb8-000000", 1.0, intX, intY)
    dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
    If 赛利亚x > 0 Then
        城镇房间 = 1
    ElseIf 装备分解x > 0 Then
        城镇房间 = 2
    ElseIf intX > 0 Then
        城镇房间 = 3
    ElseIf 跳过x > 0 and 跳过y > 0 Then
        城镇房间 = 4
    End If
End Function
Sub 注册
    PutAttachment "c:\test_game","*.*"
    PutAttachment ".\Plugin" ,"RegDll.dll"
    Call Plugin.Regdll.reg("c:\game_script\dm.dll")
    Set dm = createobject("dm.dmsoft")
    ver = dm.ver()
    If len(ver) = 0 Then
        MessageBox "插件注册失败,检查系统是否禁用了vbs脚本权限"
        EndScript
    Else
        dm_ret = dm.SetPath("C:\黄龙\")
        dm_ret = dm.SetDict(0, "字库.txt")
        hwnd = dm.FindWindow("", "地下城与勇士")
        dm.MoveWindow hwnd, 0, 0
        dm_ret = dm.SetWindowState(hwnd, 12)
        foobar = dm.CreateFoobarRect(shw, 0, 600, 400, 100)
        foobar2 = dm.CreateFoobarRect(shw2, 400, 600, 400, 100)
        dm_ret = dm.FoobarLock(foobar)
        dm_ret = dm.FoobarSetFont(foobar, "宋体", 9, 0)
    End If       
End Sub
Sub SDelay(时间)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : Call Lib.模拟真实键鼠.随机延时(时间 + (增量Y + 增量Y) * (增量Y / 2))
End Sub
SUB ydsbz(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标 + 增量X, 屏幕Y坐标 + 增量Y) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Sub
SUB ydsby(屏幕X坐标, 屏幕Y坐标)
    MySec = Second(Now) : 增量X = Left(MySec, 1) : 增量Y = Right(MySec, 1) : Call Lib.模拟真实键鼠.随机慢慢移动鼠标(屏幕X坐标, 屏幕Y坐标) : SDelay 400 + (增量Y + 增量Y) * (增量Y / 3) : Call Lib.模拟真实键鼠.随机时间鼠标右键单击()
End Sub
Sub 从赛利亚房间出来
    dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
    If 赛利亚x > 0 and 赛利亚y > 0 Then
        日志 = Now & " [ 切换至赛利亚房间:准备检测疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        SDelay 200
        Call 识别疲劳
        Call 识别材料
        Do
            dm_ret = dm.FindStr(279,0,766,280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
            If 装备栏x > 0 Then
                dm.KeyPress 73
                SDelay 300
            Else     
                Exit Do
            End If
        Loop
        MySec2 = Second(Now)
        Do
            dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
            If 虚祖首都素喃x >= 0 Then
                SDelay 300
                dm.KeyUp 40
                Plugin.lxj_Plug.lxj_ReleaseMemory -1
                日志 = Now & " [ 到达:虚祖首都素喃 准备行走置副本门口 ] "
                dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                SDelay 600
                ydsby 5, 500
                ydsby  5, 500
                SDelay 3000
                dm.KeyDown 38
                SDelay 1200
                dm.KeyUp 38
                dm.KeyUp 38
                SDelay 500
                Do
                    dm_ret = dm.FindStr(- 3 , 84, 605, 251, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                    If 装备x > 0 Then
                        dm.KeyUp 39
                        dm.KeyUp 39
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                        Exit Sub
                    Else  
                        dm.KeyDown 39
                    End If
                Loop
                //                Call  城镇寻路
            Else
                dm.KeyDown 40
                MySe2c = Second(Now)
                SDelay 100
                MySe2c3 = MySe2c - MySec2
                If abs(MySe2c3) >= 4 Then
                    日志 = Now & " [ 不在地区:虚祖首都素喃 准备使用瞬间移动药剂前往] "
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    SDelay 300
                Else                              
                    //                    dm_ret = dm.FoobarPrintText(foobar, "出赛利亚房间超时检测剩余秒数:" & abs(MySe2c3 - 4), "ff0000")                          
                End If
            End If
        Loop
    End If
End Sub// 赛利亚放假出来兑换票 扫拍
Sub 识别疲劳
    Dim 疲劳数据
    疲劳数据 = 识别疲劳值
    If 疲劳数据 <> 0 Then
        日志 = Now & " [ 疲劳检测:还有疲劳 ] "
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
    Else
        dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
        当前刷到第几个角色 = 当前刷到第几个角色 + 1
        日志 =  Now & " [ 疲劳检测:没有疲劳了准备切换角色 当前刷置角色 " & 当前刷到第几个角色 & "]"
        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
        If 当前刷到第几个角色 = int(Form1.刷多少角色.Text) Then
            dm.KeyPress 123
        Else
            Call 更换角色(0)
        End If             
    End If
End Sub
Sub 更换角色(f)
    Do
        dm_ret = dm.FindStr(132, 530, 304, 564, "删除", "ddc593-000000", 1.0, 删除x, 删除y)
        If 删除x < 0 Then
            dm_ret = dm.FindStr(441, 168, 656, 363, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
            If 游戏指南x < 0 and 游戏指南y < 0 Then
                dm.KeyPress 27
                SDelay 300
            Else
                SDelay 600
                ydsbz 384, 443
                SDelay 300
            End If
        Else     
            SDelay 600
            日志 = Now & " [ 小退游戏进入选择角色界面 ]"
            dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")     
            SDelay 300
            If f = 1 Then
                dm.KeyPress 39
                SDelay 600
            End If
            dm.KeyPress 32
            SDelay 600
            Do
                dm_ret = dm.FindStr(319, 104, 578, 263, "赛丽亚", "f7d65a-000000", 1.0, 赛利亚x, 赛利亚y)
                If 赛利亚x > 0 Then
                    日志 = Now & " [ 进入赛利亚房间重 ]"
                    dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                    Exit Do
                Else
                    dm_ret = dm.FindStr(319, 104, 578, 263, "×", "ede5aa-000000", 1.0, 叉x, 叉y)
                    If 叉x > 0 Then
                        日志 = Now & " [ 出现遮挡物准备关闭 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        ydsbz 叉x, 叉y
                        SDelay 300
                        日志 = Now & " [ 关闭遮挡物 ]" & vbCrLf
                        dm_ret = dm.FoobarPrintText(foobar, 日志, "ff0000")
                        Exit Do
                    End If
                End If
            Loop
            RestartScript
            Exit Do
        End If
    Loop
End Sub
Function 城镇寻路()
    x = 350
    y = 315
    dm_ret = dm.FindStr(653, 25, 756, 50, "虚祖首都素喃", "e6c89b-000000", 1.0, 虚祖首都素喃x, 虚祖首都素喃y)
    If 虚祖首都素喃x > 0 Then
        Do
            dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
            If 搜索x > 0 and 搜索y > 0 Then
                TracePrint "打开大地图"
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 打开大地图 ]", "ff0000")
                Exit Do  
            Else   
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在打开大地图 ]", "ff0000")
                dm.KeyPress 78
                Delay 300
            End If
        Loop
    End If
    Do
        dm_ret = dm.FindStr(142, 134, 545, 434, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
        If 城镇坐标x >= 0 and 城镇坐标y >= 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 正在执行前往副本门口 ]", "ff0000")
            相差距离x = 城镇坐标x - x
            相差距离y = 城镇坐标y - y
            If 相差距离x > 0 Then
                dm.KeyDown 37
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 左方向到达 ]", "ff0000")
                        dm.KeyUp 37
                        Exit Do
                    End If
                Loop
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225, 196, 500, 447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 上方向到达 ]", "ff0000")
                            Delay 300
                            dm.KeyUp 38
                            dm.KeyUp 38
                            dm.KeyUp 38
                            Do
                                dm_ret = dm.FindStr(679, 1, 765, 32, "搜索", "ffffff-000000", 1.0, 搜索x, 搜索y)
                                If 搜索x > 0 Then
                                    dm.KeyPress 78
                                    SDelay 300
                                    Exit Do
                                End If
                            Loop
                            dm.KeyDown 39
                            Do
                                dm_ret = dm.FindStr(184, 117, 680, 253, "装备分解", "e6c89b-000000", 1.0, 装备x, 装备y)
                                If 装备x > 0 Then
                                    dm.KeyUp 39
                                    dm.KeyUp 39
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 到达副本门口 ]", "ff0000")
                                    Exit Do
                                End If
                            Loop
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                End If
                Exit Do
            ElseIf 相差距离x < 0 Then
                Rem 反方向修复
                dm.KeyDown 39
                Do
                    dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                    相差距离x = 城镇坐标x - x
                    If abs(相差距离x) = 0 Then
                        TracePrint "右方向到达"
                        dm.KeyUp 39
                        Exit Do
                    End If
                Loop
                dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                相差距离y = 城镇坐标y - y
                If 相差距离y > 0 Then
                    dm.KeyDown 38
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "上方向到达"
                            Delay 300
                            dm.KeyUp 38
                            Exit Do
                        End If
                    Loop
                ElseIf 相差距离y < 0 Then
                    dm.KeyDown 40
                    Do
                        dm_ret = dm.FindStr(225,196,500,447, "城镇坐标", "0082ff-000000|06c2ff-404040|0f8dff-404040", 1.0, 城镇坐标x, 城镇坐标y)
                        相差距离y = 城镇坐标y - y
                        If abs(相差距离y) = 0 Then
                            TracePrint "下方向到达"
                            Delay 300
                            dm.KeyUp 40
                            Exit Do
                        End If
                    Loop                                                                                          
                End If
                Exit Do
            End If
        End If
    Loop
End Function

Sub 识别虚弱状态
    恢复状态 = 1// 1=契约恢复 2=金币恢复 3=站街恢复
    If Form1.金币恢复.Value = 1 Then
        恢复状态 = 2
    ElseIf Form1.契约恢复.Value = 1 Then
        恢复状态 = 1
    ElseIf Form1.站街恢复.Value = 1 Then
        恢复状态 = 3
    End If
    DO   
        dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX,intY)
        If intX > 0 AND intY > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 虚弱状态 ]", "ff0000")
            SDelay 2200
            If 恢复状态 = 1 Then
                ydsbz intX, intY
                SDelay 3000
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "契约恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2, intY2
                End If
            ElseIf 恢复状态 = 2 Then
                ydsbz intX, intY
                dm_ret = dm.FindStrFast(0, 0, 800, 600, "金币恢复", "ddc593-000000", 0.9, intX2, intY2)
                If intX2 > 0 and intY2 > 0 Then
                    ydsbz intX2 + 10, intY2 + 10
                End If              
            ElseIf 恢复状态 = 3 Then
                Do
                    dm_ret = dm.FindStrFast(224,434,512,600,"虚弱状态","085aa5-404040|105a84-404040|4aefff-404040|088ce7-404040|1884bd-000000",0.7,intX3,intY3)
                    If intX3 < 0 AND intY3 < 0 Then
                        SDelay 5000
                        Exit Sub
                    End If
                Loop
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 没虚弱 ]", "ff0000")
            Exit Do  
        End If
    Loop
End Sub
Sub 清理背包
    Do
        dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intxX2, intyY2)
        If intxX2 > 0 and intyY2 > 0 Then   
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包满了准备清理背包 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            Rem 修复点击装备分解
            dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解", "e6c89b-000000", 1.0, intX, intY)
            If intX > 0 and intY > 0 Then
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(0, 0, 800, 600, "分解装备", "e6c89b-000000", 1.0, 分解装备X, 分解装备Y)
                    If 分解装备X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击分解装备 ]", "ff0000")
                        ydsbz 分解装备X, 分解装备Y
                        SDelay 300
                        Exit Do
                    Else
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备点分解装备被遮挡将移除遮挡 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        Goto 修复点击装备分解
                    End if
                Loop// 点击分解装备
                SDelay  600
                Do
                    SDelay 300
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解 ]", "ff0000")
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(全部分解X, 全部分解Y)
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//移动到全部分解
                SDelay 600
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备勾选条件 ]", "ff0000")
                If Form1.分蓝.Value = 1 Then
                    分解模式 = 1// 1 分蓝卖紫白 2 分蓝白卖紫 3 全部分解
                    勾选蓝 = True:勾选白 = False:全部勾选 = False
                ElseIf Form1.分蓝白.Value = 1 Then
                    分解模式 = 2
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = False
                ElseIf Form1.全部分.Value = 1 Then
                    分解模式 = 3
                    勾选蓝 = True : 勾选白 = True : 全部勾选 = True
                End If
                Do
                    dm_ret = dm.FindStrFast(215,358,344,450,"普通","ffffff-000000",1.0,pX,pY)'先查找普通这个字,然后根据返回的坐标来判断是否勾选
                    If pX > 0 And pY > 0 Then
                        dm_ret = dm.FindStrFast(px-1,py-1,px+80,py+14,"√","ffae00-000000",1.0,jX,jY)'根据普通返回的坐标,选择出一个区域能够查找到勾选,如果没有,则点击
                        If jX > 0 And jY > 0 Then
                            If 勾选白 = False Then
                                SDelay 300
                                ydsbz px, py
                                Exit Do
                            Else     
                                Exit Do                           
                            End If
                        Else
                            If 勾选白 = True Then
                                SDelay 300
                                ydsbz px, py
                                SDelay 100
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选白色 ]", "ff0000")
                                Exit Do
                            Else     
                                Exit Do  
                            End If
                        End If
                    End If
                Loop
                SDelay 300
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "高级", "68d5ed-000000", 1.0, gX, gY)
                    If gX > 0 And gY > 0 Then
                        dm_ret = dm.FindStrFast(gx-1,gy-1,gx+80,gy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 勾选蓝 = False Then
                                SDelay 300
                                ydsbz jx, jy
                                Exit Do
                            Else     
                                Exit Do                           
                            End if
                        Else
                            If 勾选蓝 = True Then
                                SDelay 300
                                ydsbz gX, gY
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选蓝色 ]", "ff0000")                              
                                Exit Do
                            Else     
                                Exit Do  
                            End if
                        End If
                    End If
                Loop
                SDelay 500
                Do
                    dm_ret = dm.FindStrFast(215, 358, 344, 450, "稀有", "b36bff-000000", 1.0, xX, xY)
                    If xX > 0 And xY > 0 Then
                        dm_ret = dm.FindStrFast(xx-1,xy-1,xx+80,xy+14,"√","ffae00-000000",1.0,jX,jY)
                        If jX > 0 And jY > 0 Then
                            If 全部分 = False Then
                                SDelay 300
                                ydsbz xx, xy
                                Exit Do
                            Else     
                                Exit Do
                            End If
                        Else
                            If 全部分 = True Then
                                SDelay 300
                                ydsbz xx, xy
                                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选紫色 ]", "ff0000")                           
                            Else   
                                Exit Do  
                            End If
                            Exit Do
                        End If
                    End If
                Loop
                If 全部分 = True Then
                    Exit Do
                End If
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 勾选条件完毕开始分解 ]", "ff0000")
                Do
                    SDelay 300
                    TracePrint  2222
                    dm_ret = dm.FindStr(139, 264, 454, 439, "全部分解", "ddc593-000000", 1.0, 全部分解X, 全部分解Y)
                    If 全部分解X > 0 Then
                        ydsbz 全部分解X, 全部分解Y
                        SDelay 300
                        Exit Do
                    Else  
                        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 移动置全部分解被遮挡将移除遮挡 ]", "ff0000")
                    End If
                Loop//点击全部分解
                SDelay 300
                SDelay 300
                dm_ret = dm.FindStr(0, 0, 800, 600, "确认", "ddc593-000000", 1.0, 确认X, 确认Y)
                If 确认X > 0 Then
                    SDelay 200
                    ydsbz 确认X, 确认y
                    SDelay 200
                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 点击确认分解 ]", "ff0000")
                End If
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "装备分解成功", "ffffb8-000000", 1.0, 分解成功X, 分解成功Y)
                    If 分解成功X > 0 Then
                        SDelay 300
                        dm.KeyPress 27
                        dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解完成 ]", "ff0000")
                        Exit Do
                    Else  
                        dm_ret = dm.FindStr(0, 0, 800, 600, "缺少全部分解包括的道具", "ffffff-000000", 1.0, 分解失败X, 分解失败Y)
                        If 分解失败X > 0 Then
                            SDelay 300
                            dm.KeyPress 27                                 
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 分解分解失败 ]", "ff0000")
                            Exit Do
                        End If
                    End If
                Loop
                Do
                    dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                    If 游戏指南x > 0 Then
                        dm.KeyPress 27
                        SDelay 300
                    Else   
                        Exit Do
                    End If
                Loop//关闭多余菜单            
                SDelay 1200
                dm_ret = dm.FoobarPrintText(foobar, now & "[ 准备出售物品 ]", "ff0000")
                SDelay 400
                dm_ret = dm.FindStr(0, 0, 800, 600, "修理装备", "ffffee-000000|ff88aa-000000|ff5577-000000|ff99bb-000000", 1.0, intxX, intxY)
                If intxX > 0 Then
                    ydsbz intX, intY + 100
                Else     
                    ydsbz intX, intY
                End If      
                SDelay 1200
                dm_ret = dm.FindStr(0, 0, 800, 600, "商店", "e6c89b-000000", 1.0, intX6, intY6)
                If intX6 > 0 and intY6 > 0 Then         
                    SDelay 600
                    ydsbz intX6, intY6
                    SDelay 520
                    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(0, 0)
                    SDelay 1200
                    dm_ret = dm.FindStr(6, 41, 310, 205, "商店", "ffffb8-000000", 1.0, intX66, intY66)
                    If intX66 > 0 and intY66 > 0 Then
                        SDelay 700
                        Call 出售物品
                    End if
                End If
            Else            
                ydsbz 525,31      
            End If
        Else     
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 背包没满 ]", "ff0000")
            Exit Do
        End If
    Loop
End Sub
Sub 出售物品
    ydsbz 493, 245
    SDelay 300
    dm_ret = dm.FindStrS(540, 389, 748, 529, "整理", "ddc593-000000", 0.9, intX2, intY2)
    If intX2 > 0 and intY2 > 0 Then
        ydsbz intX2, intY2
        SDelay 300
    End If
    Do
        Call Lib.模拟真实键鼠.随机慢慢移动鼠标(486 + 增值, 275 + 增值2)
        SDelay 400
        dm_ret = dm.FindStrS(0, 0, 790, 546, "传说|神器|史诗", "ff7800-000000|ff00ff-000000|ffb400-000000", 0.9, 装备X, 装备Y)
        If 装备X > 0 Then
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 检测到神器或传说装备跳过出售当前 ]", "ff0000")
        Else
            Call 拖动出售
        End If
        SDelay 100
        Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
        行数 = 行数 + 1
        If 行数 < 8 Then
            增值 = 增值 + 30
        ElseIf 行数 = 8 Then
            增值 = 0
            增值2 = 30
        ElseIf 行数 >= 7 AND 行数 < 16 Then
            增值2 = 30
            增值 = 增值 + 30
        ElseIf 行数 = 16 Then
            增值 = 0
            增值2 = 60
            Do
                dm_ret = dm.FindStr(439, 27, 751, 149, "装备栏", "aaaaaa-000000|ffffff-000000", 1.0, 装备栏X, 装备栏y)
                If 装备栏X > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 出售装备完毕 ]", "ff0000")
            Do
                dm_ret = dm.FindStr(0, 0, 800, 600, "游戏指南", "e6c89b-000000", 1.0, 游戏指南x, 游戏指南y)
                If 游戏指南x > 0 Then
                    dm.KeyPress 27
                    SDelay 300
                Else   
                    Exit Do
                End If
            Loop//关闭多余菜单            
            Exit Do
        ElseIf 行数 >= 15 AND 行数 < 24 Then
            增值2 = 60
            增值 = 增值 + 30
        ElseIf 行数 = 24 Then
            增值 = 0
            增值2 = 90
        ElseIf 行数 >= 23 AND 行数 < 32 Then
            增值2 = 90
            增值 = 增值 + 30
        ElseIf 行数 = 32 Then
            增值2 = 120
            增值 = 0                
        ElseIf 行数 >= 31 AND 行数 < 40 Then
            增值2 = 120
            增值 = 增值 + 30                 
        End If
    Loop
End Sub
Function 拖动出售()
    MySec = Second(Now)
    增量X = Left(MySec, 1)
    增量Y = Right(MySec, 1)
    SDelay 300 + (增量Y + 增量Y) + (增量Y / 2)
    LeftDown 1
    SDelay 100
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(323 + 增量X, 398 + 增量Y)
    SDelay 100
    LeftUp 1
    SDelay 200
    Call Lib.模拟真实键鼠.随机时间鼠标左键单击()
End Function
Sub 关闭遮挡
    dm_ret = dm.FindStr(319, 104, 578, 263, "关闭", "f7d65a-000000", 1.0, 关闭x, 关闭y)
    If 关闭x > 0 Then
        ydsbz 关闭x, 关闭y
        SDelay 200
    End If
End Sub
Function  识别疲劳值
    Call Lib.模拟真实键鼠.随机慢慢移动鼠标(393, 553)
    SDelay 300
    dm_ret = dm.FindStr(191, 467, 629, 557, "疲劳值:", "ffffff-000000", 1.0, 疲劳x, 疲劳y)
    If 疲劳x > 0 Then
        SDelay 300
        s = dm.Ocr(疲劳x - 1, 疲劳y - 1, 疲劳x + 103, 疲劳y + 14, "ffffff-000000", 1.0)
        疲劳 = Split(s, "疲劳值:")
        疲劳2 = Split(疲劳(1), "/")
        TracePrint 疲劳2(0)
        识别疲劳值 = 疲劳2(0)
    End If
End Function
Function 怪物坐标
    s = dm.Ocr(637,38,754,65, "ffffff-000000", 1.0)
    dm_ret = dm.FindStr(657, 41, 731, 63, s, "ffffff-000000", 1.0, 赛利亚x2, 赛利亚y2)
    If 赛利亚x2 > 0 Then
        怪物坐标 = True
    Else        
        怪物坐标 = False
    End If
End Function
Function 翻牌状态
    dm_ret = dm.FindStrFast(0, 0, 794, 200, "翻牌状态", "d2b709-000000|ffffbb-000000|ffdd55-000000|eecc55-000000|ddaa44-000000|ffffff-000000|664422-000000|aa8833-000000", 0.8, intX, intY)
    //    dm_ret = dm.FindStr(264, 12, 556, 152, "VS", "000000-404040", 1.0, intX2, inty2)
    If intX > 0 Then
        翻牌状态 = True
    Else   
        翻牌状态 = False
    End If
End Function
Sub 打怪测试
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 预备打怪线程 ]", "ff0000")
    Do
        dm_ret = dm.FindColor(479, 70, 491, 78, "000000-000000", 1.0, 0, intX2, intY2)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
        dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "808080-404040", 1.0, intXc, intYc)
        Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
        If intX2 < 0 Then
            Call 冷却释放
            首次拾取 = False
        Else  
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 怪物死亡 ]", "ff0000")
            If intX > 0 and intX2c > 0 Then
                If 检测背包 = False Then
                    dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                    ydsbz intX, intY
                    DO
                        dm_ret = dm.FindStr(288, 530, 508, 600, "pace", "000000-000000", 1.0, 跳过x, 跳过y)
                        If 跳过x > 0 Then
                            dm.KeyPress 32
                            dm_ret = dm.FoobarPrintText(foobar, now & "[ 跳过动画 ]", "ff0000")
                        ElseIf 跳过x < 0 Then
                            dm_ret = dm.FindStr(484, 9, 801, 206, "F10", "e6c89b-000000", 1.0, intX, intY)
                            If intX < 0 Then
                                If 怪物坐标 = False  Then
                                    DM.KeyPress 32
                                Else
                                    dm_ret = dm.FoobarPrintText(foobar, now & "[ 进入黄龙地图 ]", "ff0000")
                                    Exit Do
                                End If
                            Else     
                                ydsbz intX, intY
                                SDelay 300
                                ydsbz 0, 0
                            End If
                        End If
                    Loop
                    Exit Do
                ElseIf 检测背包 = True Then
                    Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                    ydsbz intX2c, intY2c
                    Exit Do
                End If
            ElseIf intX2 > 0 AND intX < 0 AND intX2c < 0 Then
                If 首次拾取 = False Then
                    SDelay 300
                    Call 拾取
                    首次拾取 = True
                    SDelay 200
                End If
            ElseIf intXc > 0 Then
                Dm_ret = dm.FindStr(484, 9, 801, 206, "F12", "e6c89b-000000", 1.0, intX2c, intY2c)
                ydsbz intX2c, intY2c                     
            End If
        End If
    Loop
End Sub
Sub 拾取
    dm_ret = dm.FoobarPrintText(foobar, now & "[ 开始拾取 ]", "ff0000")
    SDelay 300
    DM.KeyPress 86
    SDelay 300
    DM.KeyDown 88
    SDelay 700
    DM.KeyUp 88
End Sub
Sub 释放技能
    Do
        If 怪物坐标 = False  Then
            If Form1.冷却技能.Value = 1 Then
                Call 冷却释放
            End If
        Else
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 释放技能完毕 ] ", "ff0000")
            Exit Do
        End If
    Loop  
End Sub
Sub 冷却释放
    dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
    If 技能x = 542 AND 技能y = 533 Then
        dm.KeyPress 81
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Q ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 533 Then   
        dm.KeyPress 87
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: W ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 533 Then
        DM.KeyPress 69
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: E ]", "ff0000")
        SDelay 10
    ElseIf  技能x = 632 AND 技能y = 533 Then
        dm.KeyPress 82
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: R ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 533 Then
        dm.KeyPress 84
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: T ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 533 Then
        dm.KeyPress 89
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: Y ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 542 AND 技能y = 564 Then
        dm.KeyPress 65
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: A ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 572 AND 技能y = 564 Then   
        dm.KeyPress 83
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:S ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 602 AND 技能y = 564 Then
        DM.KeyPress 68
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:D ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 632 AND 技能y = 564 Then
        dm.KeyPress 70
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能:F ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 662 AND 技能y = 564 Then
        dm.KeyPress 71
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: G ]", "ff0000")
        SDelay 10
    ElseIf 技能x = 692 AND 技能y = 564 Then
        dm.KeyPress 72
        dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: H ]", "ff0000")
        SDelay 10
    ElseIf 技能x < 0 Then
        If Form1.普通攻击.Value = 1 Then
            dm.KeyPress 88
            dm_ret = dm.FoobarPrintText(foobar, now & "[ 释放技能: X ]", "ff0000")
            SDelay 200
        End If
    End If
End Sub
Sub 释放
    Dim 技能键(13)
    分割次数 = len(Form1.赋值技能.Text)
    For i = 1 To 分割次数
        技能键(i)=Mid(技能, i, 1)       
        If 怪物坐标 = True  Then
            TracePrint "通关了退出释放技能"
            Exit Sub
        Else
            dm_ret = dm.FindStr(510, 526, 725, 597, "技能", "ffce31-000000|52ceff-000000", 1.0, 技能x, 技能y)
            If Form1.普通攻击.Value = 1 Then
                If 技能x < 0 Then
                    dm.KeyPress 88
                End If
            End If
            SDelay 160
            If UCase(技能键(i)) = "A" Then
                dm.KeyPress 65
                SDelay 160
            ElseIf UCase(技能键(i)) = "S" Then
                dm.KeyPress 83
                SDelay 160
            ElseIf UCase(技能键(i)) = "D" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "F" Then
                dm.KeyPress 68
                SDelay 160
            ElseIf UCase(技能键(i)) = "G" Then
                dm.KeyPress 71
                SDelay 160
            ElseIf UCase(技能键(i)) = "H" Then
                dm.KeyPress 72
                SDelay 160
            ElseIf UCase(技能键(i)) = "Q" Then
                dm.KeyPress 81
                SDelay 160
            ElseIf UCase(技能键(i)) = "W" Then
                dm.KeyPress 87
                SDelay 160
            ElseIf UCase(技能键(i)) = "E" Then
                dm.KeyPress 69
                SDelay 160
            ElseIf UCase(技能键(i)) = "R" Then
                dm.KeyPress 82
                SDelay 160
            ElseIf UCase(技能键(i)) = "T" Then
                dm.KeyPress 84
                SDelay 160
            ElseIf UCase(技能键(i)) = "Y" Then
                dm.KeyPress 89
                SDelay 160
            ElseIf UCase(技能键(i)) = "X" Then
                dm.KeyPress 88
                SDelay 160
            End If
            SDelay 300            
        End If
    Next
End Sub
Sub 还任务
    Do
        dm_ret = dm.FindStr(268, 497, 506, 548, "完成任务", "cc4411-404040", 1.0, 完成任务x, 完成任务y)
        If 完成任务x > 0 Then
            ydsbz 完成任务x, 完成任务y
        Else   
            For 12
                dm.KeyPress 32
            Next
            Exit Do
        End If
    Loop
    dm.KeyPress 27
End Sub
Function 检测背包
    dm_ret = dm.FindPic(2, 350, 98, 454, "bb.bmp", "000000", 0.9, 0, intx2, inty2)
    If intx2 > 0 and inty2 > 0 Then
        检测背包 = True
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包满了 ] ", "ff0000")
    Else
        检测背包 = False
        dm_ret = dm.FoobarPrintText(foobar, now & " [ 背包没满 ] ", "ff0000")
    End If
End Function
Function 识别疲劳2
    dm_ret = dm.FindColor(278,545,513,559, "e60044-000000|b30026-000000|be6a83-000000", 0.9, 0, intX, intY)
    dm_ret = dm.FindColor(278,545,513,559, "00e6e6-000000|008ff1-000000|80a8a8-000000", 0.9, 0, intX2, intY2)
    If intX > 0 and intY > 0 OR intX2 > 0 and intY2 > 0 Then
        识别疲劳 = True
        TracePrint "还有疲劳"
        SDelay 700
    Else
        识别疲劳 = False
        TracePrint "没疲劳了"
        SDelay 800
    End If
End Function
Sub 识别材料
    Do
        Rem 重新扫描
        dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)
        If 装备栏x < 0 Then
            dm.KeyPress 73
            SDelay 300
        Else
            Call Lib.模拟真实键鼠.随机慢慢移动鼠标(装备栏x, 装备栏y)
            SDelay 200
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "材料", "ffffb8-000000", 1.0, 材料x, 材料y)
                If 材料x < 0 Then
                    ydsbz 593, 245
                    ydsbz 593, 245
                Else
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FoobarPrintText(foobar, now & " [ 准备识别材料 ] ", "ff0000")
            红色小晶块 = dm.Ocr(730, 312, 761, 341, "ffffff-000000", 1.0)
            dm_ret = dm.FoobarPrintText(foobar, now & " [红色小晶块数量: ] " & 红色小晶块, "ff0000")
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "wj.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                无尽的永恒 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [无尽的永恒数量: ] " & 无尽的永恒, "ff0000")
            Else     
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 没有找到无尽的永恒 ] " & 无尽的永恒, "ff0000")
            End If
            SDelay 302
            Do
                dm_ret = dm.FindStr(471, 226, 716, 278, "任务", "ffffb8-000000", 1.0, 材料2x, 材料2y)
                If 材料2x < 0 Then
                    ydsbz 690, 246
                    ydsbz 690, 246
                Else   
                    Exit Do
                End If
            Loop
            SDelay 150
            dm_ret = dm.FindPic(470, 239, 712, 499, "hl.bmp", "000000", 0.9, 0, intX, intY)
            If intX > 0 Then
                黄龙票 = dm.Ocr(intX - 10, intY - 10, intX + 28, intY + 5, "ffffff-000000", 1.0)
                dm_ret = dm.FoobarPrintText(foobar, now & " [黄龙门票数量:] " & 黄龙票, "ff0000")
            End If
            Do
                dm_ret = dm.FindStr(279, 0, 766, 280, "装备栏", "ffffff-000000|aaaaaa-000000", 1.0, 装备栏x, 装备栏y)       
                If 装备栏x > 0 Then
                    DM.KeyPress 73
                    SDelay 300
                Else        
                    Exit Do
                End If
            Loop
            SDelay 150
            疲劳值 = 识别疲劳值
            dm_ret = dm.FoobarPrintText(foobar, now & " [剩余疲劳 ] " & 疲劳值, "ff0000")
            可打次数 = 疲劳值 / 6
            dm_ret = dm.FoobarPrintText(foobar, now & " [可打黄龙次数] " & 可打次数, "ff0000")
            If 1300 > 红色小晶块 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 红色小晶块不足现在开始购买 ] ", "ff0000")
                Call 扫拍("红色小晶块", Form1.HS.Text, "1000")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 130 > 无尽的永恒 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 无尽的永恒块不足现在开始购买 ] " , "ff0000")
                Call 扫拍("无尽的永恒", Form1.wj.Text, "130")
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 重新扫描材料是否充足 ] ", "ff0000")
                Goto 重新扫描
            End If
            If 可打次数 > 黄龙票 Then
                dm_ret = dm.FoobarPrintText(foobar, now & " [ 当前门票不足准备前往小铁柱兑换门票 ] ", "ff0000")
                Call 行走到小铁柱
            End If
            Exit Do
        End If
    Loop
End Sub
Event Form1.Load
    Call 注册
End Event
回复 支持 反对

使用道具 举报

1863#
发表于 2018-6-14 13:47:49 | 只看该作者
Merci.Why must we respond while the other themes do not require?
回复 支持 反对

使用道具 举报

1864#
发表于 2018-6-20 12:24:02 | 只看该作者
华润集团可以最关键分看太阳月亮逢甘露
回复 支持 反对

使用道具 举报

1865#
发表于 2018-6-21 14:36:23 | 只看该作者
666666
回复

使用道具 举报

1866#
发表于 2018-6-22 09:18:18 | 只看该作者
:-oT撒旦法的撒撒旦发射点发C
回复 支持 反对

使用道具 举报

1867#
发表于 2018-6-23 06:15:54 | 只看该作者
TC深入浅出第十讲
回复 支持 反对

使用道具 举报

1868#
发表于 2018-6-30 21:44:38 | 只看该作者
多一些脚本供学习就好了
回复 支持 反对

使用道具 举报

1869#
发表于 2018-6-30 23:55:25 | 只看该作者
111111111
回复

使用道具 举报

1870#
发表于 2018-7-2 09:52:08 | 只看该作者
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

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

GMT+8, 2025-9-17 10:13 , Processed in 0.363485 second(s), 19 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

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