Advertisement
Guest User

Untitled

a guest
Jun 11th, 2018
413
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 12.87 KB | None | 0 0
  1. local dataLoaded = {} -- this stores whether a player's data has loaded or not
  2.  
  3. function CheckGamepass(User,GamepassId) --Checks gamepass ownership since MarketPlace service has limits too
  4.     local Pcalled = false
  5.     local Owns = false
  6.     repeat
  7.         Pcalled = pcall(function()
  8.             Owns = MS:UserOwnsGamePassAsync(User.UserId,GamepassId)
  9.         end)
  10.         if not Pcalled then warn("Limit much?") end
  11.         wait()
  12.     until Pcalled
  13.     return Owns
  14. end
  15.  
  16. function MakeFolder(name,parent)
  17.     local F = Instance.new("Folder")
  18.     F.Name = name
  19.     F.Parent = parent
  20.     return F
  21. end
  22.  
  23. function MakeValue(name,typeF,parent,preset)
  24.     local V = Instance.new(typeF)
  25.     V.Name = name
  26.     V.Parent = parent
  27.     if preset then V.Value = preset end
  28.     return V
  29. end
  30.  
  31.  
  32. function DataTemplate()
  33.     local temp = {
  34.        
  35.         ["Currency"] = {
  36.             Coins = 0,
  37.             Gems = 0
  38.         },
  39.        
  40.         Equips = {
  41.             TrailCol = "Default",
  42.             Pistol = "Default",
  43.             AK47 = "Default",
  44.             M4A1 = "Default",
  45.             M14 = "Default",
  46.             Remington = "Default",
  47.             Sniper = "Default",
  48.             Scorpion = "Default",
  49.             Axe = "Default",
  50.         },
  51.        
  52.         ShowCase = {
  53.             Axe = "Default",
  54.             Pistol = "Default",
  55.             Wep = "",
  56.             Skin = "",
  57.         },
  58.        
  59.         Chests = {
  60.             Slot1 = {
  61.                 Type = "",
  62.                 OpenTime = 0
  63.             },
  64.             Slot2 = {
  65.                 Type = "",
  66.                 OpenTime = 0
  67.             },
  68.             Slot3 = {
  69.                 Type = "",
  70.                 OpenTime = 0
  71.             },
  72.             Slot4 = {
  73.                 Type = "",
  74.                 OpenTime = 0
  75.             },
  76.         },
  77.        
  78.         Skins = {},
  79.        
  80.         Trails = {},
  81.        
  82.         TotalKills = 0,
  83.         TotalDeaths = 0,
  84.         TotalWins = 0,
  85.        
  86.         UsedCodes = {},
  87.        
  88.         Colors = {
  89.             Blood = {
  90.                 R = 1,
  91.                 G = 0,
  92.                 B = 0
  93.             },
  94.             Crosshair = {
  95.                 R = 1,
  96.                 G = 1,
  97.                 B = 1
  98.             }
  99.         },
  100.        
  101.         Packs = {
  102.             HypeBeast = false,
  103.             Asiimov = false
  104.         },
  105.        
  106.         PassOwns = {
  107.             Premium = false,
  108.             Clout = false,
  109.             Rich = false,
  110.             PArena = false,
  111.         }
  112.        
  113.     }
  114.     return temp
  115. end
  116.  
  117. function SaveData(plr)
  118.    
  119.     local function SkinTemplate()
  120.         local tepm = {
  121.             Skin = "",
  122.             Wep = "",
  123.             Copies = 0
  124.         }
  125.         return tepm
  126.     end
  127.    
  128.     local tep = DataTemplate()
  129.    
  130.     local data = GetData(plr)
  131.     if data then
  132.         local x,y = pcall(function()
  133.            
  134.             tep["Currency"]["Coins"] = data.Currency.Coins.Value
  135.             tep["Currency"]["Gems"] = data.Currency.Gems.Value
  136.            
  137.             for i = 1,4 do
  138.                 tep["Chests"]["Slot" .. i]["Type"] = data.Chests["Slot" .. i].Type.Value
  139.                 tep["Chests"]["Slot" .. i]["OpenTime"] = data.Chests["Slot" .. i].Open.Value
  140.             end
  141.            
  142.             tep["Equips"]["TrailCol"] = data.Equips.TrailColor.Value
  143.             tep["Equips"]["Pistol"] = data.Equips.PistolSkin.Value
  144.             tep["Equips"]["Remington"] = data.Equips.RemingtonSkin.Value
  145.             tep["Equips"]["AK47"] = data.Equips.AK47Skin.Value
  146.             tep["Equips"]["M4A1"] = data.Equips.M4A1Skin.Value
  147.             tep["Equips"]["M14"] = data.Equips.M14Skin.Value
  148.             tep["Equips"]["Scorpion"] = data.Equips.ScorpionSkin.Value
  149.             tep["Equips"]["Sniper"] = data.Equips.SniperSkin.Value
  150.             tep["Equips"]["Axe"] = data.Equips.AxeSkin.Value
  151.            
  152.             local skiinz = data.Skins:GetChildren()
  153.             if #skiinz > 0 then
  154.                 for i,v in pairs(skiinz) do
  155.                     local templ = SkinTemplate()
  156.                     templ["Skin"] = v.Skin.Value
  157.                     templ["Wep"] = v.Wep.Value
  158.                     templ["Copies"] = v.Copies.Value
  159.                     table.insert(tep["Skins"],1,templ)
  160.                 end
  161.             end
  162.            
  163.             local skoonz = data.Trails:GetChildren()
  164.             if #skoonz > 0 then
  165.                 for i,v in pairs(skoonz) do
  166.                     table.insert(tep["Trails"],1,v.Value)
  167.                 end
  168.             end
  169.            
  170.             tep["ShowCase"]["Axe"] = data.ShowCase.Axe.Value
  171.             tep["ShowCase"]["Pistol"] = data.ShowCase.Pistol.Value
  172.            
  173.             tep["ShowCase"]["Wep"] = data.ShowCase.WepShow.Value
  174.             tep["ShowCase"]["Skin"] = data.ShowCase.WepShow.Skin.Value
  175.            
  176.             tep["TotalWins"] = data.Totals.TotalWins.Value
  177.             tep["TotalDeaths"] = data.Totals.TotalDeaths.Value
  178.             tep["TotalKills"] = data.Totals.TotalKills.Value
  179.            
  180.             tep["UsedCodes"] = {}
  181.            
  182.             for i,v in pairs(data.UsedCodes:GetChildren()) do
  183.                 table.insert(tep["UsedCodes"],1,v.Name)
  184.             end
  185.            
  186.             tep["Colors"]["Blood"]["R"] = data.Colors.BloodColor.Value.r
  187.             tep["Colors"]["Blood"]["G"] = data.Colors.BloodColor.Value.g
  188.             tep["Colors"]["Blood"]["B"] = data.Colors.BloodColor.Value.b
  189.            
  190.             tep["Colors"]["Crosshair"]["R"] = data.Colors.CrosshairColor.Value.r
  191.             tep["Colors"]["Crosshair"]["G"] = data.Colors.CrosshairColor.Value.g
  192.             tep["Colors"]["Crosshair"]["B"] = data.Colors.CrosshairColor.Value.b
  193.            
  194.             tep["Packs"]["HypeBeast"] = data.PackGives.HypeBeast.Value
  195.             tep["Packs"]["Asiimov"] = data.PackGives.Asiimov.Value
  196.            
  197.             tep["PassOwns"]["Premium"] = data.OwnsPasses.Premium.Value
  198.             tep["PassOwns"]["Rich"] = data.OwnsPasses.Rich.Value
  199.             tep["PassOwns"]["Clout"] = data.OwnsPasses.Clout.Value
  200.             tep["PassOwns"]["PArena"] = data.OwnsPasses.PArena.Value
  201.            
  202.         end)
  203.        
  204.         if x and dataLoaded[plr.UserId] then
  205.             local a
  206.             repeat
  207.                 a = pcall(function()
  208.                     SaveDS:SetAsync("data2_" .. plr.UserId,tep)
  209.                 end)
  210.                 wait(1)
  211.             until a
  212.             print("Data Saved: " .. plr.Name)
  213.         else
  214.             warn("Didn't save data as it hasn't loaded yet.")
  215.         end
  216.        
  217.     end
  218.    
  219. end
  220.  
  221. function LoadData(plr,fold)
  222.     --local x,y = pcall(function()
  223.     local data = nil
  224.     local j = nil
  225.    
  226.     dataLoaded[plr.UserId] = false
  227.     local INCREMENT = 0
  228.     repeat
  229.         INCREMENT = INCREMENT + 1
  230.         j = pcall(function()
  231.             data = SaveDS:GetAsync("data2_" .. plr.UserId)
  232.         end)
  233.         if INCREMENT > 1 then
  234.             warn("Been loading ",plr.Name,"data for ".. INCREMENT)
  235.         end
  236.         wait(1)
  237.     until j == true
  238.    
  239.     if data == nil then
  240.         warn("GIVING PLAYER NEW DATA ", plr.Name)
  241.         print(plr.Name .. ": New Save")
  242.         local duky = false
  243.         repeat
  244.             duky = pcall(function()
  245.                 SaveDS:SetAsync("data2_" .. plr.UserId,DataTemplate())
  246.             end)
  247.             wait(1)
  248.         until duky
  249.     else
  250.        
  251.         fold.Currency.Coins.Value = data["Currency"]["Coins"]
  252.         fold.Currency.Gems.Value = data["Currency"]["Gems"]
  253.        
  254.         for i = 1,4 do
  255.             fold.Chests["Slot" .. i].Type.Value = data["Chests"]["Slot" .. i]["Type"]
  256.             fold.Chests["Slot" .. i].Open.Value = data["Chests"]["Slot" .. i]["OpenTime"]
  257.         end
  258.        
  259.         fold.Equips.TrailColor.Value = data["Equips"]["TrailCol"]
  260.         fold.Equips.PistolSkin.Value = data["Equips"]["Pistol"]
  261.         fold.Equips.RemingtonSkin.Value = data["Equips"]["Remington"]
  262.         fold.Equips.M14Skin.Value = data["Equips"]["M14"]
  263.         fold.Equips.SniperSkin.Value = data["Equips"]["Sniper"]
  264.         fold.Equips.M4A1Skin.Value = data["Equips"]["M4A1"]
  265.         fold.Equips.AK47Skin.Value = data["Equips"]["AK47"]
  266.         fold.Equips.ScorpionSkin.Value = data["Equips"]["Scorpion"]
  267.         fold.Equips.AxeSkin.Value = data["Equips"]["Axe"]
  268.        
  269.         if data["ShowCase"] then
  270.             fold.ShowCase.Axe.Value = data["ShowCase"]["Axe"]
  271.             fold.ShowCase.Pistol.Value = data["ShowCase"]["Pistol"]
  272.            
  273.             fold.ShowCase.WepShow.Value = data["ShowCase"]["Wep"]
  274.             fold.ShowCase.WepShow.Skin.Value = data["ShowCase"]["Skin"]
  275.         end
  276.        
  277.         if #data["Skins"] > 0 then
  278.             for i,v in pairs(data["Skins"]) do
  279.                 local fo = MakeFolder("Skin",fold.Skins)
  280.                 local skoin = MakeValue("Skin","StringValue",fo,v["Skin"])
  281.                 local wop = MakeValue("Wep","StringValue",fo,v["Wep"])
  282.                 local popos = MakeValue("Copies","IntValue",fo,v["Copies"])
  283.             end
  284.         end
  285.        
  286.         if #data["Trails"] > 0 then
  287.             for i,v in pairs(data["Trails"]) do
  288.                 local wop = MakeValue("Trail","StringValue",fold.Trails,v)
  289.                 if v == "Rainbow" then
  290.                     wop:Destroy()
  291.                 end
  292.             end
  293.         end
  294.        
  295.         if data["TotalWins"] and data["TotalDeaths"] and data["TotalKills"] then
  296.             fold.Totals.TotalWins.Value = data["TotalWins"]
  297.             fold.Totals.TotalDeaths.Value = data["TotalDeaths"]
  298.             fold.Totals.TotalKills.Value = data["TotalKills"]
  299.         end
  300.        
  301.         if data["UsedCodes"] and #data["UsedCodes"] > 0 then
  302.             for i,v in pairs(data["UsedCodes"]) do
  303.                 local code = MakeValue(v,"StringValue",fold.UsedCodes,v)
  304.             end
  305.         end
  306.        
  307.         if data["Colors"] then
  308.            
  309.             fold.Colors.BloodColor.Value = Color3.new(data["Colors"]["Blood"]["R"],data["Colors"]["Blood"]["G"],data["Colors"]["Blood"]["B"])
  310.             fold.Colors.CrosshairColor.Value = Color3.new(data["Colors"]["Crosshair"]["R"],data["Colors"]["Crosshair"]["G"],data["Colors"]["Crosshair"]["B"])
  311.            
  312.         end
  313.        
  314.         if data["Packs"] then
  315.            
  316.             fold.PackGives.HypeBeast.Value = data["Packs"]["HypeBeast"]
  317.            
  318.             if data["Packs"]["Asiimov"] then
  319.                 fold.PackGives.Asiimov.Value = data["Packs"]["Asiimov"]
  320.             end
  321.            
  322.         end
  323.        
  324.         if data["PassOwns"] then
  325.             fold.OwnsPasses.Premium.Value = data["PassOwns"]["Premium"]
  326.             fold.OwnsPasses.Clout.Value = data["PassOwns"]["Clout"]
  327.             fold.OwnsPasses.Rich.Value = data["PassOwns"]["Rich"]
  328.             fold.OwnsPasses.PArena.Value = data["PassOwns"]["PArena"]
  329.         end
  330.        
  331.         if not fold.OwnsPasses.Premium.Value then
  332.             if CheckGamepass(plr,4452183) then
  333.                 local wop = MakeValue("Trail","StringValue",fold.Trails,"Rainbow")
  334.                 fold.OwnsPasses.Premium.Value = true
  335.             end
  336.         end
  337.        
  338.         if not fold.OwnsPasses.Rich.Value then
  339.             if CheckGamepass(plr,4548625) then
  340.                 fold.OwnsPasses.Rich.Value = true
  341.             end
  342.         end
  343.        
  344.         if not fold.OwnsPasses.Clout.Value then
  345.             if CheckGamepass(plr,4464006) then
  346.                 fold.OwnsPasses.Clout.Value = true
  347.             end
  348.         end
  349.        
  350.         if not fold.OwnsPasses.PArena.Value then
  351.             if CheckGamepass(plr,4452228) then
  352.                 fold.OwnsPasses.PArena.Value = true
  353.             end
  354.         end
  355.        
  356.         if not fold.PackGives.Asiimov.Value then
  357.             if CheckGamepass(plr,4583533) then
  358.                 AddAsiimovPack(plr)
  359.             end
  360.         end
  361.        
  362.         if not fold.PackGives.HypeBeast.Value then
  363.             if CheckGamepass(plr,4557001) then
  364.                 AddHypeBeastPack(plr)
  365.             end
  366.         end
  367.        
  368.         plr:LoadCharacter()
  369.        
  370.         --DupedContra(fold)
  371.        
  372.         print("Data loaded: " .. plr.Name)
  373.        
  374.     end
  375.     dataLoaded[plr.UserId] = true
  376. end
  377.  
  378. function MakeData(plr)
  379.    
  380.     local function makeChestSlot(slotNum,fol)
  381.         local f = MakeFolder("Slot" .. slotNum,fol)
  382.         local typ = MakeValue("Type","StringValue",f)
  383.         local open = MakeValue("Open","IntValue",f)
  384.         return f
  385.     end
  386.    
  387.     local det = MakeFolder("Data",plr)
  388.     local chests = MakeFolder("Chests",det)
  389.     local currency = MakeFolder("Currency",det)
  390.     local skins = MakeFolder("Skins",det)
  391.     local trails = MakeFolder("Trails",det)
  392.     local equips = MakeFolder("Equips",det)
  393.     local ign = MakeFolder("InGame",det)
  394.     local shows = MakeFolder("ShowCase",det)
  395.     local totals = MakeFolder("Totals",det)
  396.     local useCodes = MakeFolder("UsedCodes",det)
  397.     local owns = MakeFolder("OwnsPasses",det)
  398.     local Cols = MakeFolder("Colors",det)
  399.     local Packs = MakeFolder("PackGives",det)
  400.    
  401.     local hyp = MakeValue("HypeBeast","BoolValue",Packs,false)
  402.     local asi = MakeValue("Asiimov","BoolValue",Packs,false)
  403.    
  404.     local BlC = MakeValue("BloodColor","Color3Value",Cols,Color3.fromRGB(255,0,0))
  405.     local ChC = MakeValue("CrosshairColor","Color3Value",Cols,Color3.fromRGB(255,255,255))
  406.    
  407.     local BloodCol = MakeValue("BloodColors","BoolValue",owns,false)
  408.     local CrossCol = MakeValue("CrosshairColors","BoolValue",owns,false)
  409.     local Clout = MakeValue("Clout","BoolValue",owns,false)
  410.     local prena = MakeValue("PArena","BoolValue",owns,false)
  411.     local skeeti = MakeValue("Skip","BoolValue",owns,false)
  412.     local Rioch = MakeValue("Rich","BoolValue",owns,false)
  413.     local Prem = MakeValue("Premium","BoolValue",owns,false)
  414.    
  415.     local axeSh = MakeValue("Axe","StringValue",shows,"Default")
  416.     local pistSh = MakeValue("Pistol","StringValue",shows,"Default")
  417.     local wepSh = MakeValue("WepShow","StringValue",shows,"Default")
  418.     local skinSh = MakeValue("Skin","StringValue",wepSh,"Default")
  419.    
  420.     local cskin = MakeFolder("CraftSkin",ign)
  421.     local csel = MakeFolder("CraftSelect",ign)
  422.     local tradeskin = MakeFolder("TradeSkin",ign)
  423.     local prv = MakeValue("PracticeArena","BoolValue",ign,false)
  424.     local coel = MakeValue("Cooldown","BoolValue",prv,false)
  425.    
  426.     for i = 1,5 do
  427.         local xcv = MakeValue("Skin" .. i,"StringValue",csel,"")
  428.         local wloke = MakeValue("Wep","StringValue",xcv,"")
  429.         local lcon = MakeValue("Icon","StringValue",xcv,"")
  430.     end
  431.     local tierd = MakeValue("Tier","StringValue",csel,"")
  432.    
  433.     local s1 = makeChestSlot(1,chests)
  434.     local s2 = makeChestSlot(2,chests)
  435.     local s3 = makeChestSlot(3,chests)
  436.     local s4 = makeChestSlot(4,chests)
  437.    
  438.     local coins = MakeValue("Coins","IntValue",currency,0)
  439.     local gems = MakeValue("Gems","IntValue",currency,0)
  440.    
  441.     local trailCol = MakeValue("TrailColor","StringValue",equips,"Default")
  442.    
  443.     local AxeSkin = MakeValue("AxeSkin","StringValue",equips,"Default")
  444.     local PistolSkin = MakeValue("PistolSkin","StringValue",equips,"Default")
  445.     local ScorpionSkin = MakeValue("ScorpionSkin","StringValue",equips,"Default")
  446.     local SniperSkin = MakeValue("SniperSkin","StringValue",equips,"Default")
  447.     local RemingtonSkin = MakeValue("RemingtonSkin","StringValue",equips,"Default")
  448.     local AK47Skin = MakeValue("AK47Skin","StringValue",equips,"Default")
  449.     local M4A1Skin = MakeValue("M4A1Skin","StringValue",equips,"Default")
  450.     local M14Skin = MakeValue("M14Skin","StringValue",equips,"Default")
  451.    
  452.     local totWins = MakeValue("TotalWins","IntValue",totals,0)
  453.     local totKills = MakeValue("TotalKills","IntValue",totals,0)
  454.     local totDeaths = MakeValue("TotalDeaths","IntValue",totals,0)
  455.    
  456.     LoadData(plr,det)
  457.    
  458. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement