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:
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