Wert wird nicht korrekt in den Text formatiert

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
  • if(pInfo[playerid][Bank] >= strval(inputtext))
    {
    GivePlayerMoneyEx(playerid, strval(inputtext));
    pInfo[playerid][Bank] = pInfo[playerid][Bank] - strval(inputtext);
    format(stringDE, sizeof(stringDE), "Bitte gib den Betrag ein, den du auszahlen willst.\nWenn du alles auszahlen möchtest, klicke einfach\nauf OK, ohne einen Betrag anzugeben.\nDerzeitiger Kontostand: "#C_GREEN_E"%d$\n\n"C_GREEN_E"Zahlung erfolgreich!\nDu hast %d$ abgehoben.", pInfo[playerid][Bank], inputtext);
    format(stringEN, sizeof(stringEN), "Please enter the amount of money you want to draw.\nIf you want to draw all you have, just click\non OK, without typing in anything.\nCurrent account balance: "#C_GREEN_E"%d$\n\n"C_GREEN_E"Payment successful!\nYou withdrew %d$.", pInfo[playerid][Bank], inputtext);
    return ShowLanguageDialog(playerid, DIALOG_BANK_WITHDRAW, DIALOG_STYLE_INPUT, "Auszahlen", "Withdraw", stringDE, stringEN, "OK", "OK", "Abbrechen", "Cancel");
    }


    Das ganze spielt sich im Bankwesen beim Auszahlen ab. Wenn ein numerischer Wert eingegeben wird, soll überprüft werden, ob das, was auf der Bank ist größer oder gleich dem ist, was eingegeben wurde (wie im Code oben), damit eine Auszahlung erfolgen kann. In dem formatierten Wert ist der Wert aber nicht korrekt wiedergegeben. Ich habe probeweise 1000$ auszahlen lassen. Ausspucken tut er mir 49$.

    Einmal editiert, zuletzt von Manyula ()

  • else
    {
    pInfo[playerid][Bank] = pInfo[playerid][Bank] + strval(inputtext);
    GivePlayerMoneyEx(playerid, -strval(inputtext));
    format(stringDE, sizeof(stringDE), "Bitte gib den Betrag ein, den du einzahlen willst.\nWenn du alles einzahlen möchtest, klicke einfach\nauf OK, ohne einen Betrag anzugeben.\nDerzeitiger Kontostand: "#C_GREEN_E"%d$\n\n"#C_GREEN_E"Zahlung erfolgreich!\nDu hast %s$ eingezahlt.", pInfo[playerid][Bank], inputtext);
    format(stringEN, sizeof(stringEN), "Please enter the amount of money you want to deposit.\nIf you want to deposit all you have, just click\non OK, without typing in anything.\nCurrent account balance: "#C_GREEN_E"%d$\n\n"#C_GREEN_E"Payment successful!\nYou deposited %s$.", pInfo[playerid][Bank], inputtext);
    return ShowLanguageDialog(playerid, DIALOG_BANK_DEPOSIT, DIALOG_STYLE_INPUT, "Einzahlen", "Deposit", stringDE, stringEN, "OK", "OK", "Abbrechen", "Cancel");
    }


    Kannst du mir dann bitte erklären, warumhier ein normales "inputtext" ausreicht?

  • Das liegt daran, dass du da einen String-Platzhalter hast (%s) und bei der Variante oben hast du einen Integer-Platzhalter (%d / %i).
    Für den String-Platzhalter kannst du "inputtext" nehmen, da das ja ein String ist. Für den Integer-Platzhalter musst du "strval(inputtext)", also den Integer-Wert des Strings nehmen, da du ja einen Integer übergeben musst.