So, I was just finishing off some updates to my game and I have these values. Cash, EXP and Level. I just noticed that it only saves 1 value which is Cash.
Here is the script for the save data
local DSService = game:GetService('DataStoreService'):GetDataStore('DataStore')
game.Players.PlayerAdded:connect(function(plr)
-- Define variables
local uniquekey = 'id-'..plr.userId
local lstats = Instance.new('IntValue', plr)
local savevalue = Instance.new('IntValue')
local savevalue2 = Instance.new('IntValue')
local savevalue3 = Instance.new('IntValue')
lstats.Name = 'leaderstats'
savevalue.Parent = lstats
savevalue2.Parent = lstats
savevalue3.Parent = lstats
savevalue.Name = 'Cash'
savevalue2.Name = 'EXP'
savevalue3.Name = 'Level'
-- GetAsync
local GetSaved = DSService:GetAsync(uniquekey)
if GetSaved then
savevalue.Value = GetSaved[1]
else
local NumbersForSaving = {savevalue.Value}
DSService:SetAsync(uniquekey, NumbersForSaving)
end
end)
game.Players.PlayerRemoving:connect(function(plr)
local uniquekey = 'id-'..plr.userId
local Savetable = {plr.leaderstats.Cash.Value}
DSService:SetAsync(uniquekey, Savetable)
end)
and if you need the script for the values
game.Players.PlayerAdded:Connect(function(plr)
local stats = Instance.new("BoolValue",plr)
stats.Name ="lstats"
local currency1 = Instance.new("IntValue",stats)
currency1.Name = 'Cash'
local exp = Instance.new("IntValue",stats)
exp.Name = 'EXP'
local level = Instance.new("IntValue",stats)
level.Name = 'Level'
plr.CharacterAdded:Connect(function(character)
character:WaitForChild("Humanoid").Died:connect(function()
local tag = character.Humanoid:FindFirstChild("creator")
if tag ~= nil then
if tag.Value ~= nil then
local stats1 = tag.Value:WaitForChild("leaderstats")
stats1["Cash"].Value = stats1["Cash"].Value + 35
local stats2 = tag.Value:WaitForChild("leaderstats")
stats2["EXP"].Value = stats2["EXP"].Value + 125
exp.Changed:Connect(function()
level.Value = math.floor(exp.Value / 1000)
end)
end
end
end)
end)
end)
