Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Богдан Лысенко Ученик (147), на голосовании 19 часов назад
мне нужно для афк фермы в 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
}

я попросил еще добавить таймеры в углу экрана чтобы знать сколько до активации той или другой задачи
Голосование за лучший ответ
Гордей Петров Ученик (137) 1 месяц назад
иди в поддержку на сайте бро
Artem Ismagilov Den Профи (534) 1 месяц назад
В том же чате джпт высылаешь ему корректировки с конкретными ошибками, может исправит
dmilor Мастер (2443) 1 месяц назад
 #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
Похожие вопросы