--[[ WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk! ]] --- {settings} --- local Keybinds = true local GhostAppearance = true local DisableCollisions = true -------------------------------------------------------------- local Players = game:GetService("Players") local Player = Players.LocalPlayer local Character = Player.Character or Player.CharacterAdded:Wait() local Humanoid = Character:FindFirstChildWhichIsA("Humanoid") local HumanoidRootPart = Character:FindFirstChild("HumanoidRootPart") local HRPOriginalPosition = HumanoidRootPart.CFrame local UserInputService = game:GetService("UserInputService") Character.Archivable = true local Clone = Character:Clone() Clone.Name = Player.Name .. "'s Ghost" Clone.Parent = workspace Character.Archivable = false local CloneHumanoid = Clone:FindFirstChildWhichIsA("Humanoid") CloneHumanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None CloneHumanoid.HealthDisplayType = Humanoid.HealthDisplayType CloneHumanoid.NameOcclusion = Humanoid.NameOcclusion local CloneHumanoidRootPart = Clone:FindFirstChild("HumanoidRootPart") Player.Character = Clone workspace.Camera.CameraSubject = Clone:FindFirstChild(tostring(workspace.Camera.CameraSubject)) workspace.FallenPartsDestroyHeight = 0/0 HumanoidRootPart.CFrame = HumanoidRootPart.CFrame - Vector3.new(0, 50, 0) local SafePart = Instance.new("Part") SafePart.Position = HumanoidRootPart.Position + Vector3.new(0, -2, 0) SafePart.Size = HumanoidRootPart.Size * 2 task.spawn(function() if GhostAppearance then for num, item in Clone:GetDescendants() do if item:IsA("Part") and item.Name ~= "HumanoidRootPart" or item:IsA("MeshPart") and item.Name ~= "HumanoidRootPart" then item.Transparency = 0.5 end end end if DisableCollisions then for num, item in Clone:GetDescendants() do if item:IsA("Part") or item:IsA("MeshPart") then item.CanTouch = false item.CanCollide = false item.CanQuery = false end end end end) task.spawn(function() Clone:WaitForChild("Animate").Enabled = false --task.wait(1) Clone:WaitForChild("Animate").Enabled = true end) local CharacterAdded local CloneHumanoidDied local CheckKeybinds local function Revert(char, clone) Player.Character = char workspace.Camera.CameraSubject = char:FindFirstChild(tostring(workspace.Camera.CameraSubject)) clone:Destroy() end CharacterAdded = Player.CharacterAdded:Connect(function(character) Revert(character, Clone) CharacterAdded:Disconnect() end) CloneHumanoidDied = CloneHumanoid.Died:Connect(function() Revert(Character, Clone) CloneHumanoidDied:Disconnect() end) if Keybinds then CheckKeybinds = UserInputService.InputBegan:Connect(function(input, _gameProcessed) if _gameProcessed then return end if input.KeyCode == Enum.KeyCode.V then HumanoidRootPart.CFrame = CloneHumanoidRootPart.CFrame SafePart:Destroy() Revert(Character, Clone) for num, item in Clone:GetDescendants() do if item:IsA("Part") or item:IsA("MeshPart") then item.CanTouch = true item.CanCollide = true item.CanQuery = true end end CheckKeybinds:Disconnect() elseif input.KeyCode == Enum.KeyCode.G then SafePart:Destroy() Revert(Character, Clone) HumanoidRootPart.CFrame = HRPOriginalPosition for num, item in Clone:GetDescendants() do if item:IsA("Part") or item:IsA("MeshPart") then item.CanTouch = true item.CanCollide = true item.CanQuery = true end end CheckKeybinds:Disconnect() end end) end