--// VOID SPAM UI --// For your own Roblox experience / Studio testing local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer --================================================== -- SETTINGS --================================================== local DEFAULT_DISTANCE = 150 local DEFAULT_VOID_TIME = 0.35 local DEFAULT_RETURN_TIME = 0.35 local VOID_DISTANCE = DEFAULT_DISTANCE local VOID_TIME = DEFAULT_VOID_TIME local RETURN_TIME = DEFAULT_RETURN_TIME local enabled = false local stableCamera = true local busy = false local minimized = false --================================================== -- GUI --================================================== local gui = Instance.new("ScreenGui") gui.Name = "VoidSpamUI" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local main = Instance.new("Frame") main.Size = UDim2.fromOffset(310, 380) main.Position = UDim2.new(0.5, -155, 0.5, -190) main.BackgroundColor3 = Color3.fromRGB(24, 24, 31) main.BorderSizePixel = 0 main.Parent = gui local mainCorner = Instance.new("UICorner") mainCorner.CornerRadius = UDim.new(0, 14) mainCorner.Parent = main --================================================== -- TITLE BAR --================================================== local titleBar = Instance.new("Frame") titleBar.Size = UDim2.new(1, 0, 0, 48) titleBar.BackgroundColor3 = Color3.fromRGB(32, 32, 41) titleBar.BorderSizePixel = 0 titleBar.Parent = main local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 14) titleCorner.Parent = titleBar local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -100, 1, 0) title.Position = UDim2.fromOffset(15, 0) title.BackgroundTransparency = 1 title.Text = "VOID SPAM" title.TextColor3 = Color3.fromRGB(255, 255, 255) title.TextSize = 17 title.Font = Enum.Font.GothamBold title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = titleBar --================================================== -- MINIMIZE --================================================== local minimize = Instance.new("TextButton") minimize.Size = UDim2.fromOffset(34, 30) minimize.Position = UDim2.new(1, -76, 0, 9) minimize.BackgroundColor3 = Color3.fromRGB(55, 55, 67) minimize.Text = "—" minimize.TextColor3 = Color3.fromRGB(255, 255, 255) minimize.TextSize = 18 minimize.Font = Enum.Font.GothamBold minimize.Parent = titleBar local minCorner = Instance.new("UICorner") minCorner.CornerRadius = UDim.new(0, 8) minCorner.Parent = minimize --================================================== -- CLOSE --================================================== local close = Instance.new("TextButton") close.Size = UDim2.fromOffset(34, 30) close.Position = UDim2.new(1, -38, 0, 9) close.BackgroundColor3 = Color3.fromRGB(150, 45, 55) close.Text = "×" close.TextColor3 = Color3.fromRGB(255, 255, 255) close.TextSize = 20 close.Font = Enum.Font.GothamBold close.Parent = titleBar local closeCorner = Instance.new("UICorner") closeCorner.CornerRadius = UDim.new(0, 8) closeCorner.Parent = close --================================================== -- CONTENT CONTAINER --================================================== local content = Instance.new("Frame") content.Size = UDim2.new(1, 0, 1, -48) content.Position = UDim2.fromOffset(0, 48) content.BackgroundTransparency = 1 content.Parent = main --================================================== -- TOGGLE --================================================== local toggle = Instance.new("TextButton") toggle.Size = UDim2.new(1, -30, 0, 44) toggle.Position = UDim2.fromOffset(15, 15) toggle.BackgroundColor3 = Color3.fromRGB(55, 55, 67) toggle.Text = "VOID: OFF" toggle.TextColor3 = Color3.fromRGB(255, 255, 255) toggle.TextSize = 15 toggle.Font = Enum.Font.GothamBold toggle.Parent = content local toggleCorner = Instance.new("UICorner") toggleCorner.CornerRadius = UDim.new(0, 9) toggleCorner.Parent = toggle --================================================== -- SLIDER CREATOR --================================================== local sliders = {} local function createSlider(name, y, minValue, maxValue, defaultValue, suffix) local label = Instance.new("TextLabel") label.Size = UDim2.new(1, -30, 0, 24) label.Position = UDim2.fromOffset(15, y) label.BackgroundTransparency = 1 label.TextColor3 = Color3.fromRGB(220, 220, 225) label.TextSize = 13 label.Font = Enum.Font.GothamMedium label.TextXAlignment = Enum.TextXAlignment.Left label.Parent = content local bar = Instance.new("Frame") bar.Size = UDim2.new(1, -30, 0, 7) bar.Position = UDim2.fromOffset(15, y + 30) bar.BackgroundColor3 = Color3.fromRGB(55, 55, 65) bar.BorderSizePixel = 0 bar.Parent = content local barCorner = Instance.new("UICorner") barCorner.CornerRadius = UDim.new(1, 0) barCorner.Parent = bar local fill = Instance.new("Frame") fill.BackgroundColor3 = Color3.fromRGB(130, 80, 220) fill.BorderSizePixel = 0 fill.Parent = bar local fillCorner = Instance.new("UICorner") fillCorner.CornerRadius = UDim.new(1, 0) fillCorner.Parent = fill local knob = Instance.new("TextButton") knob.Size = UDim2.fromOffset(18, 18) knob.AnchorPoint = Vector2.new(0.5, 0.5) knob.BackgroundColor3 = Color3.fromRGB(255, 255, 255) knob.Text = "" knob.Parent = bar local knobCorner = Instance.new("UICorner") knobCorner.CornerRadius = UDim.new(1, 0) knobCorner.Parent = knob local value = defaultValue local dragging = false local function update(newValue) value = math.clamp(newValue, minValue, maxValue) local percent = (value - minValue) / (maxValue - minValue) fill.Size = UDim2.new(percent, 0, 1, 0) knob.Position = UDim2.new(percent, 0, 0.5, 0) if maxValue - minValue >= 10 then label.Text = name .. ": " .. math.floor(value + 0.5) .. suffix else label.Text = name .. ": " .. string.format("%.2f", value) .. suffix end end local function setFromX(x) local percent = (x - bar.AbsolutePosition.X) / bar.AbsoluteSize.X update( minValue + (maxValue - minValue) * math.clamp(percent, 0, 1) ) end bar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true setFromX(input.Position.X) end end) knob.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true end end) UserInputService.InputChanged:Connect(function(input) if dragging then if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then setFromX(input.Position.X) end end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) update(defaultValue) local slider = {} function slider:Get() return value end function slider:Set(newValue) update(newValue) end return slider end --================================================== -- SLIDERS --================================================== local distanceSlider = createSlider( "Void Distance", 75, 10, 500, DEFAULT_DISTANCE, " studs" ) local voidTimeSlider = createSlider( "Void Time", 135, 0.01, 1, DEFAULT_VOID_TIME, " sec" ) local returnTimeSlider = createSlider( "Return Time", 195, 0.01, 1, DEFAULT_RETURN_TIME, " sec" ) --================================================== -- STABLE CAMERA --================================================== local cameraButton = Instance.new("TextButton") cameraButton.Size = UDim2.new(1, -30, 0, 40) cameraButton.Position = UDim2.fromOffset(15, 255) cameraButton.BackgroundColor3 = Color3.fromRGB(55, 125, 75) cameraButton.Text = "STABLE CAMERA: ON" cameraButton.TextColor3 = Color3.fromRGB(255, 255, 255) cameraButton.TextSize = 13 cameraButton.Font = Enum.Font.GothamBold cameraButton.Parent = content local cameraCorner = Instance.new("UICorner") cameraCorner.CornerRadius = UDim.new(0, 9) cameraCorner.Parent = cameraButton --================================================== -- RESET --================================================== local reset = Instance.new("TextButton") reset.Size = UDim2.new(1, -30, 0, 38) reset.Position = UDim2.fromOffset(15, 305) reset.BackgroundColor3 = Color3.fromRGB(48, 48, 59) reset.Text = "RESET SETTINGS" reset.TextColor3 = Color3.fromRGB(235, 235, 235) reset.TextSize = 13 reset.Font = Enum.Font.GothamBold reset.Parent = content local resetCorner = Instance.new("UICorner") resetCorner.CornerRadius = UDim.new(0, 9) resetCorner.Parent = reset --================================================== -- TOGGLE --================================================== toggle.MouseButton1Click:Connect(function() enabled = not enabled if enabled then toggle.Text = "VOID: ON" toggle.BackgroundColor3 = Color3.fromRGB(55, 125, 75) else toggle.Text = "VOID: OFF" toggle.BackgroundColor3 = Color3.fromRGB(55, 55, 67) end end) --================================================== -- CAMERA TOGGLE --================================================== cameraButton.MouseButton1Click:Connect(function() stableCamera = not stableCamera if stableCamera then cameraButton.Text = "STABLE CAMERA: ON" cameraButton.BackgroundColor3 = Color3.fromRGB(55, 125, 75) else cameraButton.Text = "STABLE CAMERA: OFF" cameraButton.BackgroundColor3 = Color3.fromRGB(55, 55, 67) end end) --================================================== -- RESET --================================================== reset.MouseButton1Click:Connect(function() distanceSlider:Set(DEFAULT_DISTANCE) voidTimeSlider:Set(DEFAULT_VOID_TIME) returnTimeSlider:Set(DEFAULT_RETURN_TIME) stableCamera = true cameraButton.Text = "STABLE CAMERA: ON" cameraButton.BackgroundColor3 = Color3.fromRGB(55, 125, 75) end) --================================================== -- CHARACTER --================================================== local function getCharacter() local character = player.Character or player.CharacterAdded:Wait() local root = character:FindFirstChild("HumanoidRootPart") if root then return character, root end end --================================================== -- VOID LOOP --================================================== task.spawn(function() while gui.Parent do task.wait(0.01) if enabled and not busy then local character, root = getCharacter() if character and root then busy = true local camera = workspace.CurrentCamera -- Save camera position before teleport local savedCameraCFrame if stableCamera and camera then savedCameraCFrame = camera.CFrame end -- Save player position local returnCFrame = root.CFrame VOID_DISTANCE = distanceSlider:Get() VOID_TIME = voidTimeSlider:Get() RETURN_TIME = returnTimeSlider:Get() -- Teleport downward root.CFrame = returnCFrame * CFrame.new(0, -VOID_DISTANCE, 0) -- Keep camera visually stable if stableCamera and camera and savedCameraCFrame then local endTime = os.clock() + VOID_TIME while os.clock() < endTime do if camera and camera.Parent then camera.CFrame = savedCameraCFrame end task.wait() end else task.wait(VOID_TIME) end -- Return player if root and root.Parent then root.CFrame = returnCFrame end -- Restore camera again if stableCamera and camera and savedCameraCFrame then camera.CFrame = savedCameraCFrame end task.wait(RETURN_TIME) busy = false end end end end) --================================================== -- MINIMIZE / RESTORE --================================================== minimize.MouseButton1Click:Connect(function() minimized = not minimized if minimized then -- Hide content content.Visible = false -- Shrink window main.Size = UDim2.fromOffset(310, 48) -- Change button minimize.Text = "□" else -- Restore window main.Size = UDim2.fromOffset(310, 380) -- Show content content.Visible = true minimize.Text = "—" end end) --================================================== -- CLOSE --================================================== close.MouseButton1Click:Connect(function() enabled = false if workspace.CurrentCamera then workspace.CurrentCamera.CameraType = Enum.CameraType.Custom end gui:Destroy() end) --================================================== -- DRAGGING --================================================== local dragging = false local dragStart local startPosition titleBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPosition = main.Position end end) UserInputService.InputChanged:Connect(function(input) if dragging then if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then local delta = input.Position - dragStart main.Position = UDim2.new( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y ) end end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) --================================================== -- RESPAWN SAFETY --================================================== player.CharacterAdded:Connect(function() busy = false end)