Newkeys Fehler

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
  • Wenn ich auf den Roller einsteige dann kommt der einzahlen dialog, is bissl verbuggt. warum?


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_YES) //Bank eingang
    {
    if(IsPlayerInRangeOfPoint(playerid, 5, 1457.1921,-1009.9229,26.8438))
    {
    SetPlayerPos(playerid, 1417.5946,-988.6386,1639.7843);
    SetPlayerFacingAngle(playerid, 267.6167);
    return 1;
    }
    }
    if(newkeys & KEY_NO) //Bank ausgang
    {
    if(IsPlayerInRangeOfPoint(playerid, 5, 1414.7961,-988.9714,1639.7843))
    {
    SetPlayerPos(playerid, 1457.5826,-1012.3935,26.8438);
    SetPlayerFacingAngle(playerid, 175.4531);
    return 1;
    }
    }
    if(newkeys & 16) //Geld Einzahlen
    {
    if(IsPlayerInRangeOfPoint(playerid, 2, 1432.8663,-997.8253,1639.7911))
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld einzuzahlen");
    {
    ShowPlayerDialog(playerid,DIALOG_EINZAHLEN,DIALOG_STYLE_INPUT,"Geld Einzahlen","Gebe bitte unten den gewünschten betrag ein den zu einzahlen möchtest","Weiter","Abbrechen");
    }
    return 1;
    }
    if(newkeys & 16) //Geld Auszahlen
    {
    if(IsPlayerInRangeOfPoint(playerid, 2, 1437.5004,-997.8259,1639.7911))
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld auszuzahlen");
    {
    ShowPlayerDialog(playerid,DIALOG_AUSZAHLEN,DIALOG_STYLE_INPUT,"Geld Auszahlen","Gebe bitte unten den gewünschten betrag ein den zu Auszahlen möchtest","Weiter","Abbrechen");
    }
    return 1;
    }
    if(newkeys & 16) //Handyguthaben Aufladen
    {
    if(IsPlayerInRangeOfPoint(playerid, 2, 1442.4139,-989.3533,1639.7843))
    {
    ShowPlayerDialog(playerid,DIALOG_GUTHABEN,DIALOG_STYLE_LIST,"Handyguthaben aufladen","50$\n100$\n250$\n500$\n1000$","Weiter","Abbrechen");
    }
    return 1;
    }
    if(newkeys & KEY_NO) //Motor
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    ocmd_motor(playerid,"");
    return 1;
    }
    }
    if(newkeys & KEY_YES) //Enter Befehl fürs Haus
    {
    ocmd_enter(playerid,"");
    return 1;
    }
    if(newkeys & KEY_NO) //Exit Befehl fürs Haus
    {
    ocmd_exit(playerid,"");
    return 1;
    }
    return 1;
    }

  • if(IsPlayerInRangeOfPoint(playerid, 2, 1432.8663,-997.8253,1639.7911))
    {
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld einzuzahlen");
    {
    ShowPlayerDialog(playerid,DIALOG_EINZAHLEN,DIALOG_STYLE_INPUT,"Geld Einzahlen","Gebe bitte unten den gewünschten betrag ein den zu einzahlen möchtest","Weiter","Abbrechen");
    }
    }


    Du hast die geschweiften Kllammern bei IsPlayerInRangeOfPoint() vergessen.


    Du kannst btw den Code etwas veringern, indem du einfach nur eine if Abfrage nach der Taste 16 machst und da drin einfach immer abfragst, an welcher Position er ist.

  • Habe es jetzt so:


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_YES) //Bank eingang
    {
    if(IsPlayerInRangeOfPoint(playerid, 5, 1457.1921,-1009.9229,26.8438))
    {
    SetPlayerPos(playerid, 1417.5946,-988.6386,1639.7843);
    SetPlayerFacingAngle(playerid, 267.6167);
    return 1;
    }
    }
    if(newkeys & KEY_NO) //Bank ausgang
    {
    if(IsPlayerInRangeOfPoint(playerid, 5, 1414.7961,-988.9714,1639.7843))
    {
    SetPlayerPos(playerid, 1457.5826,-1012.3935,26.8438);
    SetPlayerFacingAngle(playerid, 175.4531);
    return 1;
    }
    }
    if(newkeys & 16) //Geld Einzahlen
    {
    if(IsPlayerInRangeOfPoint(playerid, 2, 1432.8663,-997.8253,1639.7911))
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld einzuzahlen");
    {
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld einzuzahlen");
    {
    ShowPlayerDialog(playerid,DIALOG_EINZAHLEN,DIALOG_STYLE_INPUT,"Geld Einzahlen","Gebe bitte unten den gewünschten Betrag ein den zu einzahlen möchtest","Weiter","Abbrechen");
    }
    }
    return 1;
    }
    if(newkeys & 16) //Geld Auszahlen
    {
    if(IsPlayerInRangeOfPoint(playerid, 2, 1437.5004,-997.8259,1639.7911))
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld auszuzahlen");
    {
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld auszuzahlen");
    {
    ShowPlayerDialog(playerid,DIALOG_AUSZAHLEN,DIALOG_STYLE_INPUT,"Geld Auszahlen","Gebe bitte unten den gewünschten betrag ein den zu Auszahlen möchtest","Weiter","Abbrechen");
    }
    }
    return 1;
    }
    if(newkeys & 16) //Handyguthaben Aufladen
    {
    if(IsPlayerInRangeOfPoint(playerid, 2, 1442.4139,-989.3533,1639.7843))
    {
    ShowPlayerDialog(playerid,DIALOG_GUTHABEN,DIALOG_STYLE_LIST,"Handyguthaben aufladen","50$\n100$\n250$\n500$\n1000$","Weiter","Abbrechen");
    }
    return 1;
    }
    if(newkeys & KEY_NO) //Motor
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    ocmd_motor(playerid,"");
    return 1;
    }
    else
    {
    return 1;
    }
    }
    if(newkeys & KEY_YES) //Enter Befehl fürs Haus
    {
    ocmd_enter(playerid,"");
    return 1;
    }
    if(newkeys & KEY_NO) //Exit Befehl fürs Haus
    {
    ocmd_exit(playerid,"");
    return 1;
    }
    return 1;
    }


    Trotzdem komme manche nachrichten immer wieder wenn sie nicht sollten

  • Lies nochmal meinen letzten Post. ^^
    Du hast nicht das gemacht, was ich gesagt habe, sondern du hast die Abfrage nach dem Bankkonto dupliziert.


    So wäre es beispielsweise korrekt:


    if(IsPlayerInRangeOfPoint(playerid, 2, 1432.8663,-997.8253,1639.7911))
    {

    }


    Mach es so wie vorhin, nur dass du die geschweiften Klammern { und } setzt (siehe mein Beispiel).

  • Habe es jz so:



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_YES) //Bank eingang
    {
    if(IsPlayerInRangeOfPoint(playerid, 5, 1457.1921,-1009.9229,26.8438))
    {
    SetPlayerPos(playerid, 1417.5946,-988.6386,1639.7843);
    SetPlayerFacingAngle(playerid, 267.6167);
    return 1;
    }
    }
    if(newkeys & KEY_YES) //Stadthalle Eingang
    {
    if(IsPlayerInRangeOfPoint(playerid, 5, 1481.0142,-1772.3129,18.7958))
    {
    SetPlayerPos(playerid, 384.808624, 173.804992, 1008.382812);
    SetPlayerFacingAngle(playerid, 91.4920);
    SetPlayerInterior(playerid, 3);
    return 1;
    }
    }
    if(newkeys & KEY_NO) //Stadthalle Ausgang
    {
    if(IsPlayerInRangeOfPoint(playerid, 5, 390.7632,173.6548,1008.3828))
    {
    SetPlayerPos(playerid, 1480.6505,-1770.0698,18.7958);
    SetPlayerFacingAngle(playerid, 357.0385);
    SetPlayerInterior(playerid, 0);
    return 1;
    }
    }
    if(newkeys & KEY_NO) //Bank ausgang
    {
    if(IsPlayerInRangeOfPoint(playerid, 5, 1414.7961,-988.9714,1639.7843))
    {
    SetPlayerPos(playerid, 1457.5826,-1012.3935,26.8438);
    SetPlayerFacingAngle(playerid, 175.4531);
    return 1;
    }
    }
    if(newkeys & 16) //Geld Einzahlen
    {
    if(IsPlayerInRangeOfPoint(playerid, 2, 1432.8663,-997.8253,1639.7911))
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld einzuzahlen");
    {
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld einzuzahlen");
    {
    ShowPlayerDialog(playerid,DIALOG_EINZAHLEN,DIALOG_STYLE_INPUT,"Geld Einzahlen","Gebe bitte unten den gewünschten Betrag ein den zu einzahlen möchtest","Weiter","Abbrechen");
    }
    }
    return 1;
    }
    if(newkeys & 16) //Geld Auszahlen
    {
    if(IsPlayerInRangeOfPoint(playerid, 2, 1437.5004,-997.8259,1639.7911))
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld auszuzahlen");
    {
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld auszuzahlen");
    {
    ShowPlayerDialog(playerid,DIALOG_AUSZAHLEN,DIALOG_STYLE_INPUT,"Geld Auszahlen","Gebe bitte unten den gewünschten betrag ein den zu Auszahlen möchtest","Weiter","Abbrechen");
    }
    }
    return 1;
    }
    if(newkeys & 16) //Handyguthaben Aufladen
    {
    if(IsPlayerInRangeOfPoint(playerid, 2, 1442.4139,-989.3533,1639.7843))
    {
    ShowPlayerDialog(playerid,DIALOG_GUTHABEN,DIALOG_STYLE_LIST,"Handyguthaben aufladen","50$\n100$\n250$\n500$\n1000$","Weiter","Abbrechen");
    }
    return 1;
    }
    if(newkeys & KEY_NO) //Motor
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    ocmd_motor(playerid,"");
    return 1;
    }
    else
    {
    return 1;
    }
    }
    if(newkeys & KEY_YES) //Enter Befehl fürs Haus
    {
    ocmd_enter(playerid,"");
    return 1;
    }
    if(newkeys & KEY_NO) //Exit Befehl fürs Haus
    {
    ocmd_exit(playerid,"");
    return 1;
    }
    return 1;
    }


  • Sry aber bin grad bissl müde aber wollte es noch heute fertig bekommt, kannst du das vlt. kurz unschreiben? wäre echt nett...bin ahlt müde und verplant grade^^

  • Ach kommt, so müde kann man doch garnicht sein, ich habe dir doch sogar an einem Beispiel gezeigt, wo du welche Klammern zu setzen hast. :D
    Aber gut, ich habe heute mal meinen guten Tag, aber nur unter der Voraussetzung, dass du dir das auch anschaust und nicht einfach kopierst.


    if(IsPlayerInRangeOfPoint(playerid, 2, 1432.8663,-997.8253,1639.7911))
    {
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld einzuzahlen");
    {
    ShowPlayerDialog(playerid,DIALOG_EINZAHLEN,DIALOG_STYLE_INPUT,"Geld Einzahlen","Gebe bitte unten den gewünschten Betrag ein den zu einzahlen möchtest","Weiter","Abbrechen");
    }
    }


    if(IsPlayerInRangeOfPoint(playerid, 2, 1437.5004,-997.8259,1639.7911))
    {
    if(sInfo[playerid][bankkonto] == 0)return SendClientMessage(playerid,COLOR_RED,"Du benötigst enen Bankkonto um Geld auszuzahlen");
    {
    ShowPlayerDialog(playerid,DIALOG_AUSZAHLEN,DIALOG_STYLE_INPUT,"Geld Auszahlen","Gebe bitte unten den gewünschten betrag ein den zu Auszahlen möchtest","Weiter","Abbrechen");
    }
    }



    So sollte es funktionieren. Wenn nicht, sag Bescheid.


    //E: Gleichen Fehler noch beim Auszahlen Dialog behoben.