Hello! So i was making a simple clicker game that tracks your clicks. So of course i want players to have their progress saved and so i created this code that i put under ServerScriptService
local Players = game:GetService("Players")
local DataStorage = game:GetService("DataStoreService")
local PlayerStorage = DataStorage:GetDataStore("PlayerData")
Players.PlayerAdded:Connect(function(player)
-- Create leaderstats
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local clicks = Instance.new("IntValue")
clicks.Name = "Clicks"
clicks.Parent = leaderstats
local PlayerData
local Success, Error = pcall(function()
local PlayerId = player.UserId
PlayerData = PlayerStorage:GetAsync(PlayerId)
end)
if Success then
if PlayerData then
clicks.Value = PlayerData
print("[load] " .. tostring(player.UserId) .. ": " .. tostring(clicks.Value))
else
clicks.Value = 0
end
else
warn(Error)
end
end)
local function saveData(Player)
local leaderstats = Player:FindFirstChild("leaderstats")
local PlayerClicks = leaderstats:FindFirstChild("Clicks")
task.wait(1)
local PlayerData = PlayerClicks.Value
local Success, Error = pcall(function()
PlayerStorage:SetAsync(Player.UserId, PlayerData)
print("[save] " .. tostring(Player.UserId) .. ": " .. tostring(PlayerData))
end)
if not Success then
warn(Error)
end
end
game.Players.PlayerRemoving:Connect(function(Player)
saveData(Player)
end)
game:BindToClose(function()
for _, Player in pairs(Players:GetPlayers()) do
task.spawn(saveData(Player))
end
task.wait(5)
end)
-- Sorry for the atrocious vars naming

** You are now Level 1! **
