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

Доработайте скрипт на ahk, у меня есть ahk-скрипт, который при зажатии англ. кнопки «e» он активируется и нажимает «a»,

Lolsk Ученик (140), на голосовании 2 недели назад
Доработайте скрипт на ahk, у меня есть ahk-скрипт, который при зажатии англ. кнопки «e» он активируется и нажимает «a», «d» и поворачивает мышкой мне надо добавить его в свой скрипт, чтобы, допустим, после команды «Send {Ctrl up}» у меня активировался этот скрипт и выполнил своё действие 3 раза, то есть 3 раза нажал кнопку «a», 3 раза нажал кнопку «d», 3 раза повернул мышкой в одну сторону и 3 раза повернул мышкой в другую сторону.

Сам скрипт который надо дороботать:

#NoEnv
SendMode, Input
SetBatchLines -1
CoordMode, Mouse, Screen

mouseXY(x, y)
{
DllCall("mouse_event",uint,1,int,x,int,y,uint,0,int,0)
}

strafe(left)
{
moveCount := 18
sleepInterval := 1
relativeMove := 20
if (left)
{
key := "d"
move := relativeMove
} else
{
key := "a"
move := -relativeMove
}
send {%key% down}
DllCall("Sleep", "UInt", 5)
Loop, %moveCount%
{
mouseXY(move, -(move/4))
DllCall("Sleep", "UInt", sleepInterval)
}
send {%key% up}
}

$e::
while getkeystate("e","P")
{
strafe(true)
strafe(false)
}
return
Голосование за лучший ответ
Анатолий Зяблин Просветленный (24326) 1 месяц назад
#NoEnv
SendMode, Input
SetBatchLines -1
CoordMode, Mouse, Screen

; Функция для перемещения мыши
mouseXY(x, y)
{
DllCall("mouse_event", uint, 1, int, x, int, y, uint, 0, int, 0)
}

; Функция для страйфа (движение и поворот мыши)
strafe(left)
{
moveCount := 18
sleepInterval := 1
relativeMove := 20
if (left)
{
key := "d"
move := relativeMove
}
else
{
key := "a"
move := -relativeMove
}
send {%key% down}
DllCall("Sleep", "UInt", 5)
Loop, %moveCount%
{
mouseXY(move, -(move / 4))
DllCall("Sleep", "UInt", sleepInterval)
}
send {%key% up}
}

; Основной скрипт для зажатия 'e'
$e::
while getkeystate("e", "P")
{
strafe(true)
strafe(false)
}
return

; Скрипт, активирующийся после команды 'Send {Ctrl up}'
SendCtrlUpAndExecute()
{
Loop, 3
{
; Нажимаем 'a' 3 раза
send, a
sleep, 50 ; Задержка между нажатиями

; Нажимаем 'd' 3 раза
send, d
sleep, 50 ; Задержка между нажатиями

; Поворачиваем мышь в одну сторону
mouseXY(50, 0)
sleep, 50 ; Задержка между движениями

; Поворачиваем мышь в другую сторону
mouseXY(-50, 0)
sleep, 50 ; Задержка между движениями
}
}

; Пример использования после команды 'Send {Ctrl up}'
$^up:: ; ^ обозначает Ctrl
Send {Ctrl up}
SendCtrlUpAndExecute()
return
LolskУченик (140) 1 месяц назад
а что ты изменил?
Анатолий Зяблин Просветленный (24326) 1. Добавлена функция `SendCtrlUpAndExecute()`, которая выполняет требуемые действия: нажатие клавиш 'a' и 'd' по 3 раза и поворот мыши в обе стороны 3 раза. 2. После команды `Send {Ctrl up}` вызывается эта функция. 3. Включены небольшие задержки (`sleep`) для стабильного выполнения нажатий и движений мыши. Теперь после команды `Send {Ctrl up}` выполнятся все нужные действия 3 раза.
LolskУченик (140) 1 месяц назад
ты можешь пожалуйста тогда в моём скрипте убрать старый вращения мышкой, и поставить новые которые ты мне сделал.

#Persistent ; Держим скрипт активным
#MaxThreadsPerHotkey 2 ; Ограничиваем выполнение по одному разу за нажатие
SetDefaultMouseSpeed, 10 ; Скорость движения мыши

F5::ExitApp

F1:: ; Скрипт активируется при нажатии F1
{
; Зажимаем "W"
Send, {w down}
Sleep, 600 ; Ждем 1 секунду

; Нажимаем "Space"
Send, {Space}

; Отпускаем "W"
Send, {w up}

; Поворачиваем мышку влево и зажимаем "A"
Send, {a down}
MoveMouse(-100, 0, 10) ; Плавное движение мыши влево
Sleep, 2 ; Ждем пол секунды

Send, {Ctrl down}
Sleep, 8

; Отпускаем "A"
Send, {a up}
LolskУченик (140) 1 месяц назад
Sleep, 10



Send, {ъ}

Send, {Ctrl up}



; Надо удалить повороты мышкой вправо и зажиманием D.



; Поворачиваем мышку вправо и зажимаем "D"

Send, {d down}

MoveMouse(100, 0, 2) ; Плавное движение мыши вправо

Send, {d up}



; Надо заменить повороты мышкой вправо, влево и зажиманием D И A.



; Поворачиваем мышку влево и зажимаем "A" 3 раза попеременно с "D"

Loop, 3

{

; Зажимаем "A" и поворачиваем влево

Send, {a down}

MoveMouse(-100, 0, 2) ; Плавное движение мыши влево

Send, {a up}
LolskУченик (140) 1 месяц назад
; Зажимаем "D" и поворачиваем вправо



Send, {d down}



MoveMouse(100, 0, 2) ; Плавное движение мыши вправо



Send, {d up}



}







return



}







MoveMouse(x, y, speed)



{



MouseMove, %x%, %y%, %speed%, R



}
Анатолий ЗяблинПросветленный (24326) 1 месяц назад
#Persistent ; Держим скрипт активным
#MaxThreadsPerHotkey 2 ; Ограничиваем выполнение по одному разу за нажатие
SetDefaultMouseSpeed, 10 ; Скорость движения мыши

F5::ExitApp

F1:: ; Скрипт активируется при нажатии F1
{
; Зажимаем "W"
Send, {w down}
Sleep, 600 ; Ждем 1 секунду

; Нажимаем "Space"
Send, {Space}

; Отпускаем "W"
Send, {w up}

; Поворачиваем мышку влево и зажимаем "A"
Send, {a down}
MoveMouse(-100, 0, 10) ; Плавное движение мыши влево
Sleep, 2 ; Ждем пол секунды

Send, {Ctrl down}
Sleep, 8
Анатолий ЗяблинПросветленный (24326) 1 месяц назад
; Отпускаем "A"
Send, {a up}
Sleep, 10

Send, {ъ}
Send, {Ctrl up}

; Новый цикл с поворотами мышки и нажатием "A" и "D" 3 раза
Loop, 3
{
; Зажимаем "A" и поворачиваем влево
Send, {a down}
MoveMouse(-50, 0, 2)
Send, {a up}
Sleep, 50

; Зажимаем "D" и поворачиваем вправо
Send, {d down}
MoveMouse(50, 0, 2)
Send, {d up}
Sleep, 50
}
}

MoveMouse(x, y, speed)
{
DllCall("mouse_event", "UInt", 1, "Int", x, "Int", y, "UInt", 0, "Int", 0)
Sleep, speed
}
Рустам Абдрашитов Мыслитель (8667) 1 месяц назад
 #NoEnv  
SendMode, Input
SetBatchLines -1
CoordMode, Mouse, Screen

; Функция для перемещения мыши
mouseXY(x, y)
{
DllCall("mouse_event", uint, 1, int, x, int, y, uint, 0, int, 0)
}

; Функция для страйфинга влево или вправо
strafe(left)
{
moveCount := 18
sleepInterval := 1
relativeMove := 20
key := left ? "d" : "a"
move := left ? relativeMove : -relativeMove

send {%key% down}
DllCall("Sleep", "UInt", 5)

Loop, %moveCount%
{
mouseXY(move, -(move/4))
DllCall("Sleep", "UInt", sleepInterval)
}

send {%key% up}
}

; Основной блок для активации страйфа при нажатии 'e'
$e::
while getkeystate("e", "P")
{
strafe(true) ; Страйф вправо
strafe(false) ; Страйф влево
}
return

; Блок для выполнения действий после отпускания Ctrl и нажатия 'e'
$^e::
Send {Ctrl up}
performActions(3) ; Выполняем действия три раза
return

; Функция для выполнения действий: страйфинг и повороты мыши
performActions(repeatCount)
{
Loop %repeatCount%
{
strafe(true) ; Страйф вправо
strafe(false) ; Страйф влево
}

; Повороты мыши
Loop %repeatCount%
{
mouseXY(20, 0) ; Поворот вправо
mouseXY(-20, 0) ; Поворот влево
}
}
Рустам АбдрашитовМыслитель (8667) 1 месяц назад
Оптимизации и улучшения:
Функция performActions: Вынесены действия по страйфингу и поворотам мыши в отдельную функцию. Это делает код более модульным и упрощает его поддержку.
Улучшенная читаемость: Добавлены комментарии для объяснения каждой части кода.
Параметризация: Теперь количество повторений передается как параметр функции performActions, что упрощает изменение этого значения в будущем.
Сокращение повторений: Удалены дублирующиеся строки кода за счет использования функций.
Этот скрипт теперь более структурирован и удобен для дальнейшего расширения или изменения функционала.
Похожие вопросы