
Key Required
Refugio de portales - Hub
Lua Script•585 lines (18317 chars)
-- ============================================================
-- paneer's Menu — WindUI
-- Todos los exploits confirmados integrados
-- ============================================================
-- Cargar WindUI
local WindUI = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()
-- Servicios
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local CollectionService = game:GetService("CollectionService")
local LP = Players.LocalPlayer
local RS = ReplicatedStorage
-- Packet library del juego
local Packets = require(RS.Utils.Packets)
-- Estado global
local state = {
m1Auto = false,
abilitySpam = false,
dashSpam = false,
blockSpam = false,
wheelSpinSpam = false,
confettiSpam = false,
rainbowPortal = false,
espEnabled = false,
fovEnabled = false,
zoomEnabled = false,
}
local espObjects = {}
local requestId = 0
-- ============================================================
-- FUNCIONES AUXILIARES
-- ============================================================
local function getChar()
local char = LP.Character
if not char then return nil end
return char, char:FindFirstChildOfClass("Humanoid"), char:FindFirstChild("HumanoidRootPart")
end
local function getClosestEnemy(range)
range = range or 12
local char = LP.Character
if not char then return nil end
local hrp = char:FindFirstChild("HumanoidRootPart")
if not hrp then return nil end
local closest, minDist = nil, range
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LP and p.Character then
local php = p.Character:FindFirstChild("HumanoidRootPart")
local phum = p.Character:FindFirstChildOfClass("Humanoid")
if php and phum and phum.Health > 0 then
local dist = (php.Position - hrp.Position).Magnitude
if dist < minDist then
closest, minDist = php, dist
end
end
end
end
return closest
end
local function hsvToHex(h, s, v)
return "#" .. Color3.fromHSV(h, s, v):ToHex()
end
-- ============================================================
-- CREAR VENTANA
-- ============================================================
local Window = WindUI:CreateWindow({
Title = "paneer's Hub",
Icon = "crown",
Author = "by paneer",
Folder = "paneersHub",
Size = UDim2.fromOffset(580, 420),
Transparent = true,
Theme = "Dark",
Resizable = true,
SideBarWidth = 180,
HideSearchBar = true,
ScrollBarEnabled = false,
})
-- Tabs
local MainTab = Window:Tab({ Title = "Principal", Icon = "home" })
local CombatTab = Window:Tab({ Title = "Combate", Icon = "sword" })
local ExploitsTab = Window:Tab({ Title = "Exploits", Icon = "zap" })
local VisualsTab = Window:Tab({ Title = "Visuales", Icon = "eye" })
local RewardsTab = Window:Tab({ Title = "Recompensas", Icon = "gift" })
-- ============================================================
-- TAB PRINCIPAL
-- ============================================================
local mainSection = MainTab:Section({ Title = "Estado", Opened = true })
mainSection:Button({
Title = "Ver Morteys",
Desc = "Busca el contador en la GUI",
Callback = function()
local PlayerGui = LP:WaitForChild("PlayerGui")
local found = false
local function scan(inst, path, depth)
if depth > 10 then return end
path = path or ""
if inst:IsA("TextLabel") or inst:IsA("TextButton") then
local txt = inst.Text
if txt and txt:match("^[%d,]+$") and #txt >= 3 then
print("[paneer] NUMERO: " .. path .. "." .. inst.Name .. " = " .. txt)
found = true
end
end
for _, c in ipairs(inst:GetChildren()) do
scan(c, path .. "." .. inst.Name, depth + 1)
end
end
scan(PlayerGui, "PlayerGui", 0)
if not found then
print("[paneer] No se encontraron números grandes en la GUI")
end
end,
})
mainSection:Button({
Title = "Ver Inventario",
Desc = "Muestra habilidades y gun models poseídos",
Callback = function()
for _, folderName in ipairs({"OwnedSpecials", "OwnedUltimates", "OwnedGunModels"}) do
local folder = LP:FindFirstChild(folderName)
if folder then
print("[paneer] === " .. folderName .. " ===")
for _, v in ipairs(folder:GetChildren()) do
if v:IsA("BoolValue") and v.Value then
print(" ✓ " .. v.Name)
end
end
end
end
end,
})
-- ============================================================
-- TAB COMBATE
-- ============================================================
local combatSection = CombatTab:Section({ Title = "Auto M1", Opened = true })
combatSection:Toggle({
Title = "M1 Auto + Aim",
Desc = "Ataca automáticamente y se gira al enemigo más cercano",
Value = false,
Callback = function(v)
state.m1Auto = v
end,
})
combatSection:Slider({
Title = "Rango de Aim",
Desc = "Distancia para apuntar",
Step = 1,
Value = { Min = 5, Max = 50, Default = 12 },
Callback = function(v)
state.m1Range = v
end,
})
local abilitySection = CombatTab:Section({ Title = "Habilidades", Opened = true })
abilitySection:Toggle({
Title = "Spam de Habilidades",
Desc = "Activa Special y Ultimate continuamente",
Value = false,
Callback = function(v)
state.abilitySpam = v
end,
})
local dashSection = CombatTab:Section({ Title = "Dash y Block", Opened = true })
dashSection:Toggle({
Title = "Spam de Dash",
Desc = "Dash front continuo",
Value = false,
Callback = function(v)
state.dashSpam = v
end,
})
dashSection:Toggle({
Title = "Spam de Block",
Desc = "Toggle rápido de bloqueo",
Value = false,
Callback = function(v)
state.blockSpam = v
end,
})
-- ============================================================
-- TAB EXPLOITS
-- ============================================================
local packetSection = ExploitsTab:Section({ Title = "Packets", Opened = true })
packetSection:Toggle({
Title = "WheelSpin Infinito",
Desc = "Gira la ruleta sin límite — CONFIRMADO",
Value = false,
Callback = function(v)
state.wheelSpinSpam = v
end,
})
packetSection:Toggle({
Title = "Confetti a Todos",
Desc = "Emite confetti global — CONFIRMADO",
Value = false,
Callback = function(v)
state.confettiSpam = v
end,
})
packetSection:Button({
Title = "Disparar Confetti (una vez)",
Desc = "Emite confetti inmediatamente",
Callback = function()
pcall(function() Packets.Conffeti.Emit:Fire() end)
end,
})
local portalSection = ExploitsTab:Section({ Title = "Portal", Opened = true })
portalSection:Toggle({
Title = "Portal Arcoíris",
Desc = "Cambia el color del portal en ciclo HSV",
Value = false,
Callback = function(v)
state.rainbowPortal = v
end,
})
portalSection:Slider({
Title = "Velocidad Arcoíris",
Desc = "Segundos por tick (más bajo = más rápido)",
Step = 0.01,
Value = { Min = 0.03, Max = 0.5, Default = 0.08 },
Callback = function(v)
state.rainbowSpeed = v
end,
})
portalSection:Button({
Title = "Equipar Portal",
Desc = "Fuerza la creación de un portal",
Callback = function()
local PortalSlotAction = RS.Functions:FindFirstChild("PortalSlotAction")
if PortalSlotAction then
pcall(function() PortalSlotAction:InvokeServer("Equip") end)
end
end,
})
local codeSection = ExploitsTab:Section({ Title = "Códigos", Opened = false })
codeSection:Button({
Title = "Probar Códigos Comunes",
Desc = "Prueba una wordlist de códigos potenciales",
Callback = function()
local codes = {"FREE", "MORTY", "RICK", "PORTAL", "SUMMER", "BETH", "JERRY",
"EVILMORTY", "PRIME", "C137", "BIRD", "PICKLE", "TINY"}
for _, code in ipairs(codes) do
pcall(function()
local a, b = Packets.Codes.RedeemCode:Fire(code)
if type(a) == "table" then
print("[paneer] Code " .. code .. " -> " .. tostring(a[1]) .. " | " .. tostring(a[2]))
end
end)
task.wait(0.8)
end
end,
})
-- ============================================================
-- TAB VISUALES
-- ============================================================
local espSection = VisualsTab:Section({ Title = "ESP", Opened = true })
espSection:Toggle({
Title = "ESP de Jugadores",
Desc = "Cajas y nombres sobre enemigos",
Value = false,
Callback = function(v)
state.espEnabled = v
if not v then
for _, objs in pairs(espObjects) do
objs.box:Remove()
objs.name:Remove()
end
espObjects = {}
end
end,
})
local fovSection = VisualsTab:Section({ Title = "Cámara", Opened = true })
fovSection:Toggle({
Title = "FOV Hack",
Desc = "Forza el FieldOfView localmente (client-side)",
Value = false,
Callback = function(v)
state.fovEnabled = v
end,
})
fovSection:Slider({
Title = "FOV",
Desc = "Valor del FieldOfView",
Step = 1,
Value = { Min = 70, Max = 140, Default = 120 },
Callback = function(v)
state.fovValue = v
end,
})
fovSection:Toggle({
Title = "Zoom Extendido",
Desc = "MaxZoomDistance = 1000",
Value = false,
Callback = function(v)
state.zoomEnabled = v
if v then
LP.CameraMaxZoomDistance = 1000
end
end,
})
-- ============================================================
-- TAB RECOMPENSAS
-- ============================================================
local rewardSection = RewardsTab:Section({ Title = "Recompensas", Opened = true })
rewardSection:Button({
Title = "Reclamar Todo (Playtime + Daily)",
Desc = "Envía los packets de todas las recompensas",
Callback = function()
for i = 1, 7 do
pcall(function() Packets.PlaytimeRewards.ClaimReward:Fire(i) end)
task.wait(0.3)
end
for i = 1, 7 do
pcall(function() Packets.DailyRewards.ClaimReward:Fire(i) end)
task.wait(0.3)
end
pcall(function() Packets.FriendReward.ClaimReward:Fire() end)
pcall(function() Packets.GroupReward.ClaimReward:Fire() end)
WindUI:Notify({ Title = "Recompensas", Content = "Todos los packets enviados", Duration = 3 })
end,
})
rewardSection:Button({
Title = "Verificar Pases",
Desc = "Muestra si tienes los gamepasses",
Callback = function()
local passIds = {
["Custom Portal Color"] = 1979288487,
["VIP"] = 1853711135,
["Teleporter"] = 1853549088,
["x2 Speed"] = 1853099131,
}
for name, id in pairs(passIds) do
pcall(function()
local owned = Packets.Marketplace.CheckPassOwned:Fire(id, name)
print("[paneer] " .. name .. ": " .. tostring(owned))
end)
task.wait(0.3)
end
end,
})
-- ============================================================
-- LOOPS DE EJECUCIÓN
-- ============================================================
-- M1 Auto + Aim
task.spawn(function()
while task.wait(0.15) do
if state.m1Auto then
local char, hum, hrp = getChar()
if char and hum and hum.Health > 0 and hrp then
local target = getClosestEnemy(state.m1Range or 12)
if target then
local lookPos = Vector3.new(target.Position.X, hrp.Position.Y, target.Position.Z)
hrp.CFrame = CFrame.lookAt(hrp.Position, lookPos)
end
requestId = requestId + 1
local CombatEvent = RS.Events.Combat:FindFirstChild("CombatEvent")
if CombatEvent then
pcall(function()
CombatEvent:FireServer({
action = "Start",
gunMode = false,
requestId = requestId,
finisher = nil,
predictedStage = 1,
rootCFrame = hrp.CFrame,
sentAt = workspace:GetServerTimeNow()
})
end)
end
end
end
end
end)
-- Ability Spam
task.spawn(function()
while task.wait(1.5) do
if state.abilitySpam then
local AbilityAction = RS.Functions:FindFirstChild("AbilityAction")
if AbilityAction then
for _, ability in ipairs({"Special", "Ultimate"}) do
local ok, res = pcall(function()
return AbilityAction:InvokeServer("Activate", ability)
end)
if ok and type(res) == "table" and res.serial then
task.wait(0.3)
pcall(function()
AbilityAction:InvokeServer("Release", ability, res.serial)
end)
end
task.wait(0.3)
end
end
end
end
end)
-- Dash Spam
task.spawn(function()
while task.wait(1.5) do
if state.dashSpam then
local DashEvent = RS.Events.Combat:FindFirstChild("DashEvent")
if DashEvent then
requestId = requestId + 1
pcall(function() DashEvent:FireServer("Start", "Front", requestId) end)
end
end
end
end)
-- Block Spam
task.spawn(function()
while task.wait(0.2) do
if state.blockSpam then
local BlockEvent = RS.Events.Combat:FindFirstChild("BlockEvent")
if BlockEvent then
pcall(function() BlockEvent:FireServer(true) end)
task.wait(0.05)
pcall(function() BlockEvent:FireServer(false) end)
end
end
end
end)
-- WheelSpin Spam
task.spawn(function()
while task.wait(1) do
if state.wheelSpinSpam then
pcall(function() Packets.WheelSpin.Spin:Fire() end)
end
end
end)
-- Confetti Spam
task.spawn(function()
while task.wait(1.5) do
if state.confettiSpam then
pcall(function() Packets.Conffeti.Emit:Fire() end)
end
end
end)
-- Rainbow Portal
task.spawn(function()
local hue = 0
while true do
local speed = state.rainbowSpeed or 0.08
if state.rainbowPortal then
hue = (hue + 0.008) % 1
local hex = hsvToHex(hue, 1, 1)
pcall(function() Packets.Settings.SavePortalColor:Fire(hex) end)
end
task.wait(speed)
end
end)
-- ESP
local cam = workspace.CurrentCamera
local function createESP(player)
if player == LP or espObjects[player] then return end
local box = Drawing.new("Square")
box.Thickness = 1; box.Color = Color3.fromRGB(255, 0, 0); box.Filled = false; box.Visible = false
local name = Drawing.new("Text")
name.Size = 14; name.Center = true; name.Outline = true
name.Color = Color3.fromRGB(255, 255, 255); name.Visible = false
espObjects[player] = {box = box, name = name}
end
for _, p in ipairs(Players:GetPlayers()) do createESP(p) end
Players.PlayerAdded:Connect(createESP)
Players.PlayerRemoving:Connect(function(p)
if espObjects[p] then
espObjects[p].box:Remove(); espObjects[p].name:Remove(); espObjects[p] = nil
end
end)
RunService.RenderStepped:Connect(function()
if not state.espEnabled then
for _, objs in pairs(espObjects) do
objs.box.Visible = false; objs.name.Visible = false
end
return
end
for player, objs in pairs(espObjects) do
local char = player.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hrp and hum and hum.Health > 0 then
local pos, onScreen = cam:WorldToViewportPoint(hrp.Position)
if onScreen then
local head = char:FindFirstChild("Head")
if head then
local headPos = cam:WorldToViewportPoint(head.Position + Vector3.new(0, 1, 0))
local height = math.abs(headPos.Y - pos.Y) * 1.8
local width = height / 2
objs.box.Size = Vector2.new(width, height)
objs.box.Position = Vector2.new(pos.X - width/2, pos.Y - height/2)
objs.box.Visible = true
objs.name.Text = player.Name .. " [" .. math.floor(hum.Health) .. "]"
objs.name.Position = Vector2.new(pos.X, pos.Y - height/2 - 20)
objs.name.Visible = true
end
else
objs.box.Visible = false; objs.name.Visible = false
end
else
objs.box.Visible = false; objs.name.Visible = false
end
end
end)
-- FOV + Zoom
RunService.RenderStepped:Connect(function()
if state.fovEnabled and cam then
local targetFOV = state.fovValue or 120
if cam.FieldOfView ~= targetFOV then
cam.FieldOfView = targetFOV
end
end
if state.zoomEnabled then
if LP.CameraMaxZoomDistance ~= 1000 then
LP.CameraMaxZoomDistance = 1000
end
end
end)
-- ============================================================
-- NOTIFICACIÓN
-- ============================================================
WindUI:Notify({
Title = "paneer's Hub",
Content = "Menú cargado. Todos los exploits activos.",
Duration = 5,
})
print("[paneer] Menú definitivo cargado")Features & Information
- Menú WindUI con 5 pestañas: Principal, Combate, Exploits, Visuales, Recompensas
- M1 Auto + Aim: ataca y gira hacia el enemigo más cercano
- Spam de habilidades (Special y Ultimate)
- Spam de Dash y Block
- WheelSpin infinito (dinero ilimitado) — CONFIRMADO
- Confetti a todos los jugadores
- Portal Arcoíris: cambia el color de tu portal en ciclo HSV
- Reclamo automático de recompensas (Playtime, Daily, Friend, Group)
- Verificador de GamePasses
- ESP de jugadores con cajas y nombres
- FOV Hack y Zoom Extendido (client-side)
- Interfaz en español
Community Comments (0)
No comments yet for this script.
