GetPlayerIp

Материал из Pro-Pawn Wiki
Перейти к: навигация, поиск

Описание:

Узнаёт IP-адрес игрока.

Параметры:

(playerid, name[], len)
playerid ID игрока, IP-адрес которого требуется узнать.
name[] Массив, в котором будет записан адрес.
len Размер массива name.


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

Возвращает длину строки с IP-адресом, при этом сам адрес косвенно возвращается через параметр name.
Если игрок не подключен, функция возвращает -1 и оставляет содержимое массива name без изменений.

Info rhombus.png
Примечание
Максимальный размер IP-адреса в виде строки - 16 символов (с учётом завершающего '\0').


Bug.png
Баг SA-MP
Если размер массива name (аргумент len) меньше, чем длина строки с IP-адресом + 1 ячейка, символ конца строки '\0' записывается за пределами массива.
Второй параметр функции по ошибке назван name (в то время, как логичным было бы название ip или ip_address). Скорее всего, его забыли переименовать после того, как создали заголовок функции путём копирования заголовка от GetPlayerName (ошибка copy-paste).
Для параметра len разработчики SA-MP могли бы указать значение по умолчанию, равное размеру передаваемого массива name, чтобы у скриптеров не было необходимости каждый раз указывать размер вручную
native GetPlayerIp(playerid, name[], len=sizeof(name));
однако по неизвестной причине в SA-MP Team избегают использования оператора sizeof.


Пример использования:

public OnPlayerConnect(playerid)
{
    new name[MAX_PLAYER_NAME + 1], ip[16];
    GetPlayerName(playerid, name, sizeof(name));
    GetPlayerIp(playerid, ip, sizeof(ip));
    // Пример вывода: "Подключен игрок #10 John_Doe (127.0.0.1)"
    printf("Подключен игрок #%d %s (%s)", playerid, name, ip);
}


См. также: