Удобная АФК система
Ко всем new:
Code
new plafk[MAX_PLAYERS];
В паблик OnPlayerSpawn:
В паблик OnPlayerConnect:
Code
plafk[playerid] = -2;
В паблик OnPlayerDeath:
Code
plafk[playerid] = -2;
В паблик OnPlayerUpdate:
При выходе из АФК игроку будет писать его время АФК
Code
if(plafk[playerid] > -2)
{
if(plafk[playerid] > 0)
{
new string[128];
format(string,sizeof(string),"Время вашего АФК: %s",ConvertSeconds(plafk[playerid]));
SendClientMessage(playerid, COLOR_ORANGE, string);
SetPlayerChatBubble(playerid, "АФК: завершено", COLOR_WHITE, 10.0, 1);
}
plafk[playerid] = 0;
}
В паблик OnGameModeInit:
Code
SetTimer("AFKSystem", 1000, 1);
В конец мода:
Code
forward AFKSystem();
public AFKSystem()
{
for(new playerid;playerid < MAX_PLAYERS;playerid++)
{
if(IsPlayerConnected(playerid))
{
if(plafk[playerid] == 0) plafk[playerid] -= 1;
else if(plafk[playerid] == -1)
{
plafk[playerid] = 1;
new string[128];
format(string, sizeof(string), "АФК: %s", ConvertSeconds(plafk[playerid]));
SetPlayerChatBubble(playerid, string, COLOR_WHITE, 10.0, 70000000);
}
else if(plafk[playerid] > 0)
{
new string[255];
plafk[playerid] += 1;
format(string, sizeof(string), "АФК: %s", ConvertSeconds(plafk[playerid]));
SetPlayerChatBubble(playerid, string, COLOR_WHITE, 10.0, 70000000);
}
}
}
}
Тоже в конец мода, отвечает за время:
Code
stock ConvertSeconds(time)
{
new string[128];
if(time < 60) format(string, sizeof(string), "%d секунд", time);
else if(time == 60) string = "1 минуту";
else if(time > 60 && time < 3600)
{
new Float: minutes;
new seconds;
minutes = time / 60;
seconds = time % 60;
format(string, sizeof(string), "%.0f минут и %d секунд", minutes, seconds);
}
else if(time == 3600) string = "1 час";
else if(time > 3600)
{
new Float: hours;
new minutes_int;
new Float: minutes;
new seconds;
hours = time / 3600;
minutes_int = time % 3600;
minutes = minutes_int / 60;
seconds = minutes_int % 60;
format(string, sizeof(string), "%.0f:%.0f:%d", hours, minutes, seconds);
}
return string;
}
Скриншот: http://s55.radikal.ru/i147/1208/ac/4f3437ac3cf7.png