#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
#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
}
я попросил еще добавить таймеры в углу экрана чтобы знать сколько до активации той или другой задачи