Bankkonto und Automaten Einzahlung/Auszahlung

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
  • Kriege Errors


    Code
    new Float:atmArray[][] = {
    	1719.1000000,-1873.9000000,13.2000000,
    };

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • new Float:atmArray[][] = {
    {1719.1000000, -1873.9000000, 13.2000000}
    };
    Beachte, dass wenn du weitere Koordinaten hinzufügst, nur die letzte Zeile kein Komma hinten haben darf, alle anderen müssen mit Komma getrennt werden.


    Den Befehl so:
    ocmd:automat(playerid,params[])
    {
    for(new i = 0; i < sizeof(atmArray); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, atmArray[i][0], atmArray[i][1], atmArray[i][2]))
    {
    if(pInfo[playerid][pBankkonto] == 1)
    {
    new str[64];
    format(str,sizeof str, "{FFFFFF}Kontostand: %s", sMoney(pInfo[playerid][pBankgeld]));
    ShowPlayerDialog(playerid, DIALOG_AUTOMAT1, DIALOG_STYLE_LIST, str, "{FFFFFF}Geld einzahlen\nGeld abheben", "Auswählen", "Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_AUTOMAT2, DIALOG_STYLE_MSGBOX, "{FFFFFF}Bankkonto Einrichtung", "Damit du ein Bankkonto nutzen kannst musst du dir zu erst eins erstellen\nDie einmaligen Gebühren betragen {bc4343}928${FFFFFF}, zusätzliches Startguthaben in höhe von {009C00}$250{FFFFFF}.\n\nBestätige bitte die Einrichtung deines Bankkontos, um das Bankkonto nutzen zu können", "Bestätigen", "Abbrechen");
    }
    }
    }
    return SendClientMessage(playerid,-1,"{c45461}Du bist nicht in der Nähe eines Bankautomaten!");
    }

  • Das hat mich jetzt ein großen Schritt weiter gebracht, habe grade gemerkt das ich noch zwei if(dialog == DIALOG) erstellen musste damit es funktioniert sonst war alles durcheinander
    Aber irgendwie kriege ich Fehlermeldungen

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Am Ende der Zeilen waren zwei Anführungszeichen.
    Schreibe es so, die return's verhindern, dass der Code noch bis nach unten durchläuft, wenn der eine Dialog abgeschlossen ist, das ist nämlich dann nicht mehr notwendig.
    if(dialogid == DIALOG_AUTOMAT1)
    {
    switch(listitem)
    {
    case 0:
    {
    ShowPlayerDialog(playerid, DIALOG_AUTOMAT3, DIALOG_STYLE_INPUT, "Geldautomat Transaktion, Auszahlen", "Gebe bitte deinen gewünschten Betrag ein, den du von deinem\nBankkonto abheben möchtest.\n\nDer Automat kann Maximal $350000 aufeinmal auszahlen.", "Auszahlen", "Abbrechen");
    }
    case 1:
    {
    ShowPlayerDialog(playerid, DIALOG_AUTOMAT4, DIALOG_STYLE_INPUT, "Geldautomat Transaktion, Einzahlung", "Gebe bitte deinen gewünschten Betrag ein, den du auf deinem\nBankkonto einzahlen möchtest.\n\nDer Automat kann Maximal $350000 aufeinmal annehmen.", "Einzahlen", "Abbrechen");
    }
    }
    return 1;
    }
    if(dialogid == DIALOG_AUTOMAT3)
    {
    if(response)
    {
    new aGeld = strval(inputtext);
    if(aGeld > 350000)
    {
    if (pInfo[playerid][pGeld] > aGeld)
    {
    pInfo[playerid][pBankgeld] -= aGeld;
    GivePlayerMoney(playerid, aGeld);
    }
    else
    {
    SendClientMessage(playerid,-1,"{bc4343}Du kannst den eingegebenen Betrag nicht abheben, da du zu wenig Geld auf deinem Konto hast.");
    }
    }
    else
    {
    SendClientMessage(playerid, -1, "{bc4343}Der Automat kann dir nur $350.000 mit einer Transaktion auszahlen.");
    }
    }
    else
    {
    SendClientMessage(playerid, -1, "{bc4343}Deine Transaktion wurde erfolgreich abgebrochen");
    }
    return 1;
    }
    if(dialogid == DIALOG_AUTOMAT4)
    {
    if(response)
    {
    new aGeld = strval(inputtext);
    if(aGeld > 350000)
    {
    if (pInfo[playerid][pGeld] > aGeld)
    {
    pInfo[playerid][pBankgeld] += aGeld;
    GivePlayerMoney(playerid, -aGeld);
    }
    else
    {
    SendClientMessage(playerid,-1,"{bc4343}Du kannst den eingegebenen Betrag nicht abheben, da du zu wenig Geld auf deinem Konto hast.");
    }
    }
    else
    {
    SendClientMessage(playerid, -1, "{bc4343}Der Automat kann nur $350.000 mit einer Transaktion annehmen.");
    }
    }
    else
    {
    SendClientMessage(playerid, -1, "{bc4343}Deine Transaktion wurde erfolgreich abgebrochen");
    }
    return 1;
    }

  • Also irgendwie klappt es aber nur durcheinander von Zeile 16 - 72 also wo das Geld weggenommen wird und auf dem Konto gepackt wird und andersrum habe so viel schon probiert aber die ersten paar Geld Einzahlungen gehen danach nicht mehr weil ich zu wenig Geld habe aber ich habe Geld kriege nur Kopfschmerzen dabei das sind 2 Zeilen aber ich kriege es nicht hin 23-27 53-57


    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Du hattest die Zeichen beim Berechnen des Restgeldes vertauscht.
    Versuche es so:
    if(dialogid == DIALOG_AUTOMAT1)
    {
    switch(listitem)
    {
    case 0:
    {
    ShowPlayerDialog(playerid, DIALOG_AUTOMAT3, DIALOG_STYLE_INPUT, "Geldautomat Transaktion, Auszahlen", "Gebe bitte deinen gewünschten Betrag ein, den du von deinem\nBankkonto abheben möchtest.\n\nDer Automat kann Maximal $350000 aufeinmal auszahlen.", "Auszahlen", "Abbrechen");
    }
    case 1:
    {
    ShowPlayerDialog(playerid, DIALOG_AUTOMAT4, DIALOG_STYLE_INPUT, "Geldautomat Transaktion, Einzahlung", "Gebe bitte deinen gewünschten Betrag ein, den du auf deinem\nBankkonto einzahlen möchtest.\n\nDer Automat kann Maximal $350000 aufeinmal annehmen.", "Einzahlen", "Abbrechen");
    }
    }
    return 1;
    }
    if(dialogid == DIALOG_AUTOMAT3)
    {
    if(response)
    {
    new aGeld = strval(inputtext);
    if(aGeld>=0 && aGeld <=350000)
    {
    if (pInfo[playerid][pBankgeld] > aGeld)
    {
    pInfo[playerid][pBankgeld] -= aGeld;
    GivePlayerMoney(playerid, aGeld);
    pInfo[playerid][pGeld] += aGeld;
    SendClientMessage(playerid,GREEN,"Transaktion wurde erfolgreich abgeschlossen, das Geld wurde erfolgreich von deinem Konto abgebucht.");
    }
    else
    {
    SendClientMessage(playerid,-1,"{bc4343}Du kannst den eingegebenen Betrag nicht abheben, da du zu wenig Geld auf deinem Konto hast.");
    }
    }
    else
    {
    SendClientMessage(playerid, -1, "{bc4343}Der Automat kann dir nur $350.000 mit einer Transaktion auszahlen.");
    }
    }
    else
    {
    SendClientMessage(playerid, -1, "{bc4343}Du hast deine offene Transaktion abgebrochen.");
    }
    return 1;
    }
    if(dialogid == DIALOG_AUTOMAT4)
    {
    if(response)
    {
    new aGeld = strval(inputtext);
    if(aGeld>=0 && aGeld <=350000)
    {
    if (pInfo[playerid][pGeld] > aGeld)
    {
    pInfo[playerid][pBankgeld] += aGeld;
    GivePlayerMoney(playerid, -aGeld);
    pInfo[playerid][pGeld] -= aGeld;
    SendClientMessage(playerid,GREEN,"Transaktion wurde erfolgreich abgeschlossen, das Geld ist jetzt auf deinem Konto verfügbar");
    }
    else
    {
    SendClientMessage(playerid,-1,"{bc4343}Du kannst den eingegebenen Betrag nicht abheben, da du zu wenig Geld auf der Hand hast.");
    }
    }
    else
    {
    SendClientMessage(playerid, -1, "{bc4343}Der Automat kann nur $350.000 mit einer Transaktion einzahlen.");
    }
    }
    else
    {
    SendClientMessage(playerid, -1, "{bc4343}Du hast deine offene Transaktion abgebrochen.");
    }
    return 1;
    }
    if(dialogid == DIALOG_AUTOMAT2)
    {
    if(response)
    {
    if (pInfo[playerid][pGeld] > 928)
    {
    ShowPlayerDialog(playerid, DIALOG_SERVICE2, DIALOG_STYLE_PASSWORD, "{FFFFFF}Bankkonto Einrichtung", "{FFFFFF}Gebe hier deinen gewünschten Bank-PIN ein\nEr muss 4 stellig sein und darf nur Zahlen enthalten\n\nDer Bank-PIN wird aus Sicherheitsgründen verwendet, mit diesem wirst du\nTransaktionen abschließen. Dein Bank-PIN kannst du jeder Zeit im Forum nachsehen.", "{FFFFFF}Bestätigen", "");
    pInfo[playerid][pBankkonto]=1;
    pInfo[playerid][pBankgeld]=250;
    }
    else
    {
    SendClientMessage(playerid,-1,"{bc4343}Du brauchst $928 um ein Bankkonto einzurichten!");
    }
    }
    return 1;
    }


    Achte auch darauf, nach if's, wenn der Code in einer neuen Zeile steht, die geschweiften Klammern zu nutzen, sonst führt das früher oder später zu massiver Unübersichtlichkeit.

  • Ich habe jetzt noch das Problem wenn ich an dem Automat bin dann steht trotzdem im Chat das ich nicht in der nähe bin aber der Automat ist bedienbar

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • So funktioniert es ohne Warnings aber es geht immernoch nicht

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Jeffry hat doch gesagt, du sollst ein return 1; hinzufügen :D


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S