Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local offset = 1100
- local invisible = game.Players.LocalPlayer
- local grips = {}
- local heldTool
- local gripChanged
- local handle
- local weld
- function setDisplayDistance(distance)
- for _, player in pairs(game.Players:GetPlayers()) do
- if player.Character and player.Character:FindFirstChildWhichIsA("Humanoid") then
- player.Character:FindFirstChildWhichIsA("Humanoid").NameDisplayDistance = distance
- player.Character:FindFirstChildWhichIsA("Humanoid").HealthDisplayDistance = distance
- end
- end
- end
- local tool = Instance.new("Tool", game.Players.LocalPlayer.Backpack)
- tool.Name = "Invisible"
- tool.RequiresHandle = false
- tool.CanBeDropped = false
- tool.Equipped:Connect(
- function()
- wait()
- if not invisible then
- invisible = true
- tool.Name = "Enabled Invisible"
- if handle then
- handle:Destroy()
- end
- if weld then
- weld:Destroy()
- end
- handle = Instance.new("Part", workspace)
- handle.Name = "Handle"
- handle.Transparency = 1
- handle.CanCollide = false
- handle.Size = Vector3.new(2, 1, 1)
- weld = Instance.new("Weld", handle)
- weld.Part0 = handle
- weld.Part1 = game.Players.LocalPlayer.Character.HumanoidRootPart
- weld.C0 = CFrame.new(0, offset - 1.5, 0)
- setDisplayDistance(offset + 100)
- workspace.CurrentCamera.CameraSubject = handle
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame * CFrame.new(0, offset, 0)
- game.Players.LocalPlayer.Character.Humanoid.HipHeight = offset
- game.Players.LocalPlayer.Character.Humanoid:ChangeState(11)
- for _, child in pairs(game.Players.LocalPlayer.Backpack:GetChildren()) do
- if child:IsA("Tool") and child ~= tool then
- grips[child] = child.Grip
- end
- end
- elseif invisible then
- invisible = false
- tool.Name = "Disabled Invisible"
- if handle then
- handle:Destroy()
- end
- if weld then
- weld:Destroy()
- end
- for _, child in pairs(game.Players.LocalPlayer.Character:GetChildren()) do
- if child:IsA("Tool") then
- child.Parent = game.Players.LocalPlayer.Backpack
- end
- end
- for tool, grip in pairs(grips) do
- if tool then
- tool.Grip = grip
- end
- end
- heldTool = nil
- setDisplayDistance(100)
- workspace.CurrentCamera.CameraSubject = game.Players.LocalPlayer.Character.Humanoid
- game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame * CFrame.new(0, -offset, 0)
- game.Players.LocalPlayer.Character.Humanoid.HipHeight = 0
- end
- tool.Parent = game.Players.LocalPlayer.Backpack
- end
- )
- game.Players.LocalPlayer.Character.ChildAdded:Connect(
- function(child)
- wait()
- if invisible and child:IsA("Tool") and child ~= heldTool and child ~= tool then
- heldTool = child
- local lastGrip = heldTool.Grip
- if not grips[heldTool] then
- grips[heldTool] = lastGrip
- end
- for _, track in pairs(game.Players.LocalPlayer.Character.Humanoid:GetPlayingAnimationTracks()) do
- track:Stop()
- end
- game.Players.LocalPlayer.Character.Animate.Disabled = true
- heldTool.Grip = heldTool.Grip * (CFrame.new(0, offset - 1.5, 1.5) * CFrame.Angles(math.rad(-90), 0, 0))
- heldTool.Parent = game.Players.LocalPlayer.Backpack
- heldTool.Parent = game.Players.LocalPlayer.Character
- if gripChanged then
- gripChanged:Disconnect()
- end
- gripChanged =
- heldTool:GetPropertyChangedSignal("Grip"):Connect(
- function()
- wait()
- if not invisible then
- gripChanged:Disconnect()
- end
- if heldTool.Grip ~= lastGrip then
- lastGrip =
- heldTool.Grip * (CFrame.new(0, offset - 1.5, 1.5) * CFrame.Angles(math.rad(-90), 0, 0))
- heldTool.Grip = lastGrip
- heldTool.Parent = game.Players.LocalPlayer.Backpack
- heldTool.Parent = game.Players.LocalPlayer.Character
- end
- end
- )
- end
- end
- )
Add Comment
Please, Sign In to add comment