2016-10-08 2 views
0

Grundsätzlich möchte ich es so, dass, wenn ich 2 Tasten zusammen gedrückt haben (sowohl A und D, speziell), die letzte Taste gedrückt haben sollte, und der Schlüssel davor sollte "unterdrückt" werden (keine Eingabe).Priorität, wenn 2 Tasten gleichzeitig gedrückt werden - Skript für ein Spiel

Zum Beispiel: In einem Spiel, wenn Sie A drücken, bewegt sich Ihr Charakter nach links, und wenn Sie D drücken, bewegt er sich nach rechts. Durch gleichzeitiges Drücken dieser beiden Tasten wird das Zeichen gestoppt. Jetzt ist die Sache hier, dass ich nicht möchte, dass der Charakter aufhört, ich will, dass er sich fortbewegt, basierend auf dem letzten Schlüssel, den ich gedrückt habe, obwohl ich gleichzeitig zwei Schlüssel halte.

Ich dachte, dass dies eine triviale Aufgabe sein würde, aber ich wurde ein wenig überwältigt nachdem ich versucht habe zu lernen, wie man das umsetzt (Ich bin ein Noob, sorry: C), also bin ich hierher gekommen um Hilfe zu suchen wie man dies mit AHK oder einer leicht zu kompilierenden Skriptsprache macht, die direkt die Eingabe eines Schlüssels ändert. Ich versuche nicht, ein Spiel zu modifizieren oder zu erstellen, also reicht ein Skript, das diese Schlüssel neu abruft!

+0

Ich habe vergessen hinzuzufügen: es muss unbegrenzt mit den gleichen 2 Tasten arbeiten, so drücken A und D macht D überschreiben A, dann loslassen A und drücken Sie es erneut sollte D überschreiben, und so weiter. Wahrscheinlich ein bisschen kompliziert, ich weiß es nicht. – Silveirous

Antwort

2

Autohotkey Beispiel nach Ihrem "A und D, speziell" Frage:

for k,v in StrSplit("ad") 
    Hotkey, % "~$" v,Silveirous 

Silveirous: 
t:=SubStr(A_PriorHotkey,3) 
if GetKeyState(t) and (A_ThisHotkey!=A_PriorHotkey) 
    Send {%t% up} 
return 

Dokumentation:

for k,v in, StrSplit(), Hotkey,,,, "~$", SubStr(), A_Prior/ThisHotkey, if, GetKeyState(), t:=... and ... != , Send {%t% up}


Edit:

Eine andere Lösung, hergestellt wie in OPs bearbeiten/Kommentar erklärt zu arbeiten:

#If GetKeyState("d","p") 
~a::Send {d up} 
~a up::Send {d down} 
#If GetKeyState("a","p") 
~d::Send {a up} 
~d up::Send {a down} 
#If 

Achten Sie darauf, den Unterschied zwischen #If und if (expression) Anwendungsfälle zu kümmern.

+0

Bob, vielen Dank für deine Antwort! Ich habe das Skript ausprobiert und es hat funktioniert, aber ich glaube, ich habe das Problem nicht so beschrieben, wie ich es hätte tun sollen. Wenn ich die beiden Tasten zusammen drückte, tat es, was beabsichtigt war, aber Tastenfolgen wie A und D zusammen gedrückt, dann D loslassen und A erneut drücken, und so weiter und so weiter würde nicht funktionieren, nur die erste Kombination der Tasten gedrückt, die erste A und dann D. Irgendeine Idee, wie man das überwinden? – Silveirous

+0

Wird diese Dokumentation auch von der Website automatisiert oder haben Sie all diese Dinge verlinkt? : P wie auch immer, vielen Dank! Ich werde versuchen, den Code zu verstehen, aber es wird wahrscheinlich eine Weile dauern. – Silveirous

+0

@Silveious bearbeitet – Bob

Verwandte Themen