Changing the humanoidrootpart makes everything different for players that join

I have scripts that will rotate their HRP and other scripts that move the HRP to a different spot. For players that join later, characters affected by the script, will either be on their side, their movements may be weird because the server thinks their HRP is in a different spot. How do I fix this?

You could either:
Use a RemoteEvent to get each players position from a player that’s already in the game when a new player joins, and sends the info to that player.
Set the character’s network owner to the player that controls it. (if it’s not already like that by default)
Use a ServerScript to teleport the HRP.

(There’s probably other ways but I could only think of these three)