Not sure If this is in the right place to post this, but basically some players completely lack a PlayerGui when they join the game, meaning they don’t get any of the menus and can’t do anything in the game at all.
Do you have any code that manipulates players? Look for that, that’s probably what’s causing the issue. If you’ve checked for PlayerGui code and you can’t find anything, start a test server on a blank baseplate and see if the issue persists. If you’re able to accurately reproduce the issue, file a bug report containing steps you took.
It looks like there is some kind of script that sometimes removes the PlayerGui. I could also see that the PlayerScripts are missing too.
The guess is that there is a script inside StarterPlayerScripts that deletes the parent of the script after some time. Otherwise it’s in ReplicatedStorage or StarterGui.
This depends on if you are viewing through server or through client. Viewing through client means anywhere a LocalScript can do. Otherwise you have some strange script that removes things upon the signal of PlayerAdded.
How To Find It
You can find all scripts by simply typing “Script” inside the explorer’s search bar. This feature has aided me in countering bad scripts found inside games where it shouldn’t be.
If not, I reckon there is a window where you can find variables, functions or anything in all scripts. I think it was Find Results in the View Tab. Type in Players to see which scripts are using the service to manipulate the player.
So this line shows up in the server output whenever it happens https://gyazo.com/0962cfc51455ce65710dfa960cb02aff
but it doesn’t link to a script, and I can’t find any scripts that remove the PlayerGui. This is the only place it happens in so there must be something somewhere in the place causing it, I just need to find it.
Check for any scripts that interact with the player that may be wrongly interacting with the parent. This warning means that the parent of a player object under the Players service is trying to be set. Due to this, the backend can’t create the proper containers in the player between the time the player object is parented out of Players and then set back to Players.
OK I think I found the one. There was a script that was supposed to kick brand new accounts to prevent hackers from creating alt accounts easily, and instead of kicking them, someone typed :Remove() instead
Yikes, had a feeling that was it. Remove is an alias for Parent = nil, which is deprecated. Glad to hear you found your solution. All you have to do now is change to Kick (Destroy is more suited for other objects).
Kicking accounts based on their AccountAge is a fairly gray area that hasn’t been elaborated on with a concrete response. It’s not against the Terms of Service, but it’s not exactly allowed either. Originally this was in regards to guest accounts since users were kicking guests, but now it’s in the air.
Even then, I would still agree that this should be removed anyway. Kicking users based on their account age is a band-aid and bad solution to counteract exploiters. The proper solution is to fix your game.