Переназначенные комбинации клавиш управления конфликтуют Topic is solved

Помощь в написании скриптов для игр.
Sample Text
Posts: 1
Joined: 09 Aug 2022, 14:41

Переназначенные комбинации клавиш управления конфликтуют

Post by Sample Text » 09 Aug 2022, 15:28

В игре crossout управление машиной производится 6 кнопками: awsdqe (q и e- стрейф влево/вправо), машина может двигаться всенаправленно.
Я пытаюсь написать скрипт который позволит управлять машиной по диагонали (то бишь повернуто на 45°).
Что я хочу получить при нажатии: w::w,e ; q::q,w ; e::s,e ; s::s,q
Во что я уперся:

Code: Select all

#If
*w up::Send {Blind}{w up}{e up}
*w::Send {Blind}{e down}{w down}
#If
*q up::Send {Blind}{q up}{w up}
*q::Send {Blind}{q down}{w down}
#If
*e up::Send {Blind}{e up}{s up}
*e::Send {Blind}{s down}{e down}
#If
*s up::Send {Blind}{s up}{q up}
*s::Send {Blind}{s down}{q down}
return
При нажатии клавиши подменяются нужными комбинациями, но при одновременном нажатии на другую комбинацию в которой уже есть одна из клавиш предыдущей комбинации, команда send {x up} отпускает эту клавишу, вследствие чего на другой комбинации эта клавиша не срабатывает. Я пытался заменить команду send {x up} другой, к примеру сделать через GetKeyState, чтобы скрипт мог определять отпускать ли эту клавишу или нет если она используется в другой прожатой комбинации, но поскольку в кодинге я абсолютный 0, ничего не получается. Пока что я "научился "только совмещать чужие скрипты и создавать простейшие на их основе :headwall: помогите пожалуйста

mcl
Posts: 355
Joined: 04 May 2018, 16:35

Re: Переназначенные комбинации клавиш управления конфликтуют  Topic is solved

Post by mcl » 11 Aug 2022, 17:39

Code: Select all

*q::Send {Blind}{q Down}{w Down}
*w::Send {Blind}{w Down}{e Down}
*e::Send {Blind}{e Down}{s Down}
*s::Send {Blind}{s Down}{q Down}


*q Up::
	If (GetKeyState("s", "P") == 0)
		Send {Blind}{q Up}
	If (GetKeyState("w", "P") == 0)
		Send {Blind}{w Up}
	Return
*w Up::
	If (GetKeyState("q", "P") == 0)
		Send {Blind}{w Up}
	If (GetKeyState("e", "P") == 0)
		Send {Blind}{e Up}
	Return
*e Up::
	If (GetKeyState("w", "P") == 0)
		Send {Blind}{e Up}
	If (GetKeyState("s", "P") == 0)
		Send {Blind}{s Up}
	Return
*s Up::
	If (GetKeyState("e", "P") == 0)
		Send {Blind}{s Up}
	If (GetKeyState("q", "P") == 0)
		Send {Blind}{q Up}
	Return
github://oGDIp - GDI+ wrapper for AHK v1.1

Post Reply

Return to “Скрипты для Игр”