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)