salut, problema e că tu resetezi variabilele fix după ce primul jucător primește bonusul. de asemenea, am mai observat și câteva greșeli de logică în codul tau.
1. ar trebui să verifici prima dată dacă bonusul e activ, nu atunci când treci prin toti jucătorii logați
2. la fel, trebuie să verifici dacă sunt suficienți jucători conectați fix după ce bonusul este activ. cum e acum nu e ok, trebuie să verifici o singură dată
3. nu trebuie să verifici dacă jucătorul este conectat, trebuie să verifici doar dacă e logat pentru a-i acorda bonusul
4. trebuie să resetezi variabilele după ce toți jucătorii primesc bonusul. cum e acum în codul tău, doar un singur jucător primește bonusul și apoi nimic.
5. poți folosi SendClientMessageToAll în loc să formatezi textul de mai multe ori, e același text deci nu trebuie să-l formatezi pt fiecare player în parte
ai mai jos funcția rescrisă. sper că ai înțeles ce era greșit.
function BonusForAll()
{
// daca nu e bonus activ, opreste functia
if(!SetBonusActiv) return 0;
// daca nu sunt suficienti jucatori online, opreste functia
if(GetPlayersOnline() < PlayersOnlineForBonus) return 0;
// formatezi mesajul o singura data, nu e nevoie sa-l formatezi in bucla pt jucatorii on
new string[128];
format(string, sizeof(string), "The server has reached %d players online and you have received: $%s, %d respect points and %d premium points.", PlayersOnlineForBonus, FormatNumber(MoneyAll), RespectPointsForAll, PremiumPointsForAll);
SendClientMessageToAll(COLOR_YELLOW, string);
// oferi bonusul tuturor jucatorilor
foreach(Player, playerid)
{
if(IsPlayerLogged[playerid] != 1) continue;
PlayerInfo[playerid][pCashMoney] += MoneyAll;
UpdateVar(playerid, "CashMoney", PlayerInfo[playerid][pCashMoney]);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, PlayerInfo[playerid][pCashMoney]);
PlayerInfo[playerid][pRespectPoints] += RespectPointsForAll;
UpdateVar(playerid, "RespectPoints", PlayerInfo[playerid][pRespectPoints]);
PlayerInfo[playerid][pPremiumPoints] += PremiumPointsForAll;
UpdateVar(playerid, "PremiumPoints", PlayerInfo[playerid][pPremiumPoints]);
}
// abia acum resetezi variabilele
SetBonusActiv = 0;
MoneyAll = 0;
PremiumPointsForAll = 0;
RespectPointsForAll = 0;
PlayersOnlineForBonus = 0;
return 1;
}