local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Lighting = game:GetService("Lighting") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local hrp = character:WaitForChild("HumanoidRootPart") local camera = workspace.CurrentCamera local playerGui = player:WaitForChild("PlayerGui") -- Variables de Estado local flying = false local noclip = false local fullbright = false local ghostMode = false local goingUp = false local goingDown = false local speedModes = {50, 150, 300, 600} local currentSpeedIndex = 1 local speed = speedModes[currentSpeedIndex] local defaultBrightness = Lighting.Brightness local defaultClockTime = Lighting.ClockTime -- Interfaz local screenGui = Instance.new("ScreenGui") screenGui.Name = "UltimateMobileHub" screenGui.ResetOnSpawn = true screenGui.Parent = playerGui local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame" mainFrame.Size = UDim2.new(0.28, 0, 0.65, 0) mainFrame.Position = UDim2.new(0.05, 0, 0.2, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25) mainFrame.BackgroundTransparency = 0.15 mainFrame.Active = true mainFrame.Parent = screenGui local frameCorner = Instance.new("UICorner") frameCorner.CornerRadius = UDim.new(0, 14) frameCorner.Parent = mainFrame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0.1, 0) title.Text = "📱 Fly Hub Mobile" title.TextColor3 = Color3.fromRGB(255, 255, 255) title.TextScaled = true title.BackgroundTransparency = 1 title.Font = Enum.Font.SourceSansBold title.Parent = mainFrame local scroll = Instance.new("ScrollingFrame") scroll.Size = UDim2.new(0.92, 0, 0.88, 0) scroll.Position = UDim2.new(0.04, 0, 0.1, 0) scroll.BackgroundTransparency = 1 scroll.CanvasSize = UDim2.new(0, 0, 1.8, 0) scroll.ScrollBarThickness = 4 scroll.Parent = mainFrame local listLayout = Instance.new("UIListLayout") listLayout.Parent = scroll listLayout.SortOrder = Enum.SortOrder.LayoutOrder listLayout.Padding = UDim.new(0.02, 0) -- Hacer la interfaz arrastrable en celular local dragging, dragStart, startPos mainFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = mainFrame.Position end end) mainFrame.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) UserInputService.InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then local delta = input.Position - dragStart mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) -- Creador de Botones local function createBtn(text, order, color) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, 0, 0.09, 0) btn.Text = text btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.TextScaled = true btn.BackgroundColor3 = color or Color3.fromRGB(40, 40, 50) btn.LayoutOrder = order btn.Font = Enum.Font.SourceSansSemibold btn.Parent = scroll local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 8) corner.Parent = btn return btn end local toggleBtn = createBtn("Vuelo: OFF", 1, Color3.fromRGB(180, 40, 40)) local noclipBtn = createBtn("Noclip: OFF", 2, Color3.fromRGB(180, 40, 40)) local speedBtn = createBtn("Velocidad: " .. speed, 3, Color3.fromRGB(0, 120, 215)) local dashBtn = createBtn("⚡ Dash (Impulso)", 4, Color3.fromRGB(140, 60, 200)) local lightBtn = createBtn("💡 Luz Total: OFF", 5, Color3.fromRGB(60, 60, 75)) local ghostBtn = createBtn("👻 Modo Fantasma: OFF", 6, Color3.fromRGB(60, 60, 75)) local upBtn = createBtn("⬆ Subir", 7, Color3.fromRGB(50, 150, 90)) local downBtn = createBtn("⬇ Bajar", 8, Color3.fromRGB(50, 150, 90)) -- Botón Ocultar local minBtn = Instance.new("TextButton") minBtn.Size = UDim2.new(0.12, 0, 0.06, 0) minBtn.Position = UDim2.new(0.05, 0, 0.12, 0) minBtn.Text = "👁 Menú" minBtn.TextColor3 = Color3.fromRGB(255, 255, 255) minBtn.TextScaled = true minBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30) minBtn.Parent = screenGui local minCorner = Instance.new("UICorner") minCorner.CornerRadius = UDim.new(0, 8) minCorner.Parent = minBtn minBtn.MouseButton1Click:Connect(function() mainFrame.Visible = not mainFrame.Visible end) -- Fisicas de Vuelo local bv = Instance.new("BodyVelocity") bv.MaxForce = Vector3.new(1e6, 1e6, 1e6) local bg = Instance.new("BodyGyro") bg.MaxTorque = Vector3.new(1e6, 1e6, 1e6) bg.P = 9000 -- Eventos de Botones toggleBtn.MouseButton1Click:Connect(function() flying = not flying if flying then toggleBtn.Text = "Vuelo: ON" toggleBtn.BackgroundColor3 = Color3.fromRGB(40, 180, 40) bv.Parent = hrp bg.Parent = hrp humanoid:ChangeState(Enum.HumanoidStateType.Physics) else toggleBtn.Text = "Vuelo: OFF" toggleBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 40) bv.Parent = nil bg.Parent = nil humanoid:ChangeState(Enum.HumanoidStateType.GettingUp) end end) noclipBtn.MouseButton1Click:Connect(function() noclip = not noclip noclipBtn.Text = noclip and "Noclip: ON" or "Noclip: OFF" noclipBtn.BackgroundColor3 = noclip and Color3.fromRGB(40, 180, 40) or Color3.fromRGB(180, 40, 40) end) speedBtn.MouseButton1Click:Connect(function() currentSpeedIndex = (currentSpeedIndex % #speedModes) + 1 speed = speedModes[currentSpeedIndex] speedBtn.Text = "Velocidad: " .. speed end) dashBtn.MouseButton1Click:Connect(function() hrp.CFrame = hrp.CFrame + (camera.CFrame.LookVector * 40) end) lightBtn.MouseButton1Click:Connect(function() fullbright = not fullbright lightBtn.Text = fullbright and "💡 Luz Total: ON" or "💡 Luz Total: OFF" lightBtn.BackgroundColor3 = fullbright and Color3.fromRGB(40, 180, 40) or Color3.fromRGB(60, 60, 75) if fullbright then Lighting.Brightness = 3 Lighting.ClockTime = 14 else Lighting.Brightness = defaultBrightness Lighting.ClockTime = defaultClockTime end end) ghostBtn.MouseButton1Click:Connect(function() ghostMode = not ghostMode ghostBtn.Text = ghostMode and "👻 Modo Fantasma: ON" or "👻 Modo Fantasma: OFF" ghostBtn.BackgroundColor3 = ghostMode and Color3.fromRGB(40, 180, 40) or Color3.fromRGB(60, 60, 75) for _, part in ipairs(character:GetDescendants()) do if part:IsA("BasePart") or part:IsA("Decal") then part.Transparency = ghostMode and 0.6 or 0 end end end) upBtn.MouseButton1Down:Connect(function() goingUp = true end) upBtn.MouseButton1Up:Connect(function() goingUp = false end) downBtn.MouseButton1Down:Connect(function() goingDown = true end) downBtn.MouseButton1Up:Connect(function() goingDown = false end) -- Anti Caída (Evita morir al apagar vuelo en la altura) humanoid.StateChanged:Connect(function(_, newState) if newState == Enum.HumanoidStateType.Freefall and not flying then humanoid:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false) end end) -- Bucle Principal RunService.RenderStepped:Connect(function() if flying then bg.CFrame = camera.CFrame local moveDir = humanoid.MoveDirection local verticalSpeed = 0 if goingUp then verticalSpeed = speed end if goingDown then verticalSpeed = -speed end if moveDir.Magnitude > 0 or verticalSpeed ~= 0 then bv.Velocity = (moveDir * speed) + Vector3.new(0, verticalSpeed, 0) else bv.Velocity = Vector3.zero end end if noclip and character then for _, part in ipairs(character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end end)