if(oldstate == PLAYER_STATE_DRIVER && SweeperJob[playerid])
{
new money = floatround(SweeperDistance[playerid] * MONEY_PER_METER), string[80];
format(string, sizeof(string), "~n~~n~~w~Distance Cleaned: ~b~~h~~h~%d Meters~n~~w~Earned ~g~~h~~h~%d$", SweeperDistance[playerid], money);
GameTextForPlayer(playerid, string, 3000, 3);
new buf[200];
format(buf, sizeof(buf), "~r~%s (%d) ~w~cleaned ~g~%d meters ~w~with Sweeper and earned ~g~%d$.", ReturnPlayerName(playerid), playerid, SweeperDistance[playerid], money);
SendBoxMessage(playerid, buf);
Player[playerid][Cookies] ++;
GivePlayerMoney(playerid, money);
Player[playerid][PSweeperDistance] += SweeperDistance[playerid];
Player[playerid][SweeperMoney] += money;
ResetSweeperInfo(playerid, true);
}
if(SweeperDistance[playerid] >= 1000)// 1000M = 1KM
{
// Code...
}
if(SweeperDistance[playerid] = 1000)// 1000M = 1KM
{
GiveCookie etc
}
else if(SweeperDistance[playerid] = 2000)// 2000M
{
GiveCookie etc
}
etc etc
new cookies = floatround(distance / 1000.0, floatround_floor);
if(oldstate == PLAYER_STATE_DRIVER && SweeperJob[playerid])
{
new money = floatround(SweeperDistance[playerid] * MONEY_PER_METER), string[80];
format(string, sizeof(string), "~n~~n~~w~Distance Cleaned: ~b~~h~~h~%d Meters~n~~w~Earned ~g~~h~~h~%d$", SweeperDistance[playerid], money);
GameTextForPlayer(playerid, string, 3000, 3);
new buf[200];
format(buf, sizeof(buf), "~r~%s (%d) ~w~cleaned ~g~%d meters ~w~with Sweeper and earned ~g~%d$.", ReturnPlayerName(playerid), playerid, SweeperDistance[playerid], money);
SendBoxMessage(playerid, buf);
Player[playerid][Cookies] ++;
GivePlayerMoney(playerid, money);
Player[playerid][PSweeperDistance] += SweeperDistance[playerid];
Player[playerid][SweeperMoney] += money;
while(SweeperDistance[playerid] % 1000 == 0 && SweeperDistance[playerid] != 0 && SweeperDistance[playerid] > 0)
{
Player[playerid][Cookies/*Whatever variable name you have here*/] ++;
SweeperDistance[playerid] -= 1000;
}
ResetSweeperInfo(playerid, true);
}
I would solve this with a while loop, where you for each 1000 meter, give 1 cookie
PHP код:
|
if(oldstate == PLAYER_STATE_DRIVER && SweeperJob[playerid]) { new money = floatround(SweeperDistance[playerid] * MONEY_PER_METER), string[80]; format(string, sizeof(string), "~n~~n~~w~Distance Cleaned: ~b~~h~~h~%d Meters~n~~w~Earned ~g~~h~~h~%d$", SweeperDistance[playerid], money); GameTextForPlayer(playerid, string, 3000, 3); new buf[200]; format(buf, sizeof(buf), "~r~%s (%d) ~w~cleaned ~g~%d meters ~w~with Sweeper and earned ~g~%d$.", ReturnPlayerName(playerid), playerid, SweeperDistance[playerid], money); SendBoxMessage(playerid, buf); GivePlayerMoney(playerid, money); Player[playerid][PSweeperDistance] += SweeperDistance[playerid]; Player[playerid][SweeperMoney] += money; ResetSweeperInfo(playerid, true); Player[playerid][Cookies] += floatround(Player[playerid][PSweeperDistance] / 1000.0, floatround_floor); }
Not a good solution, why a while loop if one operation can solve it.
Apart from that, modulo isn't available for Float values! @Despacito Here's your code with the cookie code I provided. You just had to add the line to it :P Код:
if(oldstate == PLAYER_STATE_DRIVER && SweeperJob[playerid]) { new money = floatround(SweeperDistance[playerid] * MONEY_PER_METER), string[80]; format(string, sizeof(string), "~n~~n~~w~Distance Cleaned: ~b~~h~~h~%d Meters~n~~w~Earned ~g~~h~~h~%d$", SweeperDistance[playerid], money); GameTextForPlayer(playerid, string, 3000, 3); new buf[200]; format(buf, sizeof(buf), "~r~%s (%d) ~w~cleaned ~g~%d meters ~w~with Sweeper and earned ~g~%d$.", ReturnPlayerName(playerid), playerid, SweeperDistance[playerid], money); SendBoxMessage(playerid, buf); GivePlayerMoney(playerid, money); Player[playerid][PSweeperDistance] += SweeperDistance[playerid]; Player[playerid][SweeperMoney] += money; ResetSweeperInfo(playerid, true); Player[playerid][Cookies] += floatround(Player[playerid][PSweeperDistance] / 1000.0, floatround); } |