1 (изменено: Bruse81, 2014-01-06 16:17:29)

Тема: AHK: Объединение скриптов или определение осей

Здравствуйте! Создал идеальный скрипт, см. ниже для клавиатуры. Теперь, как создать скрипт, чтобы вместо vk31 (кнопка 1) прикрутить к осям джойстика JoyX или JoyY со всеми задержками?

*vk31::
    SetTimer, Timer2, 50
    KeyWait, vk31
    SetTimer, Timer2, Off
Return

Timer2:
Send, {vk44 down}{vk55 down}
Sleep, 5
Send, {vk44 up}{vk55 up}
Sleep, 5
Send, {vk54 down}
Sleep, 5
Send, {vk54 up}
Return

Полазил по форуму и нашел скрипт более менее для меня подходящий, см. ниже для джойстика. Подправил его под себя, но не как не могу понять, как разграничить ось JoyX. Как сделать, чтобы ось JoyX > 0 (влево), активировался одним скиптом, а ось JoyX < 100 (вправо) активировался другим скриптом? На оси JoyX выдает нажатие влево или вправо активируется один и тоже скрипт vk31!!! И при нажатии на ось, скрипт срабатывает два раза. Как этого избежать?!

#Persistent
TKeyState = 0
ThrottleDelay = 50
 
SetTimer, CheckThrottleState, %ThrottleDelay%
Return
 
CheckThrottleState:
    GetKeyState, JoyXState, JoyX
    GetKeyState, JoyXState, JoyX

If (JoyXState < 100)
If (JoyXState > 0)
Return
SetTimer, *vk31, -1
SetTimer, *vk32, -1
Return
 
*vk31:
Send, {vk44 down}{vk55 down}
Sleep, 5
Send, {vk44 up}{vk55 up}
Sleep, 5
Send, {vk54 down}
Sleep, 5
Send, {vk54 up}
Return

*vk32:
Send, {vk41 down}{vk55 down}
Sleep, 5
Send, {vk41 up}{vk55 up}
Sleep, 5
Send, {vk54 down}
Sleep, 5
Send, {vk54 up}
Return

Можно как-то соединить первый и второй скрипт вместе?!

2

Re: AHK: Объединение скриптов или определение осей

Здравствуйте! Кто-нибудь ответит на мой вопрос, как разграничить ось в одном скрипте?!
У меня получается только создать одно направление оси (влево)- один скрипт, другое направление оси (вправо) - другой скрипт. Но это очень не удобно, что много скриптов висят в процессе!!!
Двойное нажатие на кнопку я осилил. Теперь кнопка нажимается единожды.

3

Re: AHK: Объединение скриптов или определение осей

Может так?

#Persistent
TKeyState = 0
ThrottleDelay = 50
 
SetTimer, CheckThrottleState, %ThrottleDelay%
Return
 
CheckThrottleState:
    GetKeyState, JoyXState, JoyX
    GetKeyState, JoyYState, JoyY

If (JoyXState > 90)
{
  Send, {vk44 down}{vk55 down}
  Sleep, 5
  Send, {vk44 up}{vk55 up}
  Sleep, 5
  Send, {vk54 down}
  Sleep, 5
  Send, {vk54 up}
}
else If (JoyXState < 10)
{
  Send, {vk41 down}{vk55 down}
  Sleep, 5
  Send, {vk41 up}{vk55 up}
  Sleep, 5
  Send, {vk54 down}
  Sleep, 5
  Send, {vk54 up}
}

If (JoyYState > 90)
{
  ; что вам нужно на джой Y
}
else If (JoyYState < 10)
{
  ; что вам нужно на джой Y
}
Return
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

4

Re: AHK: Объединение скриптов или определение осей

Огромное спасибо за помощь!!!
Вот, что получилось. Теперь ось JoyX разграничивается в одном скрипте и исключены нажатие на ось дважды.

#Persistent
ThrottleDelay = 50
 
SetTimer, CheckThrottleState, %ThrottleDelay%
Return
 
CheckThrottleState:
    GetKeyState, JoyXState, JoyX   

If (JoyXState > 90) SetTimer, *vk31, -1
{
  *vk31:
  Send, {vk44 down}{vk55 down}
  Sleep, 5
  Send, {vk44 up}{vk55 up}
  Sleep, 5
  Send, {vk54 down}
  Sleep, 5
  Send, {vk54 up}
}
else If (JoyXState < 10) SetTimer, *vk32, -1
{
  *vk32:
  Send, {vk41 down}{vk55 down}
  Sleep, 5
  Send, {vk41 up}{vk55 up}
  Sleep, 5
  Send, {vk54 down}
  Sleep, 5
  Send, {vk54 up}
}
Return