--[[ Z HUB | JW Auto Joiner Style | Purple Lightning Features: - Draggable GUI with position saving (writefile) - Manual Instant Steal (reset + steal + return to base) - Auto-Steal Radius (toggle, slider, working loop) - Steal Progress Bar (shows cooldown) - Screen Light purple glow - Noclip, Anti-Ragdoll, No Animations/Textures, FPS Boost ]] -- // Services local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lightning") local RunService = game:GetService("RunService") local CoreGui = game:GetService("CoreGui") local UserInputService = game:GetService("UserInputService") local player = Players.LocalPlayer local mouse = player:GetMouse() -- // CONFIGURATION (EDIT THESE) local BASE_POSITION = Vector3.new(0, 30, 0) -- Your base coordinates local BRAINROT_KEYWORD = "brainrot" -- Items containing this local DEFAULT_AUTO_RADIUS = 50 local STEAL_COOLDOWN = 3 -- // Internal vars local gui = nil local noclipConnection = nil local antiRagdollConnection = nil local autoStealActive = false local autoStealRadius = DEFAULT_AUTO_RADIUS local autoStealCooldown = false local currentScreenLight = nil local progressBarActive = true local isStealing = false local autoStealConnection = nil local progressBar = nil local progressFrame = nil local stolenItemTemp = nil -- Store stolen item during respawn -- // Helper functions local function debugPrint(...) print("[Z Hub] ", ...) end -- // File position saving (if executor supports writefile) local function saveGUIPosition(pos) local success, err = pcall(function() if writefile then writefile("ZHub_Position.txt", tostring(pos.X.Offset) .. "," .. tostring(pos.Y.Offset)) debugPrint("Position saved") end end) if not success then debugPrint("writefile not supported, position not saved") end end local function loadGUIPosition() local success, data = pcall(function() if readfile then return readfile("ZHub_Position.txt") end end) if success and data then local x, y = data:match("(.-),(.*)") if x and y then return tonumber(x), tonumber(y) end end return nil, nil end -- // Screen Light Effect local function createScreenLight() if currentScreenLight then currentScreenLight:Destroy() end local screenGui = Instance.new("ScreenGui") screenGui.Name = "ZHubLight" screenGui.ResetOnSpawn = false screenGui.IgnoreGuiInset = true screenGui.Parent = CoreGui local frame = Instance.new("Frame") frame.Size = UDim2.new(2, 0, 2, 0) frame.Position = UDim2.new(-0.5, 0, -0.5, 0) frame.BackgroundColor3 = Color3.fromRGB(255, 200, 255) frame.BackgroundTransparency = 0.65 frame.BorderSizePixel = 0 frame.Parent = screenGui TweenService:Create(frame, TweenInfo.new(2, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true), {BackgroundTransparency = 0.55}):Play() currentScreenLight = screenGui end local function removeScreenLight() if currentScreenLight then currentScreenLight:Destroy() end end -- // FPS Boost local function applyFPSBoost() pcall(function() Workspace.StreamingEnabled = true Lighting.GlobalShadows = false settings().Rendering.QualityLevel = 1 settings().Rendering.ShadowQuality = 0 end) end -- // Character optimizations local function disableTextures(char) if not char then return end for _, part in ipairs(char:GetDescendants()) do if part:IsA("BasePart") then pcall(function() part.Material = Enum.Material.Plastic; part.TextureID = "" end) elseif part:IsA("Decal") or part:IsA("Texture") then pcall(function() part:Destroy() end) end end end local function disableAnimations(char) if not char then return end local animator = char:FindFirstChild("Animator") if animator then for _, track in ipairs(animator:GetPlayingAnimationTracks()) do track:Stop() end animator:Destroy() end local hum = char:FindFirstChild("Humanoid") if hum then hum:SetStateEnabled(Enum.HumanoidStateType.Ragdoll, false) hum:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false) end end local function startAntiRagdoll() if antiRagdollConnection then antiRagdollConnection:Disconnect() end antiRagdollConnection = RunService.Heartbeat:Connect(function() local char = player.Character if char then local hum = char:FindFirstChild("Humanoid") if hum and (hum:GetState() == Enum.HumanoidStateType.Ragdoll or hum:GetState() == Enum.HumanoidStateType.FallingDown) then hum:ChangeState(Enum.HumanoidStateType.Running) end end end) end local function setNoclip(enabled) if noclipConnection then noclipConnection:Disconnect() end if enabled then noclipConnection = RunService.Stepped:Connect(function() local char = player.Character if char then for _, part in ipairs(char:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end end) end end local function setCharacterVisible(visible, char) char = char or player.Character if not char then return end local transp = visible and 0 or 1 for _, part in ipairs(char:GetDescendants()) do if part:IsA("BasePart") then part.Transparency = transp end end end -- // Find brainrot within radius local function findBrainrotInRadius(radius) radius = radius or autoStealRadius local bestDist = math.huge local bestTarget = nil local char = player.Character local root = char and char:FindFirstChild("HumanoidRootPart") local pos = root and root.Position or Vector3.zero local function search(inst) if inst:IsA("BasePart") and inst.Name:lower():find(BRAINROT_KEYWORD) then local d = (inst.Position - pos).Magnitude if d <= radius and d < bestDist then bestDist = d bestTarget = inst end end for _, child in ipairs(inst:GetChildren()) do search(child) end end search(Workspace) return bestTarget, bestDist end -- // Core steal function (returns true if success) local function performSteal(target) if isStealing then return false end if not target then return false end isStealing = true local char = player.Character if not char then isStealing = false; return false end local hum = char:FindFirstChild("Humanoid") if not hum then isStealing = false; return false end -- Prepare disableAnimations(char) disableTextures(char) setNoclip(true) setCharacterVisible(false, char) -- Teleport to target (desync) local root = char:FindFirstChild("HumanoidRootPart") if root then root.CFrame = CFrame.new(0, 9999, 0) task.wait(0.1) root.CFrame = target.CFrame + Vector3.new(0, 3, 0) end task.wait(0.1) -- Steal item local stolen = target:Clone() stolen.Parent = player.Backpack target:Destroy() stolenItemTemp = stolen -- Store for respawn -- Force reset hum.Health = 0 -- Handle respawn local conn conn = player.CharacterAdded:Connect(function(newChar) conn:Disconnect() task.wait(0.3) disableTextures(newChar) disableAnimations(newChar) setCharacterVisible(true, newChar) -- Give stolen item back if stolenItemTemp and stolenItemTemp.Parent ~= newChar then stolenItemTemp.Parent = newChar if stolenItemTemp:IsA("Tool") then stolenItemTemp.Parent = player.Backpack end stolenItemTemp = nil end -- Teleport to base local newRoot = newChar:FindFirstChild("HumanoidRootPart") if newRoot then newRoot.CFrame = CFrame.new(BASE_POSITION) end setNoclip(true) isStealing = false debugPrint("Stolen item returned to base!") end) return true end -- // Auto-steal loop (fixed) local function startAutoLoop() if autoStealConnection then autoStealConnection:Disconnect() end if not autoStealActive then return end autoStealConnection = RunService.Heartbeat:Connect(function() if autoStealCooldown or isStealing then return end local target = findBrainrotInRadius() if target then debugPrint("Auto-stealing:", target.Name) autoStealCooldown = true performSteal(target) task.wait(STEAL_COOLDOWN) autoStealCooldown = false end end) end local function stopAutoLoop() if autoStealConnection then autoStealConnection:Disconnect() autoStealConnection = nil end end -- // Progress Bar (working update) local function createProgressBar() if progressBar then progressBar:Destroy() end if not progressBarActive then return end progressBar = Instance.new("ScreenGui") progressBar.Name = "ZHubProgress" progressBar.ResetOnSpawn = false progressBar.Parent = CoreGui local main = Instance.new("Frame") main.Size = UDim2.new(0, 300, 0, 24) main.Position = UDim2.new(0.5, -150, 0.9, 0) main.BackgroundColor3 = Color3.fromRGB(30, 0, 50) main.BackgroundTransparency = 0.4 main.BorderSizePixel = 0 main.Parent = progressBar Instance.new("UICorner").CornerRadius = UDim.new(0, 12) local fill = Instance.new("Frame") fill.Size = UDim2.new(0, 0, 1, 0) fill.BackgroundColor3 = Color3.fromRGB(156, 39, 176) fill.BorderSizePixel = 0 fill.Parent = main Instance.new("UICorner").CornerRadius = UDim.new(0, 12) local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 1, 0) label.BackgroundTransparency = 1 label.Text = "AUTO-STEAL COOLDOWN" label.TextColor3 = Color3.fromRGB(255,255,255) label.TextSize = 11 label.Font = Enum.Font.GothamBold label.Parent = main progressFrame = fill -- Update loop while progressBarActive and progressBar do if autoStealCooldown and autoStealActive then local start = tick() while autoStealCooldown and progressFrame and progressBar do local elapsed = tick() - start local percent = math.min(1, elapsed / STEAL_COOLDOWN) progressFrame.Size = UDim2.new(percent, 0, 1, 0) task.wait() end else if progressFrame then progressFrame.Size = UDim2.new(0, 0, 1, 0) end task.wait(0.5) end end end -- // GUI Creation (JW Auto Joiner style) local function createGUI() local screenGui = Instance.new("ScreenGui") screenGui.Name = "ZHub" screenGui.ResetOnSpawn = false screenGui.Parent = CoreGui -- Main frame local main = Instance.new("Frame") main.Size = UDim2.new(0, 320, 0, 520) -- Load saved position local savedX, savedY = loadGUIPosition() if savedX and savedY then main.Position = UDim2.new(0, savedX, 0, savedY) else main.Position = UDim2.new(0.5, -160, 0.5, -260) end main.BackgroundColor3 = Color3.fromRGB(18, 18, 25) main.BackgroundTransparency = 0.1 main.BorderSizePixel = 0 main.ClipsDescendants = true main.Parent = screenGui Instance.new("UICorner").CornerRadius = UDim.new(0, 10) -- Glow border local border = Instance.new("UIStroke") border.Thickness = 2 border.Color = Color3.fromRGB(156, 39, 176) border.Transparency = 0.4 border.Parent = main -- Gradient background local grad = Instance.new("UIGradient") grad.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, Color3.fromRGB(25,0,45)), ColorSequenceKeypoint.new(1, Color3.fromRGB(10,0,25)) } grad.Parent = main -- Title bar (draggable) local titleBar = Instance.new("Frame") titleBar.Size = UDim2.new(1, 0, 0, 40) titleBar.BackgroundColor3 = Color3.fromRGB(156, 39, 176) titleBar.BackgroundTransparency = 0.2 titleBar.BorderSizePixel = 0 titleBar.Parent = main Instance.new("UICorner").CornerRadius = UDim.new(0, 10) local titleText = Instance.new("TextLabel") titleText.Size = UDim2.new(1, -50, 1, 0) titleText.Position = UDim2.new(0, 15, 0, 0) titleText.BackgroundTransparency = 1 titleText.Text = "⚡ Z HUB | PURPLE EDITION" titleText.TextColor3 = Color3.fromRGB(255,255,255) titleText.TextSize = 16 titleText.Font = Enum.Font.GothamBold titleText.TextXAlignment = Enum.TextXAlignment.Left titleText.Parent = titleBar -- Close button local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 35, 1, 0) closeBtn.Position = UDim2.new(1, -35, 0, 0) closeBtn.BackgroundTransparency = 1 closeBtn.Text = "✕" closeBtn.TextColor3 = Color3.fromRGB(255,255,255) closeBtn.TextSize = 18 closeBtn.Font = Enum.Font.GothamBold closeBtn.Parent = titleBar closeBtn.MouseButton1Click:Connect(function() screenGui:Destroy() removeScreenLight() if progressBar then progressBar:Destroy() end end) -- Save position button (floppy disk icon) local savePosBtn = Instance.new("TextButton") savePosBtn.Size = UDim2.new(0, 35, 1, 0) savePosBtn.Position = UDim2.new(1, -70, 0, 0) savePosBtn.BackgroundTransparency = 1 savePosBtn.Text = "💾" savePosBtn.TextColor3 = Color3.fromRGB(255,255,255) savePosBtn.TextSize = 16 savePosBtn.Font = Enum.Font.GothamBold savePosBtn.Parent = titleBar savePosBtn.MouseButton1Click:Connect(function() saveGUIPosition(main.Position) debugPrint("Position saved") end) -- Dragging logic local dragging = false, dragStart, startPos titleBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = main.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) titleBar.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement and dragging then local delta = input.Position - dragStart main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) -- Content frame local content = Instance.new("Frame") content.Size = UDim2.new(1, -20, 1, -55) content.Position = UDim2.new(0, 10, 0, 50) content.BackgroundTransparency = 1 content.Parent = main -- Manual Steal Button (big) local stealBtn = Instance.new("TextButton") stealBtn.Size = UDim2.new(1, 0, 0, 50) stealBtn.Position = UDim2.new(0, 0, 0, 5) stealBtn.BackgroundColor3 = Color3.fromRGB(156, 39, 176) stealBtn.Text = "⚡ INSTANT STEAL (MANUAL)" stealBtn.TextColor3 = Color3.fromRGB(255,255,255) stealBtn.TextSize = 15 stealBtn.Font = Enum.Font.GothamBold stealBtn.AutoButtonColor = false stealBtn.Parent = content Instance.new("UICorner").CornerRadius = UDim.new(0, 8) stealBtn.MouseEnter:Connect(function() TweenService:Create(stealBtn, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(186,59,206)}):Play() end) stealBtn.MouseLeave:Connect(function() TweenService:Create(stealBtn, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(156,39,176)}):Play() end) stealBtn.MouseButton1Click:Connect(function() stealBtn.Text = "⚡ STEALING... ⚡" task.spawn(function() local target = findBrainrotInRadius(math.huge) if target then performSteal(target) else debugPrint("No brainrot found") end task.wait(2) stealBtn.Text = "⚡ INSTANT STEAL (MANUAL)" end) end) -- Auto-Steal Toggle local autoToggle = Instance.new("TextButton") autoToggle.Size = UDim2.new(1, 0, 0, 40) autoToggle.Position = UDim2.new(0, 0, 0, 62) autoToggle.BackgroundColor3 = Color3.fromRGB(30, 0, 50) autoToggle.Text = "🔄 AUTO-STEAL: OFF" autoToggle.TextColor3 = Color3.fromRGB(220,220,220) autoToggle.TextSize = 14 autoToggle.Font = Enum.Font.Gotham autoToggle.Parent = content Instance.new("UICorner").CornerRadius = UDim.new(0, 6) autoToggle.MouseButton1Click:Connect(function() autoStealActive = not autoStealActive autoToggle.Text = autoStealActive and "🔄 AUTO-STEAL: ON" or "🔄 AUTO-STEAL: OFF" autoToggle.BackgroundColor3 = autoStealActive and Color3.fromRGB(0,100,0) or Color3.fromRGB(30,0,50) if autoStealActive then startAutoLoop() else stopAutoLoop() end end) -- Radius slider local radiusLabel = Instance.new("TextLabel") radiusLabel.Size = UDim2.new(0.5, 0, 0, 25) radiusLabel.Position = UDim2.new(0, 0, 0, 110) radiusLabel.BackgroundTransparency = 1 radiusLabel.Text = "📏 Radius: " .. autoStealRadius .. " studs" radiusLabel.TextColor3 = Color3.fromRGB(200,200,255) radiusLabel.TextSize = 12 radiusLabel.Font = Enum.Font.Gotham radiusLabel.TextXAlignment = Enum.TextXAlignment.Left radiusLabel.Parent = content local sliderBg = Instance.new("Frame") sliderBg.Size = UDim2.new(0.5, 0, 0, 8) sliderBg.Position = UDim2.new(0.5, 0, 0, 118) sliderBg.BackgroundColor3 = Color3.fromRGB(50,50,70) sliderBg.BorderSizePixel = 0 sliderBg.Parent = content Instance.new("UICorner").CornerRadius = UDim.new(1, 0) local sliderFill = Instance.new("Frame") sliderFill.Size = UDim2.new(autoStealRadius/100, 0, 1, 0) sliderFill.BackgroundColor3 = Color3.fromRGB(156,39,176) sliderFill.BorderSizePixel = 0 sliderFill.Parent = sliderBg Instance.new("UICorner").CornerRadius = UDim.new(1, 0) local sliderButton = Instance.new("TextButton") sliderButton.Size = UDim2.new(0, 14, 0, 14) sliderButton.Position = UDim2.new(autoStealRadius/100, -7, 0.5, -7) sliderButton.BackgroundColor3 = Color3.fromRGB(255,255,255) sliderButton.Text = "" sliderButton.Parent = sliderBg Instance.new("UICorner").CornerRadius = UDim.new(1, 0) local sliding = false sliderButton.MouseButton1Down:Connect(function() sliding = true local con = UserInputService.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement and sliding then local rel = (input.Position.X - sliderBg.AbsolutePosition.X) / sliderBg.AbsoluteSize.X local val = math.clamp(rel, 0, 1) autoStealRadius = math.floor(val * 100) radiusLabel.Text = "📏 Radius: " .. autoStealRadius .. " studs" sliderFill.Size = UDim2.new(val, 0, 1, 0) sliderButton.Position = UDim2.new(val, -7, 0.5, -7) end end) local releaseCon = UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then sliding = false con:Disconnect() releaseCon:Disconnect() end end) end) -- Progress Bar Toggle local progToggle = Instance.new("TextButton") progToggle.Size = UDim2.new(1, 0, 0, 35) progToggle.Position = UDim2.new(0, 0, 0, 140) progToggle.BackgroundColor3 = Color3.fromRGB(30, 0, 50) progToggle.Text = "📊 PROGRESS BAR: ON" progToggle.TextColor3 = Color3.fromRGB(220,220,220) progToggle.TextSize = 13 progToggle.Font = Enum.Font.Gotham progToggle.Parent = content Instance.new("UICorner").CornerRadius = UDim.new(0, 6) progToggle.MouseButton1Click:Connect(function() progressBarActive = not progressBarActive progToggle.Text = progressBarActive and "📊 PROGRESS BAR: ON" or "📊 PROGRESS BAR: OFF" if progressBarActive then task.spawn(createProgressBar) else if progressBar then progressBar:Destroy() end end end) -- Screen Light Toggle local lightToggle = Instance.new("TextButton") lightToggle.Size = UDim2.new(1, 0, 0, 35) lightToggle.Position = UDim2.new(0, 0, 0, 183) lightToggle.BackgroundColor3 = Color3.fromRGB(30, 0, 50) lightToggle.Text = "💡 SCREEN LIGHT: ON" lightToggle.TextColor3 = Color3.fromRGB(220,220,220) lightToggle.TextSize = 13 lightToggle.Font = Enum.Font.Gotham lightToggle.Parent = content Instance.new("UICorner").CornerRadius = UDim.new(0, 6) local lightOn = true lightToggle.MouseButton1Click:Connect(function() lightOn = not lightOn lightToggle.Text = lightOn and "💡 SCREEN LIGHT: ON" or "💡 SCREEN LIGHT: OFF" if lightOn then createScreenLight() else removeScreenLight() end end) -- Noclip Toggle local noclipToggle = Instance.new("TextButton") noclipToggle.Size = UDim2.new(1, 0, 0, 35) noclipToggle.Position = UDim2.new(0, 0, 0, 226) noclipToggle.BackgroundColor3 = Color3.fromRGB(30, 0, 50) noclipToggle.Text = "🔓 NOCLIP: ON" noclipToggle.TextColor3 = Color3.fromRGB(220,220,220) noclipToggle.TextSize = 13 noclipToggle.Font = Enum.Font.Gotham noclipToggle.Parent = content Instance.new("UICorner").CornerRadius = UDim.new(0, 6) local noclipState = true noclipToggle.MouseButton1Click:Connect(function() noclipState = not noclipState setNoclip(noclipState) noclipToggle.Text = noclipState and "🔓 NOCLIP: ON" or "🔒 NOCLIP: OFF" noclipToggle.BackgroundColor3 = noclipState and Color3.fromRGB(30,0,50) or Color3.fromRGB(60,60,60) end) -- FPS status label local fpsLabel = Instance.new("TextLabel") fpsLabel.Size = UDim2.new(1, 0, 0, 20) fpsLabel.Position = UDim2.new(0, 0, 1, -25) fpsLabel.BackgroundTransparency = 1 fpsLabel.Text = "⚡ FPS BOOST ACTIVE | DRAG TITLE BAR 💾 TO SAVE POSITION" fpsLabel.TextColor3 = Color3.fromRGB(100,200,100) fpsLabel.TextSize = 9 fpsLabel.Font = Enum.Font.Gotham fpsLabel.TextXAlignment = Enum.TextXAlignment.Center fpsLabel.Parent = main -- Start screen light by default createScreenLight() task.spawn(createProgressBar) return screenGui end -- // Initialize everything local function init() applyFPSBoost() startAntiRagdoll() setNoclip(true) createGUI() player.CharacterAdded:Connect(function(char) task.wait(0.2) disableTextures(char) disableAnimations(char) setNoclip(true) startAntiRagdoll() end) if player.Character then disableTextures(player.Character) disableAnimations(player.Character) end debugPrint("Z Hub fully loaded! Auto-steal radius works, instant steal resets to base.") end init()