Well, I tried to solve by myself:
PHP код:
SearchUser(text[], playerid = INVALID_PLAYER_ID)
{
new pos = 0;
while (text[pos] < 0x21) // Strip out leading spaces
{
if(text[pos] == 0) return INVALID_PLAYER_ID; // No passed text
pos++;
}
new userid = INVALID_PLAYER_ID;
new string[128], playername[MAX_PLAYER_NAME];
new count = 0;
if(IsNumeric(text[pos]))
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
if(strval(text[pos]) == i)
userid = i;
else
{
if(playerid != INVALID_PLAYER_ID)
SendClientMessage(playerid, COLOR_WHITE, "Error: Player not connected.");
userid = INVALID_PLAYER_ID;
}
}
}
else
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
GetPlayerName(i, playername, sizeof(playername));
if(IsPlayerConnected(i))
if(strfind(playername, text[pos], true) != -1)
count++;
}
if(count == 0)
{
SendClientMessage(playerid, COLOR_WHITE, "Error: Player not connected.");
userid = INVALID_PLAYER_ID;
}
else
{
if(count > 7)
{
SendClientMessage(playerid, COLOR_WHITE, "Error: Too many players matched your searched.");
userid = INVALID_PLAYER_ID;
}
else if(count == 1)
{
for(new j = 0; j < MAX_PLAYERS; j++)
{
if(IsPlayerConnected(j))
{
GetPlayerName(j, playername, sizeof(playername));
if(strfind(playername, text[pos], true) != -1)
userid = j;
}
}
}
else if(count <= 7)
{
for(new j = 0; j < MAX_PLAYERS; j++)
{
if(IsPlayerConnected(j))
{
GetPlayerName(j, playername, sizeof(playername));
if(strfind(playername, text[pos], true) != -1)
{
format(string,sizeof(string),"%s (%d)", playername, j);
SendClientMessage(playerid, COLOR_WHITE, string);
userid = INVALID_PLAYER_ID;
continue;
}
}
}
SendClientMessage(playerid, COLOR_WHITE, "Error: More than one player found. Choose one of the IDs above.");
}
}
}
return userid;
}
The problem now is that playerid (the one who made the search) won't recieve any message if there were found more than one players or if the player who was searching is not connected ("Error: Player not connected."). Any ideas?