1

Тема: Постоянное цикличное нажимание клавиши в игре.

Как сделать, чтобы в определенной игре, при нажатии на определенную клавишу (допустим F8), при зажатой клавише (A), раз в полсекунды постоянно нажималась клавиша (D).
А при повторном нажатии на F8 этот цикл бы прекращался.

2

Re: Постоянное цикличное нажимание клавиши в игре.

~F8:: ; Жмем F8
keywait F8 ; и ждем его отжатия, что бы скрипт сразу же не выключился.
loop ; Запускаем цикл
    {
    
        if GetKeyState("F8","p") ; Если нажмется F8, то после отжатия останавливается цикл
        {
            keywait F8
            return
        }    

        if GetKeyState("SC01E","p") ; А если зажата кнопка A(Ф), то каждые пол секунды будет нажиматься кнопка D.
            {
            if (A_TickCount > T) and (T := A_TickCount + 500) ; В отличие от sleep'а эта задержка мгновенно пропадет если отжать A.
                send {SC020}
            }
            
    }

3

Re: Постоянное цикличное нажимание клавиши в игре.

Спасибо, почти работает, но вот это не так надо:

yalanne пишет:

        if GetKeyState("SC01E","p") ; А если зажата кнопка A(Ф), то каждые пол секунды будет нажиматься кнопка D.
  

а надо "не если зажата клавиша A", а наоборот - при включении макроса (клавишей F8) клавиша "A" зажималась бы сама без отпускания и каждые полсекунды в это время прожималась "D".  При повторном нажатии на F8 этот макрос прерывался.

4

Re: Постоянное цикличное нажимание клавиши в игре.

~F8:: ; Жмем F8
keywait F8 ; и ждем его отжатия, что бы скрипт сразу же не выключился.
loop ; Запускаем цикл
    {
    
        if GetKeyState("F8","p") ; Если нажмется F8, то после отжатия останавливается цикл
        {    
            keywait F8
            return
        }    
        Send {SC01E}
        if (A_TickCount > T) and (T := A_TickCount + 500) ; В отличие от sleep'а эта задержка мгновенно пропадет если отжать A.
            send {SC020} 
    }