Hey. I'm trying to make a leaderboard that saves when the player quits (and load) using DataStores. It works with 1 value, but when i try to put the table with 4 value into the data store it doesnt load up when i join.
Script in ServerScriptService:
local DataStoreService=game:GetService("DataStoreService")
local DataStore=DataStoreService:GetDataStore("Player_Data")
game.Players.PlayerAdded:connect(function(Player)
local PlayerData;
local Stats=Instance.new('Model')
Stats.Name="leaderstats"
local Cash=Instance.new('IntValue',Stats)
Cash.Name="Cash"
local Points=Instance.new('IntValue',Stats)
Points.Name="Points"
local Ammo=Instance.new('IntValue',Stats)
Ammo.Name="Ammo"
local Damage=Instance.new('IntValue',Stats)
Damage.Name="Damage"
Stats.Parent=Player
local CanSave=Instance.new('BoolValue',Player)
CanSave.Name="CanSaveData"
CanSave.Value=true
local DataFetchSuccess,ErrorMessage=pcall(function()
PlayerData=DataStore:GetAsync(tostring(Player.UserId))
end)
if DataFetchSuccess then
if PlayerData~=nil then
Player.leaderstats.Cash.Value=PlayerData[1] or 0
Player.leaderstats.Points.Value=PlayerData[2] or 0
Player.leaderstats.Ammo.Value=PlayerData[3] or 0
Player.leaderstats.Cash.Value=PlayerData[4] or 0
else
Player.leaderstats.Cash.Value=100
Player.leaderstats.Points.Value=19
Player.leaderstats.Ammo.Value=5
Player.leaderstats.Cash.Value=10
end
else
Player.CanSaveData.Value=false
Player:Kick("Your data failed to load! Please rejoin.")
end
end)
game.Players.PlayerRemoving:connect(function(Player)
if Player.CanSaveData.Value==false then return end
local PlayerData={
Player.leaderstats.Cash.Value,
Player.leaderstats.Points.Value,
Player.leaderstats.Ammo.Value,
Player.leaderstats.Damage.Value
}
local DataWriteSuccess,ErrorMessage=pcall(function()
DataStore:SetAsync(tostring(Player.UserId),{
Player.leaderstats.Cash.Value,
Player.leaderstats.Points.Value,
Player.leaderstats.Ammo.Value,
Player.leaderstats.Damage.Value
})
end)
if not DataWriteSuccess then
local Retry_Count=0
while Retry_Count<6 do
wait(60)
local Succeded,Error=pcall(function()
DataStore:SetAsync(tostring(Player.UserId),{
Player.leaderstats.Cash.Value,
Player.leaderstats.Points.Value,
Player.leaderstats.Ammo.Value,
Player.leaderstats.Damage.Value
})
end)
if Succeded then break end
Retry_Count=Retry_Count+1
end
end
end)
Any help would be appreciated. Thanks

1 comment
As you have stated in your previous question, this is not your script, attempts should be of own work.