
KeylessUniversal

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)



works very well