-- PANA HUB PREMIUM - EDICIÓN MULTILINGÜE (PC & MOBILE) local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TeleportService = game:GetService("TeleportService") local SoundService = game:GetService("SoundService") local player = Players.LocalPlayer -- Variables de Estado _G.Jump = false; _G.Hit = false; _G.Insta = false; _G.Plat = false; _G.GodMode = false; _G.Speed = 16; _G.pPart = nil _G.PotenciaSalvado = 500 -- Potencia exclusiva para el sistema de Auto-Salvado -- Variable global para controlar el objeto de sonido actual local CurrentSound = nil -- Carga del Menú Rayfield local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local Window = Rayfield:CreateWindow({ Name = "👻 Pana Hub Premium", LoadingTitle = "👻 Iniciando Full Power...", LoadingSubtitle = "by fabi_pana_hub", Theme = "Default", DisableRayfieldPrompts = true, DisableBuildWarnings = true, ConfigurationSaving = { Enabled = false }, Discord = { Enabled = false } }) -- ======================================================= -- 🔥 PESTAÑA 1: IMPORTANTES -- ======================================================= local Tab1 = Window:CreateTab("🔥 Importantes", nil) local SecMovimiento = Tab1:CreateSection("Movimiento y Agilidad", true) Tab1:CreateToggle({Name = "🚀 Salto Infinito", CurrentValue = false, Callback = function(v) _G.Jump = v end}) Tab1:CreateButton({ Name = "☄️ Salto Impulso (Cohete)", Info = "Potencia fija de 500 (No tocar).", Callback = function() local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then char.HumanoidRootPart:ApplyImpulse(Vector3.new(0, 500, 0)) end end }) local SecVentaja = Tab1:CreateSection("Ajustes de Ventaja", true) Tab1:CreateToggle({Name = "🎯 Hitbox Expand", CurrentValue = false, Callback = function(v) _G.Hit = v end}) Tab1:CreateSlider({Name = "⚙️ Velocidad", Range = {16, 200}, Increment = 1, CurrentValue = 16, Callback = function(v) _G.Speed = v end}) -- ======================================================= -- ⚡ PESTAÑA 2: OPCIONES OP -- ======================================================= local Tab2 = Window:CreateTab("⚡ Opciones OP", nil) local SectionFunciones = Tab2:CreateSection("Cheats Activos", true) Tab2:CreateToggle({Name = "🛡️ Modo Dios (Anti-Muerte)", CurrentValue = false, Callback = function(v) _G.GodMode = v end}) Tab2:CreateToggle({Name = "⚡ Insta-Interact", CurrentValue = false, Callback = function(v) _G.Insta = v end}) Tab2:CreateToggle({Name = "🪂 Plataforma Estática", CurrentValue = false, Callback = function(v) _G.Plat = v end}) local SectionUI = Tab2:CreateSection("Botones Flotantes", true) Tab2:CreateToggle({Name = "📲 Botón Plataforma", CurrentValue = false, Callback = function(v) if _G.PlatBtn then _G.PlatBtn.Visible = v end end}) Tab2:CreateToggle({Name = "📲 Botón Salto Cohete", CurrentValue = false, Callback = function(v) if _G.JumpBtn then _G.JumpBtn.Visible = v end end}) local SectionExtra = Tab2:CreateSection("Seguridad", true) Tab2:CreateButton({Name = "🔄 Re-unirse al Servidor (CUIDADO)", Callback = function() TeleportService:TeleportToPlaceInstance(game.PlaceId, game.JobId, player) end}) -- ======================================================= -- 🎵 PESTAÑA 3: APARTADO DE MÚSICA -- ======================================================= local TabMusic = Window:CreateTab("🎵 Music Player", nil) local SecMusic = TabMusic:CreateSection("Audio Settings", true) local InputAudioID = "0" TabMusic:CreateInput({ Name = "🆔 Enter Music ID", PlaceholderText = "Paste Roblox Audio ID here...", RemoveTextAfterFocusLost = false, Callback = function(text) InputAudioID = text end, }) TabMusic:CreateButton({ Name = "▶️ Play Music", Callback = function() if CurrentSound then CurrentSound:Stop() CurrentSound:Destroy() CurrentSound = nil end local success, err = pcall(function() CurrentSound = Instance.new("Sound") CurrentSound.SoundId = "rbxassetid://" .. InputAudioID CurrentSound.Volume = 1 CurrentSound.Looped = true CurrentSound.Parent = SoundService CurrentSound:Play() end) if not success then Rayfield:Notify({Title = "🎵 Audio Error", Content = "Invalid ID or Audio not available.", Duration = 3}) end end }) TabMusic:CreateButton({ Name = "⏸️ Stop Music", Callback = function() if CurrentSound then CurrentSound:Stop() CurrentSound:Destroy() CurrentSound = nil end end }) -- ======================================================= -- 🛠️ PESTAÑA 4: HERRAMIENTAS PRO -- ======================================================= local TabPro = Window:CreateTab("🛠️ Herramientas Pro", nil) local SecPro = TabPro:CreateSection("Sistema de Auto-Salvado", true) TabPro:CreateSlider({ Name = "🛡️ Potencia de Salvado (Bloques)", Range = {100, 1500}, Increment = 50, CurrentValue = 500, Callback = function(v) _G.PotenciaSalvado = v end }) TabPro:CreateToggle({Name = "⚡ Auto-Salvado Activo", CurrentValue = false, Callback = function(v) _G.AutoSalvado = v end}) -- ======================================================= -- 🛠️ CREACIÓN DE BOTONES FLOTANTES TÁCTICOS -- ======================================================= local ScreenGui = Instance.new("ScreenGui", game:GetService("CoreGui")) ScreenGui.Name = "FabiHUD"; ScreenGui.ResetOnSpawn = false local function CrearBoton(name, text, pos) local btn = Instance.new("TextButton", ScreenGui) btn.Name = name; btn.Size = UDim2.new(0, 55, 0, 55); btn.Position = pos btn.BackgroundColor3 = Color3.fromRGB(255, 30, 70); btn.BackgroundTransparency = 0.3 btn.Text = text; btn.TextSize = 25; btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Font = Enum.Font.SourceSansBold; btn.Visible = false; btn.Active = true; btn.Draggable = true Instance.new("UICorner", btn).CornerRadius = UDim.new(1, 0) local s = Instance.new("UIStroke", btn) s.Thickness = 2; s.Color = Color3.fromRGB(255, 255, 255); s.ApplyStrokeMode = Enum.ApplyStrokeMode.Border return btn end _G.PlatBtn = CrearBoton("PlatBtn", "🪂", UDim2.new(0.85, 0, 0.4, 0)) _G.JumpBtn = CrearBoton("JumpBtn", "🚀", UDim2.new(0.85, 0, 0.55, 0)) _G.PlatBtn.MouseButton1Click:Connect(function() _G.Plat = not _G.Plat _G.PlatBtn.BackgroundColor3 = _G.Plat and Color3.fromRGB(30, 255, 100) or Color3.fromRGB(255, 30, 70) end) _G.JumpBtn.MouseButton1Click:Connect(function() local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") then char.HumanoidRootPart:ApplyImpulse(Vector3.new(0, 500, 0)) _G.JumpBtn.BackgroundColor3 = Color3.fromRGB(30, 255, 100) task.delay(0.1, function() _G.JumpBtn.BackgroundColor3 = Color3.fromRGB(255, 30, 70) end) end end) -- ======================================================= -- ⚙️ MOTOR PRINCIPAL -- ======================================================= RunService.RenderStepped:Connect(function() local char = player.Character; if not char then return end local hum = char:FindFirstChildOfClass("Humanoid") if _G.GodMode and hum then hum:SetStateEnabled(Enum.HumanoidStateType.Dead, false) if hum.Health > 0 and hum.Health < 15 then hum.Health = hum.MaxHealth end elseif hum then hum:SetStateEnabled(Enum.HumanoidStateType.Dead, true) end if hum then hum.WalkSpeed = _G.Speed end if _G.Hit then for _, v in pairs(Players:GetPlayers()) do if v ~= player and v.Character and v.Character:FindFirstChild("HumanoidRootPart") then v.Character.HumanoidRootPart.Size = Vector3.new(6, 6, 6) end end end if _G.Insta then for _, v in pairs(workspace:GetDescendants()) do if v:IsA("ProximityPrompt") then v.HoldDuration = 0 end end end if _G.Plat then if not _G.pPart or not _G.pPart.Parent then _G.pPart = Instance.new("Part", workspace); _G.pPart.Size = Vector3.new(5, 0.5, 5); _G.pPart.Anchored = true; _G.pPart.Transparency = 0.7; _G.pPart.CanCollide = true end local root = char:FindFirstChild("HumanoidRootPart") if root then _G.pPart.CFrame = root.CFrame * CFrame.new(0, -3.5, 0) end elseif _G.pPart then _G.pPart:Destroy(); _G.pPart = nil end end) UserInputService.JumpRequest:Connect(function() if _G.Jump and player.Character then player.Character:FindFirstChildOfClass("Humanoid"):ChangeState(Enum.HumanoidStateType.Jumping) end end) Rayfield:Notify({Title = "Pana Hub", Content = "¡Estructura optimizada y ordenada, mano!", Duration = 3}) -- ======================================================= -- 💬 SISTEMA DE NOTIFICACIONES PERMANENTES (4 MENSAJES) -- ======================================================= task.spawn(function() local mensajes = { "Bienvenido de vuelta, " .. player.Name .. ". ¿Qué tal tu día?", "Sistema Pana Hub listo. ¡Hoy vamos a dominar la partida, mano!", "Arsenal táctico cargado y listo para la acción. ¡No dejes ni uno en pie!", "¡Pana Hub activo! Si las cosas se ponen feas, recuerda: activa el salvado y a volar." } local i = 1 while i <= #mensajes do if i == 1 then task.wait(2) else task.wait(120) end -- Verifica de forma segura el estado de salud antes de mandar el aviso local char = player.Character local hum = char and char:FindFirstChildOfClass("Humanoid") -- Si el personaje existe y tiene más de 50 de vida (más de la mitad), manda el aviso de forma segura if hum and hum.Health >= 50 then Rayfield:Notify({ Title = "👻 Pana Hub Info", Content = mensajes[i], Duration = 3 }) i = i + 1 -- Avanza al siguiente mensaje solo si se pudo mostrar else -- Si estás muerto o con poca vida, espera 5 segundos extras en silencio y vuelve a chequear task.wait(3) end end end)