-- Rumblex Steal Hub v4 - FINAL COMPLETO (Minimizable + Todas tus opciones) -- Soporte: KRNL / Fluxus / Delta (Android) -- Teleport Sound ID: rbxassetid://4826619573 (Volumen: 2.0) repeat task.wait() until game:IsLoaded() local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local LocalPlayer = Players.LocalPlayer repeat task.wait() until LocalPlayer:FindFirstChild("PlayerGui") local Camera = workspace:FindFirstChildOfClass("Camera") -- CONFIG local TELEPORT_SOUND_ID = "rbxassetid://4826619573" local BUTTON_ON_COLOR = Color3.fromRGB(0,170,120) local BUTTON_OFF_COLOR = Color3.fromRGB(120,30,30) local ACCENT = Color3.fromRGB(40,170,255) local UI_ANIM = 0.14 local TELEPORT_VOLUME = 2 -- ESTADO local savedLocation = nil local noclipEnabled = false local espEnabled = false local infiniteJumpEnabled = false local noclipConn = nil local espObjects = {} local playersAddedConn = nil -- UTILS local function tween(inst, props, t) local info = TweenInfo.new(t or UI_ANIM, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) TweenService:Create(inst, info, props):Play() end local function makeDraggable(guiObject) guiObject.Active = true local dragging, dragStart, startPos = false, nil, nil guiObject.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = guiObject.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) guiObject.InputChanged:Connect(function(input) if dragging and input and input.Position then local delta = input.Position - dragStart guiObject.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) end local function playTeleportSound() local s = Instance.new("Sound") s.SoundId = TELEPORT_SOUND_ID s.Volume = TELEPORT_VOLUME s.Looped = false s.Parent = Camera or workspace s:Play() s.Ended:Connect(function() pcall(function() s:Destroy() end) end) delay(5, function() if s then pcall(function() s:Destroy() end) end end) end -- GUI PRINCIPAL local screenGui = Instance.new("ScreenGui") screenGui.Name = "RumblexStealHub_v4" screenGui.IgnoreGuiInset = true screenGui.Enabled = true screenGui.DisplayOrder = 999 screenGui.ResetOnSpawn = false screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") pcall(function() screenGui.Parent = game:GetService("CoreGui") end) -- MAIN HUB local main = Instance.new("Frame") main.Name = "MainHub" main.Size = UDim2.new(0, 360, 0, 380) main.Position = UDim2.new(0.3, 0, 0.3, 0) main.BackgroundColor3 = Color3.fromRGB(18,18,20) main.BorderSizePixel = 0 main.Visible = true main.Parent = screenGui Instance.new("UICorner", main).CornerRadius = UDim.new(0, 12) makeDraggable(main) local accent = Instance.new("Frame", main) accent.Size = UDim2.new(0, 8, 1, -20) accent.Position = UDim2.new(0, 12, 0, 10) accent.BackgroundColor3 = ACCENT accent.BorderSizePixel = 0 Instance.new("UICorner", accent).CornerRadius = UDim.new(0,6) local title = Instance.new("TextLabel", main) title.Size = UDim2.new(1, -80, 0, 44) title.Position = UDim2.new(0, 28, 0, 8) title.BackgroundTransparency = 1 title.Font = Enum.Font.GothamBold title.TextSize = 20 title.TextColor3 = Color3.fromRGB(235,235,235) title.TextXAlignment = Enum.TextXAlignment.Left title.Text = "👹 Rumblex Steal Hub" -- 🔽 BOTÓN MINIMIZAR EN HUB local minimizeBtn = Instance.new("TextButton", main) minimizeBtn.Size = UDim2.new(0, 36, 0, 36) minimizeBtn.Position = UDim2.new(1, -46, 0, 12) minimizeBtn.BackgroundColor3 = Color3.fromRGB(30,30,32) minimizeBtn.Text = "—" minimizeBtn.Font = Enum.Font.GothamBold minimizeBtn.TextSize = 20 minimizeBtn.TextColor3 = Color3.fromRGB(240,240,240) Instance.new("UICorner", minimizeBtn).CornerRadius = UDim.new(0,8) local sub = Instance.new("TextLabel", main) sub.Size = UDim2.new(1, -40, 0, 18) sub.Position = UDim2.new(0, 28, 0, 40) sub.BackgroundTransparency = 1 sub.Font = Enum.Font.Gotham sub.TextSize = 11 sub.TextColor3 = Color3.fromRGB(170,170,170) sub.TextXAlignment = Enum.TextXAlignment.Left sub.Text = "Moderno • Minimizable • Movible" local btnArea = Instance.new("Frame", main) btnArea.Size = UDim2.new(1, -36, 1, -120) btnArea.Position = UDim2.new(0, 18, 0, 72) btnArea.BackgroundTransparency = 1 local function makeToggleButton(text, y) local btn = Instance.new("TextButton", btnArea) btn.Size = UDim2.new(1, 0, 0, 48) btn.Position = UDim2.new(0, 0, 0, y) btn.BackgroundColor3 = BUTTON_OFF_COLOR btn.BorderSizePixel = 0 btn.AutoButtonColor = false btn.Text = "" btn.ZIndex = 2 Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) local stroke = Instance.new("UIStroke", btn) stroke.Transparency = 0.6 stroke.Thickness = 1 local lbl = Instance.new("TextLabel", btn) lbl.Size = UDim2.new(1, -60, 1, 0) lbl.Position = UDim2.new(0, 12, 0, 0) lbl.BackgroundTransparency = 1 lbl.Font = Enum.Font.GothamSemibold lbl.TextSize = 15 lbl.TextColor3 = Color3.fromRGB(245,245,245) lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.Text = text local stateLbl = Instance.new("TextLabel", btn) stateLbl.Size = UDim2.new(0, 44, 1, 0) stateLbl.Position = UDim2.new(1, -52, 0, 0) stateLbl.BackgroundTransparency = 1 stateLbl.Font = Enum.Font.GothamBold stateLbl.TextSize = 12 stateLbl.TextColor3 = Color3.fromRGB(240,240,240) stateLbl.Text = "OFF" local function setState(on) if on then tween(btn, {BackgroundColor3 = BUTTON_ON_COLOR}) stateLbl.Text = "ON" else tween(btn, {BackgroundColor3 = BUTTON_OFF_COLOR}) stateLbl.Text = "OFF" end end return btn, setState end -- BOTONES (misma lógica que tu script original) local saveBtn, saveSet = makeToggleButton("💾 Guardar Ubicación", 0) local noclipBtn, noclipSet = makeToggleButton("👻 No Clip", 64) local espBtn, espSet = makeToggleButton("👁️ ESP Jugadores", 128) local jumpBtn, jumpSet = makeToggleButton("🦘 Jump Infinito", 192) local infoLabel = Instance.new("TextLabel", main) infoLabel.Size = UDim2.new(1, -36, 0, 22) infoLabel.Position = UDim2.new(0, 18, 1, -44) infoLabel.BackgroundTransparency = 1 infoLabel.Font = Enum.Font.Gotham infoLabel.TextSize = 12 infoLabel.TextColor3 = Color3.fromRGB(190,190,190) infoLabel.Text = "📍 Ninguna ubicación guardada" -- LOGO MINIMIZADO (fuera del hub) local minimizedLogo = Instance.new("TextButton") minimizedLogo.Name = "MinLogo" minimizedLogo.Size = UDim2.new(0, 64, 0, 64) minimizedLogo.Position = UDim2.new(1, -84, 1, -84) minimizedLogo.BackgroundColor3 = Color3.fromRGB(22,22,24) minimizedLogo.Text = "👹" minimizedLogo.TextSize = 30 minimizedLogo.Visible = false minimizedLogo.Parent = screenGui Instance.new("UICorner", minimizedLogo).CornerRadius = UDim.new(0, 12) makeDraggable(minimizedLogo) -- BOTÓN AUTO STEAL (igual que en tu script) local autoStealBtn = Instance.new("TextButton") autoStealBtn.Name = "AutoStealBtn" autoStealBtn.Size = UDim2.new(0, 140, 0, 44) autoStealBtn.Position = UDim2.new(1, -160, 0, 12) autoStealBtn.BackgroundColor3 = Color3.fromRGB(40,40,44) autoStealBtn.BorderSizePixel = 0 autoStealBtn.Text = "🚀 Auto Steal" autoStealBtn.Font = Enum.Font.GothamBold autoStealBtn.TextSize = 14 autoStealBtn.TextColor3 = Color3.fromRGB(245,245,245) autoStealBtn.Parent = screenGui Instance.new("UICorner", autoStealBtn).CornerRadius = UDim.new(0,8) makeDraggable(autoStealBtn) -- MINIMIZAR / RESTAURAR local isMinimized = false local lastMainPos = main.Position local function toggleMinimize() isMinimized = not isMinimized if isMinimized then lastMainPos = main.Position main.Visible = false minimizedLogo.Visible = true else minimizedLogo.Visible = false main.Visible = true main.Position = lastMainPos end end minimizeBtn.MouseButton1Click:Connect(toggleMinimize) minimizedLogo.MouseButton1Click:Connect(toggleMinimize) -- FUNCIONES DE LOS BOTONES (idénticas a tu script) saveBtn.MouseButton1Click:Connect(function() local char = LocalPlayer.Character if char and char:FindFirstChild("HumanoidRootPart") then savedLocation = char.HumanoidRootPart.Position infoLabel.Text = string.format("📍 Guardada: %.1f, %.1f, %.1f", savedLocation.X, savedLocation.Y, savedLocation.Z) saveSet(true) else infoLabel.Text = "❌ No se pudo guardar la ubicación" end end) autoStealBtn.MouseButton1Click:Connect(function() if savedLocation and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then playTeleportSound() tween(autoStealBtn, {BackgroundColor3 = Color3.fromRGB(0,120,80)}, 0.08) delay(0.06, function() tween(autoStealBtn, {BackgroundColor3 = Color3.fromRGB(40,40,44)}, 0.12) end) LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.new(savedLocation) else infoLabel.Text = "❌ Guarda una ubicación primero." end end) -- NOCLIP local function applyCollisionToCharacter(character, canCollide) for _, part in pairs(character:GetDescendants()) do if part:IsA("BasePart") then pcall(function() part.CanCollide = canCollide end) end end end noclipBtn.MouseButton1Click:Connect(function() noclipEnabled = not noclipEnabled noclipSet(noclipEnabled) if noclipEnabled then if LocalPlayer.Character then applyCollisionToCharacter(LocalPlayer.Character, false) end if noclipConn then noclipConn:Disconnect() end noclipConn = RunService.Stepped:Connect(function() if LocalPlayer.Character then applyCollisionToCharacter(LocalPlayer.Character, false) end end) LocalPlayer.CharacterAdded:Connect(function(char) wait(0.5) if noclipEnabled then applyCollisionToCharacter(char, false) end end) else if noclipConn then noclipConn:Disconnect() noclipConn = nil end if LocalPlayer.Character then applyCollisionToCharacter(LocalPlayer.Character, true) end end end) -- JUMP INFINITO jumpBtn.MouseButton1Click:Connect(function() infiniteJumpEnabled = not infiniteJumpEnabled jumpSet(infiniteJumpEnabled) end) UserInputService.JumpRequest:Connect(function() if infiniteJumpEnabled and LocalPlayer.Character then local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid") if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end) -- ESP (igual a tu implementación; resalta amigos distinto) local function isFriendWithLocal(p) local ok, res = pcall(function() return LocalPlayer:IsFriendsWith(p.UserId) end) return ok and res end local function createESPForPlayer(p) if not p or p == LocalPlayer then return end if espObjects[p.UserId] then return end local function applyESP(char) if not char or not espEnabled then return end local head = char:FindFirstChild("Head") if not head then return end local bb = Instance.new("BillboardGui", head) bb.Size = UDim2.new(0, 200, 0, 36) bb.StudsOffset = Vector3.new(0, 2.6, 0) bb.AlwaysOnTop = true local lbl = Instance.new("TextLabel", bb) lbl.Size = UDim2.new(1, 0, 1, 0) lbl.BackgroundTransparency = 1 lbl.Font = Enum.Font.GothamBold lbl.TextSize = 14 lbl.TextColor3 = Color3.fromRGB(255,255,255) lbl.TextStrokeTransparency = 0.6 lbl.Text = "👤 " .. p.Name local h = Instance.new("Highlight", char) if isFriendWithLocal(p) then h.FillColor = Color3.fromRGB(60,200,120) h.OutlineColor = Color3.fromRGB(20,120,60) else h.FillColor = Color3.fromRGB(0,150,255) h.OutlineColor = Color3.fromRGB(255,255,255) end h.FillTransparency = 0.6 espObjects[p.UserId] = {highlight = h, billboard = bb} end if p.Character then applyESP(p.Character) end p.CharacterAdded:Connect(function(char) wait(0.6) applyESP(char) end) end local function clearAllESP() for _, v in pairs(espObjects) do if v.highlight then pcall(function() v.highlight:Destroy() end) end if v.billboard then pcall(function() v.billboard:Destroy() end) end end espObjects = {} end espBtn.MouseButton1Click:Connect(function() espEnabled = not espEnabled espSet(espEnabled) if espEnabled then for _, p in pairs(Players:GetPlayers()) do createESPForPlayer(p) end if not playersAddedConn then playersAddedConn = Players.PlayerAdded:Connect(createESPForPlayer) end else clearAllESP() if playersAddedConn then playersAddedConn:Disconnect() playersAddedConn = nil end end end) print("✅ Rumblex Steal Hub v4 (Completo + Minimizar) cargado correctamente.")