Вопросы по AHK-скриптингу

darksoor

Известный
674
353
Привет, впервые прикоснулся к ахк. И решил написать примитивненький скрипт, но столкнулся с долгой задержкой между циклами (это связано из-за sleep, который повлиял на задержку в циклах). Решение проблемы как я понимаю лежит в settimer, но как бы я не пытался вписать его в код подглядывая как это сделано на других скриптах - нихуя не получалось... Суть данного сообщения банально просто - помогите дописать, так что бы все работала по моей задумке. Заранее благодарю.

Как должен работать скрипт в моей голове:
1. Нажатие клавиши Альт и последующий за нажатием таймер в 9 секунд
2. После таймера нажимается пробел и следом задержка в пол секунды
3. Нажатие энтера и начала следующих действий с первого пункта

Код который у меня получился, но не подходит моим требованиям.:
vk8 & vk33::
loop 20
{
    sendinput {vkA4sc38}
    sleep 9000
    sendinput {vk20sc39}
    sleep 500
    sendinput {vkDsc1C}
}
vk39::reload

Помогите избавиться от этой ебучей задержкой в 9 секунд между циклами🙏🙏🙏
Вообще ничего не понял, что именно ты хочешь сделать. Тут вижу, что у тебя клавиши написаны неверно в коде.
AutoHotKey:
vk8 & vk33::
loop 20
{
    sendinput {vkA4}
    sleep 9000
    sendinput {vk20}
    sleep 500
    sendinput {vkD}
}
vk39::reload
Распиши подробно, что необходимо сделать тебе. Сейчас код работает по такому алгоритму:
1. Нажать клавишу Alt
2. Ждём 9 секунд
3. Нажать клавишу Space
4. Ждём 500 мс
5. Нажать клавишу Enter
6. Запустить цикл заново (и так 20 раз)
 

ic4teeth

Новичок
2
0
Вообще ничего не понял, что именно ты хочешь сделать. Тут вижу, что у тебя клавиши написаны неверно в коде.
AutoHotKey:
vk8 & vk33::
loop 20
{
    sendinput {vkA4}
    sleep 9000
    sendinput {vk20}
    sleep 500
    sendinput {vkD}
}
vk39::reload
Распиши подробно, что необходимо сделать тебе. Сейчас код работает по такому алгоритму:
1. Нажать клавишу Alt
2. Ждём 9 секунд
3. Нажать клавишу Space
4. Ждём 500 мс
5. Нажать клавишу Enter
6. Запустить цикл заново (и так 20 раз)
Из-за слипов каждый раз когда начинает цикл происходит задержка в 9 с половиной секунд и я хочу избавиться от нее путем таймера.
Т.е. алгоритм, который я хочу сделать выглядит следующим образом:
1. Нажать клавишу Alt
2. Запускается таймер на 9 секунд
3. Таймер оканчивается
4. Нажимается пробел
5. Ожидание в 500мс
6. Нажатие клавиши ентер
7. И запуск цикла с первого пункта(20 раз)
upd: я пытался прописывать таймер сам и у меня выходила ошибка, поэтому хочу поинтересоваться как должен выглядеть этот ахк по ныне приведенному мной алгоритму.
 

darksoor

Известный
674
353
Из-за слипов каждый раз когда начинает цикл происходит задержка в 9 с половиной секунд и я хочу избавиться от нее путем таймера.
Т.е. алгоритм, который я хочу сделать выглядит следующим образом:
1. Нажать клавишу Alt
2. Запускается таймер на 9 секунд
3. Таймер оканчивается
4. Нажимается пробел
5. Ожидание в 500мс
6. Нажатие клавиши ентер
7. И запуск цикла с первого пункта(20 раз)
upd: я пытался прописывать таймер сам и у меня выходила ошибка, поэтому хочу поинтересоваться как должен выглядеть этот ахк по ныне приведенному мной алгоритму.
Таймер = цикл
Это одно и тоже.
Не понимаю, откуда у тебя задержка в самом начале в 9,5 сек, если её даже в коде нет?
Скинь полный код сюда, ибо я тестирую и у меня всё чётко идёт.
 

Alan0077

Новичок
2
0
Как открыть чат и писать в него когда у меня на экране к примеру открыт текстовый диалог Привет или Пока. Когда он открыт я не могу открывать чат.
:?:/ad::
key = no
showDialog(2, "{FFFFFF}MVD Helper", "Привет`n Пока" , "Закрыть")
while (isDialogOpen()) {

}
if (key == "Esc") {
return
}
NumberLine := getDialogLineNumber()
gosub, ad_%NumberLine%
Return

uk_1:
str_dialog_nakol =
(
Привет
)
showdialog(0, "Привет", str_dialog_nakol, "Закрыть")
Return

uk_2:
str_dialog_nakol =
(
Пока
)
showdialog(0, "Пока", str_dialog_nakol, "Закрыть")
Return
 

Farany1

Новичок
11
2
Как открыть чат и писать в него когда у меня на экране к примеру открыт текстовый диалог Привет или Пока. Когда он открыт я не могу открывать чат.
:?:/ad::
key = no
showDialog(2, "{FFFFFF}MVD Helper", "Привет`n Пока" , "Закрыть")
while (isDialogOpen()) {

}
if (key == "Esc") {
return
}
NumberLine := getDialogLineNumber()
gosub, ad_%NumberLine%
Return

uk_1:
str_dialog_nakol =
(
Привет
)
showdialog(0, "Привет", str_dialog_nakol, "Закрыть")
Return

uk_2:
str_dialog_nakol =
(
Пока
)
showdialog(0, "Пока", str_dialog_nakol, "Закрыть")
Return
А гта самп не открывается чат при открытом диалоге
 

Ivan_Kalbasovich

Новичок
2
0
Доброго вечера! Нужна помощь. У меня есть простое ахк с вводом текста для ГТА крмп Есть несколько вариантов и их нужно выбирать самостоятельно. Я хочу что бы после нажатия одной кнопки ( допустим F1) какая-то из этих фраз ( на рандом) запустилась.

Всё ахк записывать не буду, а просто приведу пример:

AutoHotKey:
! 1::
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6} Температура сейчас - 2 градуса 
Return

! 2::
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6} Температура сейчас 1 градус 
Return

! 3::
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6}  Температура сейчас 3 градуса  
Return
 
Последнее редактирование:

darksoor

Известный
674
353
Доброго вечера! Нужна помощь. У меня есть простое ахк с вводом текста для ГТА крмп Есть несколько вариантов и их нужно выбирать самостоятельно. Я хочу что бы после нажатия одной кнопки ( допустим F1) какая-то из этих фраз ( на рандом) запустилась.

Всё ахк записывать не буду, а просто приведу пример:

AutoHotKey:
! 1::
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6} Температура сейчас - 2 градуса
Return

! 2::
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6}/r [%teg%] Температура сейчас 1 градус
Return

! 3::
SendMessage, 0x50,, 0x4190419,, A
SendInput, {F6}/r [%teg%] Температура сейчас 3 градуса 
Return
AutoHotKey:
!1::
SendMessage, 0x50,, 0x4190419,, A
Random, temp, 1, 20
SendInput, {F6}/r [%teg%] Температура сейчас - %temp% градуса.
Return
 
  • Нравится
Реакции: Ivan_Kalbasovich

Ivan_Kalbasovich

Новичок
2
0
AutoHotKey:
!1::
SendMessage, 0x50,, 0x4190419,, A
Random, temp, 1, 20
SendInput, {F6}/r [%teg%] Температура сейчас - %temp% градуса.
Return

Мне нужно по другому немного, не что бы какое-то рандомное число появлялось, а именно что бы текст рандомный. Например: у меня есть 3 лекции:
Лекция 1
Лекция 2
Лекция 3.

И что бы по нажатию одной кнопки РАНДОМНАЯ ( из выше приведённых) запустилась
 

darksoor

Известный
674
353
Мне нужно по другому немного, не что бы какое-то рандомное число появлялось, а именно что бы текст рандомный. Например: у меня есть 3 лекции:
Лекция 1
Лекция 2
Лекция 3.

И что бы по нажатию одной кнопки РАНДОМНАЯ ( из выше приведённых) запустилась
AutoHotKey:
!1::
arr := ["Лекция 1","Лекция 2","Лекция 3"]
Random, rand, 1, 3
e := arr[rand]
SendInput, {F6}/r %e%{Enter}
Return
 
  • Нравится
Реакции: Ivan_Kalbasovich

Korshh

Новичок
2
0
Здравствуйте, вопрос как правильно было бы организовать перемещение мыши в игре
сама суть проблемы, один и тот же код, но в krunker он работает, а в amazing rp он двигает мышь вправо, и потом сразу возвращается на свои координаты. Как сделать чтоб он и в амазинге работал? Пытался уже и разные режимы SendMode ставить, пытался разную задержку ставить - без результатно.

#SingleInstance Force ; Перезагружать скрипт без дополнительных вопросов
SendMode Event ; Режим имитации клавиш/мыши. Возможные режимы: Event | Input | Play

AutoHotKey:
q::                             ; Горячая клавиша Q - код ниже будет выполнен при её нажатии
  Loop 5                       ; Код между фигурными стрелками будет выполнен 10 раз
  {                             ; 
    MouseMove, 100, 0, 20, R     ; Переместить мышь на 50 единиц влево (минус) со скоростью 5 (меньше - быстрее)
    Sleep 200                  ; Задержка ~20 мс.
  }                             ; 
  Return
 

#Tirack

Известный
35
1
Здравствуйте, может кто помочь изменить разрешение в скриптах для ГТА 5 РП?
 

afulist

Новичок
8
0
Можете не много исправить

!1::
updateOScoreboardData()
for k, v in oScoreboardData
{
if (v.NAME ~= "^[A-Z][a-z]+_[A-Z][a-z]+$")
continue
else if (v.SCORE > 0)
AddChatMessage("/pm " v.ID " /mn - Изменить имя (Имя_Фамилия)")
}
return

Типо авто чекер нонРП ников и автоматическое предупреждение
 

Moriarti777

Новичок
1
0
Здравствуйте, подскажи пожалуйста.
Хочу сделать себе в правом нижнем углу подсказку, бинда клавишь в таком формате. Как найти и сделать координаты правого нижнего угла.
Desktop_Screenshot_2023.12.25_-_15.11.17.68.png
 

PRO_100_DED

Новичок
18
2
Привет, помогите решить проблему с возвращением координат с UDF (CRMP 0.3.7)
Вместо координат выдает пустоту
CODE:
#NoEnv
#include UDF.ahk
#IfWinActive AMAZING ONLINE

9::
vHeal := getVehicleHealth()
X := getPlayerCoordinates[X]
Y := getPlayerCoordinates[Y]
sleep 250
    checkHandles()
    sleep 250
    addChatMessageEx(0xFFC0CB, X)
    checkHandles()
    sleep 250
    addChatMessageEx(0xFFC0CB, Y)
return
 

Dikt0r

Новичок
8
0
Здравствуйте, прошу вас помочь с бесконечным повторением цикла. Нужно чтобы после последнего sleep в коде, ну тоесть Sleep 5500 цикл начинался заново начиная с строки
Код:
Send, {D down}
нужно заканчивать цикл строкой Sleep 5500, Нужно чтоб цикл повторялся бесконечно, заранее спасибо


AutoHotKey:
SetKeyDelay, 30

Loop {
    if (A_Index = 1) {
        Send, +
        Sleep, 100
        MouseMove, 683, 384
        MouseGetPos, startX, startY
    }

    F10::
        Send, {D down}
        Sleep, 3300
        Send, {D up}
        Sleep, 100
        Send, {A down}
        Sleep, 3300
        Send, {A up}
        Sleep, 100
        Send, {W down}
        Sleep, 3300
        Send, {W up}
        Sleep, 100
        Send, {A down}
        Sleep, 3300
        Send, {A up}
        Sleep, 5500
        continue
    return
}