Bei OnPlayerKeyStateChange zwei Tasten gleichzeittig [Zu Fuss] [Update]

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
  • Hallo Breadfish-Community..


    Ich wollte eine Positions-Load-Funktion erstellen.
    Dabei sollte man KEY_FIRE und KEY_ACTION gleichzeittig drücken und zu einer vorher gespeicherte Position teleportiert werden.
    Ich habs auch versucht aber bisher ohne Erfolge.



    public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)

    2 Mal editiert, zuletzt von E4sTsId3 ()

  • if((newkeys == KEY_ACTION) && (newkeys == KEY_FIRE))


    Dürfte als Abfrage funktionieren.

  • Simpel aber nicht funktionstüchtig...


    newkeys ist DIE SUMME aller gedrückten Tasten....


    Ich hab noch bisserl gesucht..:



    if( (newkeys & (KEY_FIRE | KEY_ACTION)) == (KEY_FIRE | KEY_ACTION) )
    {
    DoSomething();
    }


    Sollte funktionieren.. Bin testen.


    //Edit: funktioniert soweit aber nur in Fahrzeugen... Könnte man das umfunktionieren damit es auch zufuss geht ?

  • k mach das mal :P wäre auch sehr interessant für mein GM ... dann kann ich das /home entfernen ;)

  • Im Fahrzeug funktioniert alles aber zufuss :D da will er boxen wenn ich ALT+STRG drücke.


    hm.. ich find nix ..


    Das erste hab ich hier gefunden: Klick mich

  • Hier mal nen kleines Beispiel:


    forward CheckTimer();
    public CheckTimer()
    {
    new key,aufrunter,linksrechts;
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    GetPlayerKeys(i,key,aufrunter,linksrechts);
    if(key == (KEY_WALK) && linksrechts == (KEY_LEFT))
    {
    GameTextForPlayer(i,"Keys Detected!",2000,3);
    }
    }
    return 1;
    }


    Immer darauf achten z.b. die tasten Links Rechts müssen bei leftright abgefragt werden und die Rauf & Runter Tasten bei updown, die normalen
    bei keys , im Wiki steht was zu welcher Kategorie gehört


    Und noch was zu OnPlayerKeyStateChange , ioch würde oldkeys auch noch abfragen, wenn die alte Taste KEY_UP ist und die neue Taste KEY_DOWN
    dann fährt der Code fort

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


    Einmal editiert, zuletzt von BlackFoX ()

  • So ich meld mich hier mal wieder.


    Ich hab bis jetzt alles bedenkliche versucht, auch BFX's Version.
    Doch Zufuss klappts einfach nicht...



    if( ((newkeys & (KEY_FIRE | KEY_ACTION)) == (KEY_FIRE | KEY_ACTION))) //nach SA:MP Wiki vll. zuviele Klammern :D
    {
    new slot = Lastloaded[playerid];
    if(sX[slot][playerid]==0.00 && sY[slot][playerid]==0.00 && sX[slot][playerid]==0.00)
    {
    SendErrorMessage(playerid, "== Error: You haven't saved in this slot!");
    return 1;
    }
    if(GetPlayerState(playerid) != 2)
    {
    SetVehiclePos(pCV[playerid], sX[slot][playerid], sY[slot][playerid], sZ[slot][playerid]+2);
    SetVehicleZAngle(pCV[playerid], sA[slot][playerid]);
    PutPlayerInVehicle(playerid,pCV[playerid],0);
    } else {
    SetVehiclePos(GetPlayerVehicleID(playerid), sX[slot][playerid], sY[slot][playerid], sZ[slot][playerid]+2);
    SetVehicleZAngle(GetPlayerVehicleID(playerid), sA[slot][playerid]);
    SetCameraBehindPlayer(playerid);
    }
    SetCameraBehindPlayer(playerid);



    SendOKMessage(playerid, "== Position loaded!");
    new Float:pX, Float:pY, Float:pZ;
    GetPlayerPos(playerid,pX,pY,pZ);
    PlayerPlaySound(playerid,1057,pX,pY,pZ);
    }


    In der Variable pCV[playerid] wird beim betreten eines Fahrzeuges als Fahrer die VehicleID gespeichert.


    Nun es funktioniert immer noch nicht Zu Fuss


    //Edit ich brauch immer noch hilfe...

    Einmal editiert, zuletzt von E4sTsId3 ()

  • Ich hab dir schon in ICQ gesagt dass ich ne funktionierende Variante raus gebracht hab, hier ist sie:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
    if(newkeys == (KEY_JUMP | KEY_SPRINT) && !IsPlayerInAnyVehicle(playerid)) {
    SetPlayerPos(playerid, 0.0, 0.0, 2.0);
    return 1;
    }
    if(newkeys == (KEY_JUMP | KEY_SPRINT) && IsPlayerInAnyVehicle(playerid)) {
    SetVehiclePos(GetPlayerVehicleID(playerid), 0.0, 0.0, 10.0);
    return 1;
    }
    return 1;
    }


    NUR: Bei mir ist es genau andersrum wie bei dir. Bei mir funktioniert es zu Fuß perfekt, im Auto nicht. :/
    Anpassen musst es selbst.

  • Thx Bright :thumbup:
    ich werds heut testen und einbauen ^^


    // 200. Beitrag 8o

  • Sry für Doppelpost..


    Die Lösung von Bright funktioniert mit anderen Tasten... Das problem ist es ist von Nöten dass es mit und ohne Auto mit STRG+Alt funktioniert...

  • Also er meint damit das brights Lösung zwar funktioniert ABER es sind die falschen tasten...also müssen wir jetzt nur wissen wie die richtigen tasten (strg+alt heissen) D: Hoffe es weiss einer von euch, und kann uns helfen (bin mit Besitzer des Servers)