Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --// Services
- local Players = game:GetService("Players")
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local RunService = game:GetService("RunService")
- local DSS = game:GetService("DataStoreService")
- --// Variables
- local Version = 1
- local MaxTries = 5
- local DataStore = DSS:GetDataStore("Player's Data: "..Version)
- --// Settings
- local StartingData = {
- Stats = {
- Level = 1,
- Exp = 0,
- MaxExp = 100,
- Money = 0,
- }
- }
- local ServerData = {}
- --// Functions
- local Save = function(Player, DataToSave)
- DataStore:SetAsync(Player.UserId, DataToSave)
- print("Saving "..Player.Name.."'s Data")
- end
- local Get = function(Player)
- local Data = DataStore:GetAsync(Player.UserId)
- print("Returning "..Player.Name.."'s Data")
- return Data
- end
- local DataRetry = function(Player, Function, Task)
- local success, errormsg, Data, Tries = false, nil, nil, 0
- while Tries < MaxTries and not success do
- Tries = Tries +1
- success, errormsg = pcall(function()
- Data = Function(Player, Task)
- end)
- if success then
- print("Data Retry has been completed for: ")
- else
- warn(errormsg)
- wait(1)
- end
- end
- return Data
- end
- --// Module
- local module = {
- NewPlayer = function(Player)
- local Data = DataRetry(Player, Get)
- if Data == nil then
- ServerData[Player].Stats = StartingData.Stats
- print(Player.Name.." has no Data")
- elseif Data then
- ServerData[Player].Stats = Data
- print(Player.Name.."'s Data has been loaded")
- end
- end,
- }
- --// Main
- Players.PlayerAdded:Connect(function(Player)
- ServerData[Player] = {}
- module.NewPlayer(Player)
- end)
- Players.PlayerRemoving:Connect(function(Player)
- DataRetry(Player, Save, ServerData[Player].Stats)
- ServerData[Player] = nil
- end)
- return module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement