
KeylessUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
-- Inicializa opções globais com valores padrão
getgenv().Options = getgenv().Options or {}
getgenv().Options.Aimbot = getgenv().Options.Aimbot or false
getgenv().Options.TeamCheck = getgenv().Options.TeamCheck or false
getgenv().Options.WallCheck = getgenv().Options.WallCheck or false
getgenv().Options.ShowFOV = getgenv().Options.ShowFOV or false
getgenv().Options.FOV = getgenv().Options.FOV or 150
getgenv().Options.Smoothness = getgenv().Options.Smoothness or 0.1
getgenv().Options.AimPart = getgenv().Options.AimPart or "Head"
-- ESP CONFIG
getgenv().ESPEnabled = getgenv().ESPEnabled or {
Name = false,
Health = false,
Box = false,
Tracer = false,
Distance = false
}
getgenv().ESPColors = getgenv().ESPColors or {
Name = Color3.fromRGB(0, 255, 255),
Health = Color3.fromRGB(0, 255, 0),
Box = Color3.fromRGB(0, 255, 255),
Tracer = Color3.fromRGB(0, 255, 255),
Distance = Color3.fromRGB(255, 255, 255)
}
getgenv().ShowTeamESP = getgenv().ShowTeamESP or false
-- Círculo do FOV
local FOVCircle = Drawing.new("Circle")
FOVCircle.Color = Color3.new(1, 1, 1)
FOVCircle.Thickness = 1
FOVCircle.Radius = getgenv().Options.FOV
FOVCircle.Filled = false
FOVCircle.Transparency = 1
FOVCircle.NumSides = 150
FOVCircle.Visible = false
RunService.RenderStepped:Connect(function()
FOVCircle.Position = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
FOVCircle.Radius = getgenv().Options.FOV
FOVCircle.Visible = getgenv().Options.Aimbot and getgenv().Options.ShowFOV
end)
-- Função para verificar se o alvo está visível (sem parede na frente)
local function isVisible(targetPart)
local origin = Camera.CFrame.Position
local direction = (targetPart.Position - origin)
local ray = Ray.new(origin, direction)
local hitPart = workspace:FindPartOnRayWithIgnoreList(ray, {LocalPlayer.Character}, false, true)
return hitPart == nil or hitPart:IsDescendantOf(targetPart.Parent)
end
-- Função para encontrar inimigo mais próximo dentro do FOV e visível
local function getClosestEnemy()
local closest = nil
local shortestDist = getgenv().Options.FOV
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild(getgenv().Options.AimPart) then
if getgenv().Options.TeamCheck and player.Team == LocalPlayer.Team then
continue
end
local partPos = player.Character[getgenv().Options.AimPart].Position
local screenPos, onScreen = Camera:WorldToViewportPoint(partPos)
if onScreen then
local dist = (Vector2.new(screenPos.X, screenPos.Y) - Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)).Magnitude
if dist <= shortestDist then
if getgenv().Options.WallCheck then
if isVisible(player.Character[getgenv().Options.AimPart]) then
closest = player
shortestDist = dist
end
else
closest = player
shortestDist = dist
end
end
end
end
end
return closest
end
-- Aimbot loop
RunService.RenderStepped:Connect(function()
if getgenv().Options.Aimbot then
local target = getClosestEnemy()
if target and target.Character and target.Character:FindFirstChild(getgenv().Options.AimPart) then
local targetPos = target.Character[getgenv().Options.AimPart].Position
local currentCF = Camera.CFrame
local direction = (targetPos - currentCF.Position).Unit
local newCF = CFrame.new(currentCF.Position, currentCF.Position + direction)
Camera.CFrame = currentCF:Lerp(newCF, getgenv().Options.Smoothness)
end
end
end)
-- WindUI
local WindUI = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()
local Window = WindUI:CreateWindow({
Title = "Arsenal",
Icon = "check",
Author = "By Elton",
Folder = "EltonsHub",
Size = UDim2.fromOffset(580, 460),
Transparent = true,
Theme = "Dark",
Resizable = true,
SideBarWidth = 200,
Background = "rbxassetid://116498441103707",
BackgroundImageTransparency = 0.95,
HideSearchBar = true,
ScrollBarEnabled = true,
User = {
Enabled = true,
Anonymous = false,
},
})
local TabMain = Window:Tab({ Title = "Main", Icon = "house", Locked = false})
local TabGun = Window:Tab({ Title = "Guns", Icon = "crosshair", Locked = false})
local TabEsp = Window:Tab({ Title = "ESP", Icon = "eye", Locked = false})
local TabEspcolor = Window:Tab({ Title = "ESP Color", Icon = "palette", Locked = false})
-- ESP
local ESPObjects = {}
local NAME_SIZE, HEALTH_SIZE, DIST_SIZE = 16, 14, 14
local BOX_THICKNESS, TRACER_THICKNESS = 2, 2
TabEsp:Toggle({
Title = "Show Team ESP",
Default = getgenv().ShowTeamESP,
Callback = function(val)
getgenv().ShowTeamESP = val
end
})
for name, _ in pairs(getgenv().ESPEnabled) do
TabEsp:Toggle({
Title = name .. " ESP",
Default = getgenv().ESPEnabled[name],
Callback = function(val)
getgenv().ESPEnabled[name] = val
end
})
end
for name, _ in pairs(getgenv().ESPColors) do
TabEspcolor:Colorpicker({
Title = name .. " Color",
Default = getgenv().ESPColors[name],
Callback = function(color)
getgenv().ESPColors[name] = color
end
})
end
local function CreatePlayerESP(player)
if ESPObjects[player] then return end
ESPObjects[player] = {
Name = Drawing.new("Text"),
Health = Drawing.new("Text"),
Distance = Drawing.new("Text"),
Box = Drawing.new("Square"),
Tracer = Drawing.new("Line")
}
local esp = ESPObjects[player]
for _, text in ipairs({esp.Name, esp.Health, esp.Distance}) do
text.Center = true
text.Outline = true
text.Font = 2
text.OutlineColor = Color3.new(0, 0, 0)
end
esp.Name.Size = NAME_SIZE
esp.Health.Size = HEALTH_SIZE
esp.Distance.Size = DIST_SIZE
esp.Box.Thickness = BOX_THICKNESS
esp.Box.Transparency = 0.8
esp.Box.Filled = false
esp.Tracer.Thickness = TRACER_THICKNESS
esp.Tracer.Transparency = 0.8
end
local function RemovePlayerESP(player)
if ESPObjects[player] then
for _, obj in pairs(ESPObjects[player]) do obj:Remove() end
ESPObjects[player] = nil
end
end
RunService.RenderStepped:Connect(function()
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
if not ESPObjects[player] then
CreatePlayerESP(player)
end
local char = player.Character
local esp = ESPObjects[player]
local show = getgenv().ShowTeamESP or (player.Team ~= LocalPlayer.Team)
if char and char:FindFirstChild("HumanoidRootPart") and char:FindFirstChild("Head") and char:FindFirstChildOfClass("Humanoid") and show then
local hrp, head, hum = char.HumanoidRootPart, char.Head, char:FindFirstChildOfClass("Humanoid")
local pos, onScreen = Camera:WorldToViewportPoint(hrp.Position)
local headPos = Camera:WorldToViewportPoint(head.Position)
local size = math.max(Camera.ViewportSize.Y / pos.Z * 2, 4)
esp.Box.Color = getgenv().ESPColors.Box
esp.Tracer.Color = getgenv().ESPColors.Tracer
esp.Name.Color = getgenv().ESPColors.Name
esp.Distance.Color = getgenv().ESPColors.Distance
esp.Box.Visible = getgenv().ESPEnabled.Box and onScreen
if esp.Box.Visible then
esp.Box.Size = Vector2.new(size * 0.8, size * 1.2)
esp.Box.Position = Vector2.new(pos.X - size * 0.4, pos.Y - size * 0.6)
end
esp.Name.Visible = getgenv().ESPEnabled.Name and onScreen
if esp.Name.Visible then
esp.Name.Text = player.Name
esp.Name.Position = Vector2.new(headPos.X, headPos.Y - 30)
end
esp.Health.Visible = getgenv().ESPEnabled.Health and onScreen
if esp.Health.Visible then
local hp = math.floor((hum.Health / hum.MaxHealth) * 100)
esp.Health.Text = hp .. "%"
esp.Health.Color = Color3.fromRGB(255 - hp * 2.55, hp * 2.55, 0)
esp.Health.Position = Vector2.new(headPos.X, headPos.Y - 50)
end
esp.Distance.Visible = getgenv().ESPEnabled.Distance and onScreen
if esp.Distance.Visible then
local dist = (LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart"))
and (LocalPlayer.Character.HumanoidRootPart.Position - hrp.Position).Magnitude or 0
esp.Distance.Text = string.format("%.0f studs", dist)
esp.Distance.Position = Vector2.new(headPos.X + esp.Name.TextBounds.X / 2 + esp.Distance.TextBounds.X / 2 + 5, headPos.Y - 30)
end
esp.Tracer.Visible = getgenv().ESPEnabled.Tracer and onScreen
if esp.Tracer.Visible then
local scr = Camera.ViewportSize
esp.Tracer.From = Vector2.new(scr.X / 2, scr.Y)
esp.Tracer.To = Vector2.new(pos.X, pos.Y)
end
else
for _, v in pairs(esp) do v.Visible = false end
end
end
end
for player, _ in pairs(ESPObjects) do
if not Players:FindFirstChild(player.Name) then
RemovePlayerESP(player)
end
end
end)
Players.PlayerAdded:Connect(CreatePlayerESP)
Players.PlayerRemoving:Connect(RemovePlayerESP)
-- RESTANTE DO SEU SCRIPT (Aimbot, Guns, etc) ABAIXO
-- Toggle Aimbot
TabMain:Toggle({
Title = "Aimbot",
Icon = "check",
Default = getgenv().Options.Aimbot,
Callback = function(state)
getgenv().Options.Aimbot = state
end
})
-- Toggle TeamCheck
TabMain:Toggle({
Title = "Team Check",
Icon = "check",
Default = getgenv().Options.TeamCheck,
Callback = function(state)
getgenv().Options.TeamCheck = state
end
})
-- Toggle WallCheck
TabMain:Toggle({
Title = "WallCheck",
Icon = "check",
Default = getgenv().Options.WallCheck,
Callback = function(state)
getgenv().Options.WallCheck = state
end
})
-- Toggle ShowFOV
TabMain:Toggle({
Title = "Show FOV",
Icon = "check",
Default = getgenv().Options.ShowFOV,
Callback = function(state)
getgenv().Options.ShowFOV = state
end
})
local HoldClick = true
local Players = game:GetService('Players')
local RunService = game:GetService('RunService')
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local Pressing = false
local Toggle = false
-- Toggle da Interface
TabMain:Toggle({
Title = "Triggerbot",
Icon = "check",
Type = "Toggle",
Default = false,
Callback = function(state)
Toggle = state
print("Triggerbot Ativado: " .. tostring(state))
-- Se desligar enquanto segurando clique, solta imediatamente
if not state and Pressing then
mouse1release()
Pressing = false
end
end
})
-- Loop principal
RunService.RenderStepped:Connect(function()
if not Toggle then return end
local target = Mouse.Target
local model = target and target:FindFirstAncestorWhichIsA("Model")
local isHumanoid = model and model:FindFirstChild("Humanoid")
if isHumanoid then
if HoldClick then
if not Pressing then
mouse1press()
Pressing = true
end
else
mouse1press()
mouse1release()
end
else
if Pressing then
mouse1release()
Pressing = false
end
end
end)
TabMain:Dropdown({
Title = "AimPart",
Values = {"Head", "HumanoidRootPart"},
Value = getgenv().Options.AimPart,
Callback = function(option)
getgenv().Options.AimPart = option
end
})
-- Slider FOV
TabMain:Slider({
Title = "FOV",
Step = 1,
Value = {
Min = 10,
Max = 500,
Default = getgenv().Options.FOV,
},
Callback = function(value)
local numValue = tonumber(value) or 150
getgenv().Options.FOV = numValue
FOVCircle.Radius = numValue
end
})
-- Slider Smoothness
TabMain:Slider({
Title = "Smoothness",
Step = 0.01,
Value = {
Min = 0.01,
Max = 1,
Default = getgenv().Options.Smoothness,
},
Callback = function(value)
local numValue = tonumber(value) or 0.1
getgenv().Options.Smoothness = numValue
end
})
-- Guns Tab - Sliders corrigidos
TabGun:Slider({
Title = "Ammo",
Step = 1,
Value = {
Min = 20,
Max = 999,
Default = 70,
},
Callback = function(value)
local numValue = tonumber(value) or 70
local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
for _, weapon in pairs(weaponsFolder:GetChildren()) do
if weapon:FindFirstChild("Ammo") and weapon.Ammo:IsA("IntValue") then
weapon.Ammo.Value = numValue
end
end
end
})
TabGun:Slider({
Title = "FireRate",
Step = 1,
Value = {
Min = 0,
Max = 10,
Default = 1,
},
Callback = function(value)
local numValue = tonumber(value) or 1
local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
for _, weapon in pairs(weaponsFolder:GetChildren()) do
local fireRate = weapon:FindFirstChild("FireRate")
if fireRate and (fireRate:IsA("NumberValue") or fireRate:IsA("IntValue")) then
fireRate.Value = numValue
end
end
end
})
TabGun:Slider({
Title = "Spread",
Step = 1,
Value = {
Min = 0,
Max = 10,
Default = 1,
},
Callback = function(value)
local numValue = tonumber(value) or 1
local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
for _, weapon in pairs(weaponsFolder:GetChildren()) do
local Spread = weapon:FindFirstChild("Spread")
if Spread and (Spread:IsA("NumberValue") or Spread:IsA("IntValue")) then
Spread.Value = numValue
end
end
end
})
TabGun:Slider({
Title = "ReloadTime",
Step = 1,
Value = {
Min = 0,
Max = 10,
Default = 1,
},
Callback = function(value)
local numValue = tonumber(value) or 1
local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
for _, weapon in pairs(weaponsFolder:GetChildren()) do
local ReloadTime = weapon:FindFirstChild("ReloadTime")
if ReloadTime and (ReloadTime:IsA("NumberValue") or ReloadTime:IsA("IntValue")) then
ReloadTime.Value = numValue
end
end
end
})
TabGun:Slider({
Title = "Recoil",
Step = 1,
Value = {
Min = 0,
Max = 10,
Default = 1,
},
Callback = function(value)
local numValue = tonumber(value) or 1
local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
for _, weapon in pairs(weaponsFolder:GetChildren()) do
local RecoilControl = weapon:FindFirstChild("RecoilControl")
if RecoilControl and (RecoilControl:IsA("NumberValue") or RecoilControl:IsA("IntValue")) then
RecoilControl.Value = numValue
end
end
end
})
TabGun:Slider({
Title = "Range",
Step = 1,
Value = {
Min = 1,
Max = 5000,
Default = 1,
},
Callback = function(value)
local numValue = tonumber(value) or 1
local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
for _, weapon in pairs(weaponsFolder:GetChildren()) do
local Range = weapon:FindFirstChild("Range")
if Range and (Range:IsA("NumberValue") or Range:IsA("IntValue")) then
Range.Value = numValue
end
end
end
})
TabGun:Toggle({
Title = "Automatic",
Default = false,
Type = "Checkbox",
Icon = "check",
Callback = function(state)
local weaponsFolder = game:GetService("ReplicatedStorage"):WaitForChild("Weapons")
for _, weapon in pairs(weaponsFolder:GetChildren()) do
local auto = weapon:FindFirstChild("Auto")
if auto and auto:IsA("BoolValue") then
auto.Value = state
end
end
end
})



its rlly bad
@steamgta yea i know, i dont even think esp works but i know fire rate set to max, recoil set to 0, and spread set to 0 +aimbot works alright