Frage zu Geldsystem mit Float-Werten

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 Brotfische,


    Und zwar möchte ich ein Geldsystem schreiben, welches auf Float-Werten basiert.
    Das Geld soll immer wie folgt angezeigt werden:
    Millionen.Tausend.Hunderter.Zehner
    12 . 120 . 900 . 99 --> Zwölf Millionen, Hundertzwanzig Tausend, Neunhundert Euro und 99 Cent


    Jetzt ist meine Frage, wie schreibe ich am besten die GivePlayerMoney Funktion? (Habe leider kein Plan wie ich das am besten mache)

    C
    givePlayerMoney(playerid, mio = 0, tausend = 0, hundert = 0, cent = 0){
    
    
         return 
    }


    Außerdem, wollte ich noch gerne wissen wie ich das dann am besten speichern kann? :)


    Ich hoffe es kann mir jemand die passende Antwort geben.


    MfG :thumbup:


    Mit freundlichen Grüßen
    German_ScripterHD

  • Prinzipiell kannst du das so machen, dann würdest du dir die Arbeit ersparen, den Geldwert immer als String zumzuwandeln, mit den Punkten dazwischen. Dafür gäbe es allerdings Funktionen, das wäre nicht das Problem.


    Wenn du es trotzdem so machen willst, dann würde ich es dir als Code so vorschlagen:


    Als Speicher-Variable:
    new pMoney[MAX_PLAYERS][4];
    Oder in einem enum.


    Und dann:
    givePlayerMoney(playerid, mio, tausend, hundert, cent)
    {
    pMoney[playerid][3] += cent;
    if(pMoney[playerid][3] > 99) pMoney[playerid][3] -= 100, pMoney[playerid][2]++;
    if(pMoney[playerid][3] < 0) pMoney[playerid][3] += 100, pMoney[playerid][2]--;
    pMoney[playerid][2] += hundert;
    if(pMoney[playerid][2] > 999) pMoney[playerid][2] -= 1000, pMoney[playerid][1]++;
    if(pMoney[playerid][2] < 0) pMoney[playerid][2] += 1000, pMoney[playerid][1]--;
    pMoney[playerid][1] += tausend;
    if(pMoney[playerid][1] > 999) pMoney[playerid][1] -= 1000, pMoney[playerid][0]++;
    if(pMoney[playerid][1] < 0) pMoney[playerid][1] += 1000, pMoney[playerid][0]--;
    pMoney[playerid][0] += mio;
    return 1;
    }


    Dann kannst du das Geld so ausgeben:
    printf("Spieler %d - Geld: %03d.%03d.%03d,%02d", playerid, pMoney[playerid][0], pMoney[playerid][1], pMoney[playerid][2], pMoney[playerid][3]);


    Allerdings sind Abfragen, wie viel Geld der Spieler hat, so etwas umständlich.


    Prinzipiell würde ich dazu raten, die Centbeträge weg zu lassen, und dann über einen Integer-Wert mit einer entsprechenden Funktion, die Punkte dazwischen setzen. Siehe dazu: Preise als 'Float' anzeigen