Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Ergebnis 1 bis 8 von 8
  1. Beiträge anzeigen #1 Zitieren
    Ehrengarde Avatar von neocromicon
    Registriert seit
    Jan 2019
    Beiträge
    2.478
     
    neocromicon ist offline

    [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

  2. Beiträge anzeigen #2 Zitieren
    Legende der Amazonen Avatar von Bisasam
    Registriert seit
    Dec 2006
    Ort
    Meine Faust in Sinis Gesicht
    Beiträge
    9.634
     
    Bisasam ist offline
    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?

  3. Beiträge anzeigen #3 Zitieren
    Ehrengarde Avatar von neocromicon
    Registriert seit
    Jan 2019
    Beiträge
    2.478
     
    neocromicon ist offline
    Zitat Zitat von Bisasam Beitrag anzeigen
    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.

  4. Beiträge anzeigen #4 Zitieren
    Ritter Avatar von Kirides
    Registriert seit
    Jul 2009
    Ort
    Norddeutschland
    Beiträge
    1.780
     
    Kirides ist offline
    Zitat Zitat von neocromicon Beitrag anzeigen
    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 }

  5. Beiträge anzeigen #5 Zitieren
    Ehrengarde Avatar von neocromicon
    Registriert seit
    Jan 2019
    Beiträge
    2.478
     
    neocromicon ist offline
    Zitat Zitat von Kirides Beitrag anzeigen
    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.

  6. Beiträge anzeigen #6 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.446
     
    Lehona ist offline
    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).

  7. Beiträge anzeigen #7 Zitieren
    Ritter Avatar von Kirides
    Registriert seit
    Jul 2009
    Ort
    Norddeutschland
    Beiträge
    1.780
     
    Kirides ist offline
    Zitat Zitat von neocromicon Beitrag anzeigen
    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

  8. Beiträge anzeigen #8 Zitieren
    Ehrengarde Avatar von neocromicon
    Registriert seit
    Jan 2019
    Beiträge
    2.478
     
    neocromicon ist offline
    Zitat Zitat von Lehona Beitrag anzeigen
    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
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide