Guest User

Tool Persistence

a guest
Mar 31st, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.36 KB | None | 0 0
  1. local DataStoreService = game:GetService("DataStoreService")
  2. local ToolData = DataStoreService:GetDataStore("ToolSave")
  3.  
  4. local ServerStorage = game:GetService("ServerStorage")
  5. local Players = game:GetService("Players")
  6.  
  7. local function GiveSavedTools(Player)
  8.     if not (Player) then return end
  9.     local SavedTools
  10.     local Success = pcall(function()
  11.         SavedTools = ToolData:GetAsync(Player.UserId)
  12.     end)
  13.     if (Success and SavedTools) then
  14.         for _,Tool in pairs(SavedTools) do
  15.             local Tool = ServerStorage.Tools:FindFirstChild(Tool)
  16.             if (Tool) then
  17.                 Tool:Clone().Parent = Player:WaitForChild("Backpack")
  18.                 Tool:Clone().Parent = Player:WaitForChild("StarterGear")
  19.             end
  20.         end
  21.     end
  22.     Player.CharacterRemoving:Connect(function(Character)
  23.         local Humanoid = Character:FindFirstChildOfClass("Humanoid")
  24.         if (Humanoid) then
  25.             Humanoid:UnequipTools()
  26.         end
  27.     end)
  28. end
  29.  
  30. local function SaveTools(Player)
  31.     if not (Player) then return end
  32.     local Backpack = Player:WaitForChild("Backpack")
  33.     pcall(function()
  34.         local ToolsToSave = {}
  35.         for _,Tool in pairs(Backpack:GetChildren()) do
  36.             if (Tool:IsA("Tool")) then
  37.                 table.insert(ToolsToSave, Tool.Name)
  38.             end
  39.         end
  40.         if (#ToolsToSave < 1) then return end
  41.         ToolData:SetAsync(Player.UserId, ToolsToSave)
  42.     end)
  43. end
  44.  
  45. Players.PlayerAdded:Connect(GiveSavedTools)
  46. Players.PlayerRemoving:Connect(SaveTools)
Add Comment
Please, Sign In to add comment