Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local self = {}
- self.StarterData = nil
- self.DSS = game:GetService('DataStoreService')
- self.DS = self.DSS:GetDataStore("PlayerStats")
- self.MainBindable = Instance.new('BindableEvent')
- self.FolderName = nil
- self.playersplaying = 0
- self.BindableEvent = Instance.new('BindableEvent')
- function self:GetFolderName(name)
- self.FolderName = name
- end
- function self:GetStarterData(Table)
- self.StarterData = Table
- end
- function self:LoadStarterData(plr)
- if self.StarterData == nil then warn("StarterData has not been set") return end
- local Stats = Instance.new('Folder',plr)
- Stats.Name = self.FolderName
- for a,b in pairs(self.StarterData) do
- if type(b) == 'number' then
- local numstat = Instance.new('IntValue',Stats)
- numstat.Name = a
- numstat.Value = b
- elseif type(b) == 'boolean' then
- local boolstat = Instance.new('BoolValue',Stats)
- boolstat.Name = a
- boolstat.Value = b
- elseif type(b) == 'string' then
- local stringstat = Instance.new('StringValue',Stats)
- stringstat.Name = a
- stringstat.Value = b
- end
- end
- end
- function self:LoadData(plr)
- if self.StarterData == nil then warn("StarterData has not been set") return end
- local Key = "Stats: "..plr.UserId
- local Data
- local s,e = pcall(function()
- Data = self.DS:GetAsync(Key)
- end)
- if s then
- print("Getting "..plr.Name.."'s data is successful")
- else
- warn("Something went wrong when loading "..plr.Name.."'s data")
- end
- if Data then
- for a,b in pairs(Data) do
- plr[self.FolderName][a].Value = b
- end
- print(plr.Name.."'s data has been loaded")
- else
- print(plr.Name..' has no data! Generating new data.')
- end
- end
- function self:SaveData(plr)
- if self.StarterData == nil then warn("StarterData has not been set") return end
- local Key = "Stats: "..plr.UserId
- local Data = {}
- for a,b in pairs(plr[self.FolderName]:GetChildren()) do
- Data[b.Name] = b.Value
- end
- local s,e = pcall(function()
- self.DS:SetAsync(Key,Data)
- end)
- if s then
- print(plr.Name.."'s data has been successfully saved")
- else
- error(e)
- warn("Something went wrong while saving "..plr.Name.."'s data")
- end
- end
- function self:GetStatValue(plr,statname)
- return plr[self.FolderName][statname].Value
- end
- function self:GetUpdatedStatSignal(plr,statname,statprop)
- if statprop then
- return plr[self.FolderName][statname]:GetPropertyChangedSignal(statprop)
- else
- return plr[self.FolderName][statname].Changed
- end
- end
- function self:UpdateStat(plr,statname,statvalue,ChangeType)
- if ChangeType == "add" then
- plr[self.FolderName][statname].Value = plr[self.FolderName][statname].Value + statvalue
- elseif ChangeType == "subtract" or ChangeType == "takeaway" then
- plr[self.FolderName][statname].Value = plr[self.FolderName][statname].Value - statvalue
- elseif ChangeType == "multiply" then
- plr[self.FolderName][statname].Value = plr[self.FolderName][statname].Value * statvalue
- elseif ChangeType == nil then
- plr[self.FolderName][statname].Value = statvalue
- end
- end
- return self
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement