#Flesh
Умник
Данная система кикает игрока если его PacketLoss > 1 (вы можете настроить сами)
Начнем.
К #define добавляем
Ко всем forward's добавим
В OnGameModeInit добавим таймер
Теперь в конец мода вставим паблик CheckStats
И stock функции GetPlayerPacketLoss
Начнем.
К #define добавляем
Код:
#define MAX_PL 1.0 /* Максимальное значение, меняйте под себя */
#define COLOR_LAGGER 0x75F0ACAA /* Цвет который будет использоваться */
Код:
forward CheckStats();
Код:
SetTimer("CheckStats", 1000, true);
Код:
public CheckStats()
{
for (new i = 0; i != MAX_PLAYERS; ++ i)
{
if (IsPlayerConnected(i))
{
if(GetPlayerPacketLoss(i) > MAX_PL)
{
new string[257];
format(string,sizeof(string),"[WARNING]: %s был отсоединен от сервера. Причина: High Packet Loss",GetName(i));
ABroadCast(COLOR_LIGHTRED,string,1);
ShowPlayerDialog(i,0,DIALOG_STYLE_MSGBOX,"Анти-Лаггер","{FFFFFF}- Вы были кикнуты из-за большого процента потери пакетов\n\t{ff0000}Возможные причины:{ffffff}\n\t1. Маленькая скорость интернет-соединения.\n\t2. Ошибка на игровом хостинге/DDoS аттака на сервер\n\t3. 'Грязная' версия GTA:SA\n\t{2E9E1F}Решение проблемы:{ffffff}\n\t1. Перезагрузить роутер/ожидать когда связь наладиться\n\t2. Ожидать новостей в группе VK\n\t3. Переустановить GTA:SA","X","");
Kick(i);
}
}
}
return 1;
}
Код:
forward Float:GetPlayerPacketLoss(playerid);
stock Float:GetPlayerPacketLoss(playerid) {
new stats[401], stringstats[70];
GetPlayerNetworkStats(playerid, stats, sizeof(stats));
new len = strfind(stats, "Packetloss: ");
new Float:packetloss = 0.0;
if(len != -1) {
strmid(stringstats, stats, len, strlen(stats));
new len2 = strfind(stringstats, "%");
if(len != -1) {
strdel(stats, 0, strlen(stats));
strmid(stats, stringstats, len2-3, len2);
packetloss = floatstr(stats);
}
}
return packetloss;
}
