Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Anti-Lagger или что-то похожее

Статус
В этой теме нельзя размещать новые ответы.

#Flesh

Умник
Данная система кикает игрока если его PacketLoss > 1 (вы можете настроить сами)
Начнем.
К #define добавляем
Код:
#define MAX_PL   1.0  /* Максимальное значение, меняйте под себя */

#define     COLOR_LAGGER        0x75F0ACAA /* Цвет который будет использоваться */
Ко всем forward's добавим
Код:
forward CheckStats();
В OnGameModeInit добавим таймер
Код:
SetTimer("CheckStats", 1000, true);
Теперь в конец мода вставим паблик CheckStats
Код:
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;
}
И stock функции GetPlayerPacketLoss
Код:
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;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу