Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. local rs = game:GetService("ReplicatedStorage")
  2. local ds = game:GetService("DataStoreService")
  3. local store = ds:GetDataStore("saveStore")
  4. local library = rs:WaitForChild("Library")
  5.  
  6. --< directory functions
  7.  
  8. local dir = {}
  9.  
  10. local function edit(player, list)
  11. dir[player.Name] = list
  12. end
  13.  
  14. local function setup(player, list)
  15. for i = 1, #list do
  16. local tool = library:FindFirstChild(list[i])
  17. if tool then
  18. local clone = tool:Clone()
  19. clone.Parent = player.Backpack
  20. else
  21. print(list[i] .. " not found")
  22. end
  23. end
  24. end
  25.  
  26. --< player events
  27.  
  28. game.Players.PlayerAdded:connect(function(player)
  29.  
  30. local ready = false
  31.  
  32. player.CharacterAdded:connect(function(char)
  33.  
  34. local bp = player.Backpack
  35. local data = nil
  36.  
  37. if ready == false then
  38. ready = true
  39.  
  40. data = store:GetAsync(player.UserId)
  41.  
  42. if data then
  43. setup(player, data)
  44. edit(player, data)
  45. end
  46. end
  47.  
  48. char.Humanoid.Died:connect(function()
  49. char.Humanoid:UnequipTools()
  50.  
  51. local old = player.StarterGear:GetChildren()
  52. for i = 1, #old do
  53. old[i]:Destroy()
  54. end
  55.  
  56. local new = player.Backpack:GetChildren()
  57. for i = 1, #new do
  58. new[i].Parent = player.StarterGear
  59. end
  60. end)
  61.  
  62. --< adjuster
  63.  
  64. local count = 0
  65.  
  66. local function adjust()
  67.  
  68. if char.Humanoid.Health > 0 then
  69.  
  70. local list = {}
  71.  
  72. local equipped = char:FindFirstChildOfClass("Tool")
  73. if equipped then
  74. table.insert(list, equipped.Name)
  75. end
  76.  
  77. local tools = bp:GetChildren()
  78. for i = 1, #tools do
  79. table.insert(list, tools[i].Name)
  80. end
  81.  
  82. if count ~= #list then
  83. edit(player, list)
  84. count = #list
  85. end
  86. end
  87. end
  88.  
  89. --< child events
  90.  
  91. bp.ChildAdded:connect(adjust)
  92. bp.ChildRemoved:connect(adjust)
  93.  
  94. char.ChildAdded:connect(function(child)
  95. if child.ClassName == "Tool" then
  96. adjust()
  97. end
  98. end)
  99.  
  100. char.ChildRemoved:connect(function(child)
  101. if child.ClassName == "Tool" then
  102. adjust()
  103. end
  104. end)
  105.  
  106. end)
  107. end)
  108.  
  109. game.Players.PlayerRemoving:connect(function(player)
  110. store:SetAsync(player.UserId, dir[player.Name])
  111. dir[player.Name] = nil
  112. end)
  113.  
  114. --< safety
  115.  
  116. game:BindToClose(function()
  117. wait(5)
  118. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement