1 (изменено: John, 2016-02-17 22:16:57)

Тема: Цикл из трёх действий.

Доброе.
Мне нужна небольшая помощь, суть проблемы:
- Я никак не могу заставить скрипт:


Loop
{
Send {E}
Sleep 1000
}

Выполнять еще два действия, а именно:
  Зажатие кнопки W/S на определённый период времени, чтоб макрос выполнял следующею цепочку. Зажатая W(5sec); Прерывание W; Зажатие S(5sec); Прерывание S. И на протяжение всего этого должен выполняться скрипт связанные с Е.

2 (изменено: alekksss, 2016-02-17 23:18:43)

Re: Цикл из трёх действий.

SetTimer, 1000, eLoop
eLoop:
Send, {e}
return
global or := 0
SetTimer, WS, 5000
WS:
if or == 0
{
or := 1
Send, {s up}
Send, {w down}
} else {
or := 0
Send, {w up}
Send, {s down}
}
return

Будет работать до бесконечности, если нужно чтобы один раз проходил этот этап, пиши.

3 (изменено: yalanne, 2016-02-17 23:27:58)

Re: Цикл из трёх действий.

F1::
loop
{
	send {vk45} ; E
	i+=1
	IfEqual,i,1,Send {vk57 down} ; W
	IfEqual,i,5,Send {vk57 up}   ; W
	IfEqual,i,5,Send {vk53 down} ; S
	IfEqual,i,10,Send {vk53 up}  ; S
	IfEqual,i,10,try i := 0 ; закоментить эту строку что бы не было повтора w и s. Или написать break для полного завершения цикла. try не стоит убирать.
	Sleep 1000
}

4

Re: Цикл из трёх действий.

Выдавать ошибку с таргетом начал.

5 (изменено: John, 2016-02-17 23:34:37)

Re: Цикл из трёх действий.

yalanne спасибо.

Еще пару вопросов:
- Как можно в данном виде скрипта оперировать с таймингом Е/W/S?

6 (изменено: yalanne, 2016-02-17 23:53:24)

Re: Цикл из трёх действий.

Каждую секунду переменная i увеличивается на 1.
Строка IfEqual,i,1,Действие используется как

if i = 1
  Действие

То есть условие-действие в одну строку. Если I равно какой то определенной цифре, то нажимаем или отпускаем кнопку.
Что бы задавать еще и тайминг у E то так же через условие.

Вот например тут будет нажиматься E, когда пройдет 3 секунды и будет нажимать до 9ой:

F1::
loop
{
	i+=1
	IfGreaterOrEqual,i,3,	IfLessOrEqual,i,9,	send {vk45} ; E
	
	IfEqual,i,1,Send {vk57 down} ; W
	IfEqual,i,5,Send {vk57 up}   ; W
	IfEqual,i,5,Send {vk53 down} ; S
	IfEqual,i,10,Send {vk53 up}  ; S
	IfEqual,i,10,try i := 0
	Sleep 1000
}

IfGreaterOrEqual - это если переменная больше либо равно
IfLessOrEqual - это если меньше либо равно

7

Re: Цикл из трёх действий.

yalanne еще раз спасибо, теперь всё намного понятней.