hold character [tool]

Run Settings
LanguageLua
Language Version
Run Command
local plr = owner local char = plr.Character local hum = char:FindFirstChildOfClass("Humanoid") local root = char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso") local bp = plr.Backpack local tool = Instance.new("Tool") tool.Name = 'Hold Character' tool.ToolTip = 'Click with arm on someone to capture!' tool.CanBeDropped = false tool.Parent = bp local h = Instance.new("Part") h.Name = 'Handle' h.Size = Vector3.new(2,6,2) h.Transparency = 1 h.Anchored = false h.Massless = true h.CanCollide = false h.Parent = tool local network_loop,char_loop,captured function is_captured() if captured and captured[1] and captured[2] and captured[3] and captured[2].Parent then return true end end function release() if captured then else tool.Name = 'Hold [N/A]' captured = nil return end if captured[1] then captured[1]:Destroy() end if captured[3] then captured[3].PlatformStand = false end local nl = network_loop ~= nil if network_loop then network_loop:Disconnect() network_loop = nil end if char_loop then char_loop:Disconnect() char_loop = nil end if captured[2] and captured[2].Parent then for i,v in pairs(captured[2]:GetDescendants()) do if v:IsA("BasePart") then if nl and v.Parent == captured[2] then v:SetNetworkOwnershipAuto() end v.CollisionGroupId = 0 v.Massless = false end end end tool.Name = 'Hold [N/A]' captured = nil end function perish() if is_captured() then else return end end function throw() if is_captured() then else return end local tchar = captured[2] local troot = tchar:FindFirstChild("HumanoidRootPart") or tchar:FindFirstChild("Torso") or tchar:FindFirstChild("UpperTorso") release() local bv = Instance.new("BodyVelocity") bv.MaxForce = Vector3.new(1/0,1/0,1/0) bv.Velocity = root.CFrame.LookVector*100+Vector3.new(0,7,0) bv.Parent = troot game:GetService("Debris"):AddItem(bv,0.2) end function unequip(thum) --thum:UnequipTools() end tool.Unequipped:Connect(function() release() end) local r = Instance.new("RemoteEvent") r.Parent = char r.OnServerEvent:Connect(function(lplr,key) if lplr == plr then else return end if key == Enum.KeyCode.Q then perish() elseif key == Enum.KeyCode.E then throw() end end) NLS([[ local plr = game:GetService("Players").LocalPlayer local r = script.Parent local uis = game:GetService("UserInputService") uis.InputBegan:Connect(function(input,gp) if gp then return end if input.UserInputType == Enum.UserInputType.Keyboard then local key = input.KeyCode r:FireServer(key) end end) ]],r) tool.Activated:Connect(function() if hum and hum.PlatformStand then return end local olp = OverlapParams.new() olp.MaxParts = 0 olp.FilterType = Enum.RaycastFilterType.Exclude olp.FilterDescendantsInstances = {char,tool} if captured then release() return end local p = workspace:GetPartBoundsInBox(h.CFrame,h.Size,olp) for i,v in ipairs(p) do local tchar = v:FindFirstAncestorOfClass("Model") if tchar then else continue end local tplr = game:GetService("Players"):GetPlayerFromCharacter(tchar) local thum = tchar:FindFirstChildOfClass("Humanoid") local troot = tchar:FindFirstChild("HumanoidRootPart") or tchar:FindFirstChild("Torso") or tchar:FindFirstChild("UpperTorso") if thum and thum.Health > 0 and troot then else continue end thum:ChangeState(Enum.HumanoidStateType.GettingUp) thum.PlatformStand = true local weld = Instance.new("Weld") weld.Part0 = h weld.Part1 = troot weld.Parent = h for i,v in ipairs(tchar:GetDescendants()) do if v:IsA("BasePart") then if v.Parent == tchar then v:SetNetworkOwner(plr) end v.Massless = true end end if tplr then local tbp = tplr:FindFirstChildOfClass("Backpack") for i,o in pairs(tchar:GetChildren()) do if o:IsA("Tool") then unequip(thum) end end char_loop = tchar.ChildAdded:Connect(function(o) if o:IsA("Tool") then unequip(thum) end end) network_loop = game:GetService("RunService").Heartbeat:Connect(function() if tchar and tchar.Parent and plr and weld and weld.Parent and thum and thum.PlatformStand then else char_loop:Disconnect() network_loop:Disconnect() network_loop = nil char_loop = nil release() return end unequip(thum) end) end tool.Name = tchar.Name captured = {weld,tchar,thum} break end end)
Editor Settings
Theme
Key bindings
Full width
Lines