Here are my repeating timers, what do I do to them or add to the script that will help reduce CPU Usage.
pawn Код:
/* Repeating Timers */
// Timer Name: MainMenuUpdate()
// TickRate: 10 Secs.
Timer:MainMenuUpdate[10000]()
{
foreach(Player, i)
{
if(PlayersConnected > 490)
{
if(playerTabbedTime[i] > 60 && PlayerInfo[i][pShopTech] < 1 && PlayerInfo[i][pAdmin] < 4)
{
Kick(i);
}
else if(playerAFK[i] != 0 && playerAFKTime[i] > 300 && PlayerInfo[i][pShopTech] < 1 && PlayerInfo[i][pAdmin] < 4)
{
Kick(i);
}
}
new string[768];
if(InsideMainMenu[i] == 1)
{
TextDrawSetString(MainMenuTxtdraw[7], Tooltips[random(sizeof(Tooltips))]);
format(string, sizeof(string), "Logins: ~y~%d~w~ | Connections: ~y~%d~w~ | Registrations: ~y~%d~w~ | Hackers Autobanned: ~y~%d~w~ | Players Connected: ~y~%d~w~ | Peak Players: ~y~%d (%d/%d/%d)~w~", TotalLogin, TotalConnect, TotalRegister, TotalAutoBan, PlayersConnected, MaxPlayersConnected, MPDay,MPMonth,MPYear);
TextDrawSetString(MainMenuTxtdraw[8], string);
format(string, sizeof(string), "~y~MOTD~w~: %s", GlobalMOTD);
TextDrawSetString(MainMenuTxtdraw[9], string);
SetPlayerJoinCamera(i);
}
else if(InsideTut[i] == 1)
{
TextDrawSetString(MainMenuTxtdraw[7], Tooltips[random(sizeof(Tooltips))]);
format(string, sizeof(string), "Logins: ~y~%d~w~ | Connections: ~y~%d~w~ | Registrations: ~y~%d~w~ | Hackers Autobanned: ~y~%d~w~ | Players Connected: ~y~%d~w~ | Peak Players: ~y~%d (%d/%d/%d)~w~", TotalLogin, TotalConnect, TotalRegister, TotalAutoBan, PlayersConnected, MaxPlayersConnected, MPDay,MPMonth,MPYear);
TextDrawSetString(MainMenuTxtdraw[8], string);
format(string, sizeof(string), "~y~MOTD~w~: %s", GlobalMOTD);
TextDrawSetString(MainMenuTxtdraw[9], string);
}
}
}
// Timer Name: SyncUp()
// TickRate: 1 Minute.
Timer:SyncUp[60000]()
{
new string[128];
new hour,minuite,second;
SyncTime();
SyncMinTime();
DollahScoreUpdate();
gettime(hour,minuite,second);
FixHour(hour);
hour = shifthour;
if(minuite < 10)
{
format(string, sizeof(string), "%d:0%d", hour, minuite);
}
else
{
format(string, sizeof(string), "%d:%d", hour, minuite);
}
TextDrawSetString(WristWatch, string);
foreach(Player, i)
{
SendBlankAudioTick(i);
if(PlayerInfo[i][pProbationTime] > 0 && !PlayerInfo[i][pBeingSentenced])
{
PlayerInfo[i][pProbationTime]--;
}
if(PlayerInfo[i][pBeingSentenced] > 1) PlayerInfo[i][pBeingSentenced]--;
if(PlayerInfo[i][pBeingSentenced] == 1)
{
TogglePlayerControllable(i, true);
SetPVarInt(i, "IsFrozen", 0);
//Frozen[i] = 0;
SetPlayerPos(i, 1415.5137,-1702.2272,13.5395);
SetPlayerFacingAngle(i, 240.0264);
SendClientMessageEx(i, COLOR_WHITE, "No Judge has attended your pending trial, you are free!");
PlayerInfo[i][pBeingSentenced] = 0;
}
}
}
// Timer Name: SaveAccountsUpdate()
// TickRate: 5 Minutes.
Timer:SaveAccountsUpdate[300000]()
{
new playerip[32];
foreach(Player, i)
{
PlayerInfo[i][pInt] = GetPlayerInterior(i);
PlayerInfo[i][pVW] = GetPlayerVirtualWorld(i);
PlayerInfo[i][pChar] = PlayerInfo[i][pModel];
GetPlayerIp(i, playerip, sizeof(playerip));
format(PlayerInfo[i][pIP], 32, "%s", playerip);
GetPlayerPos(i, PlayerInfo[i][pPos_x], PlayerInfo[i][pPos_y], PlayerInfo[i][pPos_z]);
GetPlayerFacingAngle(i, PlayerInfo[i][pPos_r]);
OnPlayerStatsUpdate(i);
}
SaveFamilies();
SaveFamiliesHQ();
}
// Timer Name: ProductionUpdate()
// TickRate: 5 Minutes.
Timer:ProductionUpdate[300000]()
{
AdvisorMessage++;
foreach(Player, i)
{
if(AdvisorMessage == 3 && Advisors > 0 && PlayerInfo[i][pLevel] < 4)
{
SendClientMessageEx(i, COLOR_LIGHTBLUE, "Need help? The Community Advisors are here to help you. (/cahelp to get help)");
}
if(PlayerInfo[i][pGiftTime] > 0) { PlayerInfo[i][pGiftTime] -= 5; }
if(PlayerInfo[i][pFishes] >= 5) { if(FishCount[i] >= 3) { PlayerInfo[i][pFishes] = 0; } else { FishCount[i] += 1; } }
if(PlayerDrunk[i] > 0) { PlayerDrunk[i] = 0; PlayerDrunkTime[i] = 0; GameTextForPlayer(i, "~p~Drunk effect~n~~w~Gone", 3500, 1); }
if(playerTabbed[i] != 1)
{
if(PlayerInfo[i][pPayDay] < 6) { PlayerInfo[i][pPayDay] += 1; } //+ 5 min to PayDay anti-abuse
}
}
if(AdvisorMessage == 3) AdvisorMessage = 0;
SaveFamilies();
if(VIPGiftsTimeLeft > 0 && VIPGifts == 1)
{
VIPGiftsTimeLeft -= 5;
if(VIPGiftsTimeLeft > 0)
{
new string[128];
format(string, sizeof(string), "%s would like for you to come to Club VIP for free gifts and great times [%d minutes remains]", VIPGiftsName, VIPGiftsTimeLeft);
SendVIPMessage(COLOR_LIGHTGREEN, string);
}
}
if(VIPGiftsTimeLeft <= 0 && VIPGifts == 1)
{
VIPGiftsTimeLeft = 0;
VIPGifts = 0;
new string[128];
format(string, sizeof(string), "Club VIP is no longer giving away free gifts. Thanks for coming!", VIPGiftsName, VIPGiftsTimeLeft);
SendVIPMessage(COLOR_LIGHTGREEN, string);
}
}
// Timer Name: playerTabbedLoop()
// TickRate: 1 secs.
Timer:playerTabbedLoop[1000]()
{
foreach(Player, x)
{
playerConnectedS[x]++;
if(playerSeconds[x] < gettime()-1 && playerTabbed[x] != 1 && playerConnectedS[x] >= 5 && 1 <= GetPlayerState(x) <= 3)
{
playerTabbed[x] = 1;
SetTimerEx("AFKick",1000,false,"d", x);
}
playerLastTyped[x]++;
GetPlayerPos(x, PlayerPos[x][0], PlayerPos[x][1], PlayerPos[x][2]);
if(PlayerPos[x][0] == PlayerPos[x][3] && PlayerPos[x][1] == PlayerPos[x][4] && PlayerPos[x][2] == PlayerPos[x][5] && playerTabbed[x] != 1)
{
if(playerLastTyped[x] < playerAFKTime[x]) playerAFKTime[x] = playerLastTyped[x];
if(playerAFK[x] != 0) playerAFKTime[x]++;
else playerAFK[x] = 1;
if(playerAFKTime[x] >= 900 && PlayerInfo[x][pAdmin] < 1337)
{
SendClientMessageEx(x, COLOR_WHITE, "You have been kicked for being AFK more than 15 minutes.");
Kick(x);
}
}
else
{
if(playerAFK[x] != 0) playerAFK[x] = 0, playerAFKTime[x] = 0;
}
PlayerPos[x][3] = PlayerPos[x][0];
PlayerPos[x][4] = PlayerPos[x][1];
PlayerPos[x][5] = PlayerPos[x][2];
}
}
// Timer Name: MoneyUpdate()
// TickRate: 1 secs.
Timer:MoneyUpdate[1000]()
{
new hour,minuite,second;
gettime(hour,minuite,second);
FixHour(hour);
hour = shifthour;
new tstring[7];
if(minuite < 10)
{
format(tstring, sizeof(tstring), "%d:0%d", hour, minuite);
}
else
{
format(tstring, sizeof(tstring), "%d:%d", hour, minuite);
}
TextDrawSetString(WristWatch, tstring);
foreach(Player, i)
{
SyncPlayerTime(i);
if(gPlayerLogged{i})
{
if(GetPlayerPing(i) > MAX_PING)
{
if(playerTabbed[i] != 1)
{
new
string[89 + MAX_PLAYER_NAME];
format(string, sizeof(string), "{AA3333}AdmWarning{FFFF00}: %s has just been kicked for %d ping (maximum: "#MAX_PING").", GetPlayerNameEx(i), GetPlayerPing(i));
ABroadCast(COLOR_YELLOW, string, 2);
SendClientMessageEx(i, COLOR_WHITE, "You have been kicked because your ping is higher than the maximum.");
Kick(i);
}
}
if(PlayerInfo[i][pTempVIP] >= 1)
{
PlayerInfo[i][pTempVIP]--;
}
if(PlayerInfo[i][pTempVIP] <= 0 && PlayerInfo[i][pBuddyInvited] == 1)
{
PlayerInfo[i][pTempVIP] = 0;
PlayerInfo[i][pBuddyInvited] = 0;
PlayerInfo[i][pDonateRank] = 0;
SendClientMessageEx(i, COLOR_LIGHTBLUE, "Your temporary VIP subscription has expired.");
SetPlayerToTeamColor(i);
}
if(PlayerInfo[i][pTriageTime] != 0)
{
PlayerInfo[i][pTriageTime]--;
}
if(PlayerInfo[i][pTicketTime] != 0)
{
PlayerInfo[i][pTicketTime]--;
}
if(PlayerInfo[i][pServiceTime] != 0)
{
PlayerInfo[i][pServiceTime]--;
}
if(GetPlayerCash(i) != GetPlayerMoney(i))
{
ResetMoneyBar(i);
UpdateMoneyBar(i,GetPVarInt(i, "Cash"));
}
if(GetPVarInt(i, "gpsonoff") == 1)
{
new zone[28];
GetPlayer2DZone(i, zone, MAX_ZONE_NAME);
TextDrawSetString(GPS[i], zone);
}
if(GetPVarInt(i, "fuelonoff") == 1)
{
if(IsPlayerInAnyVehicle(i))
{
SetProgressBarValue(FuelBar[i], VehicleFuel[GetPlayerVehicleID(i)]);
UpdateProgressBar(FuelBar[i], i);
}
else
{
DeletePVar(i, "fuelonoff");
DestroyProgressBar(FuelBar[i]);
textdrawscount--;
FuelBar[i] = INVALID_BAR_ID;
}
}
}
}
}
// Timer Name: SpecUpdate()
// TickRate: 3 secs.
Timer:SpecUpdate[3000]()
{
foreach(Player, i)
{
if(PlayerInfo[i][pAdmin] >= 2)
{
if(Spectating[i] >= 1)
{
if(Spectate[i] < 553)
{
new targetid = Spectate[ i ];
if( !IsPlayerConnected( targetid ) )
{
SendClientMessageEx( i, COLOR_WHITE, "The player you were spectating has left the server." );
GettingSpectated[Spectate[i]] = 999;
Spectating[i] = 0;
Spectate[i] = 999;
SetPVarInt(i, "SpecState", -1);
SetPVarInt(i, "SpecOff", 1 );
TogglePlayerSpectating( i, false );
SetCameraBehindPlayer(i);
}
}
if(Spectate[i] == 553)
{
TogglePlayerControllable(i, 1);
TogglePlayerSpectating(i, 0);
DeletePVar(i, "MedicBill");
SpawnPlayer( i );
Spectate[i] = 999;
Spectating[i] = 0;
}
if(Spectate[i] == 554)
{
TogglePlayerControllable(i, 1);
SetPlayerInterior(i,Unspec[i][sPint]);
PlayerInfo[i][pInt] = Unspec[i][sPint];
PlayerInfo[i][pLocal] = Unspec[i][sLocal];
SetPlayerPos(i, Unspec[i][Coords][0], Unspec[i][Coords][1], Unspec[i][Coords][2]);
Spectate[i] = 999;
}
if(Spectate[i] == 556)
{
SetPlayerToTeamColor(i);
Spectate[i] = 999;
}
if(Spectate[i] == 557)
{
Spectate[i] = 554;
}
}
}
}
}
// Timer Name: SaveAccountsUpdate()
// TickRate: 5 Minutes.
Timer:SaveAccountsUpdate[300000]()
{
new playerip[32];
foreach(Player, i)
{
PlayerInfo[i][pInt] = GetPlayerInterior(i);
PlayerInfo[i][pVW] = GetPlayerVirtualWorld(i);
PlayerInfo[i][pChar] = PlayerInfo[i][pModel];
GetPlayerIp(i, playerip, sizeof(playerip));
format(PlayerInfo[i][pIP], 32, "%s", playerip);
GetPlayerPos(i, PlayerInfo[i][pPos_x], PlayerInfo[i][pPos_y], PlayerInfo[i][pPos_z]);
GetPlayerFacingAngle(i, PlayerInfo[i][pPos_r]);
OnPlayerStatsUpdate(i);
}
SaveFamilies();
SaveFamiliesHQ();
}