Dialog überweisung

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 Zusammen.


    Ich versuche als Dialog anzeigen zu lassen des neuen Kontostand also.
    Es wird eine Überweisung getätig, Danach soll stehen Alter Kontostand: XXXX, Überweisungs Betrag: xxxx, Neue Kontostand: XXXX
    Klappt soweit auch nur das 1. Nicht der Komplette Text im Dialog angezeigt wird muss ich da irgendwie string höher setzten oder neues Definieren ?


    format(string,sizeof(string),"|________Bank Auszug________|\n Alter Kontostand: %d$\n Überweisungs Betrag: %d$\n |----------------------------------|\n Neuer Kontostand: %d$",curfunds,geld,PlayerInfo[playerid][pAccount]);
    ShowPlayerDialog(playerid,DIALOG_Kontostand,DIALOG_STYLE_MSGBOX,"Neuer Kontostand",string,"Schließen","");


    Wie müsste ich das machen das er mir erst den Alten Kontostand anzeigt und danach den Neuen ?
    new curfunds = PlayerInfo[playerid][pAccount]=geld+PlayerInfo[playerid][pAccount];
    hatte es so probiert hatte aber nicht funktioniert.

    Das Originale SOR ( Street´s of Reallife ) seit 03.10.2009

  • Wieso addierst du oben den Betrag zum pAccount? Der überwiesene Betrag muss ja vom überweisenden Konto (playerid) abgezogen, nicht addiert werden.


    Code
    new alterKontostand = PlayerInfo[playerid][pAccount];
    PlayerInfo[playerid][pAccount] = alterKontostand - geld;
    return PlayerInfo[playerid][pAccount]; // Neuer Kontostand
  • Hatte davor einen Fehler da war mein konto danach im Minus, aber dies kam durch andere Fehler
    das return musst ich weglassen weil wenn ich es so in den 3 Punkten rein Hatte war ein Warning in der Zeile,


    Habe aber immer noch das Problem das das Dialog nicht ganz angezeigt wird nur bis neue(r Kontostand: XXXX)


    Das was eingeklammert ist fehlt im Dialog auf dem server ?

    Das Originale SOR ( Street´s of Reallife ) seit 03.10.2009

    Einmal editiert, zuletzt von eli ()

  • Das mit dem return war nur beispielsweise, damit du weißt, dass es sich um eine Ausgabe handelt. :)


    Bzgl. des Dialogs: Zeig mal deine Deklaration des strings. (Also: new string) Eventuell ist die Stringgröße zu klein.

  • Code
    format(string,sizeof(string),"|________Bank Auszug________|");
    format(string,sizeof(string),"%s\n Alter Kontostand: %d$", string, curfunds);
    format(string,sizeof(string),"%s\n Überweisungs Betrag: %d$", string, geld);
    format(string,sizeof(string),"%s\n |----------------------------------|", string);
    format(string,sizeof(string),"%s\n Neuer Kontostand: %d$",string, PlayerInfo[playerid][pAccount]);
    ShowPlayerDialog(playerid,DIALOG_Kontostand,DIALOG_STYLE_MSGBOX,"Neuer Kontostand",string,"Schließen","");

    Probier es mal so

  • Ich weiß wieder wieso ich + hatte
    Kontostand - gled wäre ja z.B


    2000 habe ich 1000 überweise ich wäre: 1000 weil er ja 1000 abzieht
    aber beim alten stand brauch ich ja denn alten also Kontostand + geld
    Kontostand abgezogen: 1000 + 1000 = 2000
    ^^
    new alterKontostand = PlayerInfo[playerid][pAccount] + geld;



    So in der Form wird nur das auf dem server angezeigt:
    format(string,sizeof(string),"\n Neuer Kontostand: %d$",PlayerInfo[playerid][pAccount]);


    der rest wird nicht angezeigt

    Das Originale SOR ( Street´s of Reallife ) seit 03.10.2009

  • Ich hatte einen kleinen Fehler oben, du musst in jedem Format den String übergeben. Nutze den Code oben, habe ihn bearbeitet.



    2000 habe ich 1000 überweise ich wäre: 1000 weil er ja 1000 abzieht


    aber beim alten stand brauch ich ja denn alten also Kontostand + geld
    Kontostand abgezogen: 1000 + 1000 = 2000
    ^^
    new alterKontostand = PlayerInfo[playerid][pAccount] + geld;

    Da hast du natürlich vollkommen recht, das geht so natürlich auch, schließlich führen ja mehrere Wege nach Rom. Wenn du die PlayerInfo sofort setzt, dann muss du natürlich den Betrag addieren, hierbei kommt es nunmal darauf an, in welcher Instanz du die PlayerInfo bearbeitest. Setzt du die PlayerInfo zuerst, musst du natürlich addieren um den vorherigen Kontostand (alter Kontostand) rauszufinden. Setzt du den Kontostand in der Playerinfo erst später, musst du natürlich subtrahieren.

  • Ok, Schaue ich mir gleich nochmal an ich habe es mal so Probiert:


    new string45[768]
    und halt die Alte Variation genommen so hat es nun auch geklappt


    ist es denn schlimm wenn ich es auf 768 habe ?


    eine frage hätte ich noch
    undzwar habe ich ja beim namen eingeben dieses Hier:
    if (!IsPlayerConnected(giveplayerid))
    {
    format(string,sizeof(string),"%s ist kein Aktiver Spieler",inputtext);
    ShowPlayerDialog(playerid,DIALOG_UEBERWEISEN_PLAYER,DIALOG_STYLE_INPUT,"Überweisen",string,"Bestätigen","Zurück");
    return 1;
    }


    Damit wird ja geprüft ob der Spieler Online ist, wie müsste ich diese abfrage machen wenn er Prüft ob es der eigende Spieler ist?


    if (!playerid)
    {
    format(string,sizeof(string),"Du kannst dir nicht selbst was überweisen");
    ShowPlayerDialog(playerid,DIALOG_UEBERWEISEN_PLAYER,DIALOG_STYLE_INPUT,"Überweisen",string,"Bestätigen","Zurück");
    return 1;
    }

    Das Originale SOR ( Street´s of Reallife ) seit 03.10.2009

  • Den o. g. Stock einfügen, wenn nicht schon vorhanden, und dann in deiner Abfrage:



    Code
    if(GetPlayerIdFromName(inputtext) == playerid) {
    format(string,sizeof(string),"Du kannst dir nicht selbst was überweisen");
    ShowPlayerDialog(playerid,DIALOG_UEBERWEISEN_PLAYER,DIALOG_STYLE_INPUT,"Überweisen",string,"Bestätigen","Zurück");
    } else {
         // Erfolgreich überwiesen
    }
  • Freut mich, dass es geklappt hat. Naja, Schlimm ist es nicht, allerdings wenn du einen Server mit 300 Spieler online hast und alle gleichzeitig den Payday bekommen, werden halt 300 String mit 768 Zeichenketten erstellt. Ob das wiederum Auswirkungen auf den Server hat wage ich zu bezweifeln.