In the main game/spawn place, when a player joins, it creates a model inside the player, and then a string value inside that model. The model is not called leaderstats, so it does not make a leaderboard. This string value saves and loads when the player leaves/enters and it works.
However, when I teleport to a place within the main game, the same model gets created, but along with another one called leaderstats, with an int value inside it and this does create a leaderboard. But when I leave the place, it saves the leaderboard value as the string value, and doesn't save the leaderboard value. So when I enter the main game again, the string value is set to whatever the leaderboard value was in the other place. How would I fix this, if it's even possible?
Here is the script from the main game:
local DataStore = game:GetService("DataStoreService"):GetDataStore("GeneralStats") game.Players.PlayerAdded:Connect(function(plr) local charnum = Instance.new("Model",plr) charnum.Name = "CharacterStat" local value = Instance.new("StringValue",charnum) value.Name = "Character" value.Value = "(NEW PLAYER)" local key = "user "..plr.userId local savedValues = DataStore:GetAsync(key) if savedValues then charnum.Character.Value = savedValues[1] else local valuestosave = {charnum.Character.Value} DataStore:SetAsync(key, valuestosave) end game.Players.PlayerRemoving:connect(function(plr2) local key = "user "..plr2.userId local valuestosave = {plr2:FindFirstChild("CharacterStat").Character.Value} DataStore:SetAsync(key, valuestosave) end) end)
Here is the script from the second place:
local DataStore = game:GetService("DataStoreService"):GetDataStore("GeneralStats") game.Players.PlayerAdded:connect(function(plr) local charnum = Instance.new("Model",plr) charnum.Name = "CharacterStat" local value = Instance.new("StringValue",charnum) value.Name = "Character" value.Value = "(NEW PLAYER)" local testnum = Instance.new("Model",plr) testnum.Name = "leaderstats" local testvalue = Instance.new("IntValue",testnum) testvalue.Name = "Test Value" local key = "user "..plr.userId local savedValues = DataStore:GetAsync(key) if savedValues then charnum.Character.Value = savedValues[1] testnum["Test Value"].Value = savedValues[2] else local valuestosave = {charnum.Character.Value, testnum["Test Value"].Value} DataStore:SetAsync(key, valuestosave) end end) -- game.Players.PlayerRemoving:connect(function(plr2) local key = "user "..plr2.userId local valuestosave = {plr2.leaderstats["Test Value"].Value, plr2.CharacterStat.Character.Value} DataStore:SetAsync(key, valuestosave) end)