Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- ╔═══════════════════════════════════════════╗
- -- ║ ZYREN PANEL v1.0 ║
- -- ║ Sin bugs — loadstring OK ║
- -- ╚═══════════════════════════════════════════╝
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local UserInputService = game:GetService("UserInputService")
- local TweenService = game:GetService("TweenService")
- local Lighting = game:GetService("Lighting")
- local VirtualUser = game:GetService("VirtualUser")
- local player = Players.LocalPlayer
- local camera = workspace.CurrentCamera
- -- ══════════════════════════════════════════
- -- PALETA
- -- ══════════════════════════════════════════
- local W = Color3.fromRGB(255, 255, 255)
- local OF = Color3.fromRGB(245, 244, 240)
- local GR = Color3.fromRGB(232, 230, 224)
- local MD = Color3.fromRGB(154, 151, 144)
- local DK = Color3.fromRGB(26, 25, 22)
- local A1 = Color3.fromRGB(255, 61, 0)
- local A2 = Color3.fromRGB(255, 149, 0)
- local GN = Color3.fromRGB(0, 200, 83)
- local RD = Color3.fromRGB(220, 50, 50)
- -- ══════════════════════════════════════════
- -- VARIABLES
- -- ══════════════════════════════════════════
- local states = {
- esp=false, nameEsp=false, boxEsp=false,
- aimAssist=false, teamCheck=false, showFov=false,
- rainbow=false, fullbright=false, jumpBoost=false,
- infiniteJump=false, chatSpy=false, antiAFK=false,
- thirdPerson=false, nameHide=false,
- prediccion=false, aimAlt=false,
- spin=false,
- }
- local fovRadius = 120
- local aimSmooth = 0.15
- local jumpMult = 2
- local afkTimer = 0
- local chatSpyConnected = false
- local aimPartLabels = {"Head","Cuello","Pecho","Humanoide"}
- local aimPartIndex = 1
- local predVal = 0.1
- local whitelist = {}
- local boxes = {}
- local aimAltTimer = 0
- local aimAltOnHead = true
- local aimAltDelay = 1.5
- local aimAltSecIdx = 3
- -- Third Person
- local thirdCamConn = nil
- local thirdOffset = Vector3.new(0, 5, 12)
- -- Spin
- local spinSpeed = 200
- local spinConn = nil
- local spinAngleY = 0 -- ángulo acumulado en radianes
- local origFog = Lighting.FogEnd
- local origAmb = Lighting.Ambient
- local origOutA = Lighting.OutdoorAmbient
- local origBri = Lighting.Brightness
- -- ══════════════════════════════════════════
- -- TWEEN HELPER
- -- ══════════════════════════════════════════
- local function tw(obj, props, t, sty, dir)
- TweenService:Create(obj,
- TweenInfo.new(t or 0.2, sty or Enum.EasingStyle.Quart, dir or Enum.EasingDirection.Out),
- props):Play()
- end
- -- ══════════════════════════════════════════
- -- GUI ROOT
- -- ══════════════════════════════════════════
- local gui = Instance.new("ScreenGui")
- gui.Name = "ZyrenPanel"
- gui.ResetOnSpawn = false
- gui.IgnoreGuiInset = true
- gui.DisplayOrder = 999999
- if syn and syn.protect_gui then
- syn.protect_gui(gui)
- gui.Parent = game:GetService("CoreGui")
- elseif gethui then
- gui.Parent = gethui()
- else
- gui.Parent = player:WaitForChild("PlayerGui")
- end
- -- ══════════════════════════════════════════
- -- FOV CIRCLE — empieza invisible
- -- ══════════════════════════════════════════
- local fovF = Instance.new("Frame")
- fovF.Name = "FovCircle"
- fovF.BackgroundTransparency = 1
- fovF.ZIndex = 3
- fovF.Size = UDim2.new(0, fovRadius*2, 0, fovRadius*2)
- fovF.AnchorPoint = Vector2.new(0.5, 0.5)
- fovF.Position = UDim2.new(0.5, 0, 0.5, 0)
- fovF.Visible = false -- ← INVISIBLE por defecto
- fovF.Parent = gui
- Instance.new("UICorner", fovF).CornerRadius = UDim.new(1, 0)
- local fovStr = Instance.new("UIStroke", fovF)
- fovStr.Thickness = 1.5
- fovStr.Color = A1
- -- ══════════════════════════════════════════
- -- BOTÓN TOGGLE Z
- -- ══════════════════════════════════════════
- local toggleBtn = Instance.new("ImageButton")
- toggleBtn.Size = UDim2.new(0, 46, 0, 46)
- toggleBtn.Position = UDim2.new(0, 12, 0, 12)
- toggleBtn.Image = "rbxassetid://6031302938"
- toggleBtn.ScaleType = Enum.ScaleType.Fit
- toggleBtn.BackgroundColor3 = DK
- toggleBtn.BorderSizePixel = 0
- toggleBtn.ZIndex = 20
- toggleBtn.Parent = gui
- Instance.new("UICorner", toggleBtn).CornerRadius = UDim.new(0, 10)
- local tBtnStroke = Instance.new("UIStroke", toggleBtn)
- tBtnStroke.Thickness = 2
- tBtnStroke.Color = A1
- -- ══════════════════════════════════════════
- -- PANEL — fondo BLANCO
- -- ══════════════════════════════════════════
- local PW = 300
- local PH = 580
- local panel = Instance.new("Frame")
- panel.Name = "ZyrenPanelMain"
- panel.Size = UDim2.new(0, PW, 0, PH)
- panel.Position = UDim2.new(0, 68, 0, 12)
- panel.BackgroundColor3 = W -- BLANCO
- panel.BorderSizePixel = 0
- panel.Visible = false -- empieza cerrado
- panel.ClipsDescendants = true
- panel.ZIndex = 10
- panel.Parent = gui
- Instance.new("UICorner", panel).CornerRadius = UDim.new(0, 16)
- -- Sombra del panel
- local shadow = Instance.new("Frame")
- shadow.Size = UDim2.new(0, PW+24, 0, PH+24)
- shadow.Position = UDim2.new(0, 56, 0, 0)
- shadow.BackgroundColor3 = DK
- shadow.BackgroundTransparency = 0.82
- shadow.BorderSizePixel = 0
- shadow.Visible = false
- shadow.ZIndex = 9
- shadow.Parent = gui
- Instance.new("UICorner", shadow).CornerRadius = UDim.new(0, 20)
- -- Línea superior naranja
- local topAccent = Instance.new("Frame")
- topAccent.Size = UDim2.new(1, 0, 0, 3)
- topAccent.BackgroundColor3 = A1
- topAccent.BorderSizePixel = 0
- topAccent.ZIndex = 11
- topAccent.Parent = panel
- Instance.new("UICorner", topAccent).CornerRadius = UDim.new(0, 16)
- local topGrad = Instance.new("UIGradient", topAccent)
- topGrad.Color = ColorSequence.new{
- ColorSequenceKeypoint.new(0, A1),
- ColorSequenceKeypoint.new(1, A2)
- }
- -- ══════════════════════════════════════════
- -- HEADER
- -- ══════════════════════════════════════════
- local header = Instance.new("Frame")
- header.Size = UDim2.new(1, 0, 0, 52)
- header.Position = UDim2.new(0, 0, 0, 3)
- header.BackgroundColor3 = OF
- header.BorderSizePixel = 0
- header.ZIndex = 11
- header.Parent = panel
- local hLine = Instance.new("Frame")
- hLine.Size = UDim2.new(1, 0, 0, 1)
- hLine.Position = UDim2.new(0, 0, 1, -1)
- hLine.BackgroundColor3 = GR
- hLine.BorderSizePixel = 0
- hLine.ZIndex = 12
- hLine.Parent = header
- local logoLbl = Instance.new("TextLabel")
- logoLbl.Size = UDim2.new(0, 80, 1, 0)
- logoLbl.Position = UDim2.new(0, 16, 0, 0)
- logoLbl.Text = "ZYREN"
- logoLbl.TextColor3 = DK
- logoLbl.Font = Enum.Font.GothamBold
- logoLbl.TextSize = 16
- logoLbl.TextXAlignment = Enum.TextXAlignment.Left
- logoLbl.BackgroundTransparency = 1
- logoLbl.ZIndex = 12
- logoLbl.Parent = header
- local logoBadge = Instance.new("TextLabel")
- logoBadge.Size = UDim2.new(0, 34, 0, 16)
- logoBadge.Position = UDim2.new(0, 97, 0.5, -8)
- logoBadge.Text = "v1.0"
- logoBadge.TextColor3 = W
- logoBadge.Font = Enum.Font.GothamBold
- logoBadge.TextSize = 9
- logoBadge.TextXAlignment = Enum.TextXAlignment.Center
- logoBadge.BackgroundColor3 = A1
- logoBadge.BorderSizePixel = 0
- logoBadge.ZIndex = 12
- logoBadge.Parent = header
- Instance.new("UICorner", logoBadge).CornerRadius = UDim.new(0, 4)
- local dragHint = Instance.new("TextLabel")
- dragHint.Size = UDim2.new(0, 24, 1, 0)
- dragHint.Position = UDim2.new(1, -30, 0, 0)
- dragHint.Text = "⠿"
- dragHint.TextColor3 = MD
- dragHint.TextSize = 18
- dragHint.BackgroundTransparency = 1
- dragHint.ZIndex = 12
- dragHint.Parent = header
- -- ══════════════════════════════════════════
- -- DRAG
- -- ══════════════════════════════════════════
- local dragging, dragOff = false, Vector2.zero
- header.InputBegan:Connect(function(i)
- if i.UserInputType == Enum.UserInputType.MouseButton1
- or i.UserInputType == Enum.UserInputType.Touch then
- dragging = true
- dragOff = Vector2.new(
- i.Position.X - panel.AbsolutePosition.X,
- i.Position.Y - panel.AbsolutePosition.Y
- )
- end
- end)
- UserInputService.InputChanged:Connect(function(i)
- if dragging and (
- i.UserInputType == Enum.UserInputType.MouseMovement or
- i.UserInputType == Enum.UserInputType.Touch
- ) then
- local vp = camera.ViewportSize
- local nx = math.clamp(i.Position.X - dragOff.X, 0, vp.X - PW)
- local ny = math.clamp(i.Position.Y - dragOff.Y, 0, vp.Y - PH)
- panel.Position = UDim2.new(0, nx, 0, ny)
- shadow.Position = UDim2.new(0, nx-12, 0, ny)
- end
- end)
- UserInputService.InputEnded:Connect(function(i)
- if i.UserInputType == Enum.UserInputType.MouseButton1
- or i.UserInputType == Enum.UserInputType.Touch then
- dragging = false
- end
- end)
- -- ══════════════════════════════════════════
- -- SCROLL
- -- ══════════════════════════════════════════
- local scroll = Instance.new("ScrollingFrame")
- scroll.Size = UDim2.new(1, 0, 1, -56)
- scroll.Position = UDim2.new(0, 0, 0, 56)
- scroll.BackgroundTransparency = 1
- scroll.BorderSizePixel = 0
- scroll.ScrollBarThickness = 3
- scroll.ScrollBarImageColor3 = A1
- scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
- scroll.ZIndex = 11
- scroll.Parent = panel
- local lay = Instance.new("UIListLayout", scroll)
- lay.Padding = UDim.new(0, 4)
- lay.SortOrder = Enum.SortOrder.LayoutOrder
- lay.HorizontalAlignment = Enum.HorizontalAlignment.Center
- local pad = Instance.new("UIPadding", scroll)
- pad.PaddingTop = UDim.new(0, 10)
- pad.PaddingBottom = UDim.new(0, 10)
- pad.PaddingLeft = UDim.new(0, 10)
- pad.PaddingRight = UDim.new(0, 10)
- lay:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
- scroll.CanvasSize = UDim2.new(0, 0, 0, lay.AbsoluteContentSize.Y + 20)
- end)
- -- ══════════════════════════════════════════
- -- CONSTRUCTORES UI
- -- ══════════════════════════════════════════
- local order = 0
- local function makeSection(txt)
- order = order + 1
- local f = Instance.new("Frame")
- f.Size = UDim2.new(1, 0, 0, 26)
- f.BackgroundTransparency = 1
- f.LayoutOrder = order
- f.ZIndex = 12
- f.Parent = scroll
- local line = Instance.new("Frame")
- line.Size = UDim2.new(1, 0, 0, 1)
- line.Position = UDim2.new(0, 0, 0.5, 0)
- line.BackgroundColor3 = GR
- line.BorderSizePixel = 0
- line.ZIndex = 12
- line.Parent = f
- local lbl = Instance.new("TextLabel")
- lbl.AutomaticSize = Enum.AutomaticSize.X
- lbl.Size = UDim2.new(0, 0, 1, 0)
- lbl.Text = txt
- lbl.TextColor3 = MD
- lbl.TextSize = 9
- lbl.Font = Enum.Font.GothamBold
- lbl.TextXAlignment = Enum.TextXAlignment.Left
- lbl.BackgroundColor3 = W
- lbl.BorderSizePixel = 0
- lbl.ZIndex = 13
- lbl.Parent = f
- Instance.new("UIPadding", lbl).PaddingRight = UDim.new(0, 8)
- end
- local function makeBtn(icon, label, stateKey, cb)
- order = order + 1
- local btn = Instance.new("TextButton")
- btn.Size = UDim2.new(1, 0, 0, 36)
- btn.BackgroundColor3 = OF
- btn.BorderSizePixel = 0
- btn.Text = ""
- btn.LayoutOrder = order
- btn.ZIndex = 12
- btn.Parent = scroll
- Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10)
- local ico = Instance.new("TextLabel")
- ico.Size = UDim2.new(0, 30, 1, 0)
- ico.Position = UDim2.new(0, 8, 0, 0)
- ico.Text = icon
- ico.TextSize = 14
- ico.BackgroundTransparency = 1
- ico.TextColor3 = DK
- ico.ZIndex = 14
- ico.Parent = btn
- local lbl = Instance.new("TextLabel")
- lbl.Size = UDim2.new(1, -88, 1, 0)
- lbl.Position = UDim2.new(0, 40, 0, 0)
- lbl.Text = label
- lbl.TextSize = 11
- lbl.Font = Enum.Font.Gotham
- lbl.TextXAlignment = Enum.TextXAlignment.Left
- lbl.BackgroundTransparency = 1
- lbl.TextColor3 = DK
- lbl.ZIndex = 14
- lbl.Parent = btn
- local pill = Instance.new("Frame")
- pill.Size = UDim2.new(0, 40, 0, 20)
- pill.Position = UDim2.new(1, -46, 0.5, -10)
- pill.BackgroundColor3 = GR
- pill.BorderSizePixel = 0
- pill.ZIndex = 14
- pill.Parent = btn
- Instance.new("UICorner", pill).CornerRadius = UDim.new(1, 0)
- local dot = Instance.new("Frame")
- dot.Size = UDim2.new(0, 16, 0, 16)
- dot.Position = UDim2.new(0, 2, 0.5, -8)
- dot.BackgroundColor3 = MD
- dot.BorderSizePixel = 0
- dot.ZIndex = 15
- dot.Parent = pill
- Instance.new("UICorner", dot).CornerRadius = UDim.new(1, 0)
- local function refresh()
- local on = states[stateKey]
- tw(pill, {BackgroundColor3 = on and A1 or GR}, 0.2)
- tw(dot, {
- Position = on and UDim2.new(1,-18,0.5,-8) or UDim2.new(0,2,0.5,-8),
- BackgroundColor3 = on and W or MD
- }, 0.2)
- end
- btn.MouseButton1Click:Connect(function()
- states[stateKey] = not states[stateKey]
- refresh()
- if cb then cb(states[stateKey]) end
- end)
- btn.MouseEnter:Connect(function() tw(btn, {BackgroundColor3=GR}, 0.12) end)
- btn.MouseLeave:Connect(function() tw(btn, {BackgroundColor3=OF}, 0.12) end)
- refresh()
- return btn
- end
- local function makeSlider(label, minV, maxV, defV, decimals, onCh)
- decimals = decimals or 0
- order = order + 1
- local c = Instance.new("Frame")
- c.Size = UDim2.new(1, 0, 0, 54)
- c.BackgroundColor3 = OF
- c.BorderSizePixel = 0
- c.LayoutOrder = order
- c.ZIndex = 12
- c.Parent = scroll
- Instance.new("UICorner", c).CornerRadius = UDim.new(0, 10)
- local lbl = Instance.new("TextLabel")
- lbl.Size=UDim2.new(1,-70,0,22); lbl.Position=UDim2.new(0,12,0,6)
- lbl.Text=label; lbl.TextSize=11; lbl.Font=Enum.Font.Gotham
- lbl.TextXAlignment=Enum.TextXAlignment.Left
- lbl.BackgroundTransparency=1; lbl.TextColor3=DK; lbl.ZIndex=13; lbl.Parent=c
- local valLbl = Instance.new("TextLabel")
- valLbl.Size=UDim2.new(0,58,0,22); valLbl.Position=UDim2.new(1,-66,0,6)
- valLbl.Text=tostring(defV); valLbl.TextSize=11; valLbl.Font=Enum.Font.GothamBold
- valLbl.TextXAlignment=Enum.TextXAlignment.Right
- valLbl.BackgroundTransparency=1; valLbl.TextColor3=A1; valLbl.ZIndex=13; valLbl.Parent=c
- local track = Instance.new("Frame")
- track.Size=UDim2.new(1,-24,0,5); track.Position=UDim2.new(0,12,0,38)
- track.BackgroundColor3=GR; track.BorderSizePixel=0; track.ZIndex=13; track.Parent=c
- Instance.new("UICorner",track).CornerRadius=UDim.new(1,0)
- local rel0 = (defV-minV)/(maxV-minV)
- local fill = Instance.new("Frame")
- fill.Size=UDim2.new(rel0,0,1,0); fill.BackgroundColor3=A1
- fill.BorderSizePixel=0; fill.ZIndex=14; fill.Parent=track
- Instance.new("UICorner",fill).CornerRadius=UDim.new(1,0)
- Instance.new("UIGradient",fill).Color=ColorSequence.new{
- ColorSequenceKeypoint.new(0,A1), ColorSequenceKeypoint.new(1,A2)
- }
- local handle = Instance.new("Frame")
- handle.Size=UDim2.new(0,14,0,14); handle.Position=UDim2.new(rel0,-7,0.5,-7)
- handle.BackgroundColor3=W; handle.BorderSizePixel=0; handle.ZIndex=15; handle.Parent=track
- Instance.new("UICorner",handle).CornerRadius=UDim.new(1,0)
- local hs=Instance.new("UIStroke",handle); hs.Color=A1; hs.Thickness=2
- local drag2=false
- track.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then drag2=true end end)
- handle.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then drag2=true end end)
- UserInputService.InputEnded:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 or i.UserInputType==Enum.UserInputType.Touch then drag2=false end end)
- UserInputService.InputChanged:Connect(function(i)
- if drag2 and (i.UserInputType==Enum.UserInputType.MouseMovement or i.UserInputType==Enum.UserInputType.Touch) then
- local rel=math.clamp((i.Position.X-track.AbsolutePosition.X)/track.AbsoluteSize.X,0,1)
- local raw=minV+rel*(maxV-minV)
- local val=decimals>0 and math.floor(raw*10^decimals+0.5)/10^decimals or math.floor(raw+0.5)
- fill.Size=UDim2.new(rel,0,1,0); handle.Position=UDim2.new(rel,-7,0.5,-7)
- valLbl.Text=tostring(val)
- if onCh then onCh(val) end
- end
- end)
- end
- local function makeActionBtn(icon, label, cb)
- order = order + 1
- local btn = Instance.new("TextButton")
- btn.Size=UDim2.new(1,0,0,36); btn.BackgroundColor3=OF; btn.BorderSizePixel=0
- btn.Text=""; btn.LayoutOrder=order; btn.ZIndex=12; btn.Parent=scroll
- Instance.new("UICorner",btn).CornerRadius=UDim.new(0,10)
- local ico=Instance.new("TextLabel",btn); ico.Size=UDim2.new(0,30,1,0); ico.Position=UDim2.new(0,8,0,0)
- ico.Text=icon; ico.TextSize=14; ico.BackgroundTransparency=1; ico.TextColor3=DK; ico.ZIndex=13
- local lbl=Instance.new("TextLabel",btn); lbl.Size=UDim2.new(1,-50,1,0); lbl.Position=UDim2.new(0,40,0,0)
- lbl.Text=label; lbl.TextSize=11; lbl.Font=Enum.Font.Gotham
- lbl.TextXAlignment=Enum.TextXAlignment.Left; lbl.BackgroundTransparency=1; lbl.TextColor3=DK; lbl.ZIndex=13
- local arrow=Instance.new("TextLabel",btn); arrow.Size=UDim2.new(0,22,1,0); arrow.Position=UDim2.new(1,-26,0,0)
- arrow.Text="›"; arrow.TextSize=20; arrow.Font=Enum.Font.GothamBold
- arrow.BackgroundTransparency=1; arrow.TextColor3=MD; arrow.ZIndex=13
- btn.MouseButton1Click:Connect(cb)
- btn.MouseEnter:Connect(function() tw(btn,{BackgroundColor3=GR},0.12); tw(arrow,{TextColor3=A1},0.12) end)
- btn.MouseLeave:Connect(function() tw(btn,{BackgroundColor3=OF},0.12); tw(arrow,{TextColor3=MD},0.12) end)
- end
- -- ══════════════════════════════════════════
- -- INVENTARIO
- -- ══════════════════════════════════════════
- local invWin = Instance.new("Frame")
- invWin.Size=UDim2.new(0,270,0,300); invWin.Position=UDim2.new(0.5,-135,0.5,-150)
- invWin.BackgroundColor3=W; invWin.BorderSizePixel=0; invWin.Visible=false; invWin.ZIndex=30; invWin.Parent=gui
- Instance.new("UICorner",invWin).CornerRadius=UDim.new(0,14)
- Instance.new("UIStroke",invWin).Color=GR
- local invTop=Instance.new("Frame"); invTop.Size=UDim2.new(1,0,0,3); invTop.BackgroundColor3=A1; invTop.BorderSizePixel=0; invTop.ZIndex=31; invTop.Parent=invWin
- Instance.new("UICorner",invTop).CornerRadius=UDim.new(0,14)
- Instance.new("UIGradient",invTop).Color=ColorSequence.new{ColorSequenceKeypoint.new(0,A1),ColorSequenceKeypoint.new(1,A2)}
- local invHdr=Instance.new("Frame"); invHdr.Size=UDim2.new(1,0,0,44); invHdr.Position=UDim2.new(0,0,0,3); invHdr.BackgroundColor3=OF; invHdr.BorderSizePixel=0; invHdr.ZIndex=31; invHdr.Parent=invWin
- local invTitle=Instance.new("TextLabel"); invTitle.Size=UDim2.new(1,-40,1,0); invTitle.Position=UDim2.new(0,14,0,0)
- invTitle.Text="🎒 Inventario"; invTitle.TextColor3=DK; invTitle.TextSize=13; invTitle.Font=Enum.Font.GothamBold
- invTitle.TextXAlignment=Enum.TextXAlignment.Left; invTitle.BackgroundTransparency=1; invTitle.ZIndex=32; invTitle.Parent=invHdr
- local invClose=Instance.new("TextButton"); invClose.Size=UDim2.new(0,26,0,26); invClose.Position=UDim2.new(1,-34,0.5,-13)
- invClose.Text="✕"; invClose.TextSize=11; invClose.Font=Enum.Font.GothamBold
- invClose.BackgroundColor3=GR; invClose.TextColor3=MD; invClose.BorderSizePixel=0; invClose.ZIndex=32; invClose.Parent=invHdr
- Instance.new("UICorner",invClose).CornerRadius=UDim.new(0,6)
- invClose.MouseButton1Click:Connect(function() invWin.Visible=false end)
- local invScr=Instance.new("ScrollingFrame"); invScr.Size=UDim2.new(1,-12,1,-54); invScr.Position=UDim2.new(0,6,0,50)
- invScr.BackgroundTransparency=1; invScr.BorderSizePixel=0; invScr.ScrollBarThickness=3
- invScr.ScrollBarImageColor3=A1; invScr.ZIndex=31; invScr.Parent=invWin
- local invLay=Instance.new("UIListLayout",invScr); invLay.Padding=UDim.new(0,3)
- invLay:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() invScr.CanvasSize=UDim2.new(0,0,0,invLay.AbsoluteContentSize.Y+8) end)
- local function addRow(txt,col)
- local r=Instance.new("TextLabel"); r.Size=UDim2.new(1,0,0,24); r.Text=" "..txt
- r.TextColor3=col or DK; r.TextSize=11; r.Font=Enum.Font.Gotham
- r.TextXAlignment=Enum.TextXAlignment.Left; r.BackgroundTransparency=1; r.ZIndex=32; r.Parent=invScr
- end
- local function showInv(p)
- for _,c in pairs(invScr:GetChildren()) do if c:IsA("TextLabel") then c:Destroy() end end
- local char=p and p.Character
- if not char then addRow("⚠ Sin personaje",A1); invWin.Visible=true; return end
- invTitle.Text="🎒 "..p.Name
- local bp=p:FindFirstChild("Backpack"); local eq,bk={},{}
- for _,o in pairs(char:GetChildren()) do if o:IsA("Tool") then table.insert(eq,o.Name) end end
- if bp then for _,o in pairs(bp:GetChildren()) do if o:IsA("Tool") then table.insert(bk,o.Name) end end end
- if #eq>0 then addRow("── EQUIPADO ──",A1); for _,n in pairs(eq) do addRow(" ⚔ "..n,GN) end end
- if #bk>0 then addRow("── MOCHILA ──",A1); for _,n in pairs(bk) do addRow(" 🎒 "..n) end end
- if #eq==0 and #bk==0 then addRow("📭 Sin herramientas",MD) end
- invWin.Visible=true
- end
- -- ══════════════════════════════════════════
- -- WHITELIST
- -- ══════════════════════════════════════════
- local wlWin=Instance.new("Frame"); wlWin.Size=UDim2.new(0,270,0,320); wlWin.Position=UDim2.new(0.5,-135,0.5,-160)
- wlWin.BackgroundColor3=W; wlWin.BorderSizePixel=0; wlWin.Visible=false; wlWin.ZIndex=30; wlWin.Parent=gui
- Instance.new("UICorner",wlWin).CornerRadius=UDim.new(0,14); Instance.new("UIStroke",wlWin).Color=GR
- local wlTop=Instance.new("Frame"); wlTop.Size=UDim2.new(1,0,0,3); wlTop.BackgroundColor3=A1; wlTop.BorderSizePixel=0; wlTop.ZIndex=31; wlTop.Parent=wlWin
- Instance.new("UICorner",wlTop).CornerRadius=UDim.new(0,14)
- Instance.new("UIGradient",wlTop).Color=ColorSequence.new{ColorSequenceKeypoint.new(0,A1),ColorSequenceKeypoint.new(1,A2)}
- local wlHdr=Instance.new("Frame"); wlHdr.Size=UDim2.new(1,0,0,44); wlHdr.Position=UDim2.new(0,0,0,3)
- wlHdr.BackgroundColor3=OF; wlHdr.BorderSizePixel=0; wlHdr.ZIndex=31; wlHdr.Parent=wlWin
- local wlTitleLbl=Instance.new("TextLabel"); wlTitleLbl.Size=UDim2.new(1,-40,1,0); wlTitleLbl.Position=UDim2.new(0,14,0,0)
- wlTitleLbl.Text="📋 Whitelist"; wlTitleLbl.TextColor3=DK; wlTitleLbl.TextSize=13; wlTitleLbl.Font=Enum.Font.GothamBold
- wlTitleLbl.TextXAlignment=Enum.TextXAlignment.Left; wlTitleLbl.BackgroundTransparency=1; wlTitleLbl.ZIndex=32; wlTitleLbl.Parent=wlHdr
- local wlClose=Instance.new("TextButton"); wlClose.Size=UDim2.new(0,26,0,26); wlClose.Position=UDim2.new(1,-34,0.5,-13)
- wlClose.Text="✕"; wlClose.TextSize=11; wlClose.Font=Enum.Font.GothamBold
- wlClose.BackgroundColor3=GR; wlClose.TextColor3=MD; wlClose.BorderSizePixel=0; wlClose.ZIndex=32; wlClose.Parent=wlHdr
- Instance.new("UICorner",wlClose).CornerRadius=UDim.new(0,6)
- wlClose.MouseButton1Click:Connect(function() wlWin.Visible=false end)
- local wlInputWrap=Instance.new("Frame"); wlInputWrap.Size=UDim2.new(1,-16,0,34); wlInputWrap.Position=UDim2.new(0,8,0,52)
- wlInputWrap.BackgroundColor3=OF; wlInputWrap.BorderSizePixel=1; wlInputWrap.BorderColor3=GR; wlInputWrap.ZIndex=31; wlInputWrap.Parent=wlWin
- Instance.new("UICorner",wlInputWrap).CornerRadius=UDim.new(0,8)
- local wlInput=Instance.new("TextBox"); wlInput.Size=UDim2.new(1,-70,1,0); wlInput.Position=UDim2.new(0,10,0,0)
- wlInput.BackgroundTransparency=1; wlInput.Text=""; wlInput.PlaceholderText="Nombre del jugador..."
- wlInput.PlaceholderColor3=MD; wlInput.TextColor3=DK; wlInput.Font=Enum.Font.Gotham; wlInput.TextSize=11
- wlInput.ClearTextOnFocus=false; wlInput.ZIndex=32; wlInput.Parent=wlInputWrap
- local wlAddBtn=Instance.new("TextButton"); wlAddBtn.Size=UDim2.new(0,54,1,-6); wlAddBtn.Position=UDim2.new(1,-58,0,3)
- wlAddBtn.Text="+ Add"; wlAddBtn.TextSize=10; wlAddBtn.Font=Enum.Font.GothamBold
- wlAddBtn.BackgroundColor3=A1; wlAddBtn.TextColor3=W; wlAddBtn.BorderSizePixel=0; wlAddBtn.ZIndex=32; wlAddBtn.Parent=wlInputWrap
- Instance.new("UICorner",wlAddBtn).CornerRadius=UDim.new(0,6)
- local wlScr=Instance.new("ScrollingFrame"); wlScr.Size=UDim2.new(1,-12,1,-98); wlScr.Position=UDim2.new(0,6,0,94)
- wlScr.BackgroundTransparency=1; wlScr.BorderSizePixel=0; wlScr.ScrollBarThickness=3
- wlScr.ScrollBarImageColor3=A1; wlScr.ZIndex=31; wlScr.Parent=wlWin
- local wlLay=Instance.new("UIListLayout",wlScr); wlLay.Padding=UDim.new(0,4)
- wlLay:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() wlScr.CanvasSize=UDim2.new(0,0,0,wlLay.AbsoluteContentSize.Y+8) end)
- local function refreshWL()
- for _,c in pairs(wlScr:GetChildren()) do if c:IsA("Frame") or c:IsA("TextLabel") then c:Destroy() end end
- if #whitelist==0 then
- local e=Instance.new("TextLabel"); e.Size=UDim2.new(1,0,0,28); e.Text=" Sin jugadores"
- e.TextColor3=MD; e.TextSize=11; e.Font=Enum.Font.Gotham
- e.TextXAlignment=Enum.TextXAlignment.Left; e.BackgroundTransparency=1; e.ZIndex=32; e.Parent=wlScr
- return
- end
- for i,name in ipairs(whitelist) do
- local row=Instance.new("Frame"); row.Size=UDim2.new(1,0,0,30); row.BackgroundColor3=OF
- row.BorderSizePixel=0; row.ZIndex=32; row.Parent=wlScr; row.LayoutOrder=i
- Instance.new("UICorner",row).CornerRadius=UDim.new(0,6)
- local nl=Instance.new("TextLabel",row); nl.Size=UDim2.new(1,-40,1,0); nl.Position=UDim2.new(0,10,0,0)
- nl.Text="👤 "..name; nl.TextColor3=DK; nl.TextSize=11; nl.Font=Enum.Font.Gotham
- nl.TextXAlignment=Enum.TextXAlignment.Left; nl.BackgroundTransparency=1; nl.ZIndex=33
- local del=Instance.new("TextButton",row); del.Size=UDim2.new(0,26,0,22); del.Position=UDim2.new(1,-30,0.5,-11)
- del.Text="✕"; del.TextSize=11; del.Font=Enum.Font.GothamBold
- del.BackgroundColor3=GR; del.TextColor3=MD; del.BorderSizePixel=0; del.ZIndex=33
- Instance.new("UICorner",del).CornerRadius=UDim.new(0,5)
- local cap=name
- del.MouseButton1Click:Connect(function()
- for j,n in ipairs(whitelist) do if n==cap then table.remove(whitelist,j); break end end
- refreshWL()
- end)
- end
- end
- refreshWL()
- wlAddBtn.MouseButton1Click:Connect(function()
- local name=wlInput.Text:match("^%s*(.-)%s*$")
- if name~="" then
- local exists=false
- for _,n in ipairs(whitelist) do if n:lower()==name:lower() then exists=true; break end end
- if not exists then table.insert(whitelist,name); refreshWL() end
- wlInput.Text=""
- end
- end)
- -- ══════════════════════════════════════════
- -- HELPERS ESP / AIM
- -- ══════════════════════════════════════════
- local function rainbowColor() return Color3.fromHSV((tick()*0.35)%1, 1, 1) end
- local function teamCol(p)
- if player.Team and p.Team and player.Team==p.Team then return GN end
- return A1
- end
- local function losCheck(hrp)
- local rp=RaycastParams.new()
- rp.FilterDescendantsInstances={player.Character}
- rp.FilterType=Enum.RaycastFilterType.Exclude
- local res=workspace:Raycast(camera.CFrame.Position, hrp.Position-camera.CFrame.Position, rp)
- if res then local hc=res.Instance and res.Instance:FindFirstAncestorOfClass("Model"); return hc and hc==hrp.Parent end
- return true
- end
- local function isWhitelisted(p)
- for _,n in ipairs(whitelist) do if n:lower()==p.Name:lower() then return true end end
- return false
- end
- local function getAimPart(char, idx)
- if idx==1 then return char:FindFirstChild("Head")
- elseif idx==2 then return char:FindFirstChild("HumanoidRootPart")
- elseif idx==3 then return char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso")
- end
- return char:FindFirstChild("HumanoidRootPart")
- end
- local function getTarget(overrideIdx)
- local idx = overrideIdx or aimPartIndex
- local ctr = Vector2.new(camera.ViewportSize.X/2, camera.ViewportSize.Y/2)
- local best, dist = nil, math.huge
- for _,p in pairs(Players:GetPlayers()) do
- if p~=player and p.Character then
- if isWhitelisted(p) then continue end
- if states.teamCheck and player.Team and p.Team and player.Team==p.Team then continue end
- local hrp=p.Character:FindFirstChild("HumanoidRootPart")
- local hum=p.Character:FindFirstChildOfClass("Humanoid")
- if hrp and hum and hum.Health>0 then
- local pos,vis=camera:WorldToViewportPoint(hrp.Position)
- if vis then
- local d=(Vector2.new(pos.X,pos.Y)-ctr).Magnitude
- if d<fovRadius and d<dist and losCheck(hrp) then
- local ap=getAimPart(p.Character,idx)
- if ap then dist=d; best=ap end
- end
- end
- end
- end
- end
- return best
- end
- -- ══════════════════════════════════════════
- -- SECCIONES
- -- ══════════════════════════════════════════
- makeSection("👁 ESP")
- makeBtn("🔵","ESP Highlight","esp",nil)
- makeBtn("📛","ESP Nombres","nameEsp",nil)
- makeBtn("⬜","Box ESP 2D","boxEsp",nil)
- makeBtn("🌈","Rainbow Mode","rainbow",nil)
- makeSection("⚔ COMBATE")
- makeBtn("🎯","FOV Circle","showFov",nil)
- makeBtn("🔫","Aim Assist","aimAssist",nil)
- makeBtn("🔀","Aim Alternado","aimAlt",function(on)
- aimAltTimer = 0
- aimAltOnHead = true
- end)
- makeBtn("🛡","Filtrar Equipo","teamCheck",nil)
- -- Selector parte aim
- do
- order=order+1
- local icons={"🧠","🔗","🫁","🎮"}
- local sb=Instance.new("TextButton"); sb.Size=UDim2.new(1,0,0,36); sb.BackgroundColor3=OF
- sb.BorderSizePixel=0; sb.Text=""; sb.LayoutOrder=order; sb.ZIndex=12; sb.Parent=scroll
- Instance.new("UICorner",sb).CornerRadius=UDim.new(0,10)
- local sI=Instance.new("TextLabel",sb); sI.Size=UDim2.new(0,30,1,0); sI.Position=UDim2.new(0,8,0,0)
- sI.Text=icons[aimPartIndex]; sI.TextSize=14; sI.BackgroundTransparency=1; sI.TextColor3=DK; sI.ZIndex=13
- local sL=Instance.new("TextLabel",sb); sL.Size=UDim2.new(1,-90,1,0); sL.Position=UDim2.new(0,40,0,0)
- sL.Text="Parte: "..aimPartLabels[aimPartIndex]; sL.TextSize=11; sL.Font=Enum.Font.Gotham
- sL.TextXAlignment=Enum.TextXAlignment.Left; sL.BackgroundTransparency=1; sL.TextColor3=DK; sL.ZIndex=13
- local sB=Instance.new("TextLabel",sb); sB.Size=UDim2.new(0,68,0,18); sB.Position=UDim2.new(1,-74,0.5,-9)
- sB.Text=aimPartLabels[aimPartIndex]; sB.TextSize=9; sB.Font=Enum.Font.GothamBold
- sB.TextXAlignment=Enum.TextXAlignment.Center; sB.BackgroundColor3=A1; sB.TextColor3=W
- sB.BorderSizePixel=0; sB.ZIndex=14
- Instance.new("UICorner",sB).CornerRadius=UDim.new(0,5)
- sb.MouseButton1Click:Connect(function()
- aimPartIndex=(aimPartIndex%#aimPartLabels)+1
- sI.Text=icons[aimPartIndex]; sL.Text="Parte: "..aimPartLabels[aimPartIndex]; sB.Text=aimPartLabels[aimPartIndex]
- end)
- sb.MouseEnter:Connect(function() tw(sb,{BackgroundColor3=GR},0.12) end)
- sb.MouseLeave:Connect(function() tw(sb,{BackgroundColor3=OF},0.12) end)
- end
- -- Selector parte secundaria (aim alternado)
- do
- order=order+1
- local secLabels={"Head","Cuello","Pecho","Humanoide"}
- local sb2=Instance.new("TextButton"); sb2.Size=UDim2.new(1,0,0,36); sb2.BackgroundColor3=OF
- sb2.BorderSizePixel=0; sb2.Text=""; sb2.LayoutOrder=order; sb2.ZIndex=12; sb2.Parent=scroll
- Instance.new("UICorner",sb2).CornerRadius=UDim.new(0,10)
- local s2I=Instance.new("TextLabel",sb2); s2I.Size=UDim2.new(0,30,1,0); s2I.Position=UDim2.new(0,8,0,0)
- s2I.Text="🔄"; s2I.TextSize=14; s2I.BackgroundTransparency=1; s2I.TextColor3=DK; s2I.ZIndex=13
- local s2L=Instance.new("TextLabel",sb2); s2L.Size=UDim2.new(1,-90,1,0); s2L.Position=UDim2.new(0,40,0,0)
- s2L.Text="Alt: "..secLabels[aimAltSecIdx]; s2L.TextSize=11; s2L.Font=Enum.Font.Gotham
- s2L.TextXAlignment=Enum.TextXAlignment.Left; s2L.BackgroundTransparency=1; s2L.TextColor3=DK; s2L.ZIndex=13
- local s2B=Instance.new("TextLabel",sb2); s2B.Size=UDim2.new(0,68,0,18); s2B.Position=UDim2.new(1,-74,0.5,-9)
- s2B.Text=secLabels[aimAltSecIdx]; s2B.TextSize=9; s2B.Font=Enum.Font.GothamBold
- s2B.TextXAlignment=Enum.TextXAlignment.Center; s2B.BackgroundColor3=MD; s2B.TextColor3=W
- s2B.BorderSizePixel=0; s2B.ZIndex=14
- Instance.new("UICorner",s2B).CornerRadius=UDim.new(0,5)
- sb2.MouseButton1Click:Connect(function()
- aimAltSecIdx=(aimAltSecIdx%#secLabels)+1
- s2L.Text="Alt: "..secLabels[aimAltSecIdx]; s2B.Text=secLabels[aimAltSecIdx]
- end)
- sb2.MouseEnter:Connect(function() tw(sb2,{BackgroundColor3=GR},0.12) end)
- sb2.MouseLeave:Connect(function() tw(sb2,{BackgroundColor3=OF},0.12) end)
- end
- makeSlider("Alt. Delay (seg)",0,5,15,1,function(v) aimAltDelay=v end)
- makeSlider("FOV Radius",30,500,120,0,function(v) fovRadius=v; fovF.Size=UDim2.new(0,v*2,0,v*2) end)
- makeSlider("Aim Suavidad",1,100,15,0,function(v) aimSmooth=v/100 end)
- makeSection("🔮 PREDICCIÓN")
- makeBtn("🔮","Predicción","prediccion",nil)
- makeSlider("Pred. Amount",1,100,10,0,function(v) predVal=v/100 end)
- makeSection("🎒 JUGADORES")
- makeActionBtn("📋","Ver Inventario",function()
- local t=getTarget()
- if t then local tp=Players:GetPlayerFromCharacter(t.Parent); if tp then showInv(tp); return end end
- local cl,cd=nil,math.huge
- for _,p in pairs(Players:GetPlayers()) do
- if p~=player and p.Character then
- local h=p.Character:FindFirstChild("HumanoidRootPart")
- local m=player.Character and player.Character:FindFirstChild("HumanoidRootPart")
- if h and m then local d=(h.Position-m.Position).Magnitude; if d<cd then cd=d; cl=p end end
- end
- end
- if cl then showInv(cl) end
- end)
- makeSection("📋 WHITELIST")
- makeActionBtn("📋","Gestionar Whitelist",function() wlWin.Visible=not wlWin.Visible end)
- makeSection("🎨 VISUAL")
- makeBtn("🔦","Fullbright","fullbright",function(on)
- if on then Lighting.Brightness=10; Lighting.FogEnd=100000; Lighting.Ambient=Color3.new(1,1,1); Lighting.OutdoorAmbient=Color3.new(1,1,1)
- else Lighting.Brightness=origBri; Lighting.FogEnd=origFog; Lighting.Ambient=origAmb; Lighting.OutdoorAmbient=origOutA end
- end)
- makeSection("🛠 UTILIDADES")
- makeBtn("🦘","Jump Boost","jumpBoost",function(on)
- local c=player.Character; if c then local h=c:FindFirstChildOfClass("Humanoid"); if h then h.JumpPower=on and 50*jumpMult or 50 end end
- end)
- makeSlider("Jump Multiplier",1,5,2,0,function(v)
- jumpMult=v
- if states.jumpBoost then local c=player.Character; if c then local h=c:FindFirstChildOfClass("Humanoid"); if h then h.JumpPower=50*v end end end
- end)
- makeBtn("♾","Infinite Jump","infiniteJump",nil)
- makeBtn("⏱","Anti-AFK","antiAFK",nil)
- makeBtn("📷","Third Person","thirdPerson",function(on)
- if thirdCamConn then thirdCamConn:Disconnect(); thirdCamConn=nil end
- if on then
- player.CameraMode = Enum.CameraMode.Classic
- local c = player.Character
- if c then
- local hrp = c:FindFirstChild("HumanoidRootPart")
- if hrp then
- thirdCamConn = RunService.RenderStepped:Connect(function()
- if not states.thirdPerson then return end
- local ch = player.Character
- if not ch then return end
- local hrp2 = ch:FindFirstChild("HumanoidRootPart")
- if hrp2 then
- local targetCF = CFrame.new(hrp2.Position + thirdOffset, hrp2.Position)
- camera.CameraType = Enum.CameraType.Scriptable
- camera.CFrame = camera.CFrame:Lerp(targetCF, 0.15)
- end
- end)
- end
- end
- else
- camera.CameraType = Enum.CameraType.Custom
- player.CameraMode = Enum.CameraMode.Classic
- end
- end)
- makeBtn("🙈","Ocultar Nombre","nameHide",function(on)
- local c=player.Character or player.CharacterAdded:Wait()
- local h=c:FindFirstChildOfClass("Humanoid")
- if h then h.DisplayDistanceType=on and Enum.HumanoidDisplayDistanceType.None or Enum.HumanoidDisplayDistanceType.Viewer end
- end)
- makeBtn("🔄","Girar Personaje","spin",function(on)
- if spinConn then spinConn:Disconnect(); spinConn=nil end
- local c = player.Character
- local hum0 = c and c:FindFirstChildOfClass("Humanoid")
- if on then
- spinAngleY = 0
- if hum0 then hum0.AutoRotate = false end
- spinConn = RunService.Stepped:Connect(function(_, dt)
- if not states.spin then return end
- local ch = player.Character
- if not ch then return end
- local hrp = ch:FindFirstChild("HumanoidRootPart")
- local hum = ch:FindFirstChildOfClass("Humanoid")
- if hrp and hum then
- hum.AutoRotate = false
- -- Acumular ángulo Y manualmente — esto sobreescribe lo que el engine hace con el movimiento
- spinAngleY = spinAngleY + math.rad(spinSpeed * dt)
- -- Aplicar: posición real del motor + nuestra rotación Y forzada
- hrp.CFrame = CFrame.new(hrp.Position) * CFrame.fromEulerAnglesXYZ(0, spinAngleY, 0)
- end
- end)
- else
- if hum0 then hum0.AutoRotate = true end
- spinAngleY = 0
- end
- end)
- makeSlider("Velocidad Giro (°/s)",10,720,200,0,function(v) spinSpeed=v end)
- makeBtn("💬","Chat Spy","chatSpy",function(on)
- if on and not chatSpyConnected then
- chatSpyConnected=true
- for _,p in pairs(Players:GetPlayers()) do
- if p~=player then p.Chatted:Connect(function(msg)
- if states.chatSpy then local m=Instance.new("Message"); m.Text="[SPY] "..p.Name..": "..msg; m.Parent=workspace; game:GetService("Debris"):AddItem(m,3) end
- end) end
- end
- end
- end)
- -- ══════════════════════════════════════════
- -- RESPAWN
- -- ══════════════════════════════════════════
- player.CharacterAdded:Connect(function(char)
- local h=char:WaitForChild("Humanoid")
- if states.jumpBoost then h.JumpPower=50*jumpMult end
- if states.nameHide then h.DisplayDistanceType=Enum.HumanoidDisplayDistanceType.None end
- -- Restaurar Third Person al morir
- if states.thirdPerson then
- if thirdCamConn then thirdCamConn:Disconnect(); thirdCamConn=nil end
- task.wait(0.5)
- player.CameraMode = Enum.CameraMode.Classic
- thirdCamConn = RunService.RenderStepped:Connect(function()
- if not states.thirdPerson then return end
- local ch = player.Character
- if not ch then return end
- local hrp2 = ch:FindFirstChild("HumanoidRootPart")
- if hrp2 then
- local targetCF = CFrame.new(hrp2.Position + thirdOffset, hrp2.Position)
- camera.CameraType = Enum.CameraType.Scriptable
- camera.CFrame = camera.CFrame:Lerp(targetCF, 0.15)
- end
- end)
- end
- -- Restaurar Spin al morir
- if states.spin then
- if spinConn then spinConn:Disconnect(); spinConn=nil end
- task.wait(0.3)
- h.AutoRotate = false
- spinAngleY = 0
- spinConn = RunService.Stepped:Connect(function(_, dt)
- if not states.spin then return end
- local ch = player.Character
- if not ch then return end
- local hrp = ch:FindFirstChild("HumanoidRootPart")
- local hum2 = ch:FindFirstChildOfClass("Humanoid")
- if hrp and hum2 then
- hum2.AutoRotate = false
- spinAngleY = spinAngleY + math.rad(spinSpeed * dt)
- hrp.CFrame = CFrame.new(hrp.Position) * CFrame.fromEulerAnglesXYZ(0, spinAngleY, 0)
- end
- end)
- end
- end)
- -- ══════════════════════════════════════════
- -- TOGGLE PANEL
- -- ══════════════════════════════════════════
- local panelOpen = false
- local function togglePanel()
- panelOpen = not panelOpen
- if panelOpen then
- panel.Visible = true
- shadow.Visible = true
- panel.Size = UDim2.new(0, PW, 0, 0)
- tw(panel, {Size=UDim2.new(0,PW,0,PH)}, 0.35, Enum.EasingStyle.Back, Enum.EasingDirection.Out)
- else
- tw(panel, {Size=UDim2.new(0,PW,0,0)}, 0.25, Enum.EasingStyle.Quart, Enum.EasingDirection.In)
- task.delay(0.25, function()
- panel.Visible = false
- shadow.Visible = false
- end)
- end
- end
- toggleBtn.MouseButton1Click:Connect(togglePanel)
- UserInputService.InputBegan:Connect(function(i, processed)
- if processed then return end
- if i.KeyCode==Enum.KeyCode.P then togglePanel() end
- if i.KeyCode==Enum.KeyCode.Space and states.infiniteJump then
- local c=player.Character; if c then local h=c:FindFirstChildOfClass("Humanoid"); if h then h:ChangeState(Enum.HumanoidStateType.Jumping) end end
- end
- end)
- -- ══════════════════════════════════════════
- -- COMANDO !p EN CHAT — oculta solo GUI
- -- ══════════════════════════════════════════
- local guiHidden = false
- player.Chatted:Connect(function(msg)
- if msg:lower() == "!p" then
- guiHidden = not guiHidden
- toggleBtn.Visible = not guiHidden
- if guiHidden and panelOpen then
- panel.Visible = false
- shadow.Visible = false
- elseif not guiHidden and panelOpen then
- panel.Visible = true
- shadow.Visible = true
- end
- end
- end)
- -- ══════════════════════════════════════════
- -- RENDER LOOP
- -- ══════════════════════════════════════════
- RunService.RenderStepped:Connect(function(dt)
- local ac = states.rainbow and rainbowColor() or A1
- local pulse = 0.5 + 0.5*math.sin(tick()*2.5)
- -- Botón toggle pulso
- tBtnStroke.Color = ac
- tBtnStroke.Thickness = 1.5 + pulse*1.5
- -- Degradé top bar
- topGrad.Color = ColorSequence.new{
- ColorSequenceKeypoint.new(0, ac),
- ColorSequenceKeypoint.new(1, A2)
- }
- -- FOV circle — solo visible si está activado
- fovF.Visible = states.showFov
- fovF.Size = UDim2.new(0, fovRadius*2, 0, fovRadius*2)
- fovStr.Color = ac
- -- Anti-AFK
- if states.antiAFK then
- afkTimer=afkTimer+dt
- if afkTimer>=55 then
- afkTimer=0
- pcall(function() VirtualUser:CaptureController(); VirtualUser:ClickButton2(Vector2.new()) end)
- end
- end
- -- Aim Alternado timer
- if states.aimAlt then
- aimAltTimer = aimAltTimer + dt
- if aimAltTimer >= aimAltDelay then
- aimAltTimer = 0
- aimAltOnHead = not aimAltOnHead
- end
- end
- -- ESP loop
- for _,p in pairs(Players:GetPlayers()) do
- if p~=player and p.Character then
- local hrp=p.Character:FindFirstChild("HumanoidRootPart")
- local hum=p.Character:FindFirstChildOfClass("Humanoid")
- local alive=hrp and hum and hum.Health>0
- if alive then
- local pos,vis=camera:WorldToViewportPoint(hrp.Position)
- local col=states.rainbow and rainbowColor() or teamCol(p)
- -- Highlight
- if states.esp then
- local h=p.Character:FindFirstChild("ZR_HL")
- if not h then h=Instance.new("Highlight"); h.Name="ZR_HL"; h.Parent=p.Character end
- h.FillTransparency=0.65; h.FillColor=col; h.OutlineColor=col
- else local h=p.Character:FindFirstChild("ZR_HL"); if h then h:Destroy() end end
- -- Nombres
- if states.nameEsp then
- local head=p.Character:FindFirstChild("Head")
- if head then
- local bb=head:FindFirstChild("ZR_BB")
- if not bb then
- bb=Instance.new("BillboardGui"); bb.Name="ZR_BB"
- bb.Size=UDim2.new(0,120,0,28); bb.StudsOffset=Vector3.new(0,2.5,0)
- bb.AlwaysOnTop=true; bb.Parent=head
- local nl=Instance.new("TextLabel",bb); nl.Name="NL"
- nl.Size=UDim2.new(1,0,1,0); nl.BackgroundTransparency=1
- nl.TextSize=14; nl.Font=Enum.Font.GothamBold; nl.TextStrokeTransparency=0.3
- end
- local nl=bb:FindFirstChild("NL"); if nl then nl.Text=p.Name; nl.TextColor3=col end
- end
- else
- local head=p.Character:FindFirstChild("Head")
- if head then local bb=head:FindFirstChild("ZR_BB"); if bb then bb:Destroy() end end
- end
- -- Box ESP
- if states.boxEsp and vis then
- local tp2=camera:WorldToViewportPoint(hrp.Position+Vector3.new(0,3.2,0))
- local bp2=camera:WorldToViewportPoint(hrp.Position-Vector3.new(0,2.8,0))
- local h2=math.abs(tp2.Y-bp2.Y); local w2=h2*0.5; local ty2=math.min(tp2.Y,bp2.Y)
- local box=boxes[p]
- if not box then box=Instance.new("Frame",gui); box.BackgroundTransparency=1; box.BorderSizePixel=0; box.ZIndex=4; boxes[p]=box end
- box.Size=UDim2.new(0,w2,0,h2); box.Position=UDim2.new(0,pos.X-w2/2,0,ty2)
- local bs=box:FindFirstChild("S"); if not bs then bs=Instance.new("UIStroke",box); bs.Name="S"; bs.Thickness=1.5 end
- bs.Color=col
- local hr2=math.clamp(hum.Health/hum.MaxHealth,0,1)
- local hpB=box:FindFirstChild("HP")
- if not hpB then hpB=Instance.new("Frame",box); hpB.Name="HP"; hpB.BorderSizePixel=0; hpB.ZIndex=5; Instance.new("UICorner",hpB).CornerRadius=UDim.new(1,0) end
- hpB.BackgroundColor3=Color3.fromRGB(math.floor(255*(1-hr2)),math.floor(255*hr2),0)
- hpB.Size=UDim2.new(hr2,0,0,4); hpB.Position=UDim2.new(0,0,0,-7)
- else if boxes[p] then boxes[p]:Destroy(); boxes[p]=nil end end
- else
- if boxes[p] then boxes[p]:Destroy(); boxes[p]=nil end
- if p.Character then
- local h=p.Character:FindFirstChild("ZR_HL"); if h then h:Destroy() end
- local head=p.Character:FindFirstChild("Head"); if head then local bb=head:FindFirstChild("ZR_BB"); if bb then bb:Destroy() end end
- end
- end
- end
- end
- -- Aim Assist
- if states.aimAssist then
- local partIdx = aimPartIndex
- if states.aimAlt then
- partIdx = aimAltOnHead and 1 or aimAltSecIdx
- end
- local t=getTarget(partIdx)
- if t then
- local aimPos = t.Position
- if states.prediccion then
- -- Predicción real: calcular posición futura del objetivo
- local hrpPart = t.Parent:FindFirstChild("HumanoidRootPart") or t.Parent:FindFirstChild("Torso")
- if hrpPart then
- local vel = hrpPart.AssemblyLinearVelocity
- -- Calcular distancia al objetivo para ajustar el tiempo de predicción
- local dist = (camera.CFrame.Position - aimPos).Magnitude
- -- Tiempo estimado = distancia / velocidad ficticia de proyectil
- local timeToHit = dist * predVal * 0.01
- aimPos = aimPos + vel * timeToHit
- end
- end
- local look=CFrame.new(camera.CFrame.Position, aimPos)
- camera.CFrame=camera.CFrame:Lerp(look, aimSmooth)
- end
- end
- end)
- Players.PlayerRemoving:Connect(function(p)
- if boxes[p] then boxes[p]:Destroy(); boxes[p]=nil end
- end)
- print("[ZYREN PANEL v1.0] ✅ Listo — P o Z para abrir | chat !p oculta GUI")
Advertisement