SAMP/BlockIpAddress

Материал из Pawno Info Wikipedia

BlockIpAddress

Wiki added.png

Добавлено

Функция работает только начиная с версии SA-MP 0.3z R2-2 и не будет работать в предыдущих версиях!


Описание:

Блокирует IP-адрес от дальнейшего взаимодействия с сервером в течение установленного времени.


Параметры:

(ip_address[], timems)


ip_addressIP-адрес, который нужно заблокировать.
timemsсрок блокирования в миллисекундах (0 - вечно).


Возвращаемые значения:

1: если строка с IP-адресом не пустая.
0: если IP-адрес не указан.


Wiki note.png

Примечание

Игроки, пытающиеся подключиться к серверу с заблокированным IP-адресом, получат универсальное сообщение «Вы заблокированы на этом сервере».


Wiki note important.png

Важное
примечание

Игроки, которые находятся в сети по указанному IP-адресу до блокировки, через несколько секунд будут отключены по таймауту и при повторном подключении получат то же сообщение.
Заблокированные адреса не сохраняются в файл samp.ban, поэтому после перезапуска сервера все блокировки, созданные данной функцией, будут аннулированы. Тем не менее, блокировки остаются в силе после перезагрузки/смены мода без отключения процесса.
Функция не блокирует адрес 127.0.0.1. Скорее всего, это сделано чтобы предотвратить непреднамеренную блокировку NPC. Тем не менее, данный адрес можно заблокировать по маске: 127.0.0.*.


Wiki tip.png

Подсказка

Функция работает и с подсетями. Для блокирования подсетей необходимо ввести:
BlockIpAddress("6.9.*.*");
Заблокирует все IP-адреса, где первые два октета равны 6 и 9 соответственно.


Wiki bug.png

Баг 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: вызывается при попытке входящего соединения игрока к серверу.