Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local dataLoaded = {} -- this stores whether a player's data has loaded or not
- function CheckGamepass(User,GamepassId) --Checks gamepass ownership since MarketPlace service has limits too
- local Pcalled = false
- local Owns = false
- repeat
- Pcalled = pcall(function()
- Owns = MS:UserOwnsGamePassAsync(User.UserId,GamepassId)
- end)
- if not Pcalled then warn("Limit much?") end
- wait()
- until Pcalled
- return Owns
- end
- function MakeFolder(name,parent)
- local F = Instance.new("Folder")
- F.Name = name
- F.Parent = parent
- return F
- end
- function MakeValue(name,typeF,parent,preset)
- local V = Instance.new(typeF)
- V.Name = name
- V.Parent = parent
- if preset then V.Value = preset end
- return V
- end
- function DataTemplate()
- local temp = {
- ["Currency"] = {
- Coins = 0,
- Gems = 0
- },
- Equips = {
- TrailCol = "Default",
- Pistol = "Default",
- AK47 = "Default",
- M4A1 = "Default",
- M14 = "Default",
- Remington = "Default",
- Sniper = "Default",
- Scorpion = "Default",
- Axe = "Default",
- },
- ShowCase = {
- Axe = "Default",
- Pistol = "Default",
- Wep = "",
- Skin = "",
- },
- Chests = {
- Slot1 = {
- Type = "",
- OpenTime = 0
- },
- Slot2 = {
- Type = "",
- OpenTime = 0
- },
- Slot3 = {
- Type = "",
- OpenTime = 0
- },
- Slot4 = {
- Type = "",
- OpenTime = 0
- },
- },
- Skins = {},
- Trails = {},
- TotalKills = 0,
- TotalDeaths = 0,
- TotalWins = 0,
- UsedCodes = {},
- Colors = {
- Blood = {
- R = 1,
- G = 0,
- B = 0
- },
- Crosshair = {
- R = 1,
- G = 1,
- B = 1
- }
- },
- Packs = {
- HypeBeast = false,
- Asiimov = false
- },
- PassOwns = {
- Premium = false,
- Clout = false,
- Rich = false,
- PArena = false,
- }
- }
- return temp
- end
- function SaveData(plr)
- local function SkinTemplate()
- local tepm = {
- Skin = "",
- Wep = "",
- Copies = 0
- }
- return tepm
- end
- local tep = DataTemplate()
- local data = GetData(plr)
- if data then
- local x,y = pcall(function()
- tep["Currency"]["Coins"] = data.Currency.Coins.Value
- tep["Currency"]["Gems"] = data.Currency.Gems.Value
- for i = 1,4 do
- tep["Chests"]["Slot" .. i]["Type"] = data.Chests["Slot" .. i].Type.Value
- tep["Chests"]["Slot" .. i]["OpenTime"] = data.Chests["Slot" .. i].Open.Value
- end
- tep["Equips"]["TrailCol"] = data.Equips.TrailColor.Value
- tep["Equips"]["Pistol"] = data.Equips.PistolSkin.Value
- tep["Equips"]["Remington"] = data.Equips.RemingtonSkin.Value
- tep["Equips"]["AK47"] = data.Equips.AK47Skin.Value
- tep["Equips"]["M4A1"] = data.Equips.M4A1Skin.Value
- tep["Equips"]["M14"] = data.Equips.M14Skin.Value
- tep["Equips"]["Scorpion"] = data.Equips.ScorpionSkin.Value
- tep["Equips"]["Sniper"] = data.Equips.SniperSkin.Value
- tep["Equips"]["Axe"] = data.Equips.AxeSkin.Value
- local skiinz = data.Skins:GetChildren()
- if #skiinz > 0 then
- for i,v in pairs(skiinz) do
- local templ = SkinTemplate()
- templ["Skin"] = v.Skin.Value
- templ["Wep"] = v.Wep.Value
- templ["Copies"] = v.Copies.Value
- table.insert(tep["Skins"],1,templ)
- end
- end
- local skoonz = data.Trails:GetChildren()
- if #skoonz > 0 then
- for i,v in pairs(skoonz) do
- table.insert(tep["Trails"],1,v.Value)
- end
- end
- tep["ShowCase"]["Axe"] = data.ShowCase.Axe.Value
- tep["ShowCase"]["Pistol"] = data.ShowCase.Pistol.Value
- tep["ShowCase"]["Wep"] = data.ShowCase.WepShow.Value
- tep["ShowCase"]["Skin"] = data.ShowCase.WepShow.Skin.Value
- tep["TotalWins"] = data.Totals.TotalWins.Value
- tep["TotalDeaths"] = data.Totals.TotalDeaths.Value
- tep["TotalKills"] = data.Totals.TotalKills.Value
- tep["UsedCodes"] = {}
- for i,v in pairs(data.UsedCodes:GetChildren()) do
- table.insert(tep["UsedCodes"],1,v.Name)
- end
- tep["Colors"]["Blood"]["R"] = data.Colors.BloodColor.Value.r
- tep["Colors"]["Blood"]["G"] = data.Colors.BloodColor.Value.g
- tep["Colors"]["Blood"]["B"] = data.Colors.BloodColor.Value.b
- tep["Colors"]["Crosshair"]["R"] = data.Colors.CrosshairColor.Value.r
- tep["Colors"]["Crosshair"]["G"] = data.Colors.CrosshairColor.Value.g
- tep["Colors"]["Crosshair"]["B"] = data.Colors.CrosshairColor.Value.b
- tep["Packs"]["HypeBeast"] = data.PackGives.HypeBeast.Value
- tep["Packs"]["Asiimov"] = data.PackGives.Asiimov.Value
- tep["PassOwns"]["Premium"] = data.OwnsPasses.Premium.Value
- tep["PassOwns"]["Rich"] = data.OwnsPasses.Rich.Value
- tep["PassOwns"]["Clout"] = data.OwnsPasses.Clout.Value
- tep["PassOwns"]["PArena"] = data.OwnsPasses.PArena.Value
- end)
- if x and dataLoaded[plr.UserId] then
- local a
- repeat
- a = pcall(function()
- SaveDS:SetAsync("data2_" .. plr.UserId,tep)
- end)
- wait(1)
- until a
- print("Data Saved: " .. plr.Name)
- else
- warn("Didn't save data as it hasn't loaded yet.")
- end
- end
- end
- function LoadData(plr,fold)
- --local x,y = pcall(function()
- local data = nil
- local j = nil
- dataLoaded[plr.UserId] = false
- local INCREMENT = 0
- repeat
- INCREMENT = INCREMENT + 1
- j = pcall(function()
- data = SaveDS:GetAsync("data2_" .. plr.UserId)
- end)
- if INCREMENT > 1 then
- warn("Been loading ",plr.Name,"data for ".. INCREMENT)
- end
- wait(1)
- until j == true
- if data == nil then
- warn("GIVING PLAYER NEW DATA ", plr.Name)
- print(plr.Name .. ": New Save")
- local duky = false
- repeat
- duky = pcall(function()
- SaveDS:SetAsync("data2_" .. plr.UserId,DataTemplate())
- end)
- wait(1)
- until duky
- else
- fold.Currency.Coins.Value = data["Currency"]["Coins"]
- fold.Currency.Gems.Value = data["Currency"]["Gems"]
- for i = 1,4 do
- fold.Chests["Slot" .. i].Type.Value = data["Chests"]["Slot" .. i]["Type"]
- fold.Chests["Slot" .. i].Open.Value = data["Chests"]["Slot" .. i]["OpenTime"]
- end
- fold.Equips.TrailColor.Value = data["Equips"]["TrailCol"]
- fold.Equips.PistolSkin.Value = data["Equips"]["Pistol"]
- fold.Equips.RemingtonSkin.Value = data["Equips"]["Remington"]
- fold.Equips.M14Skin.Value = data["Equips"]["M14"]
- fold.Equips.SniperSkin.Value = data["Equips"]["Sniper"]
- fold.Equips.M4A1Skin.Value = data["Equips"]["M4A1"]
- fold.Equips.AK47Skin.Value = data["Equips"]["AK47"]
- fold.Equips.ScorpionSkin.Value = data["Equips"]["Scorpion"]
- fold.Equips.AxeSkin.Value = data["Equips"]["Axe"]
- if data["ShowCase"] then
- fold.ShowCase.Axe.Value = data["ShowCase"]["Axe"]
- fold.ShowCase.Pistol.Value = data["ShowCase"]["Pistol"]
- fold.ShowCase.WepShow.Value = data["ShowCase"]["Wep"]
- fold.ShowCase.WepShow.Skin.Value = data["ShowCase"]["Skin"]
- end
- if #data["Skins"] > 0 then
- for i,v in pairs(data["Skins"]) do
- local fo = MakeFolder("Skin",fold.Skins)
- local skoin = MakeValue("Skin","StringValue",fo,v["Skin"])
- local wop = MakeValue("Wep","StringValue",fo,v["Wep"])
- local popos = MakeValue("Copies","IntValue",fo,v["Copies"])
- end
- end
- if #data["Trails"] > 0 then
- for i,v in pairs(data["Trails"]) do
- local wop = MakeValue("Trail","StringValue",fold.Trails,v)
- if v == "Rainbow" then
- wop:Destroy()
- end
- end
- end
- if data["TotalWins"] and data["TotalDeaths"] and data["TotalKills"] then
- fold.Totals.TotalWins.Value = data["TotalWins"]
- fold.Totals.TotalDeaths.Value = data["TotalDeaths"]
- fold.Totals.TotalKills.Value = data["TotalKills"]
- end
- if data["UsedCodes"] and #data["UsedCodes"] > 0 then
- for i,v in pairs(data["UsedCodes"]) do
- local code = MakeValue(v,"StringValue",fold.UsedCodes,v)
- end
- end
- if data["Colors"] then
- fold.Colors.BloodColor.Value = Color3.new(data["Colors"]["Blood"]["R"],data["Colors"]["Blood"]["G"],data["Colors"]["Blood"]["B"])
- fold.Colors.CrosshairColor.Value = Color3.new(data["Colors"]["Crosshair"]["R"],data["Colors"]["Crosshair"]["G"],data["Colors"]["Crosshair"]["B"])
- end
- if data["Packs"] then
- fold.PackGives.HypeBeast.Value = data["Packs"]["HypeBeast"]
- if data["Packs"]["Asiimov"] then
- fold.PackGives.Asiimov.Value = data["Packs"]["Asiimov"]
- end
- end
- if data["PassOwns"] then
- fold.OwnsPasses.Premium.Value = data["PassOwns"]["Premium"]
- fold.OwnsPasses.Clout.Value = data["PassOwns"]["Clout"]
- fold.OwnsPasses.Rich.Value = data["PassOwns"]["Rich"]
- fold.OwnsPasses.PArena.Value = data["PassOwns"]["PArena"]
- end
- if not fold.OwnsPasses.Premium.Value then
- if CheckGamepass(plr,4452183) then
- local wop = MakeValue("Trail","StringValue",fold.Trails,"Rainbow")
- fold.OwnsPasses.Premium.Value = true
- end
- end
- if not fold.OwnsPasses.Rich.Value then
- if CheckGamepass(plr,4548625) then
- fold.OwnsPasses.Rich.Value = true
- end
- end
- if not fold.OwnsPasses.Clout.Value then
- if CheckGamepass(plr,4464006) then
- fold.OwnsPasses.Clout.Value = true
- end
- end
- if not fold.OwnsPasses.PArena.Value then
- if CheckGamepass(plr,4452228) then
- fold.OwnsPasses.PArena.Value = true
- end
- end
- if not fold.PackGives.Asiimov.Value then
- if CheckGamepass(plr,4583533) then
- AddAsiimovPack(plr)
- end
- end
- if not fold.PackGives.HypeBeast.Value then
- if CheckGamepass(plr,4557001) then
- AddHypeBeastPack(plr)
- end
- end
- plr:LoadCharacter()
- --DupedContra(fold)
- print("Data loaded: " .. plr.Name)
- end
- dataLoaded[plr.UserId] = true
- end
- function MakeData(plr)
- local function makeChestSlot(slotNum,fol)
- local f = MakeFolder("Slot" .. slotNum,fol)
- local typ = MakeValue("Type","StringValue",f)
- local open = MakeValue("Open","IntValue",f)
- return f
- end
- local det = MakeFolder("Data",plr)
- local chests = MakeFolder("Chests",det)
- local currency = MakeFolder("Currency",det)
- local skins = MakeFolder("Skins",det)
- local trails = MakeFolder("Trails",det)
- local equips = MakeFolder("Equips",det)
- local ign = MakeFolder("InGame",det)
- local shows = MakeFolder("ShowCase",det)
- local totals = MakeFolder("Totals",det)
- local useCodes = MakeFolder("UsedCodes",det)
- local owns = MakeFolder("OwnsPasses",det)
- local Cols = MakeFolder("Colors",det)
- local Packs = MakeFolder("PackGives",det)
- local hyp = MakeValue("HypeBeast","BoolValue",Packs,false)
- local asi = MakeValue("Asiimov","BoolValue",Packs,false)
- local BlC = MakeValue("BloodColor","Color3Value",Cols,Color3.fromRGB(255,0,0))
- local ChC = MakeValue("CrosshairColor","Color3Value",Cols,Color3.fromRGB(255,255,255))
- local BloodCol = MakeValue("BloodColors","BoolValue",owns,false)
- local CrossCol = MakeValue("CrosshairColors","BoolValue",owns,false)
- local Clout = MakeValue("Clout","BoolValue",owns,false)
- local prena = MakeValue("PArena","BoolValue",owns,false)
- local skeeti = MakeValue("Skip","BoolValue",owns,false)
- local Rioch = MakeValue("Rich","BoolValue",owns,false)
- local Prem = MakeValue("Premium","BoolValue",owns,false)
- local axeSh = MakeValue("Axe","StringValue",shows,"Default")
- local pistSh = MakeValue("Pistol","StringValue",shows,"Default")
- local wepSh = MakeValue("WepShow","StringValue",shows,"Default")
- local skinSh = MakeValue("Skin","StringValue",wepSh,"Default")
- local cskin = MakeFolder("CraftSkin",ign)
- local csel = MakeFolder("CraftSelect",ign)
- local tradeskin = MakeFolder("TradeSkin",ign)
- local prv = MakeValue("PracticeArena","BoolValue",ign,false)
- local coel = MakeValue("Cooldown","BoolValue",prv,false)
- for i = 1,5 do
- local xcv = MakeValue("Skin" .. i,"StringValue",csel,"")
- local wloke = MakeValue("Wep","StringValue",xcv,"")
- local lcon = MakeValue("Icon","StringValue",xcv,"")
- end
- local tierd = MakeValue("Tier","StringValue",csel,"")
- local s1 = makeChestSlot(1,chests)
- local s2 = makeChestSlot(2,chests)
- local s3 = makeChestSlot(3,chests)
- local s4 = makeChestSlot(4,chests)
- local coins = MakeValue("Coins","IntValue",currency,0)
- local gems = MakeValue("Gems","IntValue",currency,0)
- local trailCol = MakeValue("TrailColor","StringValue",equips,"Default")
- local AxeSkin = MakeValue("AxeSkin","StringValue",equips,"Default")
- local PistolSkin = MakeValue("PistolSkin","StringValue",equips,"Default")
- local ScorpionSkin = MakeValue("ScorpionSkin","StringValue",equips,"Default")
- local SniperSkin = MakeValue("SniperSkin","StringValue",equips,"Default")
- local RemingtonSkin = MakeValue("RemingtonSkin","StringValue",equips,"Default")
- local AK47Skin = MakeValue("AK47Skin","StringValue",equips,"Default")
- local M4A1Skin = MakeValue("M4A1Skin","StringValue",equips,"Default")
- local M14Skin = MakeValue("M14Skin","StringValue",equips,"Default")
- local totWins = MakeValue("TotalWins","IntValue",totals,0)
- local totKills = MakeValue("TotalKills","IntValue",totals,0)
- local totDeaths = MakeValue("TotalDeaths","IntValue",totals,0)
- LoadData(plr,det)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement