Hello, I really don't have much information on this issue other than the fact that sometimes when players load in, on their screen it saying they are on stage one, while on everyone else's screen it's the stage the player is actually on.
My script for saving stages
local datastore = game:GetService("DataStoreService"):GetDataStore("GameStore") game.Players.PlayerAdded:connect(function(player) local leaderstats = Instance.new("IntValue") leaderstats.Name = "leaderstats" leaderstats.Parent = player local level = Instance.new("IntValue") level.Name = "Stage" level.Parent = leaderstats level.Value = 1 local key = "user-" .. player.userId local storeditems = datastore:GetAsync(key) if storeditems then level.Value = storeditems[1] else local items = {level.Value} datastore:SetAsync(key, items) end local spawn = game.Workspace:WaitForChild(player.leaderstats.Stage.Value) if player and spawn then player.Character:MoveTo(spawn.Position + Vector3.new(0, 3, 0)) end end) game.Players.PlayerRemoving:connect(function(player) local items = {player.leaderstats.Stage.Value} local key = "user-" .. player.userId datastore:SetAsync(key, items) end) game.Workspace.ChildAdded:connect(function(obj) local player = game.Players:GetPlayerFromCharacter(obj) if player then local leaderstats = player:FindFirstChild("leaderstats") local stage = leaderstats:FindFirstChild("Stage") local respawn = game.Workspace:WaitForChild(stage.Value) obj.Torso.CFrame = obj.Torso.CFrame + Vector3.new(0,3,0) wait(0.1) obj.Torso.CFrame = respawn.CFrame + Vector3.new(0,3,0) end end)