GivePlayerMoney mit float

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,
    ich möchte das z.b ein trucker seinen geladenen benzin für z.b. 0.2$/liter verkauft.
    Das Problem ist das er dann immer unendlich viel geld bekommt, anstatt bei z.b. 1001liter 200$.


    hier ist nen kleines scriptbsp:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/test", cmdtext, true, 10) == 0)
    {
    new liter=10000;
    new Float:preis=0.2;
    GivePlayerMoney(playerid, liter*preis); //spieler bekommt unendlich viel geld -.-
    return 1;
    }
    return 0;}Hab mal ein bisschen durchgetestet, problem ist, glaub ich, das das geld was der spieler bekommen soll als float gespeichert wird und nicht als int.
    Bei
    new liter=1001;
    new Float:preis=0.2;
    new c=liter*preis;
    printf("liter*preis int: %i, float: %.2f c int: %i, float: %.2f", liter*preis, liter*preis, c, c);

    kommt folgendes ergebniss:

    Code
    liter*preis int:1128805171, float: 200.19 c int: 1128805171, float: 200.19


    obwohl die variable c kein float ist wird das ergebniss in float gespeichert?
    gibt es in pawn eine möglichkeit für typenumwandlung, also z.b. c = (int)(a*b); bzw c = (new) (a*b); bei diesen beispielen gibt pawn immer den error: "error 029: invalid expression, assumed zero"
    ich hoffe es kann mir jemand helfen
    Toastbrot
    edit:
    hab mich nun an das englische forum gewandt, und auch gleich eine anwort bekommen,
    GivePlayerMoney(playerid,floatround(float(liter)*preis));
    habs getested und funktioniert :)

    Einmal editiert, zuletzt von Toastbrot ()