
Key RequiredUniversal

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local Camera = Workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
local Settings = {
Aimlock = { Enabled = false, FOV = 90, Smooth = 0.3 },
Silent = { Enabled = false, HitPart = "Head", FOV = 200 },
ESP = { Enabled = false, Box = false, Name = false, Tracer = false, TeamCheck = false }
}
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "AimbotHub"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local Main = Instance.new("Frame")
Main.Size = UDim2.new(0, 400, 0, 450)
Main.Position = UDim2.new(0.5, -200, 0.5, -225)
Main.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
Main.BorderSizePixel = 0
Main.Active = true
Main.Draggable = true
Main.Parent = ScreenGui
local TitleBar = Instance.new("Frame")
TitleBar.Size = UDim2.new(1, 0, 0, 35)
TitleBar.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
TitleBar.BorderSizePixel = 0
TitleBar.Parent = Main
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -40, 1, 0)
Title.Position = UDim2.new(0, 10, 0, 0)
Title.BackgroundTransparency = 1
Title.Text = "Aimbot Hub"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.Font = Enum.Font.SourceSansBold
Title.TextSize = 18
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = TitleBar
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 25, 0, 25)
CloseBtn.Position = UDim2.new(1, -30, 0.5, -12.5)
CloseBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
CloseBtn.Text = "X"
CloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseBtn.Font = Enum.Font.SourceSansBold
CloseBtn.TextSize = 14
CloseBtn.BorderSizePixel = 0
CloseBtn.Parent = TitleBar
local Tabs = {}
local function makeTab(name, x)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.33, -2, 0, 30)
btn.Position = UDim2.new(x, 1, 0, 37)
btn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
btn.Text = name
btn.TextColor3 = Color3.fromRGB(200, 200, 200)
btn.Font = Enum.Font.SourceSans
btn.TextSize = 16
btn.BorderSizePixel = 0
btn.Parent = Main
table.insert(Tabs, btn)
return btn
end
local Tab1 = makeTab("Aimlock", 0)
local Tab2 = makeTab("Silent Aim", 0.333)
local Tab3 = makeTab("ESP", 0.666)
local Content = Instance.new("Frame")
Content.Size = UDim2.new(1, 0, 1, -72)
Content.Position = UDim2.new(0, 0, 0, 72)
Content.BackgroundColor3 = Color3.fromRGB(18, 18, 18)
Content.BorderSizePixel = 0
Content.Parent = Main
local function addToggle(y, name, callback)
local frame = Instance.new("Frame")
frame.Size = UDim2.new(1, -10, 0, 30)
frame.Position = UDim2.new(0, 5, 0, y)
frame.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
frame.BorderSizePixel = 0
frame.Parent = Content
local label = Instance.new("TextLabel")
label.Size = UDim2.new(0, 250, 1, 0)
label.Position = UDim2.new(0, 10, 0, 0)
label.BackgroundTransparency = 1
label.Text = name
label.TextColor3 = Color3.fromRGB(220, 220, 220)
label.Font = Enum.Font.SourceSans
label.TextSize = 16
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = frame
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, 60, 0, 22)
btn.Position = UDim2.new(1, -70, 0.5, -11)
btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
btn.Text = "OFF"
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.Font = Enum.Font.SourceSans
btn.TextSize = 14
btn.BorderSizePixel = 0
btn.Parent = frame
local state = false
btn.MouseButton1Click:Connect(function()
state = not state
if state then
btn.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
btn.Text = "ON"
else
btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
btn.Text = "OFF"
end
if callback then callback(state) end
end)
end
local function addInput(y, name, default, callback)
local frame = Instance.new("Frame")
frame.Size = UDim2.new(1, -10, 0, 30)
frame.Position = UDim2.new(0, 5, 0, y)
frame.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
frame.BorderSizePixel = 0
frame.Parent = Content
local label = Instance.new("TextLabel")
label.Size = UDim2.new(0, 200, 1, 0)
label.Position = UDim2.new(0, 10, 0, 0)
label.BackgroundTransparency = 1
label.Text = name
label.TextColor3 = Color3.fromRGB(220, 220, 220)
label.Font = Enum.Font.SourceSans
label.TextSize = 16
label.TextXAlignment = Enum.TextXAlignment.Left
label.Parent = frame
local box = Instance.new("TextBox")
box.Size = UDim2.new(0, 70, 0, 22)
box.Position = UDim2.new(1, -80, 0.5, -11)
box.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
box.Text = tostring(default)
box.TextColor3 = Color3.fromRGB(255, 255, 255)
box.Font = Enum.Font.SourceSans
box.TextSize = 14
box.ClearTextOnFocus = false
box.Parent = frame
box.FocusLost:Connect(function()
local num = tonumber(box.Text)
if num then
if callback then callback(num) end
end
end)
end
local function addInfo(y, text)
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, -10, 0, 30)
label.Position = UDim2.new(0, 5, 0, y)
label.BackgroundTransparency = 1
label.Text = text
label.TextColor3 = Color3.fromRGB(150, 150, 150)
label.Font = Enum.Font.SourceSans
label.TextSize = 15
label.Parent = Content
end
local function clearContent()
for _, child in pairs(Content:GetChildren()) do
child:Destroy()
end
end
local function switchTab(id)
for i, btn in pairs(Tabs) do
if i == id then
btn.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
else
btn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
end
end
clearContent()
if id == 1 then
addToggle(5, "Aimlock Enabled", function(s) Settings.Aimlock.Enabled = s end)
addInput(40, "FOV Value", Settings.Aimlock.FOV, function(v) Settings.Aimlock.FOV = math.clamp(v, 10, 360) end)
addInput(75, "Smoothness (0-1)", Settings.Aimlock.Smooth, function(v) Settings.Aimlock.Smooth = math.clamp(v, 0, 1) end)
addInfo(110, "Hold right-click to aimlock")
addInfo(145, "RightShift toggles UI on/off")
elseif id == 2 then
addToggle(5, "Silent Aim Enabled", function(s) Settings.Silent.Enabled = s end)
addInput(40, "Silent FOV", Settings.Silent.FOV, function(v) Settings.Silent.FOV = math.clamp(v, 10, 360) end)
addInfo(75, "Snaps on left-click")
addInfo(110, "RightShift toggles UI on/off")
elseif id == 3 then
addToggle(5, "ESP Enabled", function(s) Settings.ESP.Enabled = s end)
addToggle(40, "Box", function(s) Settings.ESP.Box = s end)
addToggle(75, "Name", function(s) Settings.ESP.Name = s end)
addToggle(110, "Tracer", function(s) Settings.ESP.Tracer = s end)
addToggle(145, "Team Check", function(s) Settings.ESP.TeamCheck = s end)
addInfo(180, "RightShift toggles UI on/off")
end
end
Tab1.MouseButton1Click:Connect(function() switchTab(1) end)
Tab2.MouseButton1Click:Connect(function() switchTab(2) end)
Tab3.MouseButton1Click:Connect(function() switchTab(3) end)
switchTab(1)
CloseBtn.MouseButton1Click:Connect(function()
ScreenGui:Destroy()
end)
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if input.KeyCode == Enum.KeyCode.RightShift then
Main.Visible = not Main.Visible
end
end)
local FovCircle = Drawing.new("Circle")
FovCircle.Thickness = 1
FovCircle.Color = Color3.fromRGB(255, 255, 255)
FovCircle.Filled = false
FovCircle.Visible = false
RunService.RenderStepped:Connect(function()
FovCircle.Position = UserInputService:GetMouseLocation()
FovCircle.Radius = Settings.Aimlock.FOV
FovCircle.Visible = Settings.Aimlock.Enabled
end)
local function getClosestPlayer(fov, useSilent)
local closest, closestDist = nil, fov
local mousePos = UserInputService:GetMouseLocation()
for _, player in pairs(Players:GetPlayers()) do
if player == LocalPlayer then continue end
local char = player.Character
local targetPart = nil
if useSilent then
targetPart = char and char:FindFirstChild(Settings.Silent.HitPart) or (char and char:FindFirstChild("Head"))
else
targetPart = char and char:FindFirstChild("Head")
end
if targetPart then
if Settings.ESP.TeamCheck and player.Team == LocalPlayer.Team then continue end
local screenPos, onScreen = Camera:WorldToViewportPoint(targetPart.Position)
if onScreen then
local dist = (Vector2.new(screenPos.X, screenPos.Y) - mousePos).Magnitude
if dist < closestDist then
closestDist = dist
closest = targetPart
end
end
end
end
return closest
end
RunService.RenderStepped:Connect(function()
if not Settings.Aimlock.Enabled then return end
if not UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then return end
local target = getClosestPlayer(Settings.Aimlock.FOV, false)
if target then
Camera.CFrame = Camera.CFrame:Lerp(
CFrame.lookAt(Camera.CFrame.Position, target.Position),
Settings.Aimlock.Smooth
)
end
end)
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 and Settings.Silent.Enabled then
local target = getClosestPlayer(Settings.Silent.FOV, true)
if target then
Camera.CFrame = CFrame.lookAt(Camera.CFrame.Position, target.Position)
end
end
end)
local ESPObjects = {}
local function createESP(player)
if player == LocalPlayer then return end
if ESPObjects[player] then return end
local objects = {}
local box = Drawing.new("Square")
box.Thickness = 1
box.Filled = false
box.Color = Color3.fromRGB(255, 0, 0)
box.Visible = false
objects.Box = box
local line = Drawing.new("Line")
line.Thickness = 1
line.Color = Color3.fromRGB(255, 255, 255)
line.Visible = false
objects.Line = line
local text = Drawing.new("Text")
text.Center = true
text.Outline = true
text.Size = 14
text.Color = Color3.fromRGB(255, 255, 255)
text.Visible = false
objects.Text = text
ESPObjects[player] = objects
end
local function removeESP(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, objects in pairs(ESPObjects) do
local char = player.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
local head = char and char:FindFirstChild("Head")
local hum = char and char:FindFirstChild("Humanoid")
objects.Box.Visible = false
objects.Line.Visible = false
objects.Text.Visible = false
if root and head and hum and hum.Health > 0 then
if not (Settings.ESP.TeamCheck and player.Team == LocalPlayer.Team) then
local headPos, onScreen = Camera:WorldToViewportPoint(head.Position)
local rootPos = Camera:WorldToViewportPoint(root.Position)
if onScreen then
local height = math.abs(headPos.Y - rootPos.Y)
local width = height * 0.7
if Settings.ESP.Box then
objects.Box.Size = Vector2.new(width, height)
objects.Box.Position = Vector2.new(rootPos.X - width/2, rootPos.Y - height)
objects.Box.Visible = true
end
if Settings.ESP.Tracer then
objects.Line.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y)
objects.Line.To = Vector2.new(rootPos.X, rootPos.Y)
objects.Line.Visible = true
end
if Settings.ESP.Name then
objects.Text.Position = Vector2.new(headPos.X, headPos.Y - 25)
objects.Text.Text = player.Name
objects.Text.Visible = true
end
end
end
end
end
end)
for _, player in pairs(Players:GetPlayers()) do
createESP(player)
end
Players.PlayerAdded:Connect(createESP)
Players.PlayerRemoving:Connect(removeESP)No comments yet for this script.



