Am 'bugfreiesten' ging es bei mir folgendermaßen immer.
Beim Connecten erstellst du für den Spieler das Label, also bspw.
variablexyz[playerid] = Create3DTextLabel([..]);
und hängst es anschließend an den Spieler:
Attach3DTextLabelToPlayer([..]);
Beim Create3DTextLabel fügst du in die Text-Zeile ein Leerzeichen. Sprich, eigentlich wird ja immer ein Text angezeigt, du fügst da einfach nur ein Leerzeichen hin.
Beim Disconnecten musst du den 3DText auch wieder löschen. Solltest du hoffentlich wissen, wie.
Sobald du den 3DText nun verwenden willst, musst du in die Funktion gehen, und den 3DText nur Updaten. Das war's.
Dann kannst du sobald die Wanteds alle weg sind zB einfach wieder den 3DText Updaten, und dort wie beim Createn ein 'Leerzeichen' reinhängen.
Dann muss nicht alles Created, Attached, Geupdated, und gelöscht werden, sondern Created, Attached, beliebig oft geupdated und am Disconnect gelöscht werden.
Sollte man verstehen. 
Fragen? Frag einfach. 