Aimbot
Key RequiredUniversal

Aimbot

Universal ScriptGO5TGO5T 24 views 232 executesUpdated Jul 7, 2026
Unrated
00
Lua Script•354 lines (13048 chars)
local uis = game:GetService("UserInputService")
local plr = game.Players.LocalPlayer
local cam = workspace.CurrentCamera
local rs = game:GetService("RunService")


local aiming = false
local fovRadius = 120
local espEnabled = true


-- FOV Circle
local fovCircle = Drawing.new("Circle")
fovCircle.Radius = fovRadius
fovCircle.Color = Color3.fromRGB(255, 255, 0)
fovCircle.Thickness = 1.5
fovCircle.Transparency = 0.7
fovCircle.Visible = true
fovCircle.Filled = false


-- ESP Tables
local esp = {}


-- ==================== MENU ====================
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "AimbotESP_Menu"
screenGui.ResetOnSpawn = false
screenGui.Parent = plr:WaitForChild("PlayerGui")


local menuFrame = Instance.new("Frame")
menuFrame.Size = UDim2.new(0, 380, 0, 520)
menuFrame.Position = UDim2.new(0.5, -190, 0.5, -260)
menuFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
menuFrame.BorderSizePixel = 0
menuFrame.Visible = false
menuFrame.Parent = screenGui


local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 50)
title.BackgroundColor3 = Color3.fromRGB(35, 35, 50)
title.Text = "Advanced Aimbot + ESP"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.TextSize = 18
title.Font = Enum.Font.GothamBold
title.Parent = menuFrame


-- Close Button
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 30, 0, 30)
closeBtn.Position = UDim2.new(1, -35, 0, 10)
closeBtn.BackgroundTransparency = 1
closeBtn.Text = "✕"
closeBtn.TextColor3 = Color3.fromRGB(255, 80, 80)
closeBtn.TextSize = 20
closeBtn.Font = Enum.Font.GothamBold
closeBtn.Parent = menuFrame


-- Menu Items
local function createToggle(name, default, yOffset, callback)
   local toggleFrame = Instance.new("Frame")
   toggleFrame.Size = UDim2.new(1, -20, 0, 40)
   toggleFrame.Position = UDim2.new(0, 10, 0, yOffset)
   toggleFrame.BackgroundTransparency = 1
   toggleFrame.Parent = menuFrame
  
   local label = Instance.new("TextLabel")
   label.Size = UDim2.new(0.7, 0, 1, 0)
   label.BackgroundTransparency = 1
   label.Text = name
   label.TextColor3 = Color3.fromRGB(255, 255, 255)
   label.TextSize = 15
   label.Font = Enum.Font.Gotham
   label.TextXAlignment = Enum.TextXAlignment.Left
   label.Parent = toggleFrame
  
   local toggleBtn = Instance.new("TextButton")
   toggleBtn.Size = UDim2.new(0, 60, 0, 25)
   toggleBtn.Position = UDim2.new(1, -70, 0.5, -12.5)
   toggleBtn.BackgroundColor3 = default and Color3.fromRGB(0, 170, 0) or Color3.fromRGB(100, 100, 100)
   toggleBtn.Text = default and "ON" or "OFF"
   toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
   toggleBtn.TextSize = 13
   toggleBtn.Font = Enum.Font.GothamBold
   toggleBtn.Parent = toggleFrame
  
   local enabled = default
   toggleBtn.MouseButton1Click:Connect(function()
       enabled = not enabled
       toggleBtn.BackgroundColor3 = enabled and Color3.fromRGB(0, 170, 0) or Color3.fromRGB(100, 100, 100)
       toggleBtn.Text = enabled and "ON" or "OFF"
       callback(enabled)
   end)
  
   return toggleBtn
end


local function createSlider(name, min, max, default, yOffset, callback)
   local sliderFrame = Instance.new("Frame")
   sliderFrame.Size = UDim2.new(1, -20, 0, 50)
   sliderFrame.Position = UDim2.new(0, 10, 0, yOffset)
   sliderFrame.BackgroundTransparency = 1
   sliderFrame.Parent = menuFrame
  
   local label = Instance.new("TextLabel")
   label.Size = UDim2.new(1, 0, 0, 20)
   label.BackgroundTransparency = 1
   label.Text = name .. ": " .. default
   label.TextColor3 = Color3.fromRGB(255, 255, 255)
   label.TextSize = 15
   label.Font = Enum.Font.Gotham
   label.TextXAlignment = Enum.TextXAlignment.Left
   label.Parent = sliderFrame
  
   local bar = Instance.new("Frame")
   bar.Size = UDim2.new(1, 0, 0, 8)
   bar.Position = UDim2.new(0, 0, 0, 30)
   bar.BackgroundColor3 = Color3.fromRGB(50, 50, 65)
   bar.BorderSizePixel = 0
   bar.Parent = sliderFrame
  
   local fill = Instance.new("Frame")
   fill.Size = UDim2.new((default - min)/(max - min), 0, 1, 0)
   fill.BackgroundColor3 = Color3.fromRGB(0, 170, 255)
   fill.BorderSizePixel = 0
   fill.Parent = bar
  
   local dragging = false
   bar.InputBegan:Connect(function(input)
       if input.UserInputType == Enum.UserInputType.MouseButton1 then
           dragging = true
       end
   end)
  
   uis.InputEnded:Connect(function(input)
       if input.UserInputType == Enum.UserInputType.MouseButton1 then
           dragging = false
       end
   end)
  
   uis.InputChanged:Connect(function(input)
       if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
           local mousePos = uis:GetMouseLocation().X
           local barPos = bar.AbsolutePosition.X
           local barSize = bar.AbsoluteSize.X
           local percent = math.clamp((mousePos - barPos) / barSize, 0, 1)
           local value = math.floor(min + (max - min) * percent)
          
           fill.Size = UDim2.new(percent, 0, 1, 0)
           label.Text = name .. ": " .. value
           callback(value)
       end
   end)
end


-- Menu Toggles
createToggle("Aimbot (Right Click)", true, 60, function(state) aiming = state end)
createToggle("ESP Master", true, 110, function(state) espEnabled = state end)
createToggle("Show Boxes", true, 160, function(state) for _,v in pairs(esp) do if v.Box then v.Box.Visible = state and espEnabled end end end)
createToggle("Show Names + Distance", true, 210, function(state) for _,v in pairs(esp) do if v.Name then v.Name.Visible = state and espEnabled end end end)
createToggle("Health Bars", true, 260, function(state) for _,v in pairs(esp) do if v.HealthBar then v.HealthBar.Visible = state and espEnabled end end end)
createToggle("Tracers", true, 310, function(state) for _,v in pairs(esp) do if v.Tracer then v.Tracer.Visible = state and espEnabled end end end)
createToggle("Head Dots", true, 360, function(state) for _,v in pairs(esp) do if v.HeadDot then v.HeadDot.Visible = state and espEnabled end end end)


createSlider("FOV Radius", 50, 300, 120, 410, function(value)
   fovRadius = value
   fovCircle.Radius = value
end)


-- Toggle Menu with Insert Key
uis.InputBegan:Connect(function(input, gpe)
   if gpe then return end
   if input.KeyCode == Enum.KeyCode.Insert then
       menuFrame.Visible = not menuFrame.Visible
   end
end)


closeBtn.MouseButton1Click:Connect(function()
   menuFrame.Visible = false
end)


-- ==================== ESP & Aimbot ====================
local function createESP(player)
   if player == plr then return end
   -- (Same advanced ESP as before)
   esp[player] = {
       Box = Drawing.new("Square"), BoxOutline = Drawing.new("Square"),
       Name = Drawing.new("Text"), Distance = Drawing.new("Text"),
       HealthBar = Drawing.new("Square"), HealthBarOutline = Drawing.new("Square"),
       Tracer = Drawing.new("Line"), HeadDot = Drawing.new("Circle")
   }
  
   local v = esp[player]
   -- Box Setup
   v.Box.Thickness = 1.5; v.Box.Filled = false; v.Box.Color = Color3.fromRGB(255, 0, 0); v.Box.Transparency = 1
   v.BoxOutline.Thickness = 3; v.BoxOutline.Filled = false; v.BoxOutline.Color = Color3.fromRGB(0,0,0); v.BoxOutline.Transparency = 1
  
   -- Name & Distance
   v.Name.Size = 14; v.Name.Center = true; v.Name.Outline = true; v.Name.Color = Color3.fromRGB(255,255,255)
   v.Distance.Size = 13; v.Distance.Center = true; v.Distance.Outline = true; v.Distance.Color = Color3.fromRGB(200,200,200)
  
   -- Health Bar
   v.HealthBar.Filled = true; v.HealthBar.Transparency = 1
   v.HealthBarOutline.Filled = true; v.HealthBarOutline.Color = Color3.fromRGB(0,0,0); v.HealthBarOutline.Transparency = 1
  
   -- Tracer & Head Dot
   v.Tracer.Thickness = 1.5; v.Tracer.Color = Color3.fromRGB(255, 0, 0); v.Tracer.Transparency = 0.7
   v.HeadDot.Radius = 2.5; v.HeadDot.Color = Color3.fromRGB(255, 0, 0); v.HeadDot.Filled = true
end


for _, p in pairs(game.Players:GetPlayers()) do createESP(p) end
game.Players.PlayerAdded:Connect(createESP)


game.Players.PlayerRemoving:Connect(function(player)
   if esp[player] then
       for _, obj in pairs(esp[player]) do obj:Remove() end
       esp[player] = nil
   end
end)


-- Get Closest Target
local function getClosest()
   local closest = nil
   local shortest = math.huge
   for _, v in pairs(game.Players:GetPlayers()) do
       if v ~= plr and v.Character and v.Character:FindFirstChild("Humanoid") and v.Character.Humanoid.Health > 0 then
           local head = v.Character:FindFirstChild("Head")
           if head then
               local screenPos, onScreen = cam:WorldToViewportPoint(head.Position)
               if onScreen then
                   local distFromCenter = (Vector2.new(screenPos.X, screenPos.Y) - fovCircle.Position).Magnitude
                   local myHead = plr.Character and plr.Character:FindFirstChild("Head")
                   local dist3D = myHead and (head.Position - myHead.Position).Magnitude or math.huge
                  
                   if distFromCenter <= fovRadius and dist3D < shortest then
                       shortest = dist3D
                       closest = head
                   end
               end
           end
       end
   end
   return closest
end


-- Right Click Aimbot
uis.InputBegan:Connect(function(input, gpe)
   if gpe then return end
   if input.UserInputType == Enum.UserInputType.MouseButton2 then
       aiming = true
   end
end)


uis.InputEnded:Connect(function(input)
   if input.UserInputType == Enum.UserInputType.MouseButton2 then
       aiming = false
   end
end)


-- Main Render Loop
rs.RenderStepped:Connect(function()
   fovCircle.Position = Vector2.new(cam.ViewportSize.X / 2, cam.ViewportSize.Y / 2)
  
   if aiming then
       local target = getClosest()
       if target then
           cam.CFrame = CFrame.new(cam.CFrame.Position, target.Position)
       end
   end
  
   if not espEnabled then return end
  
   for _, player in pairs(game.Players:GetPlayers()) do
       if player ~= plr and esp[player] and player.Character then
           local char = player.Character
           local root = char:FindFirstChild("HumanoidRootPart")
           local head = char:FindFirstChild("Head")
           local humanoid = char:FindFirstChild("Humanoid")
          
           if root and head and humanoid then
               local rootPos, onScreen = cam:WorldToViewportPoint(root.Position)
               if onScreen then
                   local headPos = cam:WorldToViewportPoint(head.Position + Vector3.new(0, 0.8, 0))
                   local legPos = cam:WorldToViewportPoint(root.Position - Vector3.new(0, 3.5, 0))
                   local height = math.abs(headPos.Y - legPos.Y)
                   local width = height * 0.55
                   local distance = math.floor((cam.CFrame.Position - root.Position).Magnitude)
                  
                   local v = esp[player]
                  
                   -- Box
                   v.Box.Size = Vector2.new(width, height)
                   v.Box.Position = Vector2.new(rootPos.X - width/2, rootPos.Y - height/2)
                   v.Box.Visible = true
                  
                   v.BoxOutline.Size = v.Box.Size
                   v.BoxOutline.Position = v.Box.Position
                   v.BoxOutline.Visible = true
                  
                   -- Name + Distance
                   v.Name.Text = player.Name
                   v.Name.Position = Vector2.new(rootPos.X, rootPos.Y - height/2 - 18)
                   v.Name.Visible = true
                  
                   v.Distance.Text = distance .. "m"
                   v.Distance.Position = Vector2.new(rootPos.X, rootPos.Y - height/2 - 5)
                   v.Distance.Visible = true
                  
                   -- Health Bar
                   local hpPct = humanoid.Health / humanoid.MaxHealth
                   v.HealthBar.Size = Vector2.new(4, height * hpPct)
                   v.HealthBar.Position = Vector2.new(rootPos.X - width/2 - 8, rootPos.Y - height/2 + height * (1 - hpPct))
                   v.HealthBar.Color = Color3.fromRGB(255 * (1 - hpPct), 255 * hpPct, 0)
                   v.HealthBar.Visible = true
                  
                   v.HealthBarOutline.Size = Vector2.new(6, height)
                   v.HealthBarOutline.Position = Vector2.new(rootPos.X - width/2 - 9, rootPos.Y - height/2)
                   v.HealthBarOutline.Visible = true
                  
                   -- Head Dot
                   v.HeadDot.Position = Vector2.new(headPos.X, headPos.Y)
                   v.HeadDot.Visible = true
                  
                   -- Tracer
                   v.Tracer.From = Vector2.new(cam.ViewportSize.X/2, cam.ViewportSize.Y)
                   v.Tracer.To = Vector2.new(rootPos.X, rootPos.Y + height/2)
                   v.Tracer.Visible = true
               else
                   for _, obj in pairs(esp[player]) do obj.Visible = false end
               end
           end
       end
   end
end)


print("Advanced Aimbot + ESP with Menu Loaded! Press INSERT to open menu.")

Features & Information

enjoy muddy

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts