Как сделать Timer?

Slikw

Новичок
Автор темы
1
1
Возможно ли реализовать таймер в AHk? И как это сделать, дайте небольшой пример.
Например, вот я ввел команду /usedrugs, и после ввода запускается таймер, и как истекает время, использует эту команду снова.
 
Решение
Стратил с ТЗ автора темы, мой пример действительно 1 раз писал /usedrugs через таймер что просто - глупо.
По ТЗ - это нужно сделать 1 раз после отправки команды и второй раз по таймеру. Исправил.
Минус того кода то,что его надо вводитьмаленькими буквами и писать самому,и нельзя просто напросто скопировать и вставить.
Попробуй такой код.

Код:
#NoEnv
#SingleInstance force
#Include SAMP-UDF.ahk ; Самп ЮДФ не сложно найти и поставить,надо дам ссылку

$~NumpadEnter::
$~Enter::
if (!isInChat()) || (isDialogOpen() && (getDialogStyle() == 1 || getDialogStyle() == 3))
Return
Sleep 250
tempText := readString(hGTA, dwSAMP + 0x12D8F8, 256)
tempCmd := StrSplit(tempText, " ")[1]
if (tempCmd == "/usedrugs") ; Вводишь /usedrugs колличество
{...

darksoor

Известный
679
355

BASS_DEVSOFTWARE

Известный 🇺🇦
Друг
263
569
Фигня пример, если честно. Зачем выключать таймер после срабатывания написанного?
А что, нужен сурс на 50+ строк? Просто и понятно.
Не нужно выключать таймер? Очевидно убираем строку.
 

darksoor

Известный
679
355
А что, нужен сурс на 50+ строк? Просто и понятно.
Не нужно выключать таймер? Очевидно убираем строку.

Зачем 50+ строк? Простую реализацию таймера по одной команде либо по двум (отключение и включение таймера).
Лучше показать сразу заведомо правильный пример, чем потом новичок будет лепить костыли.

Одна команда на включение/отключение таймера:
AutoHotKey:
:?:/usedrugs::
settimer, label, % ((ss:=!ss) ? 15000 : "off") ; первый ввод команды включит таймер, второй - выключит
return

label:
sendchat("/usedrugs")
return

Две команды, одна которая на включение, вторая на отключение:
AutoHotKey:
:?:/usedrugs:: ; команда для включения таймера
settimer, label, 15000
return

:?:/off:: ; команда для выключения таймера
settimer, label, off
return

label:
sendchat("/usedrugs")
return
 

BASS_DEVSOFTWARE

Известный 🇺🇦
Друг
263
569
Зачем 50+ строк? Простую реализацию таймера по одной команде либо по двум (отключение и включение таймера).
Лучше показать сразу заведомо правильный пример, чем потом новичок будет лепить костыли.

Одна команда на включение/отключение таймера:
AutoHotKey:
:?:/usedrugs::
settimer, label, % ((ss:=!ss) ? 15000 : "off") ; первый ввод команды включит таймер, второй - выключит
return

label:
sendchat("/usedrugs")
return

Две команды, одна которая на включение, вторая на отключение:
AutoHotKey:
:?:/usedrugs:: ; команда для включения таймера
settimer, label, 15000
return

:?:/off:: ; команда для выключения таймера
settimer, label, off
return

label:
sendchat("/usedrugs")
return
Стратил с ТЗ автора темы, мой пример действительно 1 раз писал /usedrugs через таймер что просто - глупо.
По ТЗ - это нужно сделать 1 раз после отправки команды и второй раз по таймеру. Исправил.
 

darksoor

Известный
679
355
Стратил с ТЗ автора темы, мой пример действительно 1 раз писал /usedrugs через таймер что просто - глупо.
По ТЗ - это нужно сделать 1 раз после отправки команды и второй раз по таймеру. Исправил.

И опять ошибочка ;)
Gosub, label
Settimer....

Так будет правильней. И не нужно будет одно и тоже писать в нескольких строках.
 

#RCoffiano

Участник
19
2
Стратил с ТЗ автора темы, мой пример действительно 1 раз писал /usedrugs через таймер что просто - глупо.
По ТЗ - это нужно сделать 1 раз после отправки команды и второй раз по таймеру. Исправил.
Минус того кода то,что его надо вводитьмаленькими буквами и писать самому,и нельзя просто напросто скопировать и вставить.
Попробуй такой код.

Код:
#NoEnv
#SingleInstance force
#Include SAMP-UDF.ahk ; Самп ЮДФ не сложно найти и поставить,надо дам ссылку

$~NumpadEnter::
$~Enter::
if (!isInChat()) || (isDialogOpen() && (getDialogStyle() == 1 || getDialogStyle() == 3))
Return
Sleep 250
tempText := readString(hGTA, dwSAMP + 0x12D8F8, 256)
tempCmd := StrSplit(tempText, " ")[1]
if (tempCmd == "/usedrugs") ; Вводишь /usedrugs колличество
{
    if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3})$", out_pars))
    {
        SendChat("/usedrugs"out_pars1)
        sleep 15000
        AddChatMessage("{FF0000}AHK:{ffffff} Можете снова использовать{FF0000} " tempcmd " ")
    }
}
return

Или же зациклить всё.
Код:
Settimer, drugs, 15000

Drugs:
SandInput{F6}/USEDRUGS 3{Enter}
return
 
Последнее редактирование:
  • Нравится
Реакции: Slikw и BASS_DEVSOFTWARE