Сообщение от
Kazoox
Увы, чтобы получить ответ от него на какой-либо вопрос нужно прождать 3-4 дня. Могу спросить, если вы не спешите.
Достаточно знать принципы работы foreach, дабы понять, что он несёт полную чушь.
Новый ID игрока записывается в итератор "Player" только при подключении игрока к серверу и удаляется оттуда так же только при отключении. Весь цикл построен на принципе смещения всех ID к нулевой ячейке, то бишь:
На сервере играет 5 человек, занимая ID следующим образом:
PHP код:
ID 0 - свободно
ID 1 - свободно
ID 2 - занят
ID 3 - свободно
ID 4 - занят
ID 5 - занят
ID 6 - свободно
ID 7 - занят
ID 8 - свободно
ID 9 - свободно
ID 10 - занят
В foreach создаётся массив на MAX_PLAYERS ячеек, в который и записываются ID, которые уже заняты. Но записывается не так, что нулевая ячейка свободна, первая занята, вторая свободна, третья и четвёртая заняты и т.п., а записываются именно по порядку:
PHP код:
Ячейка 0 - ID 2
Ячейка 1 - ID 4
Ячейка 2 - ID 5
Ячейка 3 - ID 7
Ячейка 4 - ID 10
И когда один из игроков выходит (например, ID 5), цикл прогоняет все ячейки массива с 0 по 4 и перезаписывает данные так, чтоб получилось следующее:
PHP код:
Ячейка 0 - ID 2
Ячейка 1 - ID 4
Ячейка 2 - ID 7
Ячейка 3 - ID 10
Так же и в случае, когда на сервер подключается новый игрок: узнаём его ID и записываем его в ту ячейку, где он должен находится. Например, было так:
PHP код:
Ячейка 0 - ID 0
Ячейка 1 - ID 1
Ячейка 2 - ID 2
Ячейка 3 - ID 3
Ячейка 4 - ID 6
И подключился новый игрок (соответственно, он будет с ID 4). Инклюд запустит цикл на 5 итераций, чтоб проверить каждую ячейку массива, и дойдя до 3-ей ячейки, "увидит", что это максимально близкий ID к ID подключившегося игрока, поэтому запишет новый ID в последующую ячейку, сместив все значения (в данном случае это ID 6 в ячейке 4) на одну ячейку вперёд. Получится следующее:
PHP код:
Ячейка 0 - ID 0
Ячейка 1 - ID 1
Ячейка 2 - ID 2
Ячейка 3 - ID 3
Ячейка 4 - ID 4
Ячейка 5 - ID 6
И уже когда ты объявляешь цикл, ты, по сути, пробегаешь по этому массиву, смотря записанные в него значения. И тут чисто физически не может получится выход за пределы массива. Как бы ты не старался.
Хотя всё же спроси у него. Но только не упоминай этот разговор, а скажи, что просто хочешь узнать для себя