-
Sziasztok!
Nekem erre a kódra 0-t ír ki 20 helyett. Próbáltam már mindent, de sehogy sem akarja működni. Mi lehet a baj? Köszi!
format(textstr, sizeof(textstr), \"ERTEK: %d\", (30*150)/100);
SendClientMessage(playerid, COLOR_WHITE, textstr);
-
Az érdekes, mert 45-öt kéne írnia, illetve ezen kódnak önmagában jól kéne működnie. Tehát máshol lesz a hiba.
-
Jelenleg így van:
format(textstr, sizeof(textstr), \"Ehseg: ~w~%d%%\", (ehseg[playerid]/120)*100);
TextDrawSetString(ehsegtext[playerid], textstr);
TextDrawShowForPlayer(playerid, ehsegtext[playerid]);
Ha az éhség 120 akkor kiírja, hogy 100%, ha lejjebb megy, akkor már 0%-ot ír. Próbáltam már %f -el is, azzal sem ment.
-
A %f-nek semmi köze hozzá. Az valós számokat ír ki, tehát pl. 2,3893935393.
120-nál 120-at ír, mert (120/120)*100 az 1*100 azaz 100. Ha pedig az éhség 120-nál kisebb, pl. 119/120, akkor 0 lesz az eredmény, mert sima osztást használsz. 0*100 pedig 0. Pontosan mit szeretnél kiszámolni, mit kéne kiírnia milyen esetekben? És akkor segítek megadni a megfelelő műveletet, amelyben valószínűleg szerepelni fog a maradékos osztás.
Szerk.: Ha pl. a változó értéke 90 és a 100% egyenlő 120-al, akkor itt egy ilyen trükk, amelyhez nem is kell modulózni: (90*100)/120 = 75%
format(textstr, sizeof(textstr), \"Ehseg: ~w~%d%\", (ehseg[playerid]*100)/120);
TextDrawSetString(ehsegtext[playerid], textstr);
TextDrawShowForPlayer(playerid, ehsegtext[playerid]);
Szerintem te is valami ilyesmit akartál, csak felcserélted őket.
-
Szia! Igy mar jo lett:) Nagyon szépen köszönöm a segítséget!