1

Тема: Таймер со счетчиком

Добрый день. Требуется помощь с написанием скрипта. Попробую описать что конкретно нужно.

При первом нажатии кнопки "Пробел" нажимался сам пробел и кнопка "H", при этом втечении следующих 6 секунд при повторном нажатии кнопки "Пробел" кнопка "H" не нажималась, но спустя 6 секунд при повторном нажатии кнопки "Пробел" кнопка "Н" снова нажималась вместе с кнопкой "Пробел" итак до 3 нажатий кнопки "Н". После трех срабатываний кнопка "Н" менялась на кнопку "J". Затем после трех срабатываний кнопки "J" начинала нажиматься кнопка "K". Когда кнопка "К" сработает три раза должна снова нажиматься кнопка "Н" итак по кругу.

2 (изменено: yalanne, 2015-05-12 23:51:27)

Re: Таймер со счетчиком

Key := ["H","J","K"]

KeyIndex := 1,KeyPress := 1
#if !space_off and (space_off := 1)
space::
settimer space_on,-6000
sendinput % A_Space Key[KeyIndex]
if (KeyPress = 3) and (KeyIndex = Key.MaxIndex()) and (KeyPress := 1) and  (KeyIndex := 1)
return
if (KeyPress = 3) and (KeyPress := 1) and (KeyIndex++)
return
KeyPress++
return
#if

space_on:
space_off := 0
return

В первую строчку можно еще клавиш по добавлять. Работать будет по той же логике.

+  Вот Тот же скрипт но с комментами
Key := ["H","J","K"]    ; Массив содержащий порядок кнопок.

KeyIndex := 1,KeyPress := 1 ; В обе переменные задает стартовую позицию 1. 1)Порядковый номер нужной кнопки. 2) количество нажатий.
; If с решеткой влияет на действие клавиш при определенных ситуациях.
#if !space_off and (space_off := 1) ; если переменная равна 0(пустая) то ей установится значение 1.При повторной проверке этого условия будет ложь, так как переменная уже не пустая.
; При ложном if'е пробел работает стандартно.
space:: ; А при истине выполняет ниже указанные действия до закрытия if'а.
settimer space_on,-6000 ; запускаем таймер на 6 секунд. По истечению времени #if будет снова истиной.
; Скрипт продолжает читать код ниже и при этом отчитывает 6 сек.
sendinput % A_Space Key[KeyIndex] ; Печатаем пробел и нужную букву.
if (KeyPress = 3) and (KeyIndex = Key.MaxIndex()) and (KeyPress := 1) and  (KeyIndex := 1)
; Если кнопка нажата 3 раза и она является последней в списке то идет сброс нажатия клавиш и порядкового номера кнопки. Это надо что бы можно было начать новый круг.
return ; завершаем поток
if (KeyPress = 3) and (KeyPress := 1) and (KeyIndex++)
; Если Кнопка нажата 3 раза в переменную содержащею порядковый номер добавляется +1
return
KeyPress++ ; добавляем количество нажатия кнопки. 
return
#if

space_on: ; если таймер окончил отчет то активируем скриптовый пробел.
space_off := 0
return

3

Re: Таймер со счетчиком

Я в шоке. Скрипты для пилота по сравнению с этим это детский лепет.

4

Re: Таймер со счетчиком

При первом запуске выдал ошибку.
http://s43.radikal.ru/i099/1505/23/fb810597a778.png
Она исправляется путем удаления кавычек и написанием букв русского алфавита.

При втором запуске выдает другую ошибку.
http://s017.radikal.ru/i416/1505/14/05e9f77fa2b0.png
Как ее устранить не знаю.

5

Re: Таймер со счетчиком

Возможно, старая версия АНК у вас. Новую см. на ahkscript.org.

6

Re: Таймер со счетчиком

Превосходно друзья. Обновил АНК и все заработало. Автору скрипта огромное спасибо. Вы в точности сделали, то о чем я писал выше.

7 (изменено: serzh82saratov, 2015-07-07 21:01:03)

Re: Таймер со счетчиком

А если без таймера?


Key := ["H","J","K"], T := I := 0

~Space::
    If (A_TickCount > T) && (T := A_TickCount + 6000) && (I := I * !(I = 3 * Key.MaxIndex()) + 1)  
        SendInput % Key[Ceil(I / 3)]
    Return 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui