Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local version = Workspace.VERSION.Value
- local storage = game.ServerStorage
- local service = game:GetService("DataStoreService"):GetDataStore("ForeverDevStats" .. version)
- local default = {
- cash = 10,
- ach_thousandcash = false
- }
- local comma = function(str)
- local formatted = tostring(str)
- while true do
- formatted, k = formatted:gsub("^(-?%d+)(%d%d%d)", '%1,%2')
- if k == 0 then
- break
- end
- end
- return formatted
- end
- game.Players.PlayerAdded:connect(function(player)
- local data = storage.Data:clone()
- data.Parent = storage
- data.Name = player.Name .. "Data"
- local screen = player.PlayerGui:WaitForChild("ScreenGui")
- for _, store in ipairs(data:GetChildren()) do
- store.Changed:connect(function(value)
- if store:FindFirstChild("DisplayedOnScreen") then
- screen[store.Name].Output.Text = screen[store.Name].StringOutput.Value:gsub("VALUE", comma(value))
- end
- if store:FindFirstChild("Achievement") then
- if not service:GetAsync(player.userId .. tostring(store.AchievementKey.Value)) and value then
- Workspace.Functions.AwardAchievement:Invoke(player, store.AchievementKey.Value)
- end
- end
- end)
- store.Value = service:GetAsync(tostring(player.userId) .. store.Name:lower()) or default[store.Name:lower()]
- end
- end)
- game.Players.PlayerRemoving:connect(function(player)
- local data = storage:FindFirstChild(player.Name .. "Data")
- if data then
- for _, store in ipairs(data:GetChildren()) do
- service:SetAsync(tostring(player.userId) .. store.Name:lower(), store.Value)
- end
- end
- end)
- --------------------------------------------------------------------------------------------------------------
- local version = Workspace.VERSION.Value
- local service = game:GetService("DataStoreService"):GetDataStore("ForeverDevStats" .. version)
- function script.Parent.AwardAchievement.OnInvoke(player, award)
- local frame = game.ReplicatedStorage.Achievement:clone()
- frame.Parent = player.PlayerGui.ScreenGui
- frame.Award.Text = award
- service:SetAsync(player.userId .. award, true)
- end
- function script.Parent.GetData.OnServerInvoke(player, dataName)
- if game.ServerStorage:FindFirstChild(player.Name .. "Data") then
- return game.ServerStorage[player.Name .. "Data"][dataName].Value
- end
- return false
- end
- function script.Parent.ChangeData.OnServerInvoke(player, dataName, value)
- if game.ServerStorage:FindFirstChild(player.Name .. "Data") then
- game.ServerStorage[player.Name .. "Data"][dataName].Value = value
- return true
- end
- return false
- end
Advertisement
Add Comment
Please, Sign In to add comment