local inputServ = game:GetService("UserInputService") local runServ = game:GetService("RunService") local players = game:GetService("Players") local lp = players.LocalPlayer local mouse = lp:GetMouse() local cam = workspace.CurrentCamera -- Config simple local menu_abierto = true local esp_on = false local aim_on = false -- UI Principal local ui = Instance.new("ScreenGui", game.CoreGui) local frame = Instance.new("Frame", ui) frame.Size = UDim2.new(0, 350, 0, 300) frame.Position = UDim2.new(0.5, -175, 0.5, -150) frame.BackgroundColor3 = Color3.fromRGB(20, 20, 20) frame.BorderSizePixel = 0 frame.Active = true frame.Draggable = true local corner = Instance.new("UICorner", frame) corner.CornerRadius = UDim.new(0, 10) local line = Instance.new("Frame", frame) line.Size = UDim2.new(1, 0, 0, 2) line.Position = UDim2.new(0, 0, 0, 50) line.BackgroundColor3 = Color3.fromRGB(255, 165, 0) -- Naranja Westbound line.BorderSizePixel = 0 local titulo = Instance.new("TextLabel", frame) titulo.Size = UDim2.new(1, 0, 0, 50) titulo.Text = "WESTBOUND / HUB" titulo.TextColor3 = Color3.fromRGB(255, 255, 255) titulo.Font = Enum.Font.SourceSansBold titulo.TextSize = 22 titulo.BackgroundTransparency = 1 local contenedor = Instance.new("ScrollingFrame", frame) contenedor.Size = UDim2.new(1, -20, 1, -70) contenedor.Position = UDim2.new(0, 10, 0, 65) contenedor.BackgroundTransparency = 1 contenedor.CanvasSize = UDim2.new(0, 0, 0, 400) contenedor.ScrollBarThickness = 2 local layout = Instance.new("UIListLayout", contenedor) layout.Padding = UDim.new(0, 10) -- Creador de botones rapido function btn(txt, callback) local b = Instance.new("TextButton", contenedor) b.Size = UDim2.new(1, 0, 0, 45) b.BackgroundColor3 = Color3.fromRGB(35, 35, 35) b.Text = txt b.TextColor3 = Color3.fromRGB(200, 200, 200) b.Font = Enum.Font.SourceSans b.TextSize = 18 b.AutoButtonColor = false local c = Instance.new("UICorner", b) c.CornerRadius = UDim.new(0, 6) local activo = false b.MouseButton1Click:Connect(function() activo = not activo b.BackgroundColor3 = activo and Color3.fromRGB(255, 165, 0) or Color3.fromRGB(35, 35, 35) b.TextColor3 = activo and Color3.fromRGB(0, 0, 0) or Color3.fromRGB(200, 200, 200) callback(activo) end) end -- ESP Logica local function taggear(p) if p.Character and p.Character:FindFirstChild("W_ESP") then p.Character.W_ESP:Destroy() end if not p.Character then return end local bill = Instance.new("BillboardGui", p.Character) bill.Name = "W_ESP" bill.Size = UDim2.new(0, 200, 0, 50) bill.AlwaysOnTop = true bill.ExtentsOffset = Vector3.new(0, 3, 0) local t = Instance.new("TextLabel", bill) t.Size = UDim2.new(1, 0, 1, 0) t.BackgroundTransparency = 1 t.TextColor3 = Color3.fromRGB(255, 255, 255) t.Font = Enum.Font.SourceSansBold t.TextSize = 14 t.TextStrokeTransparency = 0 bill.Enabled = esp_on end -- Botones btn("Aimbot (Click Derecho)", function(v) aim_on = v end) btn("Visuales (ESP)", function(v) esp_on = v for _, p in pairs(players:GetPlayers()) do if p ~= lp and p.Character and p.Character:FindFirstChild("W_ESP") then p.Character.W_ESP.Enabled = v end end end) -- Loop principal runServ.RenderStepped:Connect(function() if esp_on then for _, p in pairs(players:GetPlayers()) do if p ~= lp and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then local esp = p.Character:FindFirstChild("W_ESP") or taggear(p) if esp then local dist = math.floor((p.Character.HumanoidRootPart.Position - lp.Character.HumanoidRootPart.Position).Magnitude) local hp = p.Character:FindFirstChild("Humanoid") and math.floor(p.Character.Humanoid.Health) or 0 esp.TextLabel.Text = p.Name .. " | " .. hp .. " HP\n[" .. dist .. "m]" esp.TextLabel.TextColor3 = p.TeamColor.Color end end end end if aim_on and inputServ:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then local target = nil local campo = 200 for _, p in pairs(players:GetPlayers()) do if p ~= lp and p.Character and p.Character:FindFirstChild("Head") then local pos, vis = cam:WorldToViewportPoint(p.Character.Head.Position) if vis then local m_pos = Vector2.new(mouse.X, mouse.Y) local p_pos = Vector2.new(pos.X, pos.Y) local dist = (m_pos - p_pos).Magnitude if dist < campo then target = p.Character.Head campo = dist end end end end if target then cam.CFrame = CFrame.new(cam.CFrame.Position, target.Position) end end end) -- Abrir / Cerrar inputServ.InputBegan:Connect(function(key, chat) if not chat and key.KeyCode == Enum.KeyCode.RightControl then menu_abierto = not menu_abierto frame.Visible = menu_abierto end end)