OnPlayerKeyStateChange HILFE!!!!!

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • #define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))



    die 0en sind einfach nur Platzhalter.


    Beispiel mit "if(PRESSED(KEY_FIRE))"
    würde das selbe tun wie :


    if(((newkeys & (KEY_FIRE)) == (KEY_FIRE)) && ((oldkeys & (KEY_FIRE)) != (KEY_FIRE)))


    Im Prinzip ist es einfach nur kürzer :)

  • Was ist hier mein Problem??


    PHP
    C:\Users\Dave\Desktop\Home\Server\gamemodes\grandlarc.pwn(122) : error 017: undefined symbol "newkeys"
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.


    #define GATE(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))


    if(GATE(KEY_WALK))
    {
    if(!IsPlayerInRangeOfPoint(playerid,10,1821.57, -1450.98, 12.83))return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
    {//MoveObject(tor1[0],
    MoveObject(tor1[0], 1806.77, -1448.59, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[1], 1806.77, -1448.59, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor1[2], 1806.77, -1448.64, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[3], 1806.76, -1448.69, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[4], 1806.77, -1448.64, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor1[5], 1806.76, -1448.69, 15.59, 1.0, 0.00, 180.00, 170.00);
    SetTimer("FWTor1",10000,false);
    SendClientMessage(playerid,COLOR_GRELLRED,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
    }
    return 1;
    }

  • Du kannst es nur bei OnPlayerKeyStateChange benutzen. Dieses Callback wird ausgeführt,
    wenn der Spieler eine Spieltaste drückt (hoch,runter,links,rechts,hupen,schießen etc.)


    Wenn du das was du oben geschrieben hast nach OnPlayerKeyStateChange packst,
    würde die Taste "ALT" das Tor öffnen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • warum so schwer wen es auch einfacher geht :P



    if(newkeys & KEY_SUBMISSION)
    {
    if(IsPlayerInRangeOfPoint(playerid,15.0,1588.6610,-1638.5031,13.3795))
    {
    OnPlayerCommandText(playerid,"/pdtor");
    }
    }
    return 1;


    key musse in wiki gucken ;)

    Einmal editiert, zuletzt von Zigges () aus folgendem Grund: edit

  • Was zum....
    Er hat keinen Befehl namens "pdtor1" oder hat er das hier geschrieben?
    Du kopierst einfach irgend einen Code den du irgendwo findest und schreibst
    ihm den?!

  • Leute klappe jetzt
    Noch eine frage dazu habe ich es geht jetzt aber nur wenn ich nicht in einem Auto bin nun möchte ich das machen das man wenn man in einem Auto sitzt das es dann auch auf geht. ?!


  • dumm ? laber mal kein müll
    das ist selbst geschriben die x,y,z sind auch ausgedacht und pdtor ist ein beispiel

    //gemeldet.


    Du gibst hier unnötigen Senf ab und meinst dann noch mit beleidigen zu müssen?
    Dein Post hat absolut NICHTS zur Sache getan sondern einfach nur verwirrt. Dein Befehl
    ist verdammt nochmal genau das selbe, was er geschrieben hat nur dass du aus unerklärlichen
    Gründen OnPlayerCommandText(playerid,"/pdtor1"); rein geschrieben hast.
    Hier passt ein schönes Bildchen:




    Crox:


    Dein Code sollte auch funktionieren wenn man im Auto sitzt. Allerdings ist in einem Fahrzeug
    KEY_FIRE = Linkes STRG und nicht Maustaste :)

  • -.- sry hab mich versehen.


    LALT zu Fuß = KEY_WALK
    LALT im Veh = KEY_FIRE


    Du müsstest also das hier in OnPlayerKeyStateChange schreiben:



    if(GATE(KEY_WALK))
    {
    if(!IsPlayerInRangeOfPoint(playerid,10,1821.57, -1450.98, 12.83))return 1;
    {//MoveObject(tor1[0],
    MoveObject(tor1[0], 1806.77, -1448.59, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[1], 1806.77, -1448.59, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor1[2], 1806.77, -1448.64, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[3], 1806.76, -1448.69, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[4], 1806.77, -1448.64, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor1[5], 1806.76, -1448.69, 15.59, 1.0, 0.00, 180.00, 170.00);
    SetTimer("FWTor1",10000,false);
    SendClientMessage(playerid,COLOR_GRELLRED,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
    }
    return 1;
    }
    if(GATE(KEY_FIRE))
    {
    if(!IsPlayerInAnyVehicle(playerid))return 1;
    if(!IsPlayerInRangeOfPoint(playerid,10,1821.57, -1450.98, 12.83))return 1;
    {//MoveObject(tor1[0],
    MoveObject(tor1[0], 1806.77, -1448.59, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[1], 1806.77, -1448.59, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor1[2], 1806.77, -1448.64, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[3], 1806.76, -1448.69, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[4], 1806.77, -1448.64, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor1[5], 1806.76, -1448.69, 15.59, 1.0, 0.00, 180.00, 170.00);
    SetTimer("FWTor1",10000,false);
    SendClientMessage(playerid,COLOR_GRELLRED,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
    }
    return 1;
    }//Nicht getestet, sollte allerdings funktionieren :)


    Achso:
    Lass die Nachrichten dass er NICHT in der Nähe vom Tor ist weg, sonst bekäme jeder User auf dem
    Server andauernd eine Meldung wenn er mit einem Hunter schießt oder zu Fuß gehen will. (hab sie schon entfernt)

  • Ich habn Neues Problem ... Jetzt geht aber immer nur das 1 Tor auf :S

    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(GATE(KEY_WALK))
    {
    if(!IsPlayerInRangeOfPoint(playerid,10,1809.45, -1449.11, 12.87))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
    {//MoveObject(tor1[0],
    MoveObject(tor1[0], 1806.77, -1448.59, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[1], 1806.77, -1448.59, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor1[2], 1806.77, -1448.64, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[3], 1806.76, -1448.69, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[4], 1806.77, -1448.64, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor1[5], 1806.76, -1448.69, 15.59, 1.0, 0.00, 180.00, 170.00);
    SetTimer("FWTor1",10000,false);
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
    }
    return 1;
    }
    if(GATE(KEY_WALK))
    {
    if(!IsPlayerInRangeOfPoint(playerid,10,1812.73, -1449.70, 15.59))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
    {//MoveObject(tor1[0],
    MoveObject(tor2[0], 1812.75, -1449.64, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor2[1], 1812.75, -1449.64, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor2[2], 1812.73, -1449.70, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor2[3], 1812.73, -1449.70, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor2[4], 1812.72, -1449.76, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor2[5], 1812.72, -1449.76, 15.59, 1.0, 0.00, 180.00, 170.00);
    SetTimer("FWTor2",10000,false);
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
    }
    return 1;
    }
    if(GATE(KEY_WALK))
    {
    if(!IsPlayerInRangeOfPoint(playerid,10,1820.29, -1451.02, 12.87))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
    {//MoveObject(tor1[0],
    MoveObject(tor3[0], 1820.29, -1450.92, 12.87, 1.0, 0.00, 0.00, 0.00);
    MoveObject(tor3[1], 1820.29, -1450.92, 15.59, 1.0, 0.00, 180.00, 180.00);
    MoveObject(tor3[2], 1820.29, -1450.98, 12.87, 1.0, 0.00, 0.00, 0.00);
    MoveObject(tor3[3], 1820.29, -1451.02, 12.87, 1.0, 0.00, 0.00, 0.00);
    MoveObject(tor3[4], 1820.29, -1450.98, 15.59, 1.0, 0.00, 180.00, 180.00);
    MoveObject(tor3[5], 1820.29, -1451.02, 15.59, 1.0, 0.00, 180.00, 180.00);
    SetTimer("FWTor3",10000,false);
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
    }
    return 1;
    }
    return 1;
    }

  • @Zigges: Wie alt sind wa? 10?


    Crox:


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(GATE(KEY_WALK))
    {
    if(!IsPlayerInRangeOfPoint(playerid,10,1809.45, -1449.11, 12.87))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
    {//MoveObject(tor1[0],
    MoveObject(tor1[0], 1806.77, -1448.59, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[1], 1806.77, -1448.59, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor1[2], 1806.77, -1448.64, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[3], 1806.76, -1448.69, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor1[4], 1806.77, -1448.64, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor1[5], 1806.76, -1448.69, 15.59, 1.0, 0.00, 180.00, 170.00);
    SetTimer("FWTor1",10000,false);
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
    return 1;
    }
    if(!IsPlayerInRangeOfPoint(playerid,10,1812.73, -1449.70, 15.59))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
    {//MoveObject(tor1[0],
    MoveObject(tor2[0], 1812.75, -1449.64, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor2[1], 1812.75, -1449.64, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor2[2], 1812.73, -1449.70, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor2[3], 1812.73, -1449.70, 15.59, 1.0, 0.00, 180.00, 170.00);
    MoveObject(tor2[4], 1812.72, -1449.76, 12.87, 1.0, 0.00, 0.00, -10.00);
    MoveObject(tor2[5], 1812.72, -1449.76, 15.59, 1.0, 0.00, 180.00, 170.00);
    SetTimer("FWTor2",10000,false);
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
    return 1;
    }
    if(!IsPlayerInRangeOfPoint(playerid,10,1820.29, -1451.02, 12.87))return 1;//return SendClientMessage(playerid,COLOR_GRELLRED,"Du bist nicht in der Nähe vom Tor!");
    {//MoveObject(tor1[0],
    MoveObject(tor3[0], 1820.29, -1450.92, 12.87, 1.0, 0.00, 0.00, 0.00);
    MoveObject(tor3[1], 1820.29, -1450.92, 15.59, 1.0, 0.00, 180.00, 180.00);
    MoveObject(tor3[2], 1820.29, -1450.98, 12.87, 1.0, 0.00, 0.00, 0.00);
    MoveObject(tor3[3], 1820.29, -1451.02, 12.87, 1.0, 0.00, 0.00, 0.00);
    MoveObject(tor3[4], 1820.29, -1450.98, 15.59, 1.0, 0.00, 180.00, 180.00);
    MoveObject(tor3[5], 1820.29, -1451.02, 15.59, 1.0, 0.00, 180.00, 180.00);
    SetTimer("FWTor3",10000,false);
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"Das Tor ist auf und geht in 10 Sekunden wieder zu!");
    return 1;
    }
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen