Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- So this is my YouTube Channel - https://www.youtube.com/channel/UCqvurGZT7Motn0ivduSgdxQ
- Link to a game in which I am head programmer - https://web.roblox.com/games/5531544242/INF-PETS-Chaos-Clicker
- A data handler from my upcomming game -
- local module = {}
- local equiper = require(script.Parent:WaitForChild("EquipHandler"))
- local gloablstatshandler = require(game.ServerScriptService:WaitForChild("GloablLeaderboards"):WaitForChild("GlobalLeaderbaordsHandler"))
- local function newFolder(parent, name)
- local new = Instance.new("Folder", parent)
- new.Name = name
- return new
- end
- local function newValue(parent, name, typ, value)
- local new = Instance.new(typ, parent)
- new.Name = name
- new.Value = value
- return new
- end
- function module.exportData(datastore, player)
- local playerData = datastore:GetAsync(player.UserId) or {}
- playerData.Settings = playerData.Settings or {}
- local leaderstats = newFolder(player, "leaderstats")
- local data = newFolder(player, "data")
- local views, coins, streamer = newValue(leaderstats, "Viewers", "StringValue", playerData.views or 0), newValue(leaderstats, "Coins", "StringValue", playerData.coins or 0), newValue(leaderstats, "Streamer", "StringValue", playerData.streamer or 'Lame Streamer')
- local userSettings = newFolder(data, "userSettings")
- for _,setting in ipairs(game.StarterGui:WaitForChild("Settings"):WaitForChild("ImageLabel"):WaitForChild("ScrollingFrame"):GetChildren()) do
- if setting:IsA("ImageLabel") and not setting:FindFirstChild("NO_SAVE") then
- local newEntry = newValue(userSettings, setting.Name, "BoolValue", playerData.Settings[setting.Name] or false)
- end
- end
- local laptops = newFolder(data, "laptops")
- local backpacks = newFolder(data, "backpacks")
- local classes = newFolder(data, "classes")
- local areas = newFolder(data, "areas")
- playerData.laptops = playerData.laptops or {
- "Broken Laptop"
- }
- playerData.backpacks = playerData.backpacks or {
- "Broken Bandwidth"
- }
- playerData.classes = playerData.classes or {
- "Lame Streamer"
- }
- playerData.areas = playerData.areas or {}
- local currentLaptop = newValue(data, "currentLaptop", "StringValue", playerData.currentLaptop or "Broken Laptop")
- local currentBackpack = newValue(data, "currentBackpack", "StringValue", playerData.currentBackpack or "Broken Bandwidth")
- local currentClass = newValue(data, "currentClass", "StringValue", playerData.currentClass or "Lame Streamer")
- --parse things
- for _,laptop in ipairs(playerData.laptops) do
- newValue(laptops, laptop, "StringValue", "")
- end
- for _,backpack in ipairs(playerData.backpacks) do
- newValue(backpacks, backpack, "StringValue", "")
- end
- for _,class in ipairs(playerData.classes) do
- newValue(classes, class, "StringValue", "")
- end
- for _,area in ipairs(playerData.areas) do
- newValue(areas, area, "StringValue", "")
- end
- local importantvalues = newFolder(player, "ImportantValues")
- local backpacksize = newValue(importantvalues, "BackpackSize", "StringValue", 1)
- local LaptopRate = newValue(importantvalues, "LaptopRate", "NumberValue", 1)
- local ClassBoost = newValue(importantvalues, "ClassBoost", "NumberValue", 1)
- local ClassBoost = newValue(importantvalues, "SpeedBoost", "NumberValue", 1)
- equiper.equiplaptop(player, player.data.currentLaptop.Value or "Broken Laptop")
- equiper.equipbackpack(player, player.data.currentBackpack.Value or "Broken Bandwidth")
- equiper.equipclass(player, player.data.currentClass.Value or "Lame Streamer")
- local viewval = views.Value
- local coinval = coins.Value
- views.Changed:Connect(function()
- local change = views.Value - viewval
- viewval = views.Value
- if change >0 then
- gloablstatshandler.update(player, 'Bandwidth', change)
- end
- end)
- coins.Changed:Connect(function()
- local change = coins.Value - coinval
- coinval = coins.Value
- if change >0 then
- gloablstatshandler.update(player, 'MostCoins', change)
- end
- end)
- player.CharacterAdded:Connect(function()
- equiper.equiplaptop(player, player.data.currentLaptop.Value or "Broken Laptop")
- equiper.equipbackpack(player, player.data.currentBackpack.Value or "Broken Bandwidth")
- equiper.equipclass(player, player.data.currentClass.Value or "Lame Streamer")
- end)
- end
- function module.saveData(datastore, player)
- local formedData = {
- Settings = {},
- laptops = {},
- backpacks = {},
- classes = {},
- areas = {}
- }
- local leaderstats = player:WaitForChild("leaderstats")
- local data = player:WaitForChild("data")
- local laptops = data:WaitForChild("laptops")
- local backpacks = data:WaitForChild("backpacks")
- local classes = data:WaitForChild("classes")
- local areas = data:WaitForChild("areas")
- for _, laptop in ipairs(laptops:GetChildren()) do
- formedData.laptops[#formedData.laptops+1] = laptop.Name
- end
- for _, backpack in ipairs(backpacks:GetChildren()) do
- formedData.backpacks[#formedData.backpacks+1] = backpack.Name
- end
- for _, class in ipairs(classes:GetChildren()) do
- formedData.classes[#formedData.classes+1] = class.Name
- end
- for _, area in ipairs(areas:GetChildren()) do
- formedData.areas[#formedData.areas+1] = area.Name
- end
- formedData.views = tonumber(leaderstats:WaitForChild("Viewers").Value)
- formedData.coins = tonumber(leaderstats:WaitForChild("Coins").Value)
- formedData.streamer = leaderstats:WaitForChild("Streamer").Value
- formedData.currentLaptop = data:WaitForChild("currentLaptop").Value
- formedData.currentBackpack = data:WaitForChild("currentBackpack").Value
- formedData.currentClass = data:WaitForChild("currentClass").Value
- for _,setting in ipairs(data:WaitForChild("userSettings"):GetChildren()) do
- formedData.Settings[setting.Name] = setting.Value
- end
- datastore:SetAsync(player.UserId, formedData)
- print("saved data for "..player.Name)
- return formedData
- end
- function module.ownsBackpack(player, backpackName)
- for _,backpack in ipairs(player:WaitForChild("data"):WaitForChild("backpacks"):GetChildren()) do
- if backpack.Name == backpackName then
- return true
- end
- end
- return false
- end
- return module
Advertisement
Add Comment
Please, Sign In to add comment