|
-
[Patch] Kurioses verhalten bei Tasten abfrage
Hi!
Kann mir einer erklären warum das nicht funktioniert? Kann Gothic nur eine Taste gleichzeitig abfragen?
Code:
//Prüft welche Tasten konfiguriert sind und ob Begleiter erlaubt sind
var int Ninja_Sprint_returnState1;Ninja_Sprint_returnState1 = MEM_KeyState(MEM_GetKey("Ninja_Sprint_UseKey"));
var int Ninja_Sprint_returnState2;Ninja_Sprint_returnState2 = MEM_KeyState(MEM_GetSecondaryKey("Ninja_Sprint_UseKey"));
var int Ninja_Sprint_returnState3;Ninja_Sprint_returnState3 = MEM_KeyState(MEM_GetKey("keyUp"));
var int Ninja_Sprint_returnState4;Ninja_Sprint_returnState4 = MEM_KeyState(MEM_GetSecondaryKey("keyUp"));
var int isPartyOn;isPartyOn = STR_ToInt(MEM_GetGothOpt("NINJA_SPRINT", "Party"));
//Prüft ob alles erfüllt ist zum Sprinten
var int Ninja_Sprint_canHeroSprint; Ninja_Sprint_canHeroSprint = Ninja_Sprint_canPlayerSprint();
if (Ninja_Sprint_canHeroSprint == 1)
&& (Ninja_Sprint_returnState1 == KEY_PRESSED || Ninja_Sprint_returnState2 == KEY_PRESSED)
&& (Ninja_Sprint_returnState3 == KEY_PRESSED || Ninja_Sprint_returnState4 == KEY_PRESSED) {
..........
mache ich es, zu Testzwecken wie folgt, dann klappt es wenn man zurerst die Taste Hoch und dann die Rennen Taste drückt, umgekehrt nicht.
Code:
(Ninja_Sprint_returnState3 == KEY_PRESSED || Ninja_Sprint_returnState4 == 2)
so herum klappt es mit den umgekehrten Tasten:
Code:
(Ninja_Sprint_returnState3 == 2 || Ninja_Sprint_returnState4 == KEY_PRESSED)
und so friert der Held solange ein, wie die Tasten gedrückt sind:
Code:
(Ninja_Sprint_returnState3 == 2 || Ninja_Sprint_returnState4 == 2)
Ich finde dieses Verhalten äußerst merkwürdig, oder habe ich Sand auf den Augen und übersehe etwas?
Mfg
-
Warum fragst du ab ob ein Tastenzustand genau 2 ist? Du holst dir doch sowohl mit var3 als auch mit var4 die tastenzustände. Dann solltest du beide male key_pressed verwenden.
Oder les ich deinen Code falsch?
-
Zitat von Bisasam
Warum fragst du ab ob ein Tastenzustand genau 2 ist? Du holst dir doch sowohl mit var3 als auch mit var4 die tastenzustände. Dann solltest du beide male key_pressed verwenden.
Oder les ich deinen Code falsch?
Das ist richtig mit key_pressed funktioniert es aber nicht, bzw. immer nur eine Taste. Also wenn ich beide Tastenabfragen in einer und && If Abfrage drinn habe geht es nicht, 2 seperate If abfragen funktionieren oder wenn man || oder in einer If Abfrage benutzt, dann geht es auch, aber das wollte ich ja nicht. Mittlerweile ist die Frage aber eh hinfällig, da ich es anders gelöst habe . Trotzdem verstehe ich bis heute nicht warum der nicht 2 Tasten gleichzeitig abfragen will.
-
Zitat von neocromicon
Das ist richtig mit key_pressed funktioniert es aber nicht, bzw. immer nur eine Taste. Also wenn ich beide Tastenabfragen in einer und && If Abfrage drinn habe geht es nicht, 2 seperate If abfragen funktionieren oder wenn man || oder in einer If Abfrage benutzt, dann geht es auch, aber das wollte ich ja nicht. Mittlerweile ist die Frage aber eh hinfällig, da ich es anders gelöst habe . Trotzdem verstehe ich bis heute nicht warum der nicht 2 Tasten gleichzeitig abfragen will.
du prüfst auf die Eingabe vom "Key_up" (Key und SecondaryKey) Tastenbefehl.
Hier gewinnt immer nur eine Tastenabfrage, d.h. entweder W, oder Pfeil-Hoch z.B.
da macht eine Abfrage "Ich laufe && ich laufe" kein Sinn. Mit dem "OR" ( || ) macht es schon eher sinn.
if (läuft mit W || läuft mit Pfeil-Hoch) { Dann }
-
Zitat von Kirides
du prüfst auf die Eingabe vom "Key_up" (Key und SecondaryKey) Tastenbefehl.
Hier gewinnt immer nur eine Tastenabfrage, d.h. entweder W, oder Pfeil-Hoch z.B.
da macht eine Abfrage "Ich laufe && ich laufe" kein Sinn. Mit dem "OR" ( || ) macht es schon eher sinn.
if (läuft mit W || läuft mit Pfeil-Hoch) { Dann }
Da missverstehst du gerade etwas ^^
Es geht um:
if (läuft mit W || läuft mit Pfeil-Hoch) && if (läuft mit bsp. L-Shift || läuft mit bsp. R-Shift)
und genau dieser fall will einfach nicht so funktionieren, sondern nur in diesem Scenario:
if (läuft mit W || läuft mit Pfeil-Hoch) || if (läuft mit bsp. L-Shift || läuft mit bsp. R-Shift)
Ich wollte aber das man beide gleichzeitig drücken muss damits weiter geht.
-
Du prüfst bei beiden Tasten auf KEY_PRESSED, effektiv bedeutet das, dass diese beiden Tasten auch genau im selben Frame gedrückt werden müssen. Du wirst auf eine Variante mit KEY_HOLD umsteigen müssen (beachte aber dass dies immer wahr ist, nicht nur einmal pro drücken).
Edit: KEY_HOLD == 2, deswegen funktioniert dein Beispiel im Anfangspost auch (so halb).
-
Zitat von neocromicon
Da missverstehst du gerade etwas ^^
Es geht um:
if (läuft mit W || läuft mit Pfeil-Hoch) && if (läuft mit bsp. L-Shift || läuft mit bsp. R-Shift)
und genau dieser fall will einfach nicht so funktionieren, sondern nur in diesem Scenario:
if (läuft mit W || läuft mit Pfeil-Hoch) || if (läuft mit bsp. L-Shift || läuft mit bsp. R-Shift)
Ich wollte aber das man beide gleichzeitig drücken muss damits weiter geht.
hups, hab mich vollkommen verlesen
-
Zitat von Lehona
Du prüfst bei beiden Tasten auf KEY_PRESSED, effektiv bedeutet das, dass diese beiden Tasten auch genau im selben Frame gedrückt werden müssen. Du wirst auf eine Variante mit KEY_HOLD umsteigen müssen (beachte aber dass dies immer wahr ist, nicht nur einmal pro drücken).
Edit: KEY_HOLD == 2, deswegen funktioniert dein Beispiel im Anfangspost auch (so halb).
Ahhh, na dann ist klar warum dieses Verhalten auftritt, vielen dank für die Erklärung
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|
|