Jestem solidnie wcięty bo wracam z rozmowy kwalifikacyjnej, ale chyba widzę problem. Rozważmy te linijki:
GML
ds_list_add( socketlist, 1 ); //Przyjmujemy że sock=1, więc będę pisał 1
idd ++; //Rozumiem że było 0 więc teraz jest 1
ds_map_add( Clients, 1, 1 ); //wiemy ile ma idd więc będę wpisywał
//Wszystko dodało spoko
inst = ds_map_find_value(Clients, 1 ); //Dla podanego klucza (1) szuka wartości. Zwraca ją: inst=1
index = ds_list_find_index( socketlist, 1 ); //w liście szuka indexu przypisanego do danej wartości (1), ale wartość 1 jest dodana na pierwszym miejscu czyli ma index=0!
ds_map_delete(Clients, 1 ); //Usuwamy z mapy
ds_list_delete(socketlist,0); //I usuwamy źle!</span>
Problem masz z listami... chyba