Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Функция GetPlayerID

Troels_Segor

Новичок
Зачем это:
Эта функция определяет ID игрока по его имени.

Метод работы функции:
На этапе компиляции будет определен один из наиболее подходящих для вас метод поиска игрока. Конечно же, самым оптимальным вариантом остается использование sscanf(), далее по адекватности в скорости идет использование foreach(), далее уже GetPlayerPoolSize(), ну а последним вариантом остается использование константы MAX_PLAYERS.
Если таковой игрок на сервере в данный момент присутствует - функция вернет его ID, а если же такого игрока нет, то значение константы INVALID_PLAYER_ID.

Использование:

PHP:
// Допустим, что на сервере есть игрок OX.

new id;
if ((id = GetPlayerID("OX")) != INVALID_PLAYER_ID)
{
    SendClientMessage(id, -1, "Привет, OX))");    
}
Функция:

PHP:
/**
 * GetPlayerID - получить ID игрока по его имени.
 * @name[] - имя игрока.
 * @returns - ID игрока или INVALID_PLAYER_ID в случаи его необнаружения.
 */

stock
	GetPlayerID(const name[])
{ // by (Troels_Segor) Anton Styazhkin //
	#if defined sscanf
		new id;
		sscanf(name, "r", id);
		return id;
	#else
	    new buff[MAX_PLAYER_NAME];
		#if defined foreach
			foreach (new i:Player)
			{
		#elseif defined GetPlayerPoolSize
			for (new i = GetPlayerPoolSize(); i != -1; i--)
			{
				if (IsPlayerConnected(i) == 0)
					continue;
		#else
			for (new i = 0; i < MAX_PLAYERS; i++)
			{
				if (IsPlayerConnecyed(i) == 0)
					continue;
		#endif
				GetPlayerName(i, buff, sizeof buff);
				if (strcmp(buff, name, false) == 0)
					return i;
			}
			return INVALID_PLAYER_ID;
	#endif
}
Вот и все.

Автор Troels_Segor.
 
Сверху Снизу