Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- ServerScriptService > Script
- local Players = game:GetService("Players")
- local Workspace = game:GetService("Workspace")
- local KEY_NAME = "Key"
- local function playerHasKey(player)
- local backpack = player:FindFirstChild("Backpack")
- local character = player.Character
- if backpack and backpack:FindFirstChild(KEY_NAME) then
- return true
- end
- if character and character:FindFirstChild(KEY_NAME) then
- return true
- end
- return false
- end
- local function setupKey(tool)
- if not tool:IsA("Tool") then return end
- if tool.Name ~= KEY_NAME then return end
- if not tool:IsDescendantOf(Workspace) then return end
- local handle = tool:FindFirstChild("Handle")
- if not handle or not handle:IsA("BasePart") then return end
- if tool:GetAttribute("PickupHooked") then
- return
- end
- tool:SetAttribute("PickupHooked", true)
- local picked = false
- handle.Touched:Connect(function(hit)
- if picked then return end
- local character = hit:FindFirstAncestorOfClass("Model")
- if not character then return end
- local player = Players:GetPlayerFromCharacter(character)
- if not player then return end
- picked = true
- handle.CanTouch = false
- if playerHasKey(player) then
- tool:Destroy()
- return
- end
- local backpack = player:WaitForChild("Backpack")
- local clone = tool:Clone()
- clone.Parent = backpack
- tool:Destroy()
- end)
- end
- for _, inst in ipairs(Workspace:GetDescendants()) do
- setupKey(inst)
- end
- Workspace.DescendantAdded:Connect(setupKey)
Advertisement
Add Comment
Please, Sign In to add comment