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)
This should be a ServerScript in ServerScriptService. You don't need to use RemoteEvents here. However, you will need to use RemoteEvents/Functions if you're changing the players stats Locally.