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 )