Загрузка данных


#NoEnv
#SingleInstance Force
SetWorkingDir %A_ScriptDir%

IsRunning := false

Gui, Add, Text, x10 y10 w300 h20, Выберите окна Roblox для Anti-AFK:
Gui, Add, Button, x220 y5 w90 h25 gRefreshWindows, Обновить список

Loop, 10 {
    posY := 30 + (A_Index * 25)
    Gui, Add, Checkbox, x15 y%posY% w290 h20 vWinCB%A_Index% Hidden, Window
}

Gui, Add, Text, x10 y310 w110 h20, Интервал (секунды):
Gui, Add, Edit, x120 y307 w60 h20 vIntervalNumber Number, 60
Gui, Add, Button, x10 y340 w300 h35 vStartBtn gToggleAntiAFK, ЗАПУСТИТЬ ANTI-AFK

Gui, Show, w320 h390, Roblox Anti-AFK Control
GoSub, RefreshWindows
return

RefreshWindows:
    WinGet, robloxIDs, List, ahk_exe RobloxPlayerBeta.exe
    
    Loop, 10 {
        GuiControl, Hide, WinCB%A_Index%
        GuiControl,, WinCB%A_Index%, 0
    }
    
    if (robloxIDs = 0) {
        GuiControl, Show, WinCB1
        GuiControl,, WinCB1, Roblox не найден!
        GuiControl, Disable, WinCB1
        return
    }
    
    Loop, %robloxIDs% {
        if (A_Index > 10)
            break
            
        this_id := robloxIDs%A_Index%
        WinGetTitle, this_title, ahk_id %this_id%
        if (this_title = "")
            this_title := "Roblox Client #" . A_Index
            
        GuiControl, Enable, WinCB%A_Index%
        GuiControl, Text, WinCB%A_Index%, %this_title% (ID: %this_id%)
        GuiControl, Show, WinCB%A_Index%
        GuiControl,, WinCB%A_Index%, 1
    }
return

ToggleAntiAFK:
    Gui, Submit, NoHide
    
    if (IsRunning) {
        SetTimer, DoAntiAFK, Off
        IsRunning := false
        GuiControl,, StartBtn, ЗАПУСТИТЬ ANTI-AFK
        SoundBeep, 500, 200
    } else {
        if (IntervalNumber < 5) {
            MsgBox, 48, Ошибка, Интервал должен быть не менее 5 секунд!
            return
        }
        
        TimerMs := IntervalNumber * 1000
        SetTimer, DoAntiAFK, %TimerMs%
        IsRunning := true
        GuiControl,, StartBtn, ОСТАНОВИТЬ ANTI-AFK
        SoundBeep, 1000, 200
        
        GoSub, DoAntiAFK
    }
return

DoAntiAFK:
    Gui, Submit, NoHide
    WinGet, robloxIDs, List, ahk_exe RobloxPlayerBeta.exe
    
    active_win := WinActive("A")
    
    Loop, %robloxIDs% {
        if (A_Index > 10)
            break
            
        cbValue := WinCB%A_Index%
        if (cbValue = 1) {
            this_id := robloxIDs%A_Index%
            
            ; Активируем окно
            WinActivate, ahk_id %this_id%
            WinWaitActive, ahk_id %this_id%,, 1
            
            ; Имитация клика внутри окна для гарантии фокуса
            ControlClick, X300 Y300, ahk_id %this_id%,,,, NA
            Sleep, 150
            
            ; Зажимаем пробел с задержкой (физический прыжок)
            Send {Space down}
            Sleep, 150
            Send {Space up}
            Sleep, 100
            
            ; Небольшой шаг вперед
            Send {w down}
            Sleep, 100
            Send {w up}
            Sleep, 100
        }
    }
    
    if (active_win)
        WinActivate, ahk_id %active_win%
return

GuiClose:
ExitApp