Просмотр полной версии : [Вопрос] Получение ника
PawnoNoob
04.06.2017, 00:19
Приветствую. Есть ли какая-нибудь функция для получения ника игрока, находящегося на сервере? (При этом подключённого к серверу и авторизованного)
$continue$
04.06.2017, 00:49
GetPlayerName (http://pro-pawn.ru/showthread.php?12778) + проверка, что авторизован + проверить, что GetPlayerName не вернуло 0.
PawnoNoob
04.06.2017, 01:06
GetPlayerName (http://pro-pawn.ru/showthread.php?12778) + проверка, что авторизован + проверить, что GetPlayerName не вернуло 0.
Хм, а как это будет выглядеть? Просто мне необходима эта функция для проверки игрока на онлайн (например, для выдачи каких-то определённых прав). Если игрок в игре, то оповестить его о том, что ему выданы определённые привилегии, ну а если оффлайн, то просто внести изменения в базу данных.
stock GetPlayerID(const input_name[])
{
new player_name[MAX_PLAYER_NAME];
for(new i; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))// Замени на проверку авторизации
continue;
GetPlayerName(i, player_name, MAX_PLAYER_NAME);
if(!strcmp(player_name, input_name))
return i;
}
return INVALID_PLAYER_ID;
}
Вернёт ID игрока, если он найден и INVALID_PLAYER_ID, если не найден
$continue$
04.06.2017, 01:14
А когда то, ты мне заливал, что sscanf лучше для таких целей...
На что я ответил, что он не у всех подключен. И да не лучше ли будет заменить проверку с коннектом на:
if(0 == GetPlayerName(i, player_name, MAX_PLAYER_NAME)) continue;
stock GetPlayerID(const input_name[])
{
new player_name[MAX_PLAYER_NAME];
for(new i; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))// Замени на проверку авторизации
continue;
GetPlayerName(i, player_name, MAX_PLAYER_NAME);
if(!strcmp(player_name, input_name))
return i;
}
return INVALID_PLAYER_ID;
}
Вернёт ID игрока, если он найден и INVALID_PLAYER_ID, если не найден
ТС: в следующий раз задавайте вопрос корректно: "Нужно найти игрока с определенным ником на сервере". Так бы я сразу понял суть вопроса.
А когда то, ты мне заливал, что sscanf лучше для таких целей...
На что я ответил, что он не у всех подключен. И да не лучше ли будет заменить проверку с коннектом на:
Использовать в командах - да, лучше (я про спецификаторы "u" и "r").
Но если тебе нужно найти конкретного игрока - нет, ибо он ищет по части ника и для него "DeimoSs" и "DeimoS" будут считаться одинаковыми, если ты вобьёшь в поиск "DeimoS". Если тебе просто по части ника нужно найти игрока - определённо sscanf, ибо глупо писать дополнительную функцию, когда уже есть функция с тем же функционалом
И да не лучше ли будет заменить проверку с коннектом на:
if(0 == GetPlayerName(i, player_name, MAX_PLAYER_NAME)) continue;
У автора ведь есть система авторизации, посему лучше именно по ней и фильтровать. А IsPlayerConnected там для вида стоит (дабы авто понял где должна стоять его проверка)
$continue$
04.06.2017, 01:36
Я как то писал пост с такой же функцией. Только не помню, где это было. Может и на PI. Но, суть в том, что ты начал там использовать sscanf. Зная, то что "u" - ищет часть ника, а не полный ник.
Использовать в командах - да, лучше (я про спецификаторы "u" и "r").
Но если тебе нужно найти конкретного игрока - нет, ибо он ищет по части ника и для него "DeimoSs" и "DeimoS" будут считаться одинаковыми, если ты вобьёшь в поиск "DeimoS". Если тебе просто по части ника нужно найти игрока - определённо sscanf, ибо глупо писать дополнительную функцию, когда уже есть функция с тем же функционалом
Ты не до конца дочитал: "подключённого к серверу и авторизованного"
Хотя не представляю себе, как игрок может быть не подключен к серверу и авторизован.
У автора ведь есть система авторизации, посему лучше именно по ней и фильтровать. А IsPlayerConnected там для вида стоит (дабы авто понял где должна стоять его проверка)
Я как то писал пост с такой же функцией. Только не помню, где это было. Может и на PI. Но, суть в том, что ты начал там использовать sscanf. Зная, то что "u" - ищет часть ника, а не полный ник.
Ну, видимо, я тогда заблуждался на этот счёт, не? Хотя я такого не помню, если честно. Но я, тип, никогда не говорил, что я знаю всё и знаю лишь истину.
Ты не до конца дочитал: "подключённого к серверу и авторизованного"
Так а разве неподключённый игрок может быть авторизированным?
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot