BanEx
Материал из Pro-Pawn Wiki
Версия от 01:30, 8 августа 2018; VVWVV (обсуждение | вклад) (Новая страница: «{{Description | Закрывает соединение между сервером и клиентом (игроком) и блокирует его IP-адре…»)
Описание:
Закрывает соединение между сервером и клиентом (игроком) и блокирует его IP-адрес. Отличие от Ban - возможность указать причину блокировки.
Параметры:
(playerid, reason[]) |
playerid | ID игрока, которого нужно заблокировать. |
reason[] | Причина блокировки. |
Возвращаемое значение:
Всегда возвращает
1
.
Если незадолго до закрытия соединения с игроком были совершены какие-либо действия (например, отправка сообщений с помощью SendClientMessage()
), эффект от этих действий не будет виден на стороне игрока. Для обхода этой проблемы можно создать таймер с задержкой в 200-1000 миллисекунд и из него вызывать функцию BanEx()
, либо использовать уже готовое решение, например, dc_kickfix.inc или u_kickfix.inc.
Пример использования:
CMD:banex(playerid, params[])
{
if (0 == IsPlayerAdmin(playerid))
return SendClientMessage(playerid, -1, !"Вы не администратор сервера!");
extract params -> new player:targetid, string:reason[128]; else // sscanf2
return SendClientMessage(playerid, -1, !"Использование: /banex [ID игрока/часть ника] [причина]");
if (targetid == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, !"Игрок не найден.");
SendClientMessage(targetid, -1, !"Вы были заблокированы администратором. Причина:");
SendClientMessage(targetid, -1, reason);
SetTimerEx(!"@_DelayedBanEx", 800, false, !"ds", playerid, reason);
return SendClientMessage(playerid, -1, !"Игрок был заблокирован.");
}
@_DelayedBanEx(playerid, reason[]);
@_DelayedBanEx(playerid, reason[])
return BanEx(playerid, reason);
{
if (0 == IsPlayerAdmin(playerid))
return SendClientMessage(playerid, -1, !"Вы не администратор сервера!");
extract params -> new player:targetid, string:reason[128]; else // sscanf2
return SendClientMessage(playerid, -1, !"Использование: /banex [ID игрока/часть ника] [причина]");
if (targetid == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, !"Игрок не найден.");
SendClientMessage(targetid, -1, !"Вы были заблокированы администратором. Причина:");
SendClientMessage(targetid, -1, reason);
SetTimerEx(!"@_DelayedBanEx", 800, false, !"ds", playerid, reason);
return SendClientMessage(playerid, -1, !"Игрок был заблокирован.");
}
@_DelayedBanEx(playerid, reason[]);
@_DelayedBanEx(playerid, reason[])
return BanEx(playerid, reason);