--[[ WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk! ]] --// Global toggle getgenv().remover = false --// Services local Players = game:GetService("Players") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer --// GUI Setup local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "ObstacleRemoverGui" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") local Frame = Instance.new("Frame") Frame.Size = UDim2.fromScale(0.2, 0.15) Frame.Position = UDim2.fromScale(0.4, 0.4) Frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) Frame.BorderSizePixel = 0 Frame.Parent = ScreenGui local UICorner = Instance.new("UICorner", Frame) UICorner.CornerRadius = UDim.new(0, 12) local ToggleButton = Instance.new("TextButton") ToggleButton.Size = UDim2.fromScale(0.9, 0.5) ToggleButton.Position = UDim2.fromScale(0.05, 0.25) ToggleButton.BackgroundColor3 = Color3.fromRGB(170, 0, 0) ToggleButton.Text = "Obstacle Remover: OFF" ToggleButton.TextColor3 = Color3.new(1, 1, 1) ToggleButton.TextScaled = true ToggleButton.Font = Enum.Font.GothamBold ToggleButton.Parent = Frame local ButtonCorner = Instance.new("UICorner", ToggleButton) ButtonCorner.CornerRadius = UDim.new(0, 10) --// Obstacle Remover Class local ObstacleRemove = {} ObstacleRemove.__index = ObstacleRemove function ObstacleRemove.new(obstaclesFolder) local self = setmetatable({}, ObstacleRemove) self.Folder = obstaclesFolder or workspace:WaitForChild("Map"):WaitForChild("Obstacles") self.OriginalPositions = {} self:UpdateDescendants(self.Folder) self.Folder.DescendantAdded:Connect(function(descendant) self:UpdatePart(descendant) end) local lastState = getgenv().remover RunService.RenderStepped:Connect(function() if getgenv().remover ~= lastState then lastState = getgenv().remover self:UpdateDescendants(self.Folder) end end) return self end function ObstacleRemove:UpdatePart(part) if part:IsA("BasePart") then part.CanCollide = false part.CanTouch = false end if part.Name == "Hitbox" then if not self.OriginalPositions[part] then self.OriginalPositions[part] = part.Position end if getgenv().remover then part.Position = Vector3.new(0, -5000, 0) else part.Position = self.OriginalPositions[part] end end end function ObstacleRemove:UpdateDescendants(parent) for _, descendant in ipairs(parent:GetDescendants()) do self:UpdatePart(descendant) end end --// Initialize remover local remover = ObstacleRemove.new() --// Button Logic ToggleButton.MouseButton1Click:Connect(function() getgenv().remover = not getgenv().remover if getgenv().remover then ToggleButton.Text = "Obstacle Remover: ON" ToggleButton.BackgroundColor3 = Color3.fromRGB(0, 170, 0) else ToggleButton.Text = "Obstacle Remover: OFF" ToggleButton.BackgroundColor3 = Color3.fromRGB(170, 0, 0) end end) --// Dragging Logic local UserInputService = game:GetService("UserInputService") local dragging = false local dragStart local startPos local function updateDrag(input) local delta = input.Position - dragStart Frame.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end Frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = Frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) Frame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then updateDrag(input) end end)