Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

AutoHotKey ошибка в скрипте

мне нужно для афк фермы в Terraria скрипт AHK. я попросил чат джпт сделать скрипт но там были ошибки . суть скрипта нажать 1 . левая кнопка мыши 2 раза . нажать 2 . левая кнопка мыши 1 раз . нажать 3 . нажимать каждую минуту левую кнопку мыши . а сам скрипт вот

#Persistent ; Скрипт будет работать постоянно
CoordMode, Mouse, Window ; Координаты относительно окна

SetTimer, UpdateTimers, 100 ; Обновление таймеров каждую 100 мс
SetTimer, ChangeSlots, 300000 ; Устанавливаем таймер на 300000 мс (5 минут)
SetTimer, Slot3MouseClick, 60000 ; Устанавливаем таймер на 60000 мс (1 минута)

currentSlot := 1 ; Начальный слот
timer1Start := A_TickCount
timer2Start := A_TickCount
timer1Remaining := 300
timer2Remaining := 60

; Инициализация форматированных строк
timer1Formatted := "05:00"
timer2Formatted := "01:00"

; Создание GUI
Gui, Add, Text, x10 y10 w150 h20 vtimer1Text, %timer1Formatted%
Gui, Add, Text, x10 y30 w150 h20 vtimer2Text, %timer2Formatted%
Gui, Show, x10 y100 w180 h60, Timer Display
Gui, -Caption +ToolWindow +AlwaysOnTop

UpdateTimers:
timer1Elapsed := (A_TickCount - timer1Start) / 1000 ; Время в секундах
timer2Elapsed := (A_TickCount - timer2Start) / 1000 ; Время в секундах

timer1Remaining := 300 - timer1Elapsed
timer2Remaining := 60 - timer2Elapsed

; Проверка, если таймер достиг 0, перезапускаем
if (timer1Remaining <= 0)
{
timer1Start := A_TickCount
timer1Remaining := 300
}

if (timer2Remaining <= 0)
{
timer2Start := A_TickCount
timer2Remaining := 60
}

; Обновление форматированных строк
timer1Formatted := FormatTime(timer1Remaining)
timer2Formatted := FormatTime(timer2Remaining)

GuiControl,, timer1Text, %timer1Formatted%
GuiControl,, timer2Text, %timer2Formatted%
return

ChangeSlots:
; Переключаемся на слот 1
SendInput {1}
Sleep 50 ; Небольшая задержка
currentSlot := 1

; 2 раза нажимаем левую кнопку мыши
Click
Sleep 50
Click

; Переключаемся на слот 2
SendInput {2}
Sleep 50 ; Небольшая задержка
currentSlot := 2

; 1 раз нажимаем левую кнопку мыши
Click

; Переключаемся на слот 3
SendInput {3}
Sleep 50 ; Небольшая задержка
currentSlot := 3

timer1Start := A_TickCount ; Сбрасываем таймер 1
timer1Remaining := 300
Return

Slot3MouseClick:
if (currentSlot = 3)
{
; 2 раза нажимаем левую кнопку мыши
Click
Sleep 50
Click
}
timer2Start := A_TickCount ; Сбрасываем таймер 2
timer2Remaining := 60
Return

; Функция для форматирования времени
FormatTime(seconds) {
seconds := Round(seconds) ; Округляем до целых секунд

if (seconds < 0) {
return "00:00";
}

minutes := floor(seconds / 60)
seconds := seconds mod 60

minutes := (minutes < 10) ? "0" minutes : minutes
seconds := (seconds < 10) ? "0" seconds : seconds

return minutes ":" seconds
}

я попросил еще добавить таймеры в углу экрана чтобы знать сколько до активации той или другой задачи

По дате
По рейтингу
Аватар пользователя
Мастер
5мес
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
 #Persistent ; Скрипт работает постоянно 
#SingleInstance Force ; Избегаем запуска нескольких экземпляров скрипта 
CoordMode, Mouse, Window ; Координаты относительно окна 
 
; Устанавливаем главные таймеры 
SetTimer, ChangeSlots, 300000 ; Таймер смены слотов (5 минут) 
SetTimer, Slot3MouseClick, 60000 ; Таймер клика для слота 3 (1 минута) 
SetTimer, UpdateTimers, 100 ; Обновление данных для GUI (каждые 100 мс) 
 
; Переменные для таймеров 
currentSlot := 1 ; Номер текуще активного слота 
timer1Start := A_TickCount ; Время старта первого таймера 
timer2Start := A_TickCount ; Время старта второго таймера 
timer1Duration := 300000 ; Продолжительность таймера 1 в миллисекундах (5 минут) 
timer2Duration := 60000 ; Продолжительность таймера 2 в миллисекундах (1 минута) 
 
; Форматированные строки для GUI 
timer1Formatted := "05:00" 
timer2Formatted := "01:00" 
 
; Создание GUI (в углу экрана таймеры) 
Gui, Add, Text, x10 y10 w150 h20 vtimer1Text, %timer1Formatted% ; Таймер 1 
Gui, Add, Text, x10 y30 w150 h20 vtimer2Text, %timer2Formatted% ; Таймер 2 
Gui, Show, x10 y100 w180 h60, Таймеры ; Показываем GUI 
 
Gui, -Caption +ToolWindow +AlwaysOnTop ; Убираем лишнее из окна: без заголовка, всегда поверх окон 
 
; Функция обновления интерфейса GUI 
UpdateTimers: 
    ; Оставшееся время для каждого таймера 
    timer1Remaining := (timer1Duration - (A_TickCount - timer1Start)) / 1000 
    timer2Remaining := (timer2Duration - (A_TickCount - timer2Start)) / 1000 
 
    ; Сбрасываем таймеры, если время истекло 
    if (timer1Remaining <= 0) { 
        timer1Start := A_TickCount 
        timer1Remaining := timer1Duration / 1000 
    } 
    if (timer2Remaining <= 0) { 
        timer2Start := A_TickCount 
        timer2Remaining := timer2Duration / 1000 
    } 
 
    ; Форматируем строки времени 
    timer1Formatted := FormatTime(timer1Remaining) 
    timer2Formatted := FormatTime(timer2Remaining) 
 
    ; Обновляем текст в GUI 
    GuiControl,, timer1Text, %timer1Formatted% 
    GuiControl,, timer2Text, %timer2Formatted% 
return 
 
; Основной таймер смены слотов 
ChangeSlots: 
    ; 1. Переключаемся на слот 1 
    SendInput {1} 
    Sleep 50 
    currentSlot := 1 
 
    ; Два раза кликаем левой кнопкой мыши 
    Click 
    Sleep 50 
    Click 
 
    ; 2. Переключаемся на слот 2 
    SendInput {2} 
    Sleep 50 
    currentSlot := 2 
 
    ; Один раз кликаем левой кнопкой мыши 
    Click 
 
    ; 3. Переключаемся на слот 3 
    SendInput {3} 
    Sleep 50 
    currentSlot := 3 
 
    ; Сбрасываем таймер 1 
    timer1Start := A_TickCount 
return 
 
; Таймер для "слота 3" (нажимаем каждые 60 секунд) 
Slot3MouseClick: 
    if (currentSlot = 3) { 
        ; Один раз кликаем левой кнопкой мыши 
        Click 
    } 
    ; Сбрасываем таймер 2 
    timer2Start := A_TickCount 
return 
 
; Функция для форматирования оставшегося времени 
FormatTime(seconds) { 
    seconds := Round(seconds) ; Округляем секунды до целого 
    if (seconds < 0) { 
        return "00:00" 
    } 
    minutes := Floor(seconds / 60) 
    seconds := Mod(seconds, 60) 
 
    ; Форматируем минуты и секунды как два знака (с лидирующим 0, если нужно) 
    minutes := (minutes < 10) ? "0" minutes : minutes 
    seconds := (seconds < 10) ? "0" seconds : seconds 
 
    return minutes ":" seconds 
} 
 
return 
Аватар пользователя
Профи
5мес

В том же чате джпт высылаешь ему корректировки с конкретными ошибками, может исправит

Аватар пользователя
Ученик
5мес

иди в поддержку на сайте бро