Option Explicit
Const C_GameWith = 1024
Const C_GameHeight = 768
Const C_GameSmallWith = 320
Const C_GameSmallHeight = 240
'黑带   16  20
Dim GamehWnd, dm, AppName, config, bgkms, KMData
config = ".\Angel.ini"
AppName = "Angel_BP"
Function CmpMutlColor(Args, Sleep)
    Dim i
    For i = 0 To UBound(Args)
        CmpMutlColor = (dm.CmpColor(Args(i)(0), Args(i)(1), Args(i)(2), Args(i)(3)) = 0)
        If CmpMutlColor = False Then Exit For
        Api.Delay Sleep
    Next
End Function
Class ListView_Class
    Sub SetText(ByVal hWnd, ByVal x, ByVal y, ByVal m)
        Dim pszText, LVITEM
        pszText = Api.StrConv(m, 128)
        Set LVITEM = Api.Malloc(39)
        LVITEM.SetVal(0, 4) = &H1
        LVITEM.SetVal(4, 4) = x
        LVITEM.SetVal(8, 4) = y
        LVITEM.SetVal(20, 4) = Api.StrPtr(pszText)
        Call Api.ECall("user32.dll", "SendMessageA", hWnd, &H1000 + 6, 0, LVITEM.GetPtr(0))
    End Sub
    Function GetText(ByVal hWnd, ByVal x, ByVal y)
        Dim pszText, LVITEM
        pszText = Space(100)
        Set LVITEM = Api.Malloc(39)
        LVITEM.SetVal(8, 4) = y
        LVITEM.SetVal(24, 4) = Len(pszText)
        LVITEM.SetVal(20, 4) = Api.StrPtr(pszText)
        GetText = LeftB(pszText, Api.ECall("user32.dll", "SendMessageA", hWnd, &H1000 + 45, x, LVITEM.GetPtr(0)))
        GetText = Api.StrConv(GetText, &H40)
    End Function
End Class
Const C_WorkProgress = 4
Class QQSpeed_Class
    Public [局数], [位置], [方向键]
    Private [防止休眠], [游戏大区], [开启截图], DownCpu, StartMode
    Private HIndex, WorkList, WorkIndex, ListView, ListhWnd(1), HNext
    Private Game, itime(3), StartTime, MarkTime, LoginTime, Angel, Vip, mFSO, picPath
    Private leave
    Public Function [准备游戏]()  '准备游戏'
        If dm.CmpColor(25, 5, "7C1601-111111", 0.9) = 0 Then
            Window.LeftClick GamehWnd, 30, 3  '开始游戏
            Api.Delay 500
        End If
    End Function
    Public Sub Start(Arys)
        Dim Stmp, i
        HIndex = Arys
        Set ListView = New ListView_Class
        ThreadEnter 1
        With Globals("Form")
            [方向键] = Array(38,87,104)(.Controls("方向按键").ListIndex)
            ListhWnd(0) = .Controls("ListView1").object.ListView.hWnd
            ListhWnd(1) = .Controls("ListView2").object.ListView.hWnd
            StartMode = .Controls("启动方式").ListIndex
            DownCpu = Int(.Controls("游戏降耗").text)
        End With
        WorkList = Globals("QQSpeed").Item(HIndex)
        JScript.AddCode Globals("CString_Class")
        ThreadLeave 1
        i = UBound(WorkList)
        If i = 0 Then
            Exit Sub
        End If
        WorkIndex = WorkList(0)(C_WorkProgress) + 1
        if WorkIndex > i Then
            HNext = 2
            Exit Sub
        End If
        [局数] = WorkList(0)(C_WorkProgress + 2)
        Set CString = JScript.Eval("new CString_Class")
        Set dm = [创建大漠]()
        Set bgkms = CreateObject("QMPlugin.bgkms6_10")
        [游戏大区] = WorkList(0)(3)
        If Len([游戏大区]) = 0 Then [游戏大区] = "*"
        GamehWnd = WorkList(0)(C_WorkProgress + 1)
        If StartMode = 1 Then
            Set Angel = CreateObject("QQSpeed.Angel")
            Call Angel.Init(Api)
            Set Vip = Angel.Vip
            If Api.ECall("user32", "IsWindow", GamehWnd) = False Then
                GamehWnd = Vip.GethWnd(WorkList(0)(1))
                If GamehWnd = 0 Then
                    GamehWnd = [自动上号](WorkList(0)(1), WorkList(0)(2), "自动上号")
                End If
            End If
        Else
            GamehWnd = Window.FindEx(0, "GAMEAPP", "QQ飞车*【" & [游戏大区] & "区】*【" & WorkList(0)(2) & "】*", 2)
        End If
        If GamehWnd = 0 Then Exit Sub
        If [调整窗口](GamehWnd) = False Then
            ListView.SetText ListhWnd(0), HIndex, 5, "分辨率错误"
            MsgBox "游戏窗口分辨率错误,请设置为:" & C_GameWith & " x " & C_GameHeight & "!" & vbCrLf & "如果飞车分辨率无误, 设置系统桌面分辨率为100%后注销系统", 4096 + 16, "错误"
            Exit Sub
        End If
        Call [绑定窗口](GamehWnd)
        Dim ws
        Set ws = CreateObject("WScript.Shell")
        picPath = ws.specialfolders("MyDocuments") & "\QQ飞车\" & WorkList(0)(1) & "\截图\"
        [开启截图] = InStr(File.ReadINI(AppName, "其他设置", config), "1自动截图")
        For i = WorkIndex To UBound(WorkList)
            WorkIndex = i
            Call SetTime(0, True)
            StartTime = Now()
            MarkTime = 0
            ListView.SetText ListhWnd(0), HIndex, 4, WorkList(i)(1)
            ListView.SetText ListhWnd(0), HIndex, 5, "换模式:" & [局数]
            If InStr("|边境模式|顺子大作战|跳跳派对|绝命车王|秘境闯关|互助接力赛|酷币大作战|双人冲锋战|超能竞速赛|狂野追逐|变身派对|极速对决|浪漫邂逅|双人冲顶赛|换车拉力赛|全城通缉令|超时空巨人赛|", "|" & WorkList(i)(1) & "|") Then
                Set Game = Eval("New [QQSpeed_" & WorkList(i)(1) & "]")
                Set Game.Father = Me
                Call Game.GuaJi
            Else
                Set Game = Eval("New [QQSpeed_" & "多功能" & "]")
                Set Game.Father = Me
                ExeCute "Game.[" & WorkList(i)(1) & "]"
            End If
            [局数] = 0
        Next
        HNext = 1
    End Sub
    Public Function [调整窗口](hWnd)  '调整窗口'
        Dim x1, y1, x2, y2
        Dim i
        Window.Restore hWnd
        Window.Active hWnd
        Api.Delay 500
        For i = 0 To 15
            Call Window.GetClientRect(hWnd, x1, y1, x2, y2)
            If x2 = C_GameSmallWith And y2 = C_GameSmallHeight Then
                [调整窗口] = True
                Exit Function
            ElseIf x2 <> C_GameWith Or y2 <> C_GameHeight Then
                Window.KeyPress hWnd, 119
                Api.Delay 800
            Else
                [调整窗口] = True
                Exit Function
            End If
        Next
    End Function
    Private Function [创建大漠]()
        Set [创建大漠] = CreateObject("dm.dmsoft")
        [创建大漠].SetShowErrorMsg 0
    End Function
    Private Sub [绑定窗口](hWnd)
        Dim i, iLeft, iTop, ScreenWidth, ScreenHeight, HeightCount, WidthCount
        i = File.ReadINI(AppName, "窗口排列.ListIndex", config, 0)
        If i = 6 Then
            iLeft = -C_GameSmallWith + 1
            iTop = -C_GameSmallHeight + 1
        Else
            ScreenWidth = Api.ECall("user32", "GetSystemMetrics", 0)
            ScreenHeight = Api.ECall("user32", "GetSystemMetrics", 1)
            If i = 0 Or i = 3 Then
                iTop = 50
                HeightCount = (ScreenHeight - C_GameSmallHeight + iTop) \ iTop
            Else
                iTop = C_GameSmallHeight
                HeightCount = ScreenHeight \ iTop
            End If
            If i = 2 Or i = 5 Then
                WidthCount = ScreenWidth \ C_GameSmallWith
                iLeft = (HIndex Mod WidthCount) * C_GameSmallWith
                iTop = (HIndex \ WidthCount) * C_GameSmallHeight
            Else
                iLeft = (HIndex \ HeightCount) * C_GameSmallWith
                iTop = (HIndex Mod HeightCount) * iTop
            End If
            iLeft = IIf(i >= 3, ScreenWidth - C_GameSmallWith + 5 - iLeft, -5 + iLeft)
            If iLeft > ScreenWidth Then
                iLeft = -5
            ElseIf iLeft < -C_GameSmallWith Then
                iLeft = ScreenWidth - C_GameSmallWith + 5
            End If
            If iTop > ScreenHeight Then iTop = 0
        End If
        Window.SetStyle hWnd, 128
        Window.Size hWnd, C_GameWith, C_GameHeight
        Window.ClientMove hWnd, iLeft, iTop, C_GameSmallWith, C_GameSmallHeight
        Api.Delay 100
        i = dm.BindWindowEx(hWnd, "dx2", "windows", "windows", "", 0)
        ' msgbox i
        Api.Delay 200
        ' If DownCpu Then dm.DownCpu DownCpu
        If DownCpu then bgkms.SaveCPU GamehWnd, DownCpu
    End Sub
    Public Function [自动开箱](Count, IntX, IntY, Margin, Args)
        Dim i
        For i = Count To 0 Step -1  '开宝箱'
            Window.LeftClick GamehWnd, IntX - i * Margin, IntY
            Api.Delay 300
            If Eval(Args(0)) Then
                Call [自动截图]("FFFFFF-555555", 100, 88, 220, 158)
                If UBound(Args) Then ExeCute Args(1)
            End If
            If UBound(Args) > 1 Then ExeCute Args(2)
        Next
    End Function
    Public Function [自动截图](Color, x1, y1, x2, y2)
        Dim Save, img, pic, IntX, IntY
        If [开启截图] Then
            Save = ".\截图\"
            pic = [获取文件]()
            If pic = "" Then Exit Function
            Set img = mFSO.GetFile(pic & ".jpg")
            With [创建大漠]()
                IntX = C_GameWith / C_GameSmallWith
                IntY = C_GameHeight / C_GameSmallHeight
                .SetDisplayInput "pic:" & pic & ".bmp"
                .AddDict 0, "084110A4171A037FD080280882080100000208421184E10440B0198008008008$永久$0.0.58$11"
                If .FindStrFast(x1 * IntX, y1 * IntY, x2 * IntX, y2 * IntY, "永久", Color, 0.9, IntX, IntY) >= 0 Then
                    If Not mFSO.FolderExists(Save) Then mFSO.CreateFolder Save
                    img.Copy Save & WorkList(0)(1) & "_" & CString.GetMid(Window.GetText(GamehWnd), "【", "】") & "_" & Api.Format(Now, "yyyy-mm-dd h.mm.ss") & "_" & WorkList(WorkIndex)(1) & ".jpg"
                End If
                .FreePic (pic & ".bmp")
            End With
            mFSO.DeleteFile pic & ".bmp"
            img.Delete
            'Call dm.Capture(0, 0, C_GameSmallWith, C_GameSmallHeight, pic & "screen.bmp")
        End If
    End Function
    Private Function [获取文件]()
        Dim i, j, t, path
        Window.KeyPress GamehWnd, 115
        t = Now()
        Api.Delay 200
        For i = 0 To 10
            j = i Mod 2
            If j = 0 Then Api.Delay 200
            path = picPath & Api.Format(DateAdd("s", -j, t), "yyyymmdd_hhmmss")
            If mFSO.FileExists(path & ".jpg") Then
                [获取文件] = path
                Exit For
            End If
        Next
        If [获取文件] = "" Then Exit Function
        For i = 0 To 10
            If dm.ImageToBmp(path & ".jpg", path & ".bmp") Then
            ' If Not File.IsLock(Path) Then
                Exit For
            End If
            Api.Delay 200
        Next
        If i = 11 Then [获取文件] = ""
    End Function

    Private Function [上号判断](hWnd, Message)
        Dim i, hWnds, hWndE
        hWnds = Window.EnumWindows(0, "#32770", "QQ安全中心", 32)
        For i = 0 To UBound(hWnds)
            If Vip.IsSameWindow(hWnds(i), hWnd) Then
                If UBound(Window.EnumWindowsEx(hWnds(i), "Static", "密码验证错误", 32)) >= 0 Then
                    Message = "密码错误"
                    WorkList(0)(C_WorkProgress + 3) = &H10000 * 3
                    [上号判断] = True
                    Exit Function
                ElseIf UBound(Window.EnumWindowsEx(hWnds(i), "Static", "*验证码*", 2 + 32)) >= 0 Then
                    Message = "验证码"
                    If InStr(File.ReadINI(AppName, "其他设置", config), "1自动滑块") Then
                        Call Angel.Slider(hWnds(i))
                    End If
                End If
            End If
        Next
        hWnds = Window.EnumWindows(0, "#32770", "提示", 32)
        For i = 0 To UBound(hWnds)
            If Vip.IsSameWindow(hWnds(i), hWnd) Then
                hWndE = Window.FindEx(hWnds(i), "maqHyperTextCtrl", 0, 32)
                If hWndE Then
                    Message = Angel.GetWindowText(hWndE)
                    If InStr(Message, "网络环境") = 0 Then
                        WorkList(0)(C_WorkProgress + 3) = &H10000 * 2
                    End If
                Else
                    Message = "网络环境异常"
                End If
                [上号判断] = True
            End If
        Next
    End Function
    Private Function [自动上号](QQ, Pwd, Message)
        Dim i, Count, TryMax, hWnds, hWnd, Wait, path, ID
        Wait = File.ReadINI(AppName, "上号间隔.text", config, 50)
        If File.ReadINI(AppName, "登录重试.Value", config, 1) Then
            TryMax = File.ReadINI(AppName, "登录重试T.text", config, 3)
        End If
        If InStr(File.ReadINI(AppName, "其他设置", config), "1飞车路径") Then
            path = File.ReadINI(AppName, "飞车路径", config)
        End If
        Do
            Count = Count + 1
            ListView.SetText ListhWnd(0), HIndex, 4, Message & " " & Count
            ThreadEnter 3 '线程锁
            Api.Delay 100
            hWnds = Window.EnumWindows(0, "#32770", "QQ飞车", 32)
            For i = 0 To UBound(hWnds)
                dm.SetWindowState hWnds(i), 0
            Next
            i = InStr("电信联通电信2", [游戏大区]) - 1
            ID = Window.GetInfo(Vip.QQSpeedLogin(QQ, Pwd, Int(i / 2), , , path), 3)
            Api.Delay 500   '授权确定
            hWnds = Window.EnumWindows(0, "#32770", "QQ飞车", 32)
            For i = 0 To UBound(hWnds)
                hWnd = Api.ECall("user32", "FindWindowExW", hWnds(i), 0, "#32770", "QQ飞车")
                if hWnd then
                    Window.LeftClick hWnd, 40, 10
                end if 
            Next
            Api.Delay 1000
            hWnds = Vip.EnumWindows("#32770", "QQ飞车", "330-100", "220-100")
            If UBound(hWnds) >= 0 Then dm.SetWindowText hWnds(0), "QQ飞车" & QQ
            ThreadLeave 3
            For i = 0 To Wait
                hWnd = Window.Find("#32770", "QQ飞车" & QQ)
                If hWnd Then
                    Api.Delay 1000
                    If [上号判断](hWnd, Message) Then
                        i = 999
                        dm.SetWindowState hWnd, 13
                        Exit For
                    End If
                Else
                    Exit Do
                End If
            Next
            If i > Wait Then
                dm.SetWindowState hWnd, 0
                Api.Delay 200
                dm.SetWindowState hWnd, 13
            End If
        Loop While Count < TryMax
        If i > Wait Then
            ListView.SetText ListhWnd(0), HIndex, 4, Message
        ElseIf StartMode Then
            '[自动上号] = Vip.GethWnd(QQ)
            If [自动上号] = 0 Then  '不支持热启动
                [自动上号] = Vip.GethWndByID(ID)
            End If
            WorkList(0)(C_WorkProgress + 1) = [自动上号]
        Else
            [自动上号] = Window.FindEx(0, "GAMEAPP", "QQ飞车*【" & [游戏大区] & "区】*【" & WorkList(0)(2) & "】*", 2)
        End If
        ThreadEnter 2
        File.WriteText ".\上号日志.txt", "上号时间:" & Now & String(3, vbTab) & "模式:" & WorkList(WorkIndex)(1) & String(3, vbTab) & "第" & HIndex + 1 & "个号:" & IIf(StartMode, WorkList(0)(1), WorkList(0)(2)) & _
        String(3, vbTab) & "局数:" & [局数] & String(3, vbTab) & IIf([自动上号], "【成功】", "【失败】" & Message) & vbCrLf & vbCrLf, True
        ThreadLeave 2
        Api.Delay 1000
        If [自动上号] = 0 Then
            WorkList(0)(C_WorkProgress + 3) = WorkList(0)(C_WorkProgress + 3) Or 2
            Api.StopThread -1
        End If
        LoginTime = dm.GetTime()
    End Function
    Private Function [掉线重连]()
        Dim Wait
        dm.SetWindowState GamehWnd, 13
        If File.ReadINI(AppName, "上号延时.Value", config, 1) Then
            Wait = File.ReadINI(AppName, "上号延时T.text", config, 5)
        End If
        Api.Delay Wait * 1000
        GamehWnd = [自动上号](WorkList(0)(1), WorkList(0)(2), "掉线重连")
        If GamehWnd = 0 Then Exit Function
        If [调整窗口](GamehWnd) = False Then
            ListView.SetText ListhWnd(0), HIndex, 5, "分辨率错误"
            Exit Function
        End If
        Call [绑定窗口](GamehWnd)
        [掉线重连] = True
    End Function
    Public Sub [完成一局](Sleep)
        [局数] = [局数] + 1
        Api.Delay Sleep
        ListView.SetText ListhWnd(0), HIndex, 5, "已完成:" & [局数]
    End Sub
    Public Function [清理弹窗](Mode)
        Dim IntX, IntY
        If CBool(State([位置])) And CBool(mode And 4) = False Then  '清理 黑屏
            Window.KeyUp GamehWnd, 18
            If dm.FindColor(281, 36, 292, 47, "FFFFFF", 0.9, 0, IntX, IntY) = 0 Then
                Window.KeyPress GamehWnd, 27
                Api.Delay 200
            End If
            If dm.FindMultiColor(185, 33, 300, 100, "F4892A-080808", "2|0|181818-181818,2|1|181818-181818", 0.9, 6, IntX, IntY) Then
                Window.LeftClick GamehWnd, IntX, IntY
                Api.Delay 300
            End If
        ElseIf CBool(mode And 2) = False Then
            If CmpMutlColor(Array(Array(309, 4, "FAE162-080808", 0.9), Array(311, 74, "FCE56F-341A03", 0.9)), 2) Then '返回键
                If dm.CmpColor(16, 235, "FCDC4E-08112B", 0.9) = 1 Then
                    ' Call dm.Capture(0, 0, C_GameSmallWith, C_GameSmallHeight, "C:\screen.bmp")
                    ' msgbox 111
                    If mode And 1 Then
                        [清理弹窗] = [清理弹窗] Or 2
                    Else
                        Api.Delay 2000
                        If Game.IsIn() = False Then
                            Window.LeftClick GamehWnd, 311, 4  '退出房间'
                            Api.Delay 300
                        End If
                    End If
                End If
            End If
        End If
    End Function
    Public Sub [点击位置]([位置], Flag)
        Dim i, ClickTo, j, IntX, IntY
        i = InStr([位置], "_")
        If i Then
            Call [点击位置](Left([位置], i - 1), 0)
        End If
        Select Case [位置]
        Case "多人游戏"
            Window.KeyPress GamehWnd, 13  '点回车
            Api.Delay 200
            dm.SetWindowState GamehWnd,1  '使窗口获得焦点
            Api.Delay 200
            ' Window.LeftClick GamehWnd, 42, 25 '经典飞车
            For i = 0 To 2
                dm.MoveTo 32, 7
                Window.LeftClick GamehWnd, 37, 7
                Api.Delay 500
            Next
            Window.LeftClick GamehWnd, 146, 197 '关消息窗口
        Case "多人游戏_快速进入"
            ClickTo = Split(Flag, "-")
            Window.LeftClick GamehWnd, 37, 7
            Api.Delay 300
            dm.MoveTo 20, 25
            Api.Delay 300
            IntX = 20
            For i = 0 To UBound(ClickTo)
                IntY = ClickTo(i)
                dm.MoveTo IntX, IntY
                Api.Delay 300
                Window.LeftClick GamehWnd, IntX, IntY
                Api.Delay 300
                IntX = IntX + 38
            Next
        Case "菜单"
            Window.KeyPress GamehWnd, 13  '点回车
            Api.Delay 200
            dm.SetWindowState GamehWnd,1  '使窗口获得焦点
            Api.Delay 200
            Window.LeftClick GamehWnd, 2, 235
            Api.Delay 300
        Case "菜单_多人游戏"
            'Flag = Flag - 2
            Const BOTTOM = 235
            dm.MoveTo 40, 162
            Api.Delay 600
            Window.LeftClick GamehWnd, 100, BOTTOM - Flag * 12
        End Select
    End Sub
    Public Sub [强制到位置](IniTime)
        Dim i
        IniTime = True
        Call SetTime(1, IniTime)
        [位置] = 0
        Do Until Game.IsIn() Or CBool(Game.Where(1))
            Call [清理弹窗](0)
            If i = 0 Then
                i = dm.GetTime() - LoginTime > 15000
                If i = 0 Then
                    i = Where(0) = 1
                    dm.MoveTo Int((30 - 10 + 1) * Rnd(1) + 10), 10
                    dm.LeftClick
                    Api.Delay 50
                    dm.KeyPress 27
                End If
            Else
                Call Game.Go
                Api.Delay 1000
                Call [清理弹窗](2)
                Api.Delay 500
            End If
            If Handling(1, 60, IniTime) = -1 Then
                Call [强制到位置](IniTime)
                Exit Do
            End If
        Loop
        IniTime = True
    End Sub
    Public Function [位置被改变](ByVal Num, IniTime)
        Dim i
        If Num = 0 Or Num = 2 Then
            i = [可以下个模式]()
            If i < 0 Then
                [位置被改变] = i
                Exit Function
            End If
        End If
        If [位置] <> Num Then
            [位置] = Num
            IniTime = True
            [位置被改变] = 1
            Select Case [位置]
            Case 0
                ListView.SetText ListhWnd(0), HIndex, 5, "准备中:" & [局数]
            Case 1
                ListView.SetText ListhWnd(0), HIndex, 5, "游戏中:" & [局数]
            Case 2
                ListView.SetText ListhWnd(0), HIndex, 5, "房间中:" & [局数]
            End Select
            Call SetTime(1, IniTime)
        End If
    End Function
    Public Function [可以下个模式]()
        Dim i
        i = Api.Val(WorkList(WorkIndex)(3))
        If i > 0 Then
            If DateDiff("s", itime(0), Now()) > i * 60 Then
                [可以下个模式] = -2
            End If
        End If
        i = Api.Val(WorkList(WorkIndex)(2))
        If i > 0 And [局数] >= i Then
            [可以下个模式] = -1
        End If
        If [可以下个模式] < 0 Then
            Window.LeftClick GamehWnd, 311, 4  '退出房间'
        End If
    End Function
    Public Function Where(ByVal Flag)
        Select Case Flag
        Case 0 '游戏大厅
            If CmpMutlColor(Array(Array(0, 8, "FFC50E-081108", 0.9), Array(49, 3, "0DBDE2-0C140E", 0.9), Array(92, 3, "0DBDE2-0C140E", 0.9)), 2) Then
               Where = 1 + dm.CmpColor(309, 5, "F8D95B-0D0F07", 0.9)
            End If
        Case 1 '游戏中'
            Where = CmpMutlColor(Array(Array(52, 30, "E8E8E8-080808", 0.9), Array(29, 31, "C5C5C5-080808", 0.9), Array(52, 11, "949492-080808", 0.9)), 20)
        Case 2 '游戏房间'
            Where = CmpMutlColor(Array(Array(309, 4, "FAE162-080808", 0.9), Array(35, 2, "FFE76B-080808", 0.9)), 20) And dm.CmpColor(0, 8, "FFC50E-081108", 0.9) = 1
        Case 3 '颁奖中'
        Case 4 '匹配中'
            Where = CmpMutlColor(Array(Array(147, 225, "0CD9DF-071111", 0.9), Array(172, 225, "0BD9DF-081111", 0.9), Array(147, 230, "0DB2C1-091918", 0.9), Array(172, 230, "0CB3C1-091818", 0.9)), 2) And dm.CmpColor(1161, 219, "0BD9DF-081111", 0.9) = 1
        End Select
    End Function
    Public Function State(ByVal WZ) '弹窗
        If WZ = 2 Or WZ = 3 Then
            WZ = 0
        End If
        If WZ = 0 Then
            If dm.CmpColor(309, 4, "322D14-080808", 0.9) = 0 Then
                State = 1
            ElseIf CmpMutlColor(Array(Array(34, 2, "332E15-080808", 0.9), Array(309, 4, "0F242B-080808", 0.9)), 2) Then
                State = 2   '游戏大厅'
            ElseIf CmpMutlColor(Array(Array(4,12,"002333-161616",0.9),Array(34,2,"152E33-161616",0.9),Array(68,2,"2E2703-161616",0.9)), 2) Then '黑屏
                State = 3   '黑屏'
            End If
        ElseIf WZ = 1 Then
            If CmpMutlColor(Array(Array(52, 30, "2E2E2E-080808", 0.9), Array(29, 31, "272727-080808", 0.9), Array(52, 11, "1C1D1C-080808", 0.9)), 2) Then
                State = 1
            End If
        End If
    End Function
    Public Function SetTime(Index, IniTime)
        If IniTime Then
            itime(Index) = Now()
            IniTime = False
            SetTime = True
        End If
    End Function
    Public Function Handling(Index, S, IniTime)
        Dim i
        Handling = 0
        If DateDiff("s", itime(Index), Now()) > S Then '超时处理
            IniTime = True
            Handling = Detect(1)
        End If
        i = DateDiff("s", StartTime, Now())
        If i - MarkTime >= 10 Then
            MarkTime = i
            ListView.SetText ListhWnd(0), HIndex, 4, WorkList(WorkIndex)(1) & ":" & (i \ 10) * 10
            If Handling = 0 Then Handling = Detect(0)
        End If
    End Function
    Public Function Detect(Default)
        Dim x1, y1, x2, y2
        Select Case True
        Case Default <> 0
            Detect = Default
        Case Api.ECall("user32", "IsWindow", GamehWnd) = 0
            Detect = 11
        Case Else
            For x1 = 0 To 15
                If Api.ECall("user32", "IsHungAppWindow", GamehWnd) = 0 Then
                    Exit For
                End If
                Api.Delay 1000
            Next
            If x1 = 16 Then
                Detect = 12
            Else
                Call Window.GetClientRect(GamehWnd, x1, y1, x2, y2)
                If x2 <> C_GameSmallWith Or y2 <> C_GameSmallHeight Then
                    Call [调整窗口](GamehWnd)
                End If
            End If
        End Select
        If Detect Then
            If StartMode = 1 Then
                ListView.SetText ListhWnd(0), HIndex, 5, "重连" & Detect & ":" & [局数]
                If [掉线重连] Then
                    ' Call SetTime(0, True)
                    ' StartTime = Now()
                    ' MarkTime = 0
                    KMData = 0
                    Detect = -1
                End If
            End If
        End If
    End Function
    Public Sub ThreadEnter(Nun)
        Api.EnterCriticalSection Nun
        leave = Nun
    End Sub
    Public Sub ThreadLeave(Nun)
        Api.LeaveCriticalSection Nun
        leave = 0
    End Sub
    Public Function IIf(p, a, b)
        If p Then
            IIf = a
        Else
            IIf = b
        End If
    End Function
    Private Sub GameOver()
        Dim x1, y1, x2, y2
        If leave Then Api.LeaveCriticalSection leave  '防止手动中止
        Call Api.ECall("Kernel32.dll", "CloseHandle", WorkList(0)(0))
        If HNext Then
            ListView.SetText ListhWnd(0), HIndex, 5, "完成"
            If HNext = 1 Then
                ListView.SetText ListhWnd(0), HIndex, 4, WorkList(WorkIndex)(1)
                dm.SetWindowState GamehWnd, 13
            End If
            WorkList(0)(C_WorkProgress + 3) = 1
            Api.EnterCriticalSection 1
            Globals("QQSpeed").Item(HIndex) = WorkList
            Call Api.ECall("user32.dll", "SendMessageA", Globals("Form").hWnd, &H8004&, HIndex + 1, StartMode)
            Api.LeaveCriticalSection 1
            Exit Sub
        End If
        ListView.SetText ListhWnd(0), HIndex, 4, WorkList(WorkIndex)(1)
        ListView.SetText ListhWnd(0), HIndex, 5, IIf(WorkList(0)(C_WorkProgress + 3) And 2, "上号失败", "手动中止")
        WorkList(0)(C_WorkProgress) = WorkIndex - 1 '保存进度
        WorkList(0)(C_WorkProgress + 2) = [局数]
        Api.EnterCriticalSection 1
        Globals("QQSpeed").Item(HIndex) = WorkList
        If WorkList(0)(C_WorkProgress + 3) And 2 Then
            Call Api.ECall("user32.dll", "SendMessageW", Globals("Form").hWnd, &H8004&, HIndex + 1, StartMode)
        End If
        Api.LeaveCriticalSection 1
        If GamehWnd = 0 Then Exit Sub
        Window.GetClientRect GamehWnd, x1, y1, x2, y2
        If x2 = C_GameSmallWith Then
            ' If DownCpu Then dm.DownCpu 0
            If DownCpu then bgkms.SaveCPU GamehWnd, 0
            If KMData then bgkms.KMUntransform KMData
            dm.UnBindWindow
            Api.Delay 50
            Window.SetStyle GamehWnd, 1 + 16 + 128
            Window.Size GamehWnd, C_GameWith, C_GameHeight
            Api.Delay 100
            Window.ClientMove GamehWnd, 0, 0, C_GameWith, C_GameHeight
        End If
    End Sub
    Private Sub Class_Initialize()
        Window.Delay = "40-100"
        Set mFSO = CreateObject("Scripting.FileSystemObject")
    End Sub
    Private Sub Class_Terminate()
        GameOver
        Api.EnterCriticalSection 1
        Globals("Form").Controls("ListView1").object.ListView.ListItems(HIndex + 1).Checked = False
        Api.LeaveCriticalSection 1
    End Sub
End Class
Class [QQSpeed_边境模式]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime
        Dim i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Api.Delay 200
                If dm.CmpColor(108, 75, "FFFFFF", 0.9) = 0 Then '选择频道'
                    Window.LeftClick GamehWnd, 100, 132 + 20 * i
                Else
                    Window.LeftClick GamehWnd, 100, 90 '再来一次'
                End If
            ElseIf Where(1) Then
                Api.Delay 1000
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf CmpMutlColor(Array(Array(24, 74, "303030-080808", 0.9), Array(22, 105, "0B0706-080808", 0.9)), 20) Then '正在进入游戏'
                Api.Delay 1000
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 80, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 180, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(285, 44, "FFFFFF", 1) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Function IsIn() '是否在边境'
        IsIn = CmpMutlColor(Array(Array(105, 60, "F68608-0B1F0A", 0.9), Array(70, 59, "F78609-0A1D0B", 0.9), Array(114, 69, "05C7CF-071411", 0.9), Array(92, 69, "05C8CF-081412", 0.9)), 20)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub Go()
        Dim i
        For i = 0 To 3
            Window.LeftClick GamehWnd, 38, 7
            Api.Delay 200
        Next
        Window.LeftClick GamehWnd, 220, 3
        Api.Delay 500
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
End Class
Class [QQSpeed_跳跳派对]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 50, 88  '单人匹配'
                Api.Delay 200
            ElseIf Where(1) Then
                dm.KeyDown QQSpeed.[方向键]
                For i = 0 To 1
                    Window.KeyPress GamehWnd, 32
                    Api.Delay 500
                Next
                Window.KeyPress GamehWnd, 17
                Api.Delay 1000
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                Window.LeftClick GamehWnd, 311, 4  '退出房间'
                If QQSpeed.[位置被改变](2, IniTime) < 0 Then Exit Do
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                If CmpMutlColor(Array(Array(283, 223, "40D6F8-090C08", 0.9), Array(292, 223, "3DD6F8-0B0C07", 0.9), Array(258, 212, "2279F3-090B10", 0.9)), 2) Then '返回键
                    Window.LeftClick GamehWnd, 275, 217
                    Api.Delay 500
                End If
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 150, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                    Class_Initialize
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                    Class_Initialize
                End Select
                If dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 2000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "多人游戏_快速进入", "172-111"
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(17, 65, "FCC57D-070706", 0.9), Array(126, 44, "A3DABD-090709", 0.9), Array(132, 44, "C4E4B9-090709", 0.9), Array(15, 130, "80C5B2-080707", 0.9)), 2)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](2, 91, 145, 30, Array(True))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
    Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class
Class [QQSpeed_顺子大作战]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 50,80   '单人匹配'
                Api.Delay 200
            ElseIf Where(1) Then
             dm.KeyDown QQSpeed.[方向键]
             Api.Delay 4000
                Window.KeyDown GamehWnd, 68
                Api.Delay 1300
                Window.KeyUp GamehWnd, 68
                Window.KeyPress GamehWnd, 17
                Window.KeyPress GamehWnd, 32
                Api.Delay 1000
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                Window.LeftClick GamehWnd, 311, 4  '退出房间'
                If QQSpeed.[位置被改变](2, IniTime) < 0 Then Exit Do
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 150, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "菜单_多人游戏", 12
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(175,38,"56B5BF-060606",0.9),Array(101,166,"8AC0B3-070606",0.9),Array(20,110,"64EEB6-080707",0.9),Array(51,168,"D4E2E2-070607",0.9)), 2)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](2, 120, 140, 40, Array(True))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
        Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class
Class [QQSpeed_绝命车王]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 42, 105   '单人匹配'
                Api.Delay 200
            ElseIf Where(1) Then
             dm.KeyDown QQSpeed.[方向键]
                    Api.Delay 8000
                    Window.KeyPress GamehWnd, 82    '十秒复位'
                   Api.Delay 5000
                    Window.KeyDown GamehWnd, 68    '按下右键'
                    Api.Delay 1300
                    Window.KeyUp GamehWnd, 68     '弹起右键'
                    Api.Delay 500
                Window.KeyPress GamehWnd, 17    '点击contrl'
                Api.Delay 1000
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                Window.LeftClick GamehWnd, 311, 4  '退出房间'
                If QQSpeed.[位置被改变](2, IniTime) < 0 Then Exit Do
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 150, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "多人游戏_快速进入", "110-135"
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(17, 208, "45090C-060606", 0.9), Array(38, 184, "C68D4A-070807", 0.9), Array(10, 144, "2C1113-070707", 0.9), Array(7, 45, "291010-060707", 0.9)), 2)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](2, 115, 155, 39, Array(True))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
        Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class
Class [QQSpeed_秘境闯关]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i, itime
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                If dm.GetTime Mod 2 Then
                    Window.LeftClick GamehWnd, 160, 50
                Else
                    Window.LeftClick GamehWnd, 85, 100   '单人匹配'
                End If
                Api.Delay 200
            ElseIf Where(1) Then
                Api.Delay 1000
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                LuckyBox()
                i = QQSpeed.[位置被改变](2, IniTime)
                If i < 0 Then Exit Do
                If dm.CmpColor(26, 235, "0D4959-070909", 0.9) = 1 Then  'BUG 进了普通房间
                    Window.LeftClick GamehWnd, 311, 4  '退出房间
                    Api.Delay 500
                ElseIf i Then
                    itime = Now()
                ElseIf DateDiff("s", itime, Now()) > 10 Then
                    Window.LeftClick GamehWnd, 311, 4  '退出房间
                    Api.Delay 500
                Else
                    QQSpeed.[准备游戏]
                End If
            ElseIf Where(0) Then
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                QQSpeed.[强制到位置] IniTime
            Else
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 200, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(9, 236, "0083C5-06130E", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 5000
                ElseIf dm.CmpColor(149, 12, "A0FFFF-110808", 0.9) = 0 Then  '放技能'
                    dm.KeyPress 32
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "菜单_多人游戏", 15
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(10, 155, "472B95-080808", 0.9), Array(3, 95, "1D1F5B-070607", 0.9), Array(3, 89, "3A306B-070707", 0.9), Array(8, 237, "9B6FFB-0C0A08", 0.9)), 2)
    End Function
    Public Function Where(Flag)
        If Flag = 1 Then
            Where = CmpMutlColor(Array(Array(9, 236, "0083C5-06130E", 0.9), Array(259, 17, "FAFBFF-0A0906", 0.9), Array(9, 42, "FFFFFF-080808", 0.9)), 2)
        Else
            Where = QQSpeed.Where(Flag)
        End If
    End Function
    Public Sub LuckyBox()
        If Where(2) Then
            Call QQSpeed.[自动开箱](1, 286, 25, 28, Array("dm.CmpColor(213, 73,""313642-080808"", 0.9) = 0", "Window.LeftClick GamehWnd, 217, 76"))
        Else
            Call QQSpeed.[自动开箱](4, 115, 123, 24, Array("dm.CmpColor(213, 73,""313642-080808"", 0.9) = 0", "Window.LeftClick GamehWnd, 217, 76"))
        End If
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
    Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class
Class [QQSpeed_互助接力赛]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 40, 80   '单人匹配'
                Api.Delay 200
            ElseIf Where(1) Then
                dm.KeyDown QQSpeed.[方向键]
                    Api.Delay 8000
                    Window.KeyPress GamehWnd, 82    '十秒复位'
                   Api.Delay 5000
                    Window.KeyDown GamehWnd, 68    '按下右键'
                    Api.Delay 1300
                    Window.KeyUp GamehWnd, 68     '弹起右键'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 17    '点击contrl'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 32    '点击空格'
                    Api.Delay 500
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                Call LuckyBox
                Window.LeftClick GamehWnd, 311, 4  '退出房间'
                Api.Delay 300
                Window.LeftClick GamehWnd, 140, 152 '确定
                If QQSpeed.[位置被改变](2, IniTime) < 0 Then Exit Do
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                If QQSpeed.State(0) Then
                    If CmpMutlColor(Array(Array(213, 84, "291B64-080808", 0.9), Array(216, 88, "372976-080808", 0.9)), 20) Then '弹窗'
                        Window.LeftClick GamehWnd, 208, 82
                    End If
                ElseIf CmpMutlColor(Array(Array(3, 6, "4749BA-080808", 0.9), Array(315, 5, "4BECF4-080808", 0.9)), 20) Then '等待开局'
                    If dm.CmpColor(311, 100, "FBE699-080811", 0.9) = 0 Then '点赞'
                        Window.LeftClick GamehWnd, 310, 100
                    End If
                End If
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 150, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If QQSpeed.State(1) Then
                    If CmpMutlColor(Array(Array(195, 83, "392974-070607", 0.9), Array(213, 84, "291B63-060606", 0.9), Array(215, 156, "352772-070707", 0.9)), 2) Then '队友离开
                        Window.LeftClick GamehWnd, 140, 152
                    End If
                ElseIf dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "菜单_多人游戏", 10
    End Sub
    Public Function IsIn() '是否在边境'
        IsIn = CmpMutlColor(Array(Array(23, 33, "FEFCFF-080808", 0.9), Array(135, 38, "1AFCF3-080808", 0.9), Array(132, 38, "1AFCF3-080808", 0.9)), 20)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        If QQSpeed.[位置] = 2 Then
            Call QQSpeed.[自动开箱](1, 173, 90, 23, Array(True))
        Else
            Call QQSpeed.[自动开箱](2, 30, 145, 45, Array(True))
        End If
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
        Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class
Class [QQSpeed_酷币大作战]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 40, 110   '单人匹配'
                Api.Delay 200
            ElseIf Where(1) Then    '游戏中'
                    dm.KeyDown QQSpeed.[方向键] 
                    Api.Delay 3000           
                    Window.KeyDown GamehWnd, 68  '按下右键
                    Api.Delay 1000
                Window.KeyPress GamehWnd, 17
                Api.Delay 1000
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                Call LuckyBox
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 150, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 360, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(264, 7, "FFF4DF-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "菜单_多人游戏", 9
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(139, 70, "5266DD-080808", 0.9), Array(147, 85, "7388D9-080808", 0.9), Array(12, 75, "30A8FF-080808", 0.9)), 20)
    End Function
    Public Function Where(Flag)
        If Flag = 1 Then
            Where = CmpMutlColor(Array(Array(264, 7, "FFF4DF-080808", 0.9), Array(289, 11, "FFF4DF-080808", 0.9), Array(203, 10, "E0F4FF-080808", 0.9)), 20)
        Else
            Where = QQSpeed.Where(Flag)
        End If
    End Function
    Public Sub LuckyBox()
        Dim i, IntX, IntY
        If CmpMutlColor(Array(Array(84, 65, "56342C-071111", 0.9), Array(34, 106, "F6D1BF-081111", 0.9), Array(71, 162, "F78796-091918", 0.9)), 20) Then
            Api.Delay 3000
            For i = 0 To 7
                IntX = 117 + 50 * (i Mod 4)
                IntY = 120 + 61 * (i \ 4)
                If dm.CmpColor(IntX, IntY, "7462D3-111111", 0.9) = 0 Then
                    IntX = IntX - 20
                    IntY = IntY - 11
                    Exit For
                End If
                Api.Delay 20
            Next
            If i = 8 Then
                IntX = 40
                IntY = 143
            End If
            Call QQSpeed.[自动截图]("00FFFF-222222", 40, IntY + 35, 72, IntY + 7)
            Api.Delay 5000
        End If
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
        Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class
Class [QQSpeed_双人冲锋战]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 40, 95   '单人匹配'
                Api.Delay 200
                Window.LeftClick GamehWnd, 134, 115  '选枪王'
                Api.Delay 200
                Window.LeftClick GamehWnd, 160, 150  '确定'
            ElseIf Where(1) Then
            
                Api.Delay 1000
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                Window.LeftClick GamehWnd, 311, 4  '退出房间'
                If QQSpeed.[位置被改变](2, IniTime) < 0 Then Exit Do
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                If QQSpeed.State(0) Then
                    If CmpMutlColor(Array(Array(214,84,"0C2D6B-070707",0.9),Array(189,88,"FFFEE3-060609",0.9),Array(221,95,"4070D0-090706",0.9)), 2) Then '队友离开'
                        Window.LeftClick GamehWnd, 160,153
                    End If
                End If
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 200, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "菜单_多人游戏", 8
    End Sub
    Public Function IsIn() '是否在边境'
        IsIn = CmpMutlColor(Array(Array(78, 54, "293B96-080808", 0.9), Array(136, 56, "233374-080808", 0.9), Array(71, 40, "E8ECFF-080808", 0.9), Array(40, 12, "201C35-080808", 0.9)), 20)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](3, 112, 153, 29, Array(True))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
End Class
Class [QQSpeed_超能竞速赛]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 42, 105   '单人匹配'
                Api.Delay 200
            ElseIf Where(1) Then
                dm.KeyDown QQSpeed.[方向键]
                    Api.Delay 8000
                    Window.KeyPress GamehWnd, 82    '十秒复位'
                    Api.Delay 3000
                    Window.KeyDown GamehWnd, 68    '按下右键'
                    Api.Delay 1300
                    Window.KeyUp GamehWnd, 68     '弹起右键'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 17    '点击contrl'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 32    '点击空格'
                    Api.Delay 500
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                Window.LeftClick GamehWnd, 311, 4  '退出房间'
                If QQSpeed.[位置被改变](2, IniTime) < 0 Then Exit Do
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 150, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "菜单_多人游戏", 7
        Api.Delay 1000
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(13, 41, "FFFFFF-080808", 0.9), Array(9, 66, "6086E6-080808", 0.9), Array(116, 63, "4D62DE-080808", 0.9)), 20)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](3, 123, 165, 31, Array(True))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
        Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class
Class [QQSpeed_狂野追逐]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 42, 140   '单人匹配'
                Api.Delay 200
            ElseIf Where(1) Then
                            dm.KeyDown QQSpeed.[方向键]
                    Api.Delay 8000
                    Window.KeyPress GamehWnd, 82    '十秒复位'
                   Api.Delay 5000
                    Window.KeyDown GamehWnd, 68    '按下右键'
                    Api.Delay 1300
                    Window.KeyUp GamehWnd, 68     '弹起右键'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 17    '点击contrl'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 32    '点击空格'
                    Api.Delay 500
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                Window.LeftClick GamehWnd, 311, 4  '退出房间'
                If QQSpeed.[位置被改变](2, IniTime) < 0 Then Exit Do
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 150, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(6, 230, "0DB4C5-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "菜单_多人游戏", 6
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(135, 55, "02809F-080808", 0.9), Array(135, 218, "0CB3D2-080808", 0.9), Array(10, 218, "F8FCFD-080808", 0.9)), 20)
    End Function
    Public Function Where(Flag)
        If Flag = 1 Then
            Where = CmpMutlColor(Array(Array(6, 230, "0DB4C5-080808", 0.9), Array(14, 230, "0A94AD-080808", 0.9), Array(52, 30, "E8E8E8-080808", 0.9)), 20)
        Else
            Where = QQSpeed.Where(Flag)
        End If
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](3, 122, 200, 35, Array(True))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
        Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class
Class [QQSpeed_变身派对]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置] = 1 Then QQSpeed.[完成一局] 0
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 42, 115   '单人匹配'
                Api.Delay 200
            ElseIf Where(1) Then
                Api.Delay 1000
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                Window.LeftClick GamehWnd, 311, 4  '退出房间'
                If QQSpeed.[位置被改变](2, IniTime) < 0 Then Exit Do
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 150, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If CmpMutlColor(Array(Array(111,76,"E5C5A2-070708",0.9),Array(125,46,"E07A5A-070707",0.9),Array(242,108,"568BD4-060606",0.9),Array(94,86,"FF9F7F-060707",0.9)), 2) Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "菜单_多人游戏", 2
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(192, 212, "F3E5D4-080808", 0.9), Array(20, 133, "2C64AE-080808", 0.9), Array(28, 126, "EDCBB5-080808", 0.9)), 20)
    End Function
    Public Function Where(Flag)
        If Flag = 1 Then
            Where = CmpMutlColor(Array(Array(178, 25, "FBCF8D-080808", 0.9), Array(150, 27, "FFF9EE-080808", 0.9), Array(162, 6, "FFEDDB-080808", 0.9)), 20)
        Else
            Where = QQSpeed.Where(Flag)
        End If
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](3, 105, 158, 20, Array(True))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
End Class

Class [QQSpeed_极速对决]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 33, 90   '单人匹配'
                Api.Delay 200
            ElseIf Where(1) Then
                           dm.KeyDown QQSpeed.[方向键]
                    Api.Delay 8000
                    Window.KeyPress GamehWnd, 82    '十秒复位'
                   Api.Delay 5000
                    Window.KeyDown GamehWnd, 68    '按下右键'
                    Api.Delay 1300
                    Window.KeyUp GamehWnd, 68     '弹起右键'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 17    '点击contrl'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 32    '点击空格'
                    Api.Delay 500
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                Window.LeftClick GamehWnd, 311, 4  '退出房间'
                If QQSpeed.[位置被改变](2, IniTime) < 0 Then Exit Do
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 150, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 5000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "菜单_多人游戏", 1
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(127, 60, "13377E-080808", 0.9), Array(24, 40, "FFFFFF-080808", 0.9), Array(84, 46, "FFFFFF-080808", 0.9)), 20)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](3, 92, 138, 25, Array(True))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
        Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class

Class [QQSpeed_浪漫邂逅]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i, itime
        Do
            If IsIn() Then
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 38, 95   '单人匹配'
                Api.Delay 200
                Window.LeftClick GamehWnd, 197, 120   '时空之恋'
            ElseIf Where(1) Then
            dm.KeyDown QQSpeed.[方向键]
                                dm.KeyDown QQSpeed.[方向键]
                    Api.Delay 8000
                    Window.KeyPress GamehWnd, 82    '十秒复位'
                   Api.Delay 5000
                    Window.KeyDown GamehWnd, 68    '按下右键'
                    Api.Delay 1300
                    Window.KeyUp GamehWnd, 68     '弹起右键'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 17    '点击contrl'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 32    '点击空格'
                    Api.Delay 500
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                LuckyBox()
                i = QQSpeed.[位置被改变](2, IniTime)
                If i < 0 Then Exit Do
                If i Then
                    itime = Now()
                ElseIf DateDiff("s", itime, Now()) > 10 Then
                    Window.LeftClick GamehWnd, 311, 4  '退出房间
                    Api.Delay 500
                Else
                    Window.LeftClick GamehWnd, 222, 32 '点赞
                    Api.Delay 200
                    QQSpeed.[准备游戏]
                End If
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                If CmpMutlColor(Array(Array(59, 145, "3D78BE-080808", 0.9), Array(256, 144, "3E78BF-080808", 0.9), Array(61, 81, "81C5F9-080808", 0.9)), 2) Then '匹配失败
                    Window.LeftClick GamehWnd, 148, 145
                End If
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 200, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "多人游戏_快速进入", "127-127"
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(134, 49, "FEA5F1-080808", 0.9), Array(36, 38, "FFFFFF-080808", 0.9), Array(208, 51, "7C4ADA-080808", 0.9)), 20)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        Dim v, i
        v = Array(118, 41, 145, 48, 153, 72, 150, 97, 149, 132)
        For i = 0 To UBound(v) Step 2
            Window.LeftClick GamehWnd, v(i), v(i + 1)
            Api.Delay 300
            Call QQSpeed.[自动截图]("FFFFFF-222222", 100, 88, 220, 158)
        Next
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
        Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class

Class [QQSpeed_双人冲顶赛]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i, itime
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 42, 105   '单人匹配'
                Api.Delay 200
            ElseIf Where(1) Then
                    dm.KeyDown QQSpeed.[方向键]
                    Api.Delay 8000
                    Window.KeyPress GamehWnd, 82    '十秒复位'
                   Api.Delay 5000
                    Window.KeyDown GamehWnd, 68    '按下右键'
                    Api.Delay 1300
                    Window.KeyUp GamehWnd, 68     '弹起右键'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 17    '点击contrl'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 32    '点击空格'
                    Api.Delay 500
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                LuckyBox()
                i = QQSpeed.[位置被改变](2, IniTime)
                If i < 0 Then Exit Do
                If i Then
                    itime = Now()
                ElseIf DateDiff("s", itime, Now()) > 10 Then
                    Window.LeftClick GamehWnd, 311, 4  '退出房间
                    Api.Delay 500
                Else
                    Window.LeftClick GamehWnd, 272, 96 '点赞
                    Api.Delay 200
                    QQSpeed.[准备游戏]
                End If
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                If CmpMutlColor(Array(Array(59, 145, "3D78BE-080808", 0.9), Array(256, 144, "3E78BF-080808", 0.9), Array(61, 81, "81C5F9-080808", 0.9)), 2) Then '匹配失败
                    Window.LeftClick GamehWnd, 148, 145
                End If
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 200, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "多人游戏_快速进入", "127-139"
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(195, 59, "DB88FB-080808", 0.9), Array(196, 223, "8658D3-080808", 0.9), Array(7, 75, "6C29B8-080808", 0.9)), 20)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](2, 115, 163, 45, Array(True))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
        Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class

Class [QQSpeed_换车拉力赛]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 192, 182   '匹配'
                Api.Delay 200
            ElseIf Where(1) Then
                           dm.KeyDown QQSpeed.[方向键]
                    Api.Delay 8000
                    Window.KeyPress GamehWnd, 82    '十秒复位'
                   Api.Delay 5000
                    Window.KeyDown GamehWnd, 68    '按下右键'
                    Api.Delay 1300
                    Window.KeyUp GamehWnd, 68     '弹起右键'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 17    '点击contrl'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 32    '点击空格'
                    Api.Delay 500
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                Window.LeftClick GamehWnd, 311, 4  '退出房间'
                If QQSpeed.[位置被改变](2, IniTime) < 0 Then Exit Do
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 150, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "菜单_多人游戏", 0
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(9, 27, "5187E8-080808", 0.9), Array(28, 27, "23448C-080808", 0.9), Array(37, 37, "5089E8-080808", 0.9)), 20)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](2, 115, 88, 40, Array(True, "", "Window.KeyPress GamehWnd, 27" & vbCrLf & "Api.Delay 300"))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
        Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class

Class [QQSpeed_全城通缉令]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                Call LuckyBox
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 71, 123  '匹配'
                Api.Delay 200
            ElseIf Where(1) Then
                            dm.KeyDown QQSpeed.[方向键]
                    Api.Delay 8000
                    Window.KeyPress GamehWnd, 82    '十秒复位'
                   Api.Delay 5000
                    Window.KeyDown GamehWnd, 68    '按下右键'
                    Api.Delay 1300
                    Window.KeyUp GamehWnd, 68     '弹起右键'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 17    '点击contrl'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 32    '点击空格'
                    Api.Delay 500
                Call QQSpeed.[位置被改变](1, IniTime)
                If CmpMutlColor(Array(Array(185, 21, "FFEF9B-060813", 0.9), Array(136, 38, "FFFFFF-060F0F", 0.9), Array(174, 21, "FFEF9B-060813", 0.9), Array(168, 26, "FFE44D-140906", 0.9)), 2) Then '被逮捕
                    Window.KeyPress GamehWnd, 27
                    Api.Delay 400
                    Window.LeftClick GamehWnd, 140, 152
                    Api.Delay 2000
                    Window.LeftClick GamehWnd, 183, 170
                End If
            ElseIf Where(2) Then
                ' Window.LeftClick GamehWnd, 311, 4  '退出房间'
                If QQSpeed.[位置被改变](2, IniTime) < 0 Then Exit Do
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 150, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "多人游戏_快速进入", "110-148"
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(190, 55, "0445A2-070808", 0.9), Array(92, 54, "00BEEE-060807", 0.9), Array(150, 55, "07B2E5-060807", 0.9), Array(7, 60, "0051C0-060807", 0.9)), 2)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](4, 125, 205, 26, Array(True, "", "Window.KeyPress GamehWnd, 27" & vbCrLf & "Api.Delay 300"))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
        Private Sub Class_Initialize()
        If KMData = 0 Then KMData = bgkms.KMTransform(GamehWnd, 1)
    End Sub
End Class
Class [QQSpeed_超时空巨人赛]
    Private QQSpeed
    Public Sub GuaJi()
        Dim IniTime, i, itime
        QQSpeed.[强制到位置] IniTime
        Do
            If IsIn() Then
                If QQSpeed.[位置被改变](0, IniTime) < 0 Then Exit Do
                Window.LeftClick GamehWnd, 45, 102  '单人匹配'
                Api.Delay 200
            ElseIf Where(1) Then
                            dm.KeyDown QQSpeed.[方向键]
                    Api.Delay 8000
                    Window.KeyPress GamehWnd, 82    '十秒复位'
                   Api.Delay 5000
                    Window.KeyDown GamehWnd, 68    '按下右键'
                    Api.Delay 1300
                    Window.KeyUp GamehWnd, 68     '弹起右键'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 17    '点击contrl'
                    Api.Delay 500
                    Window.KeyPress GamehWnd, 32    '点击空格'
                    Api.Delay 500
                Call QQSpeed.[位置被改变](1, IniTime)
            ElseIf Where(2) Then
                LuckyBox()
                i = QQSpeed.[位置被改变](2, IniTime)
                If i < 0 Then Exit Do
                If i Then
                    itime = Now()
                ElseIf DateDiff("s", itime, Now()) > 10 Then
                    Window.LeftClick GamehWnd, 311, 4  '退出房间
                    Api.Delay 500
                Else
                    Window.LeftClick GamehWnd, 272, 96 '点赞
                    Api.Delay 200
                    QQSpeed.[准备游戏]
                End If
            ElseIf Where(0) Then
                QQSpeed.[强制到位置] IniTime
            Else
                If CmpMutlColor(Array(Array(59, 145, "3D78BE-080808", 0.9), Array(256, 144, "3E78BF-080808", 0.9), Array(61, 81, "81C5F9-080808", 0.9)), 2) Then '匹配失败
                    Window.LeftClick GamehWnd, 148, 145
                End If
                QQSpeed.[清理弹窗] (0)
            End If
            Select Case QQSpeed.[位置]
            Case 0, 2
                Select Case QQSpeed.Handling(1, 200, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
            Case 1
                Select Case QQSpeed.Handling(1, 300, IniTime)
                Case -1
                    QQSpeed.[强制到位置] IniTime
                End Select
                If dm.CmpColor(52, 30, "E8E8E8-080808", 0.9) = 1 Then
                    QQSpeed.[位置] = 3  '颁奖中'
                    QQSpeed.[完成一局] 8000
                End If
            End Select
            Api.Delay 100
        Loop
    End Sub
    Public Sub Go()
        QQSpeed.[点击位置] "多人游戏_快速进入", "95-146"
    End Sub
    Public Function IsIn()
        IsIn = CmpMutlColor(Array(Array(131, 50, "58B4C9-080807", 0.9), Array(7, 58, "28D5EA-090808", 0.9), Array(12, 72, "006680-070909", 0.9), Array(97, 65, "008EAC-070707", 0.9)), 2)
    End Function
    Public Function Where(Flag)
        Where = QQSpeed.Where(Flag)
    End Function
    Public Sub LuckyBox()
        Call QQSpeed.[自动开箱](4, 293, 26, 26, Array(True))
    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
End Class

Class [QQSpeed_多功能]
    Public Sub [领签到]()

    End Sub
    Public Sub [领更新]()

    End Sub
    Public Sub [大乐透]()

    End Sub
    Public Sub [宝宝游乐园]()

    End Sub
    Public Sub [宝宝爬行]()

    End Sub
    Public Sub [精灵]()

    End Sub
    Public Sub [宠物对战]()

    End Sub
    Public Sub [宠物天梯]()

    End Sub
    Public Property Set Father(Obj) '继承?'
        Set QQSpeed = Obj
    End Property
End Class