Taste wird nicht erkannt

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag


    habe ein Problem was mich ein wenig aufregt da ich es schon seid etwa einer Stunde versuche zu fixen. Der Fehler ist, das nicht erkannt wird das er eine bestimmte Taste drückt.
    Bisher habe ich die Tasten "c" und "n" ausprobiert, da viele anderen schon belegt oder ungeeignet sind.
    Der Spieler ist gefreezed und die camera ist 1-2m vor ihm und auf ihn gerichtet, so wie es in einer skinauswahl üblich ist.


    Der Code ist ganz einfach wird aber garnichts erst aufgerufen, was bedeutet das er gar nicht die Taste drückt, bzw es nicht erkannt wird:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    print("Test 1");
    if(newkeys & KEY_NO) // if(newkeys % 2) | if(newkeys & KEY_CROUCH) | if(PRESSED(2)) | if(PRESSED(KEY_CROUCH)) > funktionieren ebenso nicht
    {
    print("Test 2");
    if(GetPVarInt(playerid,"ChoosedfSkin") >= 0 || GetPVarInt(playerid,"ChoosedzSkin") >= 0)
    {
    if(GetPVarInt(playerid,"ChoosedfSkin") >= 0 && Spieler[playerid][Fraktionsskin] <= 0) return 0;
    SkinKaufen:
    SetPVarInt(playerid,"ChoosedfSkin",-1);
    SetPVarInt(playerid,"ChoosedzSkin",-1);
    j_SetPlayerInterior(playerid,Spieler[playerid][LastInt]);
    j_SetPlayerVirtualWorld(playerid,Spieler[playerid][LastVirt]);
    j_SetPlayerPos(playerid,Spieler[playerid][LastX],Spieler[playerid][LastY],Spieler[playerid][LastZ]);
    j_TogglePlayerControllable(playerid,1);
    SetCameraBehindPlayer(playerid);
    DestroyBincoInfo(playerid);
    if(Spieler[playerid][Duty] == 1) SetPlayerSkin(playerid,Spieler[playerid][Fraktionsskin]);
    //else if(Spieler[playerid][Duty] == 2) SetPlayerSkin(playerid,Nebenjobs[Spieler[playerid][Ziviljob]][jSkin]);
    else if(IsAGang(Spieler[playerid][Fraktion]))
    {
    SetPlayerSkin(playerid,Spieler[playerid][Fraktionsskin]);
    Spieler[playerid][Duty] = 1;
    }
    else SetPlayerSkin(playerid,Spieler[playerid][Zivilskin]);
    }
    }
    print("Test 3");
    return 1;
    }


    Ich frage mich echt was für ein dummer Fehler mir da unterlaufen ist. In der Serverlog wird Test 1 und Test 3 angezeigt.


    Liebe Grüße

  • versuch das mal


    das kommt ganz oben ins Script
    // PRESSED(keys)
    #define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    print("Test 1");
    if(PRESSED( KEY_CROUCH )) // Taste "C" zu Fuss und "H/CAPSLOCK" im Fahrzeug
    {
    print("Test 2");
    if(GetPVarInt(playerid,"ChoosedfSkin") >= 0 || GetPVarInt(playerid,"ChoosedzSkin") >= 0)
    {
    if(GetPVarInt(playerid,"ChoosedfSkin") >= 0 && Spieler[playerid][Fraktionsskin] <= 0) return 0;
    SkinKaufen:
    SetPVarInt(playerid,"ChoosedfSkin",-1);
    SetPVarInt(playerid,"ChoosedzSkin",-1);
    j_SetPlayerInterior(playerid,Spieler[playerid][LastInt]);
    j_SetPlayerVirtualWorld(playerid,Spieler[playerid][LastVirt]);
    j_SetPlayerPos(playerid,Spieler[playerid][LastX],Spieler[playerid][LastY],Spieler[playerid][LastZ]);
    j_TogglePlayerControllable(playerid,1);
    SetCameraBehindPlayer(playerid);
    DestroyBincoInfo(playerid);
    if(Spieler[playerid][Duty] == 1) SetPlayerSkin(playerid,Spieler[playerid][Fraktionsskin]);
    //else if(Spieler[playerid][Duty] == 2) SetPlayerSkin(playerid,Nebenjobs[Spieler[playerid][Ziviljob]][jSkin]);
    else if(IsAGang(Spieler[playerid][Fraktion]))
    {
    SetPlayerSkin(playerid,Spieler[playerid][Fraktionsskin]);
    Spieler[playerid][Duty] = 1;
    }
    else SetPlayerSkin(playerid,Spieler[playerid][Zivilskin]);
    }
    }
    print("Test 3");
    return 1;
    }


    We are Anonymous.


    We are Legion.


    We do not forgive.


    We do not forget.


    Expect us.

  • Kann es sein das in den anderen Key abfragen return vorkommt?



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PRESSED(KEY_ACTION))
    {
    Befehle...
    return 0; //Falsch!! denn wenn er diese taste drückt
    }
    if(PRESSED(KEY_CROUCH))
    {
    //wird das hier nicht mehr ausgeführt
    }
    return 1;
    }


    schau mal oder poste eventuell dein Callback


    We are Anonymous.


    We are Legion.


    We do not forgive.


    We do not forget.


    Expect us.

  • Klappt nun :D


    Fehler war das ich abgefragt habe ob er sich ein skin ausgesucht hat, falls nein gehts nicht weiter. Aber da ich nie die variable gesetzt habe das er sich bereits ein skin ausgesucht hat konnte es auch nicht klappen.



    Trotzdem Danke :)