Top.Mail.Ru
Ответы

Помогите с скриптом в autohotkey

напишите пожалуйста скрипт когда от нажатия w она нажимается еще раз и если w зажатая то я продолжал бегать (мне это нужно для авто спринта в игре)

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Мыслитель
1мес

#Persistent ; Делает скрипт постоянно работающим
#SingleInstance force ; Запрещает запуск нескольких копий скрипта
SetBatchLines -1 ; Максимальная скорость выполнения

; --- Настройки ---
doubleTapTime := 250 ; Время в миллисекундах для определения двойного нажатия (можно изменить)
sprintKey := "{Shift}" ; Клавиша спринта в вашей игре (обычно Shift)

; --- Переменные ---
global isSprinting := false ; Флаг, отслеживающий, активирован ли спринт скриптом

; --- Основная логика ---

; Замените "ahk_exe YourGame.exe" на идентификатор окна вашей игры.
; Используйте Window Spy (идет с AutoHotkey) чтобы узнать правильный ahk_class или ahk_exe.
; Например: "ahk_exe csgo.exe", "ahk_exe fortnite.exe", "Minecraft", "ahk_class UnrealWindow"
#IfWinActive ahk_exe YourGame.exe

; Используем '$', чтобы SendInput не вызывал этот же хоткей снова (предотвращает зацикливание).
; Используем '~', чтобы оригинальное нажатие W могло проходить, если мы не прервем его через Return.
~$w::
; Проверяем, была ли предыдущая нажатая клавиша 'w' и прошло ли меньше времени, чем doubleTapTime
if (A_PriorHotkey = "~$w" and A_TimeSincePriorHotkey < doubleTapTime)
{
; --- Двойное нажатие обнаружено ---
if (!isSprinting) ; Если еще не бежим со спринтом
{
isSprinting := true
SendInput %sprintKey% down ; Зажимаем клавишу спринта (Shift)
; W уже зажата пользователем, но можно дополнительно послать {w down} для надежности
; SendInput {w down} ; Обычно не требуется, так как W уже нажата
}
; Не делаем Return здесь, чтобы позволить W удерживаться
}
else
{
; --- Одиночное нажатие или слишком долгая пауза ---
; Спринт не активируем или деактивируем, если был активен ранее и W отпустили/нажали снова
if (isSprinting)
{
isSprinting := false
SendInput %sprintKey% up ; Отпускаем клавишу спринта
}
; Позволяем обычному нажатию W пройти (благодаря '~')
; Если нужно полностью контролировать W:
; SendInput {w down}
; return ; - раскомментировать эти 2 строки, если нужно полностью перехватить W
}
return ; ВАЖНО: Return здесь гарантирует, что мы управляем поведением W

~$w up::
SendInput {w up} ; Явно отпускаем W (на всякий случай)
if (isSprinting)
{
isSprinting := false
SendInput %sprintKey% up ; Отпускаем клавишу спринта, когда отпускаем W
}
return ; Предотвращаем стандартное событие отпускания W, если нужно

#IfWinActive ; Завершение секции для конкретного окна

; --- Опционально: Горячая клавиша для паузы/возобновления скрипта ---
^!p:: Suspend ; Ctrl+Alt+P - поставить/снять с паузы