Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local network = script.Parent.Network
- local character = script:FindFirstAncestorWhichIsA("Model")
- local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
- local humanoid = character:WaitForChild("Humanoid")
- local player = Players:GetPlayerFromCharacter(character)
- local currentObject = nil
- local range = script.Parent.Range.Value
- function canSetNetworkOwnership(part)
- if part.Anchored then
- return false
- end
- local model = part:FindFirstAncestorWhichIsA("Model")
- if model and model:FindFirstChildWhichIsA("Humanoid") then
- return false
- end
- return part:IsDescendantOf(workspace)
- end
- function isWithinRange(object)
- return (object.Position - humanoidRootPart.Position).Magnitude < (range * 1.25 + 5)
- end
- local conn = network.OnServerEvent:Connect(function(firer, object)
- if firer == player then
- if currentObject then
- currentObject:SetNetworkOwnershipAuto()
- end
- currentObject = nil
- if object and object:IsA("BasePart") and isWithinRange(object) and canSetNetworkOwnership(object) then
- currentObject = object
- currentObject:SetNetworkOwner(player)
- end
- end
- end)
- local dstCheck = RunService.Heartbeat:Connect(function()
- if currentObject and ((not isWithinRange(currentObject)) or (not currentObject:IsDescendantOf(workspace))) then
- currentObject:SetNetworkOwnershipAuto()
- currentObject = nil
- end
- end)
- humanoid.Died:Connect(function()
- conn:Disconnect()
- dstCheck:Disconnect()
- if currentObject then
- currentObject:SetNetworkOwnershipAuto()
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement