local Player = game:GetService("Players").LocalPlayer local Mouse = Player:GetMouse() local Camera = workspace.CurrentCamera local TS = game:GetService("TweenService") local UIS = game:GetService("UserInputService") -- The Vault: Keeps parts alive so Roblox doesn't delete them local Vault = game:GetService("RobloxReplicatedStorage"):FindFirstChild("EraserVault") if not Vault then Vault = Instance.new("Folder") Vault.Name = "EraserVault" Vault.Parent = game:GetService("RobloxReplicatedStorage") end if _G.EraserMemory == nil then _G.EraserMemory = {} end local Debris = _G.EraserMemory local KillKeywords = { "kill", "lava", "dead", "hurt", "death", "damage", "hazard", "spikes", "acid", "toxic", "poison", "trap", "void", "insta", "hitbox", "touch", "dmg", "danger", "fire", "flame", "beam" } local function GetHui() if gethui then return gethui() end if game:GetService("CoreGui"):FindFirstChild("RobloxGui") then return game:GetService("CoreGui") end return Player:WaitForChild("PlayerGui") end local ScreenGui = GetHui():FindFirstChild("ERASER_UI") or Instance.new("ScreenGui", GetHui()) ScreenGui.Name = "ERASER_UI" ScreenGui.ResetOnSpawn = false local MainFrame = ScreenGui:FindFirstChild("Main") or Instance.new("Frame", ScreenGui) MainFrame.Name = "Main" Instance.new("UICorner", MainFrame) local Title = MainFrame:FindFirstChild("Title") or Instance.new("Frame", MainFrame) Title.Name = "Title" Instance.new("UICorner", Title) local TitleText = Title:FindFirstChild("TText") or Instance.new("TextLabel", Title) TitleText.Name = "TText" local Minimize = Title:FindFirstChild("Minimize") or Instance.new("TextButton", Title) Minimize.Name = "Minimize" local Scroll = MainFrame:FindFirstChild("Scroll") or Instance.new("ScrollingFrame", MainFrame) Scroll.Name = "Scroll" local Layout = Scroll:FindFirstChild("Layout") or Instance.new("UIListLayout", Scroll) Layout.Name = "Layout" local ToggleBtn = ScreenGui:FindFirstChild("Toggle") or Instance.new("TextButton", ScreenGui) ToggleBtn.Name = "Toggle" Instance.new("UICorner", ToggleBtn) MainFrame.Size = UDim2.new(0, 220, 0, 280) MainFrame.Position = UDim2.new(0.5, -110, 0.5, -140) MainFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 28) MainFrame.BackgroundTransparency = 0.25 MainFrame.Active = true Title.Size = UDim2.new(1, 0, 0, 35) Title.BackgroundColor3 = Color3.fromRGB(33, 33, 33) Title.BackgroundTransparency = 0.25 Title.Active = true TitleText.Size = UDim2.new(1, -40, 1, 0) TitleText.Position = UDim2.new(0, 10, 0, 0) TitleText.BackgroundTransparency = 1 TitleText.Text = "ERASER LOG" TitleText.TextColor3 = Color3.new(1, 1, 1) TitleText.Font = Enum.Font.GothamBold TitleText.TextSize = 14 TitleText.TextXAlignment = Enum.TextXAlignment.Left Minimize.Size = UDim2.new(0, 30, 0, 30) Minimize.Position = UDim2.new(1, -32, 0, 2) Minimize.BackgroundTransparency = 1 Minimize.Text = "-" Minimize.TextColor3 = Color3.new(1, 1, 1) Minimize.TextSize = 20 Scroll.Size = UDim2.new(1, -10, 1, -45) Scroll.Position = UDim2.new(0, 5, 0, 40) Scroll.BackgroundTransparency = 1 Scroll.ScrollBarThickness = 0 Scroll.AutomaticCanvasSize = Enum.AutomaticSize.Y Layout.Padding = UDim.new(0, 5) ToggleBtn.Size = UDim2.new(0, 50, 0, 50) ToggleBtn.Position = UDim2.new(0, 20, 0.5, -25) ToggleBtn.BackgroundColor3 = Color3.fromRGB(33, 33, 33) ToggleBtn.BackgroundTransparency = 0.25 ToggleBtn.Text = "E" ToggleBtn.TextColor3 = Color3.new(1, 1, 1) ToggleBtn.Visible = false ToggleBtn.Active = true local function Fade(frame, state) local info = TweenInfo.new(0.3, Enum.EasingStyle.Quart, Enum.EasingDirection.Out) if state then frame.Visible = true end TS:Create(frame, info, {BackgroundTransparency = state and 0.25 or 1}):Play() TS:Create(Title, info, {BackgroundTransparency = state and 0.25 or 1}):Play() for _, child in pairs(frame:GetDescendants()) do if child:IsA("TextLabel") or child:IsA("TextButton") then TS:Create(child, info, {TextTransparency = state and 0 or 1}):Play() if child.Name ~= "Minimize" and child:IsA("TextButton") then TS:Create(child, info, {BackgroundTransparency = state and 0 or 1}):Play() end end end if not state then task.delay(0.3, function() frame.Visible = false end) end end local function MakeDraggable(dragArea, moveTarget) local dragging, dragInput, dragStart, startPos dragArea.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = moveTarget.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UIS.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local delta = input.Position - dragStart moveTarget.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) end MakeDraggable(Title, MainFrame) MakeDraggable(ToggleBtn, ToggleBtn) Minimize.MouseButton1Click:Connect(function() Fade(MainFrame, false) ToggleBtn.Visible = true end) ToggleBtn.MouseButton1Click:Connect(function() ToggleBtn.Visible = false Fade(MainFrame, true) end) local function GiveTool() local ToolName = "Eraser_Fix" if Player.Backpack:FindFirstChild(ToolName) or (Player.Character and Player.Character:FindFirstChild(ToolName)) then return end local Tool = Instance.new("Tool") Tool.Name = ToolName Tool.RequiresHandle = true local Handle = Instance.new("Part") Handle.Name = "Handle" Handle.Size = Vector3.new(0.2, 1.5, 0.2) Handle.Color = Color3.fromRGB(255, 0, 0) Handle.Material = Enum.Material.Neon Handle.CanCollide = false Handle.Parent = Tool Tool.Activated:Connect(function() local ray = Camera:ScreenPointToRay(Mouse.X, Mouse.Y) local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude params.FilterDescendantsInstances = {Player.Character, Tool} local result = workspace:Raycast(ray.Origin, ray.Direction * 15000, params) if result and result.Instance and result.Instance:IsA("BasePart") then local Target = result.Instance local tName = Target.Name:lower() local isKill = false for _, word in pairs(KillKeywords) do if tName:find(word) then isKill = true break end end if not isKill and (Target:FindFirstChildOfClass("Script") or Target:FindFirstChildOfClass("LocalScript")) then isKill = true end local SavedParent = Target.Parent local SavedTrans = Target.Transparency local SavedCollide = Target.CanCollide Debris[Target] = { Obj = Target, Parent = SavedParent, Trans = SavedTrans, Collide = SavedCollide, Type = isKill and "Delete" or "Ghost" } if isKill then Target.Parent = Vault -- Vaulting it keeps it alive in RAM else Target.Transparency = 1 Target.CanCollide = false end local Btn = Instance.new("TextButton", Scroll) Instance.new("UICorner", Btn) Btn.Size = UDim2.new(1, -5, 0, 30) Btn.BackgroundColor3 = Color3.fromRGB(45, 45, 45) Btn.Text = Target.Name Btn.TextColor3 = isKill and Color3.fromRGB(255, 80, 80) or Color3.new(1, 1, 1) Btn.MouseButton1Click:Connect(function() local data = Debris[Target] if data then if data.Type == "Delete" then data.Obj.Parent = data.Parent else data.Obj.Transparency = data.Trans data.Obj.CanCollide = data.Collide end Debris[Target] = nil end Btn:Destroy() end) end end) Tool.Parent = Player.Backpack end Player.CharacterAdded:Connect(function() task.wait(0.5) GiveTool() end) GiveTool()