local Players = game:GetService("Players") local DataStoreService = game:GetService("DataStoreService") local DataStore = DataStoreService:GetDataStore("MyDataStore") local function PlayerAdded(Player: Player) local Leaderstats = Instance.new("Folder", Player) Leaderstats.Name = "leaderstats" local RedeemedCodes = Instance.new("Folder", Player) RedeemedCodes.Name = "RedeemedCodes" local Rings = Instance.new("NumberValue", Leaderstats) Rings.Name = "Rings" Rings.Value = 0 local Level = Instance.new("NumberValue", Leaderstats) Level.Name = "Level" Level.Value = 1 local Rebirth = Instance.new("NumberValue", Leaderstats) Rebirth.Name = "Rebirth" Rebirth.Value = 0 local XP = Instance.new("NumberValue", Player) XP.Name = "XP" XP.Value = 0 local RedStarRings = Instance.new("NumberValue", Player) RedStarRings.Name = "Red Star Rings" RedStarRings.Value = 0 local RaceTickets = Instance.new("NumberValue", Player) RaceTickets.Name = "RaceTickets" RaceTickets.Value = 0 local DailyReward = Instance.new("NumberValue", Player) DailyReward.Name = "DailyReward" DailyReward.Value = 1 local LastCollectTime = Instance.new("NumberValue", Player) LastCollectTime.Name = "LastCollectTime" LastCollectTime.Value = 0 local Success, SavedData = pcall(function() return DataStore:GetAsync(Player.UserId) end) if Success and SavedData then Rings.Value = SavedData.Rings or 0 Level.Value = SavedData.Level or 1 Rebirth.Value = SavedData.Rebirth or 0 XP.Value = SavedData.XP or 0 RedStarRings.Value = SavedData.RedStarRings or 0 RaceTickets.Value = SavedData.RaceTickets or 0 DailyReward.Value = SavedData.DailyReward or 1 LastCollectTime.Value = SavedData.LastCollectTime or 0 if SavedData.RedeemedCodes then for _, Code in ipairs(SavedData.RedeemedCodes) do local CodeInstance = Instance.new("StringValue", RedeemedCodes) CodeInstance.Name = Code end end else Rings.Value = 0 Level.Value = 1 Rebirth.Value = 0 XP.Value = 0 RedStarRings.Value = 0 RaceTickets.Value = 0 DailyReward.Value = 1 LastCollectTime.Value = 0 end end local function PlayerRemoving(Player: Player) local Leaderstats = Player:FindFirstChild("leaderstats") if Leaderstats then local RingsValue = Leaderstats:FindFirstChild("Rings") local LevelValue = Leaderstats:FindFirstChild("Level") local RebirthValue = Leaderstats:FindFirstChild("Rebirth") local XPValue = Player:FindFirstChild("XP") local RedStarRingsValue = Player:FindFirstChild("Red Star Rings") local RaceTicketsValue = Player:FindFirstChild("RaceTickets") local DailyRewardValue = Player:FindFirstChild("DailyReward") local LastCollectTimeValue = Player:FindFirstChild("LastCollectTime") local SaveData = { Rings = RingsValue.Value, Level = LevelValue.Value, Rebirth = RebirthValue.Value, XP = XPValue.Value, RedStarRings = RedStarRingsValue.Value, RaceTickets = RaceTicketsValue.Value, DailyReward = DailyRewardValue.Value, LastCollectTime = LastCollectTimeValue.Value, RedeemedCodes = {} } for _, CodeInstance in ipairs(Player.RedeemedCodes:GetChildren()) do table.insert(SaveData.RedeemedCodes, CodeInstance.Name) end local Success, Error = pcall(function() DataStore:SetAsync(Player.UserId, SaveData) end) if not Success then warn(`Couldn't Save Data For {Player.Name}, Error: {Error}`) end end end local function ServerShutdown() for _, Player in Players:GetPlayers() do PlayerRemoving(Player) end end Players.PlayerAdded:Connect(PlayerAdded) Players.PlayerRemoving:Connect(PlayerRemoving) game:BindToClose(ServerShutdown)