SAMP/BlockIpAddress
Материал из Pawno Info Wikipedia
BlockIpAddress
Добавлено |
Функция работает только начиная с версии SA-MP 0.3z R2-2 и не будет работать в предыдущих версиях! |
Описание:
Блокирует IP-адрес от дальнейшего взаимодействия с сервером в течение установленного времени.
Параметры:
(ip_address[], timems)
ip_address | IP-адрес, который нужно заблокировать. |
timems | срок блокирования в миллисекундах (0 - вечно). |
Возвращаемые значения:
1: если строка с IP-адресом не пустая.
0: если IP-адрес не указан.
0: если IP-адрес не указан.
Примечание |
Игроки, пытающиеся подключиться к серверу с заблокированным IP-адресом, получат универсальное сообщение «Вы заблокированы на этом сервере». |
Важное |
Игроки, которые находятся в сети по указанному IP-адресу до блокировки, через несколько секунд будут отключены по таймауту и при повторном подключении получат то же сообщение. Заблокированные адреса не сохраняются в файл samp.ban, поэтому после перезапуска сервера все блокировки, созданные данной функцией, будут аннулированы. Тем не менее, блокировки остаются в силе после перезагрузки/смены мода без отключения процесса. Функция не блокирует адрес 127.0.0.1. Скорее всего, это сделано чтобы предотвратить непреднамеренную блокировку NPC. Тем не менее, данный адрес можно заблокировать по маске: 127.0.0.*. |
Подсказка |
Функция работает и с подсетями. Для блокирования подсетей необходимо ввести:BlockIpAddress("6.9.*.*");
|
Баг SA-MP |
Функция не проверяет должным образом содержимое строки ip_address и возвращает 0 только если строка пустая. Если передать функции неправильный IP-адрес, она всё равно вернёт 1. Содержимое массива ip_address не изменяется во время работы функции, однако сам массив объявлен без атрибута const: native BlockIpAddress(ip_address[], timems);
в то время, как правильный (const-корректный) заголовок функции должен выглядеть так: native BlockIpAddress(const ip_address[], timems);
Если аргумент-массив объявлен без const, компилятор считает, что функция записывает в него данные, и потому не позволяет передавать в функцию неизменяемые массивы, выдавая ошибку несоответствия типов. static const address[] = "127.0.0.1";
BlockIpAddress(address, 0); // error 035: argument type mismatch (argument 1)
|
Пример использования:
public OnRconLoginAttempt(ip[], password[], success)
{
if(!success) // неверный пароль
{
BlockIpAddress(ip, 60 * 1000); // заблокирует IP-адрес на минуту
}
return 1;
}
Связанные функции
Следующие функции также могут быть полезны, поскольку они так или иначе связаны с рассматриваемой функцией.
Ban: банит игрока.
BanEx: банит игрока с причиной.
UnBlockIpAddress: разблокирует IP-адрес.
Связанные обратные вызовы
Следующие обратные вызовы также могут быть полезны, поскольку они так или иначе связаны с рассматриваемым обратным вызовом.
OnIncomingConnection: вызывается при попытке входящего соединения игрока к серверу.