Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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)
Advertisement
Add Comment
Please, Sign In to add comment