I tried to do an instance new CFrame value to store the players position, but it didn't worked out, weird because I can save another value, when I see in the playerstats, there is no position value
local ReplicatedStorage = game:GetService("ReplicatedStorage") local DataStore = game:GetService("DataStoreService") local PlayerSave1 = DataStore:GetDataStore("PlayerSave1") local PositionSave = DataStore:GetDataStore("PositionSave") local Save = ReplicatedStorage:WaitForChild("Save") local spawnPlace = workspace.SpawnPos game.Players.PlayerAdded:connect(function(player) local PlayerStats = Instance.new("Folder", player) PlayerStats.Name = "PlayerStats" local HasJoinedBefore = Instance.new("BoolValue", PlayerStats) HasJoinedBefore.Name = "HasJoinedBefore" HasJoinedBefore.Value = PlayerSave1:GetAsync(player.UserId) or false PlayerSave1:SetAsync(player.UserId, HasJoinedBefore.Value) local Pos = Instance.new("CFrameValue", PlayerStats) Pos.Name = "Position" Pos.Value = PositionSave:GetAsync(player.UserId) or spawnPlace.CFrame player.Character.HumanoidRootPart.CFrame = Pos.Value PositionSave:SetAsync(player.UserId, Pos.Value) HasJoinedBefore.Changed:connect(function() PlayerSave1:SetAsync(player.UserId, HasJoinedBefore.Value) end) end) game.Players.PlayerRemoving:connect(function(player) PlayerSave1:SetAsync(player.UserId, player.PlayerStats.HasJoinedBefore.Value) end) local function save(player) player.PlayerStats.HasJoinedBefore.Value = true PlayerSave1:SetAsync(player.UserId, player.PlayerStats.HasJoinedBefore.Value) end Save.OnServerEvent:Connect(save)