PHP код:
stock FindPlayerInServer(buffer[], bool:ignorecase = false)
Собственно, два параметра. В один строка, в которой находится ник или ID, а во втором указывается то, стоит ли учитывать регистр при поиске ника или нет (если не указывать, регистр будет учитываться)
PHP код:
if((buffer[0] >= 48 && buffer[0] <= 57 && ((buffer[1] >= 48 && buffer[1] <= 57) || buffer[1] == EOS) &&
((buffer[2] >= 48 && buffer[2] <= 57) || buffer[2] == EOS)) && buffer[3] == EOS) return strval(buffer);
Собственно логика сей "страшной" проверки такова: в SA-MP максимальный ID игрока - 999 (1000 игроков. Первый ID - 0 => последний - 999), следовательно, если в первой ячейке записана цифра, во второй и третьей так же цифра или нуль-символ, а в четвёртой - нуль символ, значит в массиве указан именно ID и его смело можно возвращать.
Иначе
PHP код:
if(strlen(buffer) > MAX_PLAYER_NAME) return INVALID_PLAYER_ID;
если в функцию передана строка больше MAX_PLAYER_NAME, значит указан явно не ник и смело можно возвращать невалидный ID (то бишь, что игрок не найден)
PHP код:
for(new i = GetPlayerPoolSize(); i != -1; i--)
Собстно, запускаем цикл на всех игроков, в котором извлекаем ник каждого игрока и записываем с существующим (GetPlayerPoolSize - функция, добавленная в 0.3.7, которая вернёт ID последнего игрока). Так же там указаны другие вариации циклов, если этот тебя не устроит