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


#Requires AutoHotkey v2.0
#SingleInstance Force
CoordMode "Mouse", "Screen"
CoordMode "Pixel", "Screen"
SetMouseDelay 10
SendMode "Event"

; ==================== НАСТРОЙКИ (1920x1080) ====================

; --- Заброс: жёлтая зона x1.5 ---
; Координаты области, где появляется жёлтый текст/пузырь x1.5
ZX1 := 1200, ZY1 := 360, ZX2 := 1370, ZY2 := 440
BubbleColor := 0xFFE45A    ; жёлтый цвет
ColorTol    := 20          ; допуск цвета
MaxHold     := 2500        ; макс. время удержания ЛКМ, мс

; --- Поклёвка: красная кнопка STOP ---
; Координаты области, где появляется красная кнопка STOP
BX1 := 1390, BY1 := 930, BX2 := 1475, BY2 := 960
BiteColor := 0xE8333F      ; красный цвет
BiteTol   := 30

; --- Мини-игра: клики ---
ClickX := 960              ; X центра экрана (пустая область)
ClickY := 540              ; Y центра экрана
ClickDelay := 15           ; задержка между кликами, мс
ClickCount := 20           ; сколько кликов за один цикл
MaxClickTime := 15000      ; макс. время мини-игры, мс

; --- Паузы ---
AfterCatch := 1500         ; пауза после поимки, мс
CastWait   := 30000        ; макс. ожидание поклёвки, мс

; ==================================================================

mode := 0
casting := false

; --- GUI ---
myGui := Gui("+AlwaysOnTop", "Auto Fishing v2")
myGui.SetFont("s10")
myGui.Add("Text", , "Режим:")
rAfk  := myGui.Add("Radio", , "1. АФК (ESC каждую минуту)")
rFish := myGui.Add("Radio", , "2. Авто-рыбалка")
bStop := myGui.Add("Button", "w120", "Выключить")
status := myGui.Add("Text", "w360 cGray", "Статус: выключено")
myGui.Add("Text", "w360", "F1 - АФК | F2 - Рыбалка | F3 - Стоп | F11 - Выход")

rAfk.OnEvent("Click", (*) => SetMode(1))
rFish.OnEvent("Click", (*) => SetMode(2))
bStop.OnEvent("Click", (*) => SetMode(0))
myGui.OnEvent("Close", (*) => ExitApp())
myGui.Show()

SetMode(m) {
    global mode
    mode := m
    Click "Up"
    SetTimer(PressEsc, m = 1 ? 60000 : 0)
    rAfk.Value := (m = 1)
    rFish.Value := (m = 2)
    status.Text := "Статус: " . (m = 0 ? "выключено" : m = 1 ? "АФК работает" : "Авто-рыбалка работает")
    if (m = 2)
        SetTimer(AutoFishing, -50)
}

; --- АФК ---
PressEsc() {
    Send "{Esc}"
    Sleep 2000
    Send "{Esc}"
}

; --- АВТО-РЫБАЛКА ---
AutoFishing() {
    global casting, mode
    global ZX1, ZY1, ZX2, ZY2, BubbleColor, ColorTol, MaxHold
    global BX1, BY1, BX2, BY2, BiteColor, BiteTol
    global ClickX, ClickY, ClickDelay, ClickCount, MaxClickTime
    global AfterCatch, CastWait

    if casting
        return
    casting := true

    while mode = 2 {
        ; ===== ШАГ 1: Заброс удочки =====
        status.Text := "Статус: Заброс..."
        Click "Down"
        start := A_TickCount

        ; Ждём жёлтую зону x1.5
        while mode = 2 && (A_TickCount - start < MaxHold) {
            if PixelSearch(&px, &py, ZX1, ZY1, ZX2, ZY2, BubbleColor, ColorTol)
                break
            Sleep 5
        }
        Click "Up"
        Sleep 300

        ; ===== ШАГ 2: Ожидание поклёвки =====
        status.Text := "Статус: Ожидание поклёвки..."
        bite := false
        waitStart := A_TickCount

        while mode = 2 && (A_TickCount - waitStart < CastWait) {
            if PixelSearch(&bx, &by, BX1, BY1, BX2, BY2, BiteColor, BiteTol) {
                bite := true
                break
            }
            Sleep 50
        }

        ; ===== ШАГ 3: Мини-игра (быстрые клики) =====
        if bite {
            status.Text := "Статус: Мини-игра! Кликаем..."
            clickStart := A_TickCount

            while mode = 2 && (A_TickCount - clickStart < MaxClickTime) {
                ; Проверяем, не закончилась ли мини-игра
                if !PixelSearch(&bx, &by, BX1, BY1, BX2, BY2, BiteColor, BiteTol) {
                    ; Кнопка исчезла - игра окончена
                    break
                }

                ; Быстрые клики в центр экрана
                Loop ClickCount {
                    MouseMove ClickX, ClickY
                    Click
                    Sleep ClickDelay
                }
            }

            status.Text := "Статус: Рыба поймана!"
            Sleep AfterCatch
        } else {
            status.Text := "Статус: Поклёвки не было, перезаброс..."
            Sleep 500
        }
    }

    Click "Up"
    casting := false
    status.Text := "Статус: выключено"
}

; ==================== ГОРЯЧИЕ КЛАВИШИ ====================

F1::SetMode(1)
F2::SetMode(2)
F3::SetMode(0)
F11::ExitApp