1 (изменено: dewy.thefirst, 2014-12-14 15:54:38)

Тема: Пропуск действия \ отмена Sleep

Всем привет.
Как сделать пропуск Sleep?
К примеру, у меня есть бинд:


1::
SendInput {f6}/c 1{enter}
Sleep 10000
SendInput {f6}/c 2{enter}
Sleep 10000
SendInput {f6}/c 3{enter}
Sleep 10000
SendInput {f6}/c 4{enter}
return

Вот оно написало "1", через 10 секунд написало "2", а что бы написать "3" мне уже не нужно ждать 10 секунд, и я хочу что бы при нажатии кнопки, Sleep 10000 пропускалось, и выполнялось след. действие.
Не знаю как сделать, даже примерно.
Помогите пожалуйста.

2

Re: Пропуск действия \ отмена Sleep

dewy.thefirst пишет:

Как сделать пропуск Sleep?

Не пишите его, где не надо.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: dewy.thefirst, 2014-12-14 22:11:50)

Re: Пропуск действия \ отмена Sleep

Объясню по другому.
В игре я провожу тест на вступление, сделал биндер, который каждые 20 секунд задает вопрос.
Так вот, допустим человек ответил на вопрос быстрее, чем 20 секунд.
Пусть даже через 2-3 секунды. И что бы не стоять и не ждать еще ~17 секунд просто так, я бы хотел сделать пропуск этой задержки, как вы уже поняли.
Возможно такое вообще?

4

Re: Пропуск действия \ отмена Sleep

Правильно ли я понял, что отмена ожидания должна быть по нажатию какой-нибудь клавиши? Всё равно, какой?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: Malcev, 2014-12-14 22:51:11)

Re: Пропуск действия \ отмена Sleep

x := 2000
1::
Sleep % x
Sleep % x
Sleep % x
msgbox
return

2::
x := ""
return

Или если разные значения sleep:

x := 1
1::
Sleep % 2000*x
Sleep % 3000*x
Sleep % 5000*x
msgbox
return

2::
x := ""
return

6 (изменено: dewy.thefirst, 2014-12-14 22:51:18)

Re: Пропуск действия \ отмена Sleep

teadrinker пишет:

Правильно ли я понял, что отмена ожидания должна быть по нажатию какой-нибудь клавиши? Всё равно, какой?

Да.

Клавишу подставлю.

7

Re: Пропуск действия \ отмена Sleep

Malcev пишет:
x := 2000
1::
Sleep % x
Sleep % x
Sleep % x
msgbox
return

2::
x := ""
return

Или если разные значения sleep:

x := 1
1::
Sleep % 2000*x
Sleep % 3000*x
Sleep % 5000*x
msgbox
return

2::
x := ""
return

А какой смысл, не пойму?

8 (изменено: Malcev, 2014-12-14 23:07:18)

Re: Пропуск действия \ отмена Sleep

Не так понял вопрос.
Вместо sleep можно использовать keywait:

KeyWait, a, D T20 
msgbox

9

Re: Пропуск действия \ отмена Sleep

Так как-нибудь:

SleepTime := 10000
1::
   SendInput {f6}/c 1{enter}
   Gosub, waiting
   SendInput {f6}/c 2{enter}
   Gosub, waiting
   SendInput {f6}/c 3{enter}
   Gosub, waiting
   SendInput {f6}/c 4{enter}
   return
   
2:: cancel := true
   
waiting:
   start := A_TickCount
   while A_TickCount - start < SleepTime && !cancel
      Sleep, 10
   cancel := false
   Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: Пропуск действия \ отмена Sleep

teadrinker пишет:

Так как-нибудь:

SleepTime := 10000
1::
   SendInput {f6}/c 1{enter}
   Gosub, waiting
   SendInput {f6}/c 2{enter}
   Gosub, waiting
   SendInput {f6}/c 3{enter}
   Gosub, waiting
   SendInput {f6}/c 4{enter}
   return
   
2:: cancel := true
   
waiting:
   start := A_TickCount
   while A_TickCount - start < SleepTime && !cancel
      Sleep, 10
   cancel := false
   Return

Как все сложно..
Спасибо большое.

11

Re: Пропуск действия \ отмена Sleep

Как вариант:


$1::
    i := 0
Input:
    SendInput % "{f6}/c " (["текст 1","текст 2","текст 3","текст 4"][++i]) "{enter}"
    SetTimer Input, % i = 4 ? "Off" : "-2000" 
    Return
     
$2:: SetTimer Input, % i = 4 ? "Off" : "-1"
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12 (изменено: serzh82saratov, 2014-12-15 02:06:34)

Re: Пропуск действия \ отмена Sleep

Пропуск задержки по запускающей-же клавише:


$1::
    i := i = 4 ? 0 : i
Input:
    SendInput % "{f6}/c " (["текст 1","текст 2","текст 3","текст 4"][++i]) "{enter}"
    SetTimer Input, % i = 4 ? "Off" : "-2000"
    Return 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: Пропуск действия \ отмена Sleep

А зачем примитивный Sleep вообще?  Сам ответ - по любому, какие то переменные "шевелит". Вот их и надо ловить.

Уравнение абсолютной прогрессии:
|0| Однажды, я осознал - мои знания ровны нолю...
|1| С тех пор, ноль - бесконечно, стремиться к бесконечности...

14

Re: Пропуск действия \ отмена Sleep

По мотивам примера от Malcev:

1::
Soundbeep, 1000, 300
Sleep(1000)
Soundbeep, 2000, 300
Sleep(2000)
Soundbeep, 3000, 300
Sleep(3000)
Soundbeep, 4000, 300
Return

2:: n := 0

Sleep(x)
    {
    global n
    n := 1
    Loop, % x/100
    Sleep, % 100*n
    }