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)
