Замутил тестик всех способов создания циклов «MAX_PLAYERS» с использованием OnPlayerConnect и OnPlayerDisconnect(ведь тики на них тоже тратятся).
В тесте ID’ы подключающихся различны на 10, поэтому способы, которые запоминают все имеющиеся ID’ы будут лидировать.
Код тут: http://pastebin.com/JUCRZDDY
Результаты:
IsPlayerConnected: 509
GetMaxPlayers: 503
GetPlayerLastID: 591 (мною модифицированный способ от Alex009)
PLID: 187 (предложенный вариант)
foreach: 246 (foreach от Y_Less’a)
foreach_step: 647 (foreach который опубликовал степашка)
Дальше я решил количество подключений и отключений привести к более реальному количеству.
Код тут: http://pastebin.com/VP6CR7fv
Результаты:
IsPlayerConnected: 888
GetMaxPlayers: 304
GetPlayerLastID: 2169 (мною модифицированный способ от Alex009)
PLID: 145 (предложенный вариант)
foreach: 123 (foreach от Y_Less’a)
foreach_step: 134 (foreach который опубликовал степашка)
forscan: 168 (forscan от Jester(более удобный PLID))
Тут результаты куда более приятнее. Забавно, что способ с GetPlayerLastID стал работать в несколько раз медленнее.
Собственно я делаю выбор за foreach Y_Less’а — быстро, удобно, функционально.