1

Тема: Deus Ex: Имитация удержание клавиши

Когда нажимает "C" персонаж в игре приседает, но стоит отпустить клавишу "C" как он тут же встаёт.
Помогите со скриптом, что бы нажал - персонаж присел, отпустил клавишу "C" а он всё равно бы сидел, пока повторно не нажмёшь клавишу "C". Для игры Deus Ex (самая первая)

2

Re: Deus Ex: Имитация удержание клавиши

Доброго времени суток. Попробуйте так.

*$vk43::  ; кнопка с
Radio := !Radio 
if Radio
sendInput, {vk43 Down} ; кнопка с нажать
if !Radio
sendInput, {vk43 Up} ; кнопка с отпутить
return
OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

3

Re: Deus Ex: Имитация удержание клавиши

Ядрён
А автоповтор без отжатия клавиши, как реализовать?
У меня получилось только через таймер.

lUpper:
  if (fUp = False)
        Send {Up Down}
      Else 
        Send {Up Up}
Return

gTimerUpperOff:
  Send {%Tmp_A_ThisHotkey% Down}
   KeyWait, % Tmp_A_ThisHotkey
  Send {%Tmp_A_ThisHotkey% Up}
Return

Enter::
Right::
Left::
Down::
  Tmp_A_ThisHotkey  := A_ThisHotkey
  Gosub gTimerUpperOff
  If (fUp = False)
        fUp :=   True
Return

Up::
  Tmp_A_ThisHotkey  := A_ThisHotkey
  If (fUp)
      Gosub gTimerUpperOff
    Else
      {
        fUp :=   True
        Send {Up Up}
      }
Return

<+Up::
  If (fUp)
    {
      fUp :=  False 
      SetTimer lUpper,On
      Gosub lUpper
      Sleep 250
      Send {p Down}
        KeyWait, % A_ThisHotkey
      Send {p Up}

      Send {p Down}
        Sleep 550
      Send {p Up}
      
      Send {p Down}
        KeyWait, % A_ThisHotkey
      Send {p Up}
    }
Return
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

4

Re: Deus Ex: Имитация удержание клавиши

Indomito, так?:

vk54:: ; T
Gosub % "Key" a := (!a || a = 4) ? 1 : a + 1
return
Key1:
 SendInput F
Return
Key2:
 SendInput D
Return
Key3:
 SendInput S
 return
Key4:
 SendInput B
Return

5 (изменено: Indomito, 2017-04-21 04:17:31)

Re: Deus Ex: Имитация удержание клавиши

svoboden
Проверил - нет автоповтора нажатой клавиши.
У меня LShift+Up зажимает стрелку вверх, т.е. Up, и выдает автоповтор клавиши Up без обтжатия, до события.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

6 (изменено: svoboden, 2017-04-21 23:25:19)

Re: Deus Ex: Имитация удержание клавиши

Indomito, что значит, нет автоповтора и до какого события? Это какие-то простые скрипты, могли бы и сами разобраться.

7

Re: Deus Ex: Имитация удержание клавиши

svoboden
Да, я давно сам сделал, просто зажатие и автоповтор вещи разные.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

8

Re: Deus Ex: Имитация удержание клавиши

Так?

vk43::
send, {vk43 down}
KeyWait,vk43, u
KeyWait,vk43, d
send, {vk43 up}
Indomito пишет:

А автоповтор без отжатия клавиши, как реализовать?

$c::
SetTimer,d,300,On
KeyWait,c, u
KeyWait,c, d
SetTimer,d,off
return
d:
send,{c}
return

9

Re: Deus Ex: Имитация удержание клавиши

cahtbap1
Ну я так и сделал, только у меня автоповтор+удержание.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

10 (изменено: kna1703, 2017-06-12 21:41:48)

Re: Deus Ex: Имитация удержание клавиши

Ядрён

У меня получился такой код для выглядывания в игре, на основе Вашего:

*$vk51::
Radio := !Radio 
if Radio
sendInput, {vk51 Down} 
if !Radio
sendInput, {vk51 Up}
return

*$vk45::
Radio := !Radio 
if Radio
sendInput, {vk45 Down} 
if !Radio
sendInput, {vk45 Up}
return

Можно ли как-то сделать в дополнение, что когда нажал на кнопку vk51, то после нажатия на vk45, vk51 отжималась сама и происходило зажатие vk45 и наоборот?
Так же, как сделать, что когда нажимаешь на Shift, то эти кнопки отжимаются сами?

11 (изменено: stealzy, 2017-06-12 23:41:51)

Re: Deus Ex: Имитация удержание клавиши

Если ВзятьСостояниеКлавиши("vk51")
	Послать {vk51 отпустить}{vk45 зажать}
...
~Шифт::Послать {vk51 отпустить}{vk45 отпустить}

12 (изменено: kna1703, 2017-06-12 23:13:47)

Re: Deus Ex: Имитация удержание клавиши

stealzy

Кнопки "Q", "E" отвечают в игре за наклоны, зажатый "Shift" - быстрый бег.

Задача сделать так, чтобы в игре была возможность по нажатию кнопки наклона, зафиксировать его, т.к. такой реализации нету в настройках игры.

Код, который я привёл выше, рабочий, но нету дополнительных удобств в виде того, что я озвучил в этом предложении:

kna1703 пишет:

Можно ли как-то сделать в дополнение, что когда нажал на кнопку vk51, то после нажатия на vk45, vk51 отжималась сама и происходило зажатие vk45 и наоборот?
Так же, как сделать, что когда нажимаешь на Shift, то эти кнопки отжимаются сами?

В Вашем варианте теряется функция бинда "быстрого бега" на Shift.
Как его можно сохранить с новой реализацией?

Как правильно реализовать 1-ую часть Вашего кода в моём коде, как он должен выглядеть?:

if GetKeyState("{vk51}")
	Send {vk51 down}{vk45 up}

13 (изменено: stealzy, 2017-06-12 23:46:54)

Re: Deus Ex: Имитация удержание клавиши

Фигурные скобки в моем коде были лишними.
Если бинд средствами самой игры, то нет - заметили ~ перед шифтом? В справке по Hotkey написано, что это означает.
Если средствами ahk, то вы должны знать, куда добавить команды отжатия.