So I was using SetAsync() previously. Then, I figured out that it could cause problems while saving the data. So I thought to use UpdateAsync() instead of SetAsync().
My First Question:
Should I add the UpdateAsync() inside the PlayerAdded event or PlayerRemoving? The wiki uses it with PlayerAdded but I want to save the player's data so should it be inside the player removing event? Because that is where the SetAsync() is located.
This was my script before, with SetAsync() (Please note: I am only showing the PlayerRemoving part):
local function save(player) local success, errormessage = pcall(function() local data = { Coins = player.leaderstats.Coins.Value; Checkpoint = player.leaderstats.Stage.Value; Level = player.leaderstats.Level.Value; Rebirth = player.leaderstats.Rebirth.value; } myDataStore:SetAsync(player.UserId, data) end) if success then print("Data successfully saved!") else print("There was an error saving the data.") warn(errormessage) end end
Now I thought to replace the SetAsync()
with GetAsync()
. So here is how I tried it:
local function save(player) local success, errormessage = pcall(function() local data = { Coins = player.leaderstats.Coins.Value; Checkpoint = player.leaderstats.Stage.Value; Level = player.leaderstats.Level.Value; Rebirth = player.leaderstats.Rebirth.value; } -- myDataStore:SetAsync(player.UserId, data) myDataStore:UpdateAsync(player.UserId, function(oldValue) return data end) end) if success then print("Data successfully saved!") else print("There was an error saving the data.") warn(errormessage) end end
Should this do it? Should the thought of player's data not saving properly be removed? Any improvements which I can make?
Please let me know.
Thanks for any help