Sockety nie do konca dzialaja tak jak uwazasz.
Pierwszy podlaczony klient uzywa socket 0, drugi socket 1, trzeci socket 2.
Kiedy klient #2 sie rozlacza, socket 1 zostaje zwolniony.
Kiedy ktos nowy sie polaczy(klient #4), nie dostanie socketu 3 tylko wolny socket 1.
Aby poprawnie listowac ID uzytkownikow zapisuj do listy socket pobrany w evencie networking.
Wyglada to mniej-wiecej tak:
GML (quotNetworkingquot)
switch(ds_map_find_value(async_load,"type")) //Sprawdzenie rodzaju pakietu jaki przyszedl
/*
Istniejace rodzaje sa w dokumentacji i nazywaja sie:
network_type_disconnect ,
network_type_connect ,
network_type_data
*/
{
case network_type_connect: // To sie bedzie dziac gdy nowy uzytkownik sie laczy
ds_list_add(UserList,ds_map_find_value(async_load,"socket")); // Dodanie do listy uzytkownikow socketu uzywanego przez tego uzytkownika.
//Bierze sie to stad ze w ds_map'ie ze zmiennej async_load jest klucz "socket" ktory trzyma ID socketu uzywanego przez swiezo podlaczonego uzytkownika
// < Reszta rzeczy ktore sie dzieja >
break;
}
Edit: Socket jest rowniez podawany przy network_type_disconnect i mozesz go uzyc do usuniecia odpowiednich danych z listy uzytkownikow.