Сообщение от
DeimoS
Там много ошибок в коде (playerid, например, в GetPlayerName)
Как-то так:
PHP код:
CMD:id(playerid, params[])
{
if(!(1 <= strlen(params) <= MAX_PLAYER_NAME-4))
{
return SendClientMessage(playerid, -1, "Используйте: /id [часть имени игрока]");
}
SendClientMessage(playerid, -1, "Результаты поиска:");
new message[12+11+MAX_PLAYER_NAME];
bool:isfound = false;
for(new i; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, message, MAX_PLAYER_NAME))
{
if(strfind(message, params, true) != -1)
{
isfound = true;
format(message, sizeof(message), "ID: %d | Имя: %s", i, message);
SendClientMessage(playerid, -1, message);
}
}
}
if(isfound == false)
{
SendClientMessage(playerid, -1, "Поиск не дал результатов!");
}
return 1;
}
В этом твоем варианте не возможен поиск по id игрока, а только по части имени, я не много доделал:
Код:
CMD:id(playerid, params[])
{
if(isnull(params))
return SCM(playerid,-1,#Hint"Введите: /id [name / id игрока]");
new targetid = strval(params),
message[13+3+MAX_PLAYER_NAME],
bool:isfound = false;
if(IsNumeric(params) && IsPlayerConnected(strval(params))) {
SCM(playerid,COLOR_BLUE,"Результаты поиска:");
format(message,sizeof(message),"ID: %d | Name: %s",targetid,Name(targetid));
return SCM(playerid,-1,message);
}
else if(!IsPlayerConnected(strval(params)))
return SCM(playerid,-1,#Error"Поиск не дал результатов.");
if((3 <= strlen(params) <= MAX_PLAYER_NAME-4)) {
foreach(new i: Player)
{
if(!IsPlayerConnected(i)) continue;
if(GetPlayerName(i,message,MAX_PLAYER_NAME)) {
if(strfind(message,params,true) != -1) {
isfound = true;
SCM(playerid,COLOR_BLUE,"Результаты поиска:");
format(message,sizeof(message),"ID: %d | Name: %s",i,message);
SCM(playerid,-1,message);
}
}
}
if(isfound == false) SCM(playerid,-1,#Error"Поиск не дал результатов.");
}
else if(!(3 <= strlen(params) <= MAX_PLAYER_NAME-4))
return SCM(playerid,-1,#Error"Минимальное кол-во символом - 3.");
return true;
}
P.S Видок правда не очень, но работает=)