Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local QuickNetwork = require(game.ReplicatedStorage.QuickNetwork)
- local Players = game:GetService("Players")
- local DefaultDataTemplate = {
- -- Basic
- ['FirstTimePlaying'] = true,
- ['HourlyReward'] = tick(),
- ['Bottlecaps'] = 0,
- ['Kills'] = 0,
- ['Deaths'] = 0,
- ["Wishes"] = 0,
- ["FortLevel"] = 1,
- ---- Mission
- --["Mission_Stayin' alive_Completed"] = false,
- --["Mission_King of all_Completed"] = false,
- --["Mission_Demolitionist_Completed"] = false,
- --["Mission_Assassin_Completed"] = false,
- --["Mission_Juiced up_Completed"] = false,
- --["Mission_Winner Winner_Completed"] = false,
- --["Mission_The chosen one_Completed"] = false,
- -- Researches
- ["Research_HeavyThinker_Owned"] = false,
- ["Research_HeavyThinker_Equipped"] = false,
- ["Research_DualStickMicroSMG_Owned"] = false,
- ["Research_DualStickMicroSMG_Equipped"] = false,
- ["Research_Adrenalin_Owned"] = false,
- ["Research_Adrenalin_Equipped"] = false,
- ["Research_Vampirism_Owned"] = false,
- ["Research_Vampirism_Equipped"] = false,
- ["Research_ArmedAndReady_Owned"] = false,
- ["Research_ArmedAndReady_Equipped"] = false,
- ["Research_CantTouchThis_Owned"] = false,
- ["Research_CantTouchThis_Equipped"] = false,
- ["Research_IronHeart_Owned"] = false,
- ["Research_IronHeart_Equipped"] = false,
- ["Research_BigStick_Owned"] = false,
- ["Research_BigStick_Equipped"] = false,
- ["Research_AdvancedTreeShakingMethods_Owned"] = false,
- ["Research_AdvancedTreeShakingMethods_Equipped"] = false,
- ["Research_TreeShakingMethods_Owned"] = false,
- ["Research_TreeShakingMethods_Equipped"] = false,
- ["Research_StickSMG_Owned"] = false,
- ["Research_StickSMG_Equipped"] = false,
- ["Research_DeathFromAbove_Owned"] = false,
- ["Research_DeathFromAbove_Equipped"] = false,
- ["Research_RecoilReductionTactics_Owned"] = false,
- ["Research_RecoilReductionTactics_Equipped"] = false,
- ["Research_DeepPockets_Owned"] = false,
- ["Research_DeepPockets_Equipped"] = false,
- ["Research_DeadMansSwitch_Owned"] = false,
- ["Research_DeadMansSwitch_Equipped"] = false,
- ["Research_Sunglasses_Owned"] = false,
- ["Research_Sunglasses_Equipped"] = false,
- ["Research_MakeshiftESP_Owned"] = false,
- ["Research_MakeshiftESP_Equipped"] = false,
- --KillSounds
- ["KillSound_Default_Owned"] = false,
- ["KillSound_Default_Equipped"] = false,
- ["KillSound_OOF_Owned"] = false,
- ["KillSound_OOF_Equipped"] = false,
- ["KillSound_MinecraftOOF_Owned"] = false,
- ["KillSound_MinecraftOOF_Equipped"] = false,
- ["KillSound_Yoda_Owned"] = false,
- ["KillSound_Yoda_Equipped"] = false,
- ["KillSound_Boom_Owned"] = false,
- ["KillSound_Boom_Equipped"] = false,
- ["KillSound_TacoBell_Owned"] = false,
- ["KillSound_TacoBell_Equipped"] = false,
- ["KillSound_HAAUGH_Owned"] = false,
- ["KillSound_HAAUGH_Equipped"] = false,
- ["KillSound_AmongUs_Owned"] = false,
- ["KillSound_AmongUs_Equipped"] = false,
- ["KillSound_LargeFart_Owned"] = false,
- ["KillSound_LargeFart_Equipped"] = false,
- ["KillSound_Custom_Owned"] = false,
- ["KillSound_Custom_Equipped"] = false,
- --Taunts
- ["Taunt_Clowned_Owned"] = false,
- ["Taunt_Clowned_Equipped"] = false,
- ["Taunt_Yawn_Owned"] = false,
- ["Taunt_Yawn_Equipped"] = false,
- ["Taunt_Hehehehaw_Owned"] = false,
- ["Taunt_Hehehehaw_Equipped"] = false,
- ["Taunt_Trashcan_Owned"] = false,
- ["Taunt_Trashcan_Equipped"] = false,
- --DeathEffects
- ["DeathEffect_Fling_Owned"] = false,
- ["DeathEffect_Fling_Equipped"] = false,
- ["DeathEffect_Pulverize_Owned"] = false,
- ["DeathEffect_Pulverize_Equipped"] = false,
- ["DeathEffect_Explosion_Owned"] = false,
- ["DeathEffect_Explosion_Equipped"] = false,
- ["DeathEffect_Heaven_Owned"] = false,
- ["DeathEffect_Heaven_Equipped"] = false,
- ["DeathEffect_Grave_Owned"] = false,
- ["DeathEffect_Grave_Equipped"] = false,
- ["DeathEffect_Firework_Owned"] = false,
- ["DeathEffect_Firework_Equipped"] = false,
- -- Settings
- ["Aim Assist"] = true,
- ["Aim Sensitivity"] = 50,
- ["Aim Toggle"] = false,
- ["Camera Bobbing"] = false,
- ["Field Of View"] = 70,
- ["Music Volume"] = 50,
- ["Sprint Toggle"] = false,
- }
- local DataNetwork = QuickNetwork.GetDataNetwork("DataNetwork",DefaultDataTemplate)
- DataNetwork.DataCorruptionLoadSignal:Connect(function()
- return "LoadBackup"
- end)
- DataNetwork.DataErrorLoadSignal:Connect(function()
- return "LoadBackup"
- end)
- function SaveData(Player,DataTable)
- local PlayerData = DataNetwork:LoadDataAsync(Player.UserId)
- for Object,Data in pairs(DataTable) do
- PlayerData[Object.."_Owned"] = Data["Owned"]
- PlayerData[Object.."_Equipped"] = Data["Equipped"]
- end
- end
- function CreateTables(DataTable)
- local function get_occurrence_count(s, chr)
- return select(2, s:gsub(chr, ""))
- end
- local DeathEffects = {}
- local KillSounds = {}
- local Taunts = {}
- local Researches = {}
- for Object,Data in pairs(DataTable) do
- if Object:match("Owned") and get_occurrence_count(Object,"_") == 2 then
- local Variable
- local TableType = string.split(Object,"_")[1]
- if TableType == "DeathEffect" then
- Variable = DeathEffects
- elseif TableType == "KillSound" then
- Variable = KillSounds
- elseif TableType == "Taunt" then
- Variable = Taunts
- elseif TableType == "Research" then
- Variable = Researches
- end
- local Name = string.split(Object,"_")[1].."_"..string.split(Object,"_")[2]
- Variable[Name] = {
- ["Owned"] = false,
- ["Equipped"] = false,
- }
- if Data == true then
- Variable[Name]["Owned"] = true
- end
- local String = string.split(Object,"_")[1].."_"..string.split(Object,"_")[2].."_Equipped"
- if DataTable[String] == true then
- Variable[Name]["Equipped"] = true
- end
- end
- end
- return KillSounds, DeathEffects, Taunts, Researches
- end
- function CheckHourlyReward(Player,Time)
- if tick() - Time >= 3600 then
- if Player.PlayerVariables.IsVIP.Value == true then
- spawn(function()
- repeat wait() until Player.PlayerVariables.InMenu.Value == true
- Player.PlayerVariables.Stats.Total.Bottlecaps.Value += 700
- game.ReplicatedStorage.RemoteEvents.GiveHourlyReward:FireClient(Player,700)
- end)
- else
- spawn(function()
- repeat wait() until Player.PlayerVariables.InMenu.Value == true
- Player.PlayerVariables.Stats.Total.Bottlecaps.Value += 300
- game.ReplicatedStorage.RemoteEvents.GiveHourlyReward:FireClient(Player,300)
- end)
- end
- local Data = DataNetwork:LoadDataAsync(Player.UserId)
- Data:Set("HourlyReward", tick())
- end
- end
- local function PlayerAdded(Player)
- spawn(function()
- print("CHECK A | "..Player.Name)
- --print(Player.Name.." Has joined the game. Now loading data")
- local Data = DataNetwork:LoadDataAsync(Player.UserId)
- print("CHECK B | "..Player.Name)
- Data:Reconcile()
- print("CHECK C | "..Player.Name)
- local PlayerVariables = Player:WaitForChild("PlayerVariables")
- print("CHECK D | "..Player.Name)
- --print("Data reconciled. Sifting through data:".." | "..Player.Name)
- --print("--------------------------------------------------")
- for _,Object in pairs(PlayerVariables:GetDescendants()) do
- --print(Object.Name.." | "..Player.Name)
- if not Object:IsA("Folder") and Object.Parent.Name ~= "Current" then
- if DefaultDataTemplate[Object.Name] ~= nil then
- Object.Value = Data[Object.Name]
- Object:GetPropertyChangedSignal("Value"):Connect(function()
- Data:Set(Object.Name, Object.Value)
- end)
- end
- end
- end
- --print("--------------------------------------------------")
- local KillEffects,DeathSounds,Taunts,Researches = CreateTables(Data)
- --print("Tables created!".." | "..Player.Name)
- --print(KillEffects)
- --print(DeathSounds)
- --print(Taunts)
- --print(Researches)
- --print("Sending data to market...")
- game.ReplicatedStorage.RemoteEvents.SetPlayerPurchaseData:Fire(Player,KillEffects,DeathSounds,Taunts,Researches)
- Data:Set("FirstTimePlaying", false)
- --CheckHourlyReward(Player,Data["HourlyReward"])
- end)
- end
- local function PlayerRemoving(Player)
- local Data = DataNetwork:GetCachedData(Player.UserId)
- if Data then
- Data:Clear()
- end
- end
- --spawn(function()
- -- while wait(.5) do
- -- for _,Player in pairs(game.Players:GetChildren()) do
- -- local Data = DataNetwork:LoadDataAsync(Player.UserId)
- -- CheckHourlyReward(Player,Data["HourlyReward"])
- -- end
- -- end
- --end)
- Players.PlayerAdded:Connect(PlayerAdded)
- Players.PlayerRemoving:Connect(PlayerRemoving)
- for _, Player in ipairs(Players:GetPlayers()) do
- coroutine.wrap(PlayerAdded)(Player)
- end
- game.ReplicatedStorage.RemoteEvents.ChangeSetting.OnServerEvent:Connect(function(Player,Setting,Value)
- Player.PlayerVariables.Settings:FindFirstChild(Setting).Value = Value
- end)
- game.ReplicatedStorage.RemoteEvents.Taunts.SaveData.Event:Connect(function(Player,DataTable)
- SaveData(Player,DataTable)
- end)
- game.ReplicatedStorage.RemoteEvents.KillSounds.SaveData.Event:Connect(function(Player,DataTable)
- SaveData(Player,DataTable)
- end)
- game.ReplicatedStorage.RemoteEvents.DeathEffects.SaveData.Event:Connect(function(Player,DataTable)
- SaveData(Player,DataTable)
- end)
- game.ReplicatedStorage.RemoteEvents.Research.SaveData.Event:Connect(function(Player,DataTable)
- SaveData(Player,DataTable)
- end)
- game.ReplicatedStorage.RemoteEvents.Wishes.SaveData.Event:Connect(function(Player,Data)
- local PlayerData = DataNetwork:LoadDataAsync(Player.UserId)
- PlayerData["Wishes"] = Data
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement