โ† Back to all scripts

DataStore: Save & Load

Persist player data across sessions with error handling and an auto-save loop.

DatastoresIntermediateServerScriptService
datastore-save-load.lua
-- DataStore: Save & Load Player Data
-- Place in ServerScriptService

local DataStoreService = game:GetService("DataStoreService")
local db = DataStoreService:GetDataStore("PlayerData_v1")

game.Players.PlayerAdded:Connect(function(player)
    local leaderstats = Instance.new("Folder")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player

    local cash = Instance.new("IntValue")
    cash.Name = "Cash"
    cash.Parent = leaderstats

    local ok, data = pcall(function()
        return db:GetAsync(player.UserId)
    end)
    if ok and data then cash.Value = data.Cash or 0 end
end)

game.Players.PlayerRemoving:Connect(function(player)
    local cash = player.leaderstats.Cash.Value
    pcall(function() db:SetAsync(player.UserId, { Cash = cash }) end)
end)

task.spawn(function()
    while task.wait(60) do
        for _, p in ipairs(game.Players:GetPlayers()) do
            local cash = p.leaderstats and p.leaderstats.Cash
            if cash then
                pcall(function() db:SetAsync(p.UserId, { Cash = cash.Value }) end)
            end
        end
    end
end)
Something broken or not working?
๐Ÿ”ง Try the AI Script Fixer โ†’