Ok so i think the reason why its not working is because im only changing your values for the client-side. I think you need to do something like make a remote event but i don't know how to do that with my DataStore/saving script.
Here's the script :
local RemoteEvent = game.ReplicatedStorage['RemoteEvent']
RemoteEvent.OnServerEvent:connect(function(player)
local DSService = game:GetService('DataStoreService'):GetDataStore('DBSRData')
game.Players.PlayerAdded:connect(function(p)
wait(2.5)
-- Define variables
local stats = game.ServerStorage.Data:Clone()
stats.Parent = p
local uniquekey = 'id-'..p.userId
local names = {}
for i, v in pairs(p.Data:GetChildren()) do
table.insert(names, v.Name)
end
-- GetAsync
local GetSaved = DSService:GetAsync(uniquekey)
if GetSaved then
for i, v in pairs(p.Data:GetChildren()) do
v.Value = GetSaved[i]
end
for i=1, #GetSaved do
--print(i .. ": " .. names[i] .. " = " .. tostring(GetSaved[i]))
end
else
local NumbersForSaving = {}
for i, v in pairs(p.Data:GetChildren()) do
table.insert(NumbersForSaving, v.Value)
end
DSService:SetAsync(uniquekey, NumbersForSaving)
end
end)
game.Players.PlayerRemoving:connect(function(p)
local uniquekey = 'id-'..p.userId
local Savetable = {}
for i, v in pairs(p.Data:GetChildren()) do
table.insert(Savetable, v.Value)
end
DSService:SetAsync(uniquekey, Savetable)
end)
end)

1 comment
Look on the wiki if you don't know how to use anything, like Remote Events, besides things that are very undescriptivE on the wiki.