Hasli4

Untitled

Apr 19th, 2026
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. -- ServerScriptService > Script
  2. local Players = game:GetService("Players")
  3. local Workspace = game:GetService("Workspace")
  4.  
  5. local KEY_NAME = "Key"
  6.  
  7. local function playerHasKey(player)
  8. local backpack = player:FindFirstChild("Backpack")
  9. local character = player.Character
  10.  
  11. if backpack and backpack:FindFirstChild(KEY_NAME) then
  12. return true
  13. end
  14.  
  15. if character and character:FindFirstChild(KEY_NAME) then
  16. return true
  17. end
  18.  
  19. return false
  20. end
  21.  
  22. local function setupKey(tool)
  23. if not tool:IsA("Tool") then return end
  24. if tool.Name ~= KEY_NAME then return end
  25. if not tool:IsDescendantOf(Workspace) then return end
  26.  
  27. local handle = tool:FindFirstChild("Handle")
  28. if not handle or not handle:IsA("BasePart") then return end
  29.  
  30. if tool:GetAttribute("PickupHooked") then
  31. return
  32. end
  33. tool:SetAttribute("PickupHooked", true)
  34.  
  35. local picked = false
  36.  
  37. handle.Touched:Connect(function(hit)
  38. if picked then return end
  39.  
  40. local character = hit:FindFirstAncestorOfClass("Model")
  41. if not character then return end
  42.  
  43. local player = Players:GetPlayerFromCharacter(character)
  44. if not player then return end
  45.  
  46. picked = true
  47. handle.CanTouch = false
  48.  
  49. if playerHasKey(player) then
  50. tool:Destroy()
  51. return
  52. end
  53.  
  54. local backpack = player:WaitForChild("Backpack")
  55. local clone = tool:Clone()
  56. clone.Parent = backpack
  57. tool:Destroy()
  58. end)
  59. end
  60.  
  61. for _, inst in ipairs(Workspace:GetDescendants()) do
  62. setupKey(inst)
  63. end
  64.  
  65. Workspace.DescendantAdded:Connect(setupKey)
Advertisement
Add Comment
Please, Sign In to add comment