I’ve been super stressed out, because I’ve been trying to rework my datastores to fix dataloss for hours. And I still can’t find a solution that prevents the occasional dataloss. Dataloss also doesn’t happen frequently enough for me to determine the cause or debug with prints. So I came here, hoping someone can check my code and point out anything that may seem amiss.
local function SavingStats(Player)
local SavedPlayerStats = SaveStats(Player)
local success, errormessage = pcall(function()
local PlayerUserId = 'Player_'..Player.UserId
if SavedPlayerStats ~= nil then
myDataStore:SetAsync(PlayerUserId, SavedPlayerStats)
end
end)
if success then
print("Player Data successfully saved!")
else
print("There was an error when saving data")
warn(errormessage)
end
end
game.Players.PlayerRemoving:Connect(function(Player)
local DoNotSave = game.ServerStorage.BoolChecks[Player.Name].DoNotSave
if not DoNotSave.Value then
local Save = game.ServerStorage.BoolChecks[Player.Name].Save
SavingStats(Player)
DoNotSave.Value = true
repeat wait() until not game:GetService("Players"):FindFirstChild(Player)
game.ServerStorage.StatsOfPlayers[Player.UserId]:Destroy()
game.ServerStorage.BoolChecks[Player.Name]:Destroy()
game.ServerStorage.PvP[Player.UserId]:Destroy()
game.ServerStorage.PlayerAnimations[Player.Name]:Destroy()
end
end)
game:BindToClose(function()
for i, Player in pairs(game:GetService("Players"):GetPlayers()) do
local DoNotSave = game.ServerStorage.BoolChecks[Player.Name].DoNotSave
if not DoNotSave.Value then
local Save = game.ServerStorage.BoolChecks[Player.Name].Save
DoNotSave.Value = true
SavingStats(Player)
end
end
end)
I should also note I do have a 5 minute autosave, with an autosave timer that starts as soon as the player joins, and this autosave timer does not resume, but restarts from 0 even if the player rejoins that same server. I was also able to determine data loss happens even when the player leaves the game before the 5 minute time period. So I’m pretty sure it isn’t due to the autosave. Though please let me know if it’s a possibility and if I should also show the autosave code.