Ban — различия между версиями
Материал из Pro-Pawn Wiki
VVWVV (обсуждение | вклад) |
|||
Строка 5: | Строка 5: | ||
{{Param | {{Param | ||
| playerid | | playerid | ||
− | | ID игрока, которого | + | | ID игрока, которого требуется заблокировать. |
}} | }} | ||
{{Returns | {{Returns | ||
− | | | + | | <code>1</code>, если до блокировки игрок был подключен, иначе <code>0</code>. |
+ | }} | ||
+ | {{NoteSAMPBug | ||
+ | | {{NoteSAMPCloseConnectionBug|Ban}} | ||
}} | }} | ||
− | |||
{{Example}} | {{Example}} | ||
<pawn> | <pawn> | ||
+ | const COLOR_RED = 0xFF604000; | ||
+ | |||
CMD:ban(playerid, params[]) | CMD:ban(playerid, params[]) | ||
{ | { | ||
− | if ( | + | new targetid; |
− | + | if (sscanf(params, "us", targetid, params)) | |
− | + | return SendClientMessage(playerid, -1, "Использование: /ban [ID игрока/часть ника] [причина]"); | |
− | return SendClientMessage(playerid, -1, | + | |
if (targetid == INVALID_PLAYER_ID) | if (targetid == INVALID_PLAYER_ID) | ||
− | return SendClientMessage(playerid, -1, | + | return SendClientMessage(playerid, -1, "Игрок не найден."); |
− | + | SetTimerEx("@_DelayedBan", 800, false, "d", playerid); | |
− | + | new string[144], pname[MAX_PLAYER_NAME + 1], tname[MAX_PLAYER_NAME + 1]; | |
− | return | + | GetPlayerName(playerid, pname, sizeof(pname)); |
+ | GetPlayerName(playerid, tname, sizeof(tname)); | ||
+ | format(string, sizeof(string), "Вы были забанены администратором %s, причина: %s", pname, params); | ||
+ | SendClientMessage(targetid, COLOR_RED, string); | ||
+ | format(string, sizeof(string), "Администратор %s забанил игрока %s, причина: %s", pname, tname, params); | ||
+ | return SendClientMessageToAll(COLOR_RED, string); | ||
} | } | ||
Строка 30: | Строка 38: | ||
return Ban(playerid); | return Ban(playerid); | ||
</pawn> | </pawn> | ||
+ | {{SeeAlso}} | ||
+ | * [[BanEx]] | ||
+ | * [[Kick]] | ||
[[Категория:Функции SA-MP]] | [[Категория:Функции SA-MP]] |
Текущая версия на 16:41, 8 августа 2018
Описание:
Закрывает соединение между сервером и клиентом (игроком) и блокирует его IP-адрес.
Параметры:
(playerid) |
playerid | ID игрока, которого требуется заблокировать. |
Возвращаемое значение:
1
, если до блокировки игрок был подключен, иначе 0
.
Баг SA-MP |
Если незадолго до закрытия соединения с игроком были совершены какие-либо действия (например, отправка сообщений с помощью SendClientMessage() ), эффект от этих действий не будет виден на стороне игрока. Для обхода этой проблемы можно создать таймер с задержкой в 200-1000 миллисекунд и из него вызывать функцию Ban() , либо использовать уже готовое решение, например, dc_kickfix.inc или u_kickfix.inc.
|
Пример использования:
const COLOR_RED = 0xFF604000;
CMD:ban(playerid, params[])
{
new targetid;
if (sscanf(params, "us", targetid, params))
return SendClientMessage(playerid, -1, "Использование: /ban [ID игрока/часть ника] [причина]");
if (targetid == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, "Игрок не найден.");
SetTimerEx("@_DelayedBan", 800, false, "d", playerid);
new string[144], pname[MAX_PLAYER_NAME + 1], tname[MAX_PLAYER_NAME + 1];
GetPlayerName(playerid, pname, sizeof(pname));
GetPlayerName(playerid, tname, sizeof(tname));
format(string, sizeof(string), "Вы были забанены администратором %s, причина: %s", pname, params);
SendClientMessage(targetid, COLOR_RED, string);
format(string, sizeof(string), "Администратор %s забанил игрока %s, причина: %s", pname, tname, params);
return SendClientMessageToAll(COLOR_RED, string);
}
@_DelayedBan(playerid);
@_DelayedBan(playerid)
return Ban(playerid);
CMD:ban(playerid, params[])
{
new targetid;
if (sscanf(params, "us", targetid, params))
return SendClientMessage(playerid, -1, "Использование: /ban [ID игрока/часть ника] [причина]");
if (targetid == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, "Игрок не найден.");
SetTimerEx("@_DelayedBan", 800, false, "d", playerid);
new string[144], pname[MAX_PLAYER_NAME + 1], tname[MAX_PLAYER_NAME + 1];
GetPlayerName(playerid, pname, sizeof(pname));
GetPlayerName(playerid, tname, sizeof(tname));
format(string, sizeof(string), "Вы были забанены администратором %s, причина: %s", pname, params);
SendClientMessage(targetid, COLOR_RED, string);
format(string, sizeof(string), "Администратор %s забанил игрока %s, причина: %s", pname, tname, params);
return SendClientMessageToAll(COLOR_RED, string);
}
@_DelayedBan(playerid);
@_DelayedBan(playerid)
return Ban(playerid);
См. также: