Лимит пинга / wS_Ping_Limit 1.0.0

Плагины и дополнения / Plugins and add-ons

Модераторы: Dame-danners, Longipongeoos

Аватар пользователя
Longipongeoos
Сообщений: 191
Зарегистрирован: 12 апр 2017, 16:50

Лимит пинга / wS_Ping_Limit 1.0.0

Сообщение Longipongeoos » 11 ноя 2021, 16:14

Лимит пинга
Информация
Простой, плагин с лимитом пинга. Если пинг игрока достигает лимита - его кикает.
Настройки:

Код: Выбрать все

wS_PingLimit  150 - лимит пинга при котором игрока кикнет

Работает с NoSteam
Установка:
Раскидать файлы плагина sourcemod по папкам
Исходный код

Код: Выбрать все

#include <sourcemod>

new wS_PingLimit = 99, Handle:wS_Timer[MAXPLAYERS+1];

public Plugin:myinfo =
{
   name = "wS_Ping_Limit",
   author = "wS / World-Source.Ru",
   description = "Ограничение пинга игроков",
   version = "1.0",
   url = "http://world-source.ru/"
};

public OnPluginStart()
{
   HookConVarChange(CreateConVar("wS_PingLimit", "150"), wS_PingLimit_Changed);
   HookEvent("player_spawn", wS_Player_Spawn);
   AutoExecConfig(true, "ws.pinglimit");
}

public wS_PingLimit_Changed(Handle:convar, const String:oldValue[], const String:newValue[])
{
   wS_PingLimit = StringToInt(newValue);
}

public wS_Player_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
   wS_TestPing(GetClientOfUserId(GetEventInt(event, "userid")));
}

wS_TestPing(wS_i)
{
   if (IsFakeClient(wS_i) || wS_Timer[wS_i] != INVALID_HANDLE || GetUserFlagBits(wS_i) & ADMFLAG_ROOT)
   {
      return;
   }
   if (RoundToZero(GetClientAvgLatency(wS_i, NetFlow_Outgoing) * 1024) > wS_PingLimit)
   {
      wS_Timer[wS_i] = CreateTimer(20.0, wS_TestPingAgain, wS_i);
   }
}

public Action:wS_TestPingAgain(Handle:timer, any:wS_i)
{
   wS_Timer[wS_i] = INVALID_HANDLE;
   decl wS_ping;
   if ((wS_ping = RoundToZero(GetClientAvgLatency(wS_i, NetFlow_Outgoing) * 1024)) > wS_PingLimit)
   {
      KickClient(wS_i, "[ wS_Ping_Limit ] Вы отключены из-за высокого пинга (%d). Лимит: %d", wS_ping, wS_PingLimit);
   }
}

public OnClientDisconnect(wS_i)
{
   if (wS_Timer[wS_i] != INVALID_HANDLE)
   {
      KillTimer(wS_Timer[wS_i]);
      wS_Timer[wS_i] = INVALID_HANDLE;
   }
}
Вложения
wspinglimit 1.0.zip
(5.81 KiB) Загружено 76 раз

Вернуться в «SourceMod»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 2 гостей