Advertisement
Guest User

Untitled

a guest
Dec 24th, 2022
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.37 KB | None | 0 0
  1. local QuickNetwork = require(game.ReplicatedStorage.QuickNetwork)
  2. local Players = game:GetService("Players")
  3.  
  4. local DefaultDataTemplate = {
  5.     -- Basic
  6.     ['FirstTimePlaying'] = true,
  7.     ['HourlyReward'] = tick(),
  8.     ['Bottlecaps'] = 0,
  9.     ['Kills'] = 0,
  10.     ['Deaths'] = 0,
  11.     ["Wishes"] = 0,
  12.     ["FortLevel"] = 1,
  13.    
  14.     ---- Mission
  15.     --["Mission_Stayin' alive_Completed"] = false,
  16.     --["Mission_King of all_Completed"] = false,
  17.     --["Mission_Demolitionist_Completed"] = false,
  18.     --["Mission_Assassin_Completed"] = false,
  19.     --["Mission_Juiced up_Completed"] = false,
  20.     --["Mission_Winner Winner_Completed"] = false,
  21.     --["Mission_The chosen one_Completed"] = false,
  22.    
  23.     -- Researches
  24.     ["Research_HeavyThinker_Owned"] = false,
  25.     ["Research_HeavyThinker_Equipped"] = false,
  26.     ["Research_DualStickMicroSMG_Owned"] = false,
  27.     ["Research_DualStickMicroSMG_Equipped"] = false,
  28.     ["Research_Adrenalin_Owned"] = false,
  29.     ["Research_Adrenalin_Equipped"] = false,
  30.     ["Research_Vampirism_Owned"] = false,
  31.     ["Research_Vampirism_Equipped"] = false,
  32.     ["Research_ArmedAndReady_Owned"] = false,
  33.     ["Research_ArmedAndReady_Equipped"] = false,
  34.     ["Research_CantTouchThis_Owned"] = false,
  35.     ["Research_CantTouchThis_Equipped"] = false,
  36.     ["Research_IronHeart_Owned"] = false,
  37.     ["Research_IronHeart_Equipped"] = false,
  38.     ["Research_BigStick_Owned"] = false,
  39.     ["Research_BigStick_Equipped"] = false,
  40.     ["Research_AdvancedTreeShakingMethods_Owned"] = false,
  41.     ["Research_AdvancedTreeShakingMethods_Equipped"] = false,
  42.     ["Research_TreeShakingMethods_Owned"] = false,
  43.     ["Research_TreeShakingMethods_Equipped"] = false,
  44.     ["Research_StickSMG_Owned"] = false,
  45.     ["Research_StickSMG_Equipped"] = false,
  46.     ["Research_DeathFromAbove_Owned"] = false,
  47.     ["Research_DeathFromAbove_Equipped"] = false,
  48.     ["Research_RecoilReductionTactics_Owned"] = false,
  49.     ["Research_RecoilReductionTactics_Equipped"] = false,
  50.     ["Research_DeepPockets_Owned"] = false,
  51.     ["Research_DeepPockets_Equipped"] = false,
  52.     ["Research_DeadMansSwitch_Owned"] = false,
  53.     ["Research_DeadMansSwitch_Equipped"] = false,
  54.     ["Research_Sunglasses_Owned"] = false,
  55.     ["Research_Sunglasses_Equipped"] = false,
  56.     ["Research_MakeshiftESP_Owned"] = false,
  57.     ["Research_MakeshiftESP_Equipped"] = false,
  58.     --KillSounds
  59.     ["KillSound_Default_Owned"] = false,
  60.     ["KillSound_Default_Equipped"] = false,
  61.     ["KillSound_OOF_Owned"] = false,
  62.     ["KillSound_OOF_Equipped"] = false,
  63.     ["KillSound_MinecraftOOF_Owned"] = false,
  64.     ["KillSound_MinecraftOOF_Equipped"] = false,
  65.     ["KillSound_Yoda_Owned"] = false,
  66.     ["KillSound_Yoda_Equipped"] = false,
  67.     ["KillSound_Boom_Owned"] = false,
  68.     ["KillSound_Boom_Equipped"] = false,
  69.     ["KillSound_TacoBell_Owned"] = false,
  70.     ["KillSound_TacoBell_Equipped"] = false,
  71.     ["KillSound_HAAUGH_Owned"] = false,
  72.     ["KillSound_HAAUGH_Equipped"] = false,
  73.     ["KillSound_AmongUs_Owned"] = false,
  74.     ["KillSound_AmongUs_Equipped"] = false,
  75.     ["KillSound_LargeFart_Owned"] = false,
  76.     ["KillSound_LargeFart_Equipped"] = false,
  77.     ["KillSound_Custom_Owned"] = false,
  78.     ["KillSound_Custom_Equipped"] = false,
  79.     --Taunts
  80.     ["Taunt_Clowned_Owned"] = false,
  81.     ["Taunt_Clowned_Equipped"] = false,
  82.     ["Taunt_Yawn_Owned"] = false,
  83.     ["Taunt_Yawn_Equipped"] = false,
  84.     ["Taunt_Hehehehaw_Owned"] = false,
  85.     ["Taunt_Hehehehaw_Equipped"] = false,
  86.     ["Taunt_Trashcan_Owned"] = false,
  87.     ["Taunt_Trashcan_Equipped"] = false,
  88.     --DeathEffects
  89.     ["DeathEffect_Fling_Owned"] = false,
  90.     ["DeathEffect_Fling_Equipped"] = false,
  91.     ["DeathEffect_Pulverize_Owned"] = false,
  92.     ["DeathEffect_Pulverize_Equipped"] = false,
  93.     ["DeathEffect_Explosion_Owned"] = false,
  94.     ["DeathEffect_Explosion_Equipped"] = false,
  95.     ["DeathEffect_Heaven_Owned"] = false,
  96.     ["DeathEffect_Heaven_Equipped"] = false,
  97.     ["DeathEffect_Grave_Owned"] = false,
  98.     ["DeathEffect_Grave_Equipped"] = false,
  99.     ["DeathEffect_Firework_Owned"] = false,
  100.     ["DeathEffect_Firework_Equipped"] = false,
  101.     -- Settings
  102.     ["Aim Assist"] = true,
  103.     ["Aim Sensitivity"] = 50,
  104.     ["Aim Toggle"] = false,
  105.     ["Camera Bobbing"] = false,
  106.     ["Field Of View"] = 70,
  107.     ["Music Volume"] = 50,
  108.     ["Sprint Toggle"] = false,
  109. }
  110.  
  111. local DataNetwork = QuickNetwork.GetDataNetwork("DataNetwork",DefaultDataTemplate)
  112.  
  113. DataNetwork.DataCorruptionLoadSignal:Connect(function()
  114.     return "LoadBackup"
  115. end)
  116.  
  117. DataNetwork.DataErrorLoadSignal:Connect(function()
  118.     return "LoadBackup"
  119. end)
  120.  
  121. function SaveData(Player,DataTable)
  122.  
  123.     local PlayerData = DataNetwork:LoadDataAsync(Player.UserId)
  124.  
  125.     for Object,Data in pairs(DataTable) do
  126.         PlayerData[Object.."_Owned"] = Data["Owned"]
  127.         PlayerData[Object.."_Equipped"] = Data["Equipped"]
  128.     end
  129. end
  130.  
  131.  
  132. function CreateTables(DataTable)
  133.    
  134.     local function get_occurrence_count(s, chr)
  135.         return select(2, s:gsub(chr, ""))
  136.     end
  137.    
  138.     local DeathEffects = {}
  139.     local KillSounds = {}
  140.     local Taunts = {}
  141.     local Researches = {}
  142.    
  143.     for Object,Data in pairs(DataTable) do
  144.         if Object:match("Owned") and get_occurrence_count(Object,"_") == 2 then
  145.            
  146.             local Variable
  147.            
  148.             local TableType = string.split(Object,"_")[1]
  149.            
  150.             if TableType == "DeathEffect" then
  151.                 Variable = DeathEffects
  152.             elseif TableType == "KillSound" then
  153.                 Variable = KillSounds
  154.             elseif TableType == "Taunt" then
  155.                 Variable = Taunts
  156.             elseif TableType == "Research" then
  157.                 Variable = Researches
  158.             end
  159.            
  160.             local Name = string.split(Object,"_")[1].."_"..string.split(Object,"_")[2]
  161.            
  162.             Variable[Name] = {
  163.                 ["Owned"] = false,
  164.                 ["Equipped"] = false,
  165.             }
  166.  
  167.             if Data == true then
  168.                 Variable[Name]["Owned"] = true
  169.             end
  170.            
  171.             local String = string.split(Object,"_")[1].."_"..string.split(Object,"_")[2].."_Equipped"
  172.  
  173.             if DataTable[String] == true then
  174.                 Variable[Name]["Equipped"] = true
  175.             end
  176.         end
  177.     end
  178.    
  179.     return KillSounds, DeathEffects, Taunts, Researches
  180. end
  181.  
  182. function CheckHourlyReward(Player,Time)
  183.     if tick() - Time >= 3600 then
  184.        
  185.         if Player.PlayerVariables.IsVIP.Value == true then
  186.             spawn(function()
  187.  
  188.                 repeat wait() until Player.PlayerVariables.InMenu.Value == true
  189.  
  190.                 Player.PlayerVariables.Stats.Total.Bottlecaps.Value += 700
  191.  
  192.                 game.ReplicatedStorage.RemoteEvents.GiveHourlyReward:FireClient(Player,700)
  193.             end)
  194.         else
  195.             spawn(function()
  196.  
  197.                 repeat wait() until Player.PlayerVariables.InMenu.Value == true
  198.  
  199.                 Player.PlayerVariables.Stats.Total.Bottlecaps.Value += 300
  200.  
  201.                 game.ReplicatedStorage.RemoteEvents.GiveHourlyReward:FireClient(Player,300)
  202.             end)
  203.         end
  204.        
  205.         local Data = DataNetwork:LoadDataAsync(Player.UserId)
  206.        
  207.         Data:Set("HourlyReward", tick())
  208.     end
  209. end
  210.  
  211. local function PlayerAdded(Player)
  212.     spawn(function()
  213.  
  214.         print("CHECK A | "..Player.Name)
  215.  
  216.         --print(Player.Name.." Has joined the game. Now loading data")
  217.  
  218.         local Data = DataNetwork:LoadDataAsync(Player.UserId)
  219.  
  220.         print("CHECK B | "..Player.Name)
  221.  
  222.         Data:Reconcile()
  223.  
  224.         print("CHECK C | "..Player.Name)
  225.  
  226.         local PlayerVariables = Player:WaitForChild("PlayerVariables")
  227.  
  228.         print("CHECK D | "..Player.Name)
  229.  
  230.         --print("Data reconciled. Sifting through data:".." | "..Player.Name)
  231.         --print("--------------------------------------------------")
  232.  
  233.         for _,Object in pairs(PlayerVariables:GetDescendants()) do
  234.  
  235.             --print(Object.Name.." | "..Player.Name)
  236.  
  237.             if not Object:IsA("Folder") and Object.Parent.Name ~= "Current" then
  238.                 if DefaultDataTemplate[Object.Name] ~= nil then
  239.  
  240.                     Object.Value = Data[Object.Name]
  241.  
  242.                     Object:GetPropertyChangedSignal("Value"):Connect(function()
  243.                         Data:Set(Object.Name, Object.Value)
  244.                     end)
  245.                 end
  246.             end
  247.         end
  248.  
  249.         --print("--------------------------------------------------")
  250.  
  251.         local KillEffects,DeathSounds,Taunts,Researches = CreateTables(Data)
  252.  
  253.         --print("Tables created!".." | "..Player.Name)
  254.         --print(KillEffects)
  255.         --print(DeathSounds)
  256.         --print(Taunts)
  257.         --print(Researches)
  258.  
  259.         --print("Sending data to market...")
  260.  
  261.         game.ReplicatedStorage.RemoteEvents.SetPlayerPurchaseData:Fire(Player,KillEffects,DeathSounds,Taunts,Researches)
  262.  
  263.         Data:Set("FirstTimePlaying", false)
  264.  
  265.         --CheckHourlyReward(Player,Data["HourlyReward"])
  266.     end)
  267. end
  268.  
  269. local function PlayerRemoving(Player)
  270.    
  271.     local Data = DataNetwork:GetCachedData(Player.UserId)
  272.  
  273.     if Data then
  274.         Data:Clear()
  275.     end
  276. end
  277.  
  278. --spawn(function()
  279. --  while wait(.5) do
  280. --      for _,Player in pairs(game.Players:GetChildren()) do
  281.            
  282. --          local Data = DataNetwork:LoadDataAsync(Player.UserId)
  283.            
  284. --          CheckHourlyReward(Player,Data["HourlyReward"])
  285. --      end
  286. --  end
  287. --end)
  288.  
  289. Players.PlayerAdded:Connect(PlayerAdded)
  290. Players.PlayerRemoving:Connect(PlayerRemoving)
  291.  
  292. for _, Player in ipairs(Players:GetPlayers()) do
  293.     coroutine.wrap(PlayerAdded)(Player)
  294. end
  295.  
  296. game.ReplicatedStorage.RemoteEvents.ChangeSetting.OnServerEvent:Connect(function(Player,Setting,Value)
  297.     Player.PlayerVariables.Settings:FindFirstChild(Setting).Value = Value
  298. end)
  299.  
  300. game.ReplicatedStorage.RemoteEvents.Taunts.SaveData.Event:Connect(function(Player,DataTable)
  301.     SaveData(Player,DataTable)
  302. end)
  303. game.ReplicatedStorage.RemoteEvents.KillSounds.SaveData.Event:Connect(function(Player,DataTable)
  304.     SaveData(Player,DataTable)
  305. end)
  306. game.ReplicatedStorage.RemoteEvents.DeathEffects.SaveData.Event:Connect(function(Player,DataTable)
  307.     SaveData(Player,DataTable)
  308. end)
  309. game.ReplicatedStorage.RemoteEvents.Research.SaveData.Event:Connect(function(Player,DataTable)
  310.     SaveData(Player,DataTable)
  311. end)
  312.  
  313. game.ReplicatedStorage.RemoteEvents.Wishes.SaveData.Event:Connect(function(Player,Data)
  314.    
  315.     local PlayerData = DataNetwork:LoadDataAsync(Player.UserId)
  316.    
  317.     PlayerData["Wishes"] = Data
  318. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement