--// Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera
--// Settings
local ESPEnabled = false
local AimbotEnabled = false
local BulletDropEnabled = false
local BulletDropStrength = 1.0
local AimbotFOV = 150
local AimbotSmoothness = 40 -- Increased for stronger aimbot, max 100 (closer to
snap)
local TargetPart = "Head"
local RightMouseHeld = false
local FOVColor = Color3.fromRGB(255, 255, 255)
local SpeedMultipliers = {1, 1.5, 2, 3}
local SpeedIndex = 1
local OriginalSpeed = 16
local CurrentSpeedMultiplier = SpeedMultipliers[SpeedIndex]
local FlyBypassEnabled = false
local FlySpeed = 50
local flyBodyVelocity = nil
local flyBodyGyro = nil
local HitboxExpanderEnabled = false
local HitboxExpanderSize = 6 -- Default size (approx full body size)
--// GUI Init
local screenGui = Instance.new("ScreenGui", LocalPlayer:WaitForChild("PlayerGui"))
screenGui.Name = "ESP_Aimbot_GUI"
screenGui.ResetOnSpawn = false
local frame = Instance.new("Frame", screenGui)
frame.Size = UDim2.new(0, 400, 0, 380) -- taller to fit new controls
frame.Position = UDim2.new(0, 50, 0.5, -190)
frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
frame.BorderSizePixel = 0
frame.Active = true
frame.Draggable = true
local tabFrame = Instance.new("Frame", frame)
tabFrame.Size = UDim2.new(0, 100, 1, 0)
tabFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
local contentFrame = Instance.new("Frame", frame)
contentFrame.Position = UDim2.new(0, 100, 0, 0)
contentFrame.Size = UDim2.new(1, -100, 1, 0)
contentFrame.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
local pages = {}
local function createPage(name)
local page = Instance.new("Frame", contentFrame)
page.Size = UDim2.new(1, 0, 1, 0)
page.BackgroundTransparency = 1
page.Visible = false
pages[name] = page
return page
end
local pageMain = createPage("Main")
local pageMisc = createPage("Misc")
local pageCredits = createPage("Credits")
pageMain.Visible = true
local function createTabButton(text, y)
local btn = Instance.new("TextButton", tabFrame)
btn.Text = text
btn.Position = UDim2.new(0, 0, 0, y)
btn.Size = UDim2.new(1, 0, 0, 35)
btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
btn.TextColor3 = Color3.new(1, 1, 1)
btn.Font = Enum.Font.Gotham
btn.TextSize = 16
btn.MouseButton1Click:Connect(function()
for _, v in pairs(pages) do v.Visible = false end
pages[text].Visible = true
end)
end
createTabButton("Main", 20)
createTabButton("Misc", 60)
createTabButton("Credits", 100)
--// GUI Controls
local function createToggle(parent, name, posY, default, callback)
local button = Instance.new("TextButton", parent)
button.Text = name .. ": " .. (default and "ON" or "OFF")
button.Position = UDim2.new(0, 10, 0, posY)
button.Size = UDim2.new(1, -20, 0, 30)
button.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
button.TextColor3 = Color3.new(1,1,1)
button.Font = Enum.Font.Gotham
button.TextSize = 14
local state = default
button.MouseButton1Click:Connect(function()
state = not state
button.Text = name .. ": " .. (state and "ON" or "OFF")
callback(state)
end)
end
local function createSlider(parent, name, posY, min, max, default, callback)
local label = Instance.new("TextLabel", parent)
label.Text = name .. ": " .. tostring(default)
label.Position = UDim2.new(0, 10, 0, posY)
label.Size = UDim2.new(1, -20, 0, 20)
label.BackgroundTransparency = 1
label.TextColor3 = Color3.new(1,1,1)
label.Font = Enum.Font.Gotham
label.TextSize = 14
local slider = Instance.new("TextButton", parent)
slider.Position = UDim2.new(0, 10, 0, posY + 20)
slider.Size = UDim2.new(1, -20, 0, 20)
slider.BackgroundColor3 = Color3.fromRGB(90, 90, 90)
slider.Text = ""
slider.AutoButtonColor = false
local fill = Instance.new("Frame", slider)
fill.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
fill.Size = UDim2.new((default - min) / (max - min), 0, 1, 0)
fill.BorderSizePixel = 0
local dragging = false
slider.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging
= true end
end)
slider.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging
= false end
end)
RunService.RenderStepped:Connect(function()
if dragging then
local pos = math.clamp((UserInputService:GetMouseLocation().X -
slider.AbsolutePosition.X) / slider.AbsoluteSize.X, 0, 1)
local val = math.floor((min + (max - min) * pos) * 10) / 10
fill.Size = UDim2.new(pos, 0, 1, 0)
label.Text = name .. ": " .. tostring(val)
callback(val)
end
end)
end
-- Main Page UI
createToggle(pageMain, "ESP", 10, false, function(v) ESPEnabled = v end)
createToggle(pageMain, "Aimbot", 50, false, function(v) AimbotEnabled = v end)
createSlider(pageMain, "FOV Size", 90, 80, 500, AimbotFOV, function(v) AimbotFOV =
v end)
createSlider(pageMain, "Smoothness", 140, 1, 100, AimbotSmoothness, function(v)
AimbotSmoothness = v end)
createToggle(pageMain, "Bullet Drop", 190, false, function(v) BulletDropEnabled = v
end)
createSlider(pageMain, "Drop Strength", 230, 0, 3, BulletDropStrength, function(v)
BulletDropStrength = v end)
createToggle(pageMain, "Hitbox Expander", 270, false, function(v)
HitboxExpanderEnabled = v end)
createSlider(pageMain, "Hitbox Size", 310, 2, 12, HitboxExpanderSize, function(v)
HitboxExpanderSize = v end)
-- Misc Page UI
local speedButton = Instance.new("TextButton", pageMisc)
speedButton.Text = "Speed: x" .. tostring(SpeedMultipliers[SpeedIndex])
speedButton.Position = UDim2.new(0, 10, 0, 10)
speedButton.Size = UDim2.new(1, -20, 0, 30)
speedButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
speedButton.TextColor3 = Color3.new(1,1,1)
speedButton.Font = Enum.Font.Gotham
speedButton.TextSize = 14
speedButton.MouseButton1Click:Connect(function()
SpeedIndex = (SpeedIndex % #SpeedMultipliers) + 1
CurrentSpeedMultiplier = SpeedMultipliers[SpeedIndex]
speedButton.Text = "Speed: x" .. tostring(CurrentSpeedMultiplier)
end)
local colorButton = Instance.new("TextButton", pageMisc)
colorButton.Text = "Change FOV Color"
colorButton.Position = UDim2.new(0, 10, 0, 50)
colorButton.Size = UDim2.new(1, -20, 0, 30)
colorButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
colorButton.TextColor3 = Color3.new(1,1,1)
colorButton.Font = Enum.Font.Gotham
colorButton.TextSize = 14
colorButton.MouseButton1Click:Connect(function()
FOVColor = Color3.fromRGB(math.random(0,255), math.random(0,255),
math.random(0,255))
end)
createToggle(pageMisc, "Fly Bypass", 90, false, function(v)
FlyBypassEnabled = v
if not v then
if flyBodyVelocity then
flyBodyVelocity:Destroy()
flyBodyVelocity = nil
end
if flyBodyGyro then
flyBodyGyro:Destroy()
flyBodyGyro = nil
end
local char = LocalPlayer.Character
if char then
local hum = char:FindFirstChildOfClass("Humanoid")
if hum then
hum.PlatformStand = false
end
end
end
end)
-- Credits Page
local creditsLabel = Instance.new("TextLabel", pageCredits)
creditsLabel.Text = "Created by You"
creditsLabel.Size = UDim2.new(1, -20, 0, 30)
creditsLabel.Position = UDim2.new(0, 10, 0, 10)
creditsLabel.BackgroundTransparency = 1
creditsLabel.TextColor3 = Color3.new(1,1,1)
creditsLabel.Font = Enum.Font.Gotham
creditsLabel.TextSize = 16
-- Aimbot Input
UserInputService.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton2 then RightMouseHeld
= true end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton2 then RightMouseHeld
= false end
end)
-- Drawing
local fovCircle = Drawing.new("Circle")
fovCircle.Thickness = 1
fovCircle.NumSides = 64
fovCircle.Filled = false
fovCircle.Transparency = 1
local Boxes = {}
local HitboxExpanders = {}
local function getClosestTarget()
local closest, dist = nil, math.huge
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and
player.Character:FindFirstChild(TargetPart) then
local part = player.Character[TargetPart]
local pos, onScreen = Camera:WorldToViewportPoint(part.Position)
if onScreen then
local mouse = UserInputService:GetMouseLocation()
local d = (Vector2.new(pos.X, pos.Y) - mouse).Magnitude
if d < dist and d <= AimbotFOV then
dist = d
closest = part
end
end
end
end
return closest
end
-- Update Hitbox Expanders per player
local function updateHitboxExpander(player)
if not player.Character then return end
local head = player.Character:FindFirstChild("Head")
if not head then return end
if HitboxExpanders[player] and HitboxExpanders[player].Parent ~= head then
HitboxExpanders[player]:Destroy()
HitboxExpanders[player] = nil
end
if HitboxExpanderEnabled then
if not HitboxExpanders[player] then
local box = Instance.new("BoxHandleAdornment")
box.Adornee = head
box.AlwaysOnTop = true
box.ZIndex = 10
box.Transparency = 0.5
box.Color3 = Color3.fromRGB(255, 0, 0)
box.Size = Vector3.new(HitboxExpanderSize, HitboxExpanderSize,
HitboxExpanderSize)
box.Parent = head
HitboxExpanders[player] = box
else
HitboxExpanders[player].Size = Vector3.new(HitboxExpanderSize,
HitboxExpanderSize, HitboxExpanderSize)
end
else
if HitboxExpanders[player] then
HitboxExpanders[player]:Destroy()
HitboxExpanders[player] = nil
end
end
end
-- Fly Bypass movement keys
local flyMove = {
[Enum.KeyCode.W] = Vector3.new(0, 0, -1),
[Enum.KeyCode.S] = Vector3.new(0, 0, 1),
[Enum.KeyCode.A] = Vector3.new(-1, 0, 0),
[Enum.KeyCode.D] = Vector3.new(1, 0, 0),
[Enum.KeyCode.Space] = Vector3.new(0, 1, 0),
[Enum.KeyCode.LeftControl] = Vector3.new(0, -1, 0),
}
local keysPressed = {}
UserInputService.InputBegan:Connect(function(input)
if FlyBypassEnabled then
if flyMove[input.KeyCode] then
keysPressed[input.KeyCode] = true
end
end
end)
UserInputService.InputEnded:Connect(function(input)
if FlyBypassEnabled then
if flyMove[input.KeyCode] then
keysPressed[input.KeyCode] = nil
end
end
end)
RunService.RenderStepped:Connect(function(delta)
-- FOV Circle
fovCircle.Position = UserInputService:GetMouseLocation()
fovCircle.Radius = AimbotFOV
fovCircle.Color = FOVColor
fovCircle.Visible = AimbotEnabled
-- Speed
local char = LocalPlayer.Character
if char and char:FindFirstChildWhichIsA("Humanoid") then
local hum = char:FindFirstChildWhichIsA("Humanoid")
hum.WalkSpeed = OriginalSpeed * CurrentSpeedMultiplier
end
-- Aimbot
if AimbotEnabled and RightMouseHeld then
local target = getClosestTarget()
if target then
local predicted = target.Position
if BulletDropEnabled then
predicted = predicted + Vector3.new(0, -BulletDropStrength,
0)
end
local dir = (predicted - Camera.CFrame.Position).Unit
Camera.CFrame =
Camera.CFrame:Lerp(CFrame.new(Camera.CFrame.Position, Camera.CFrame.Position +
dir), AimbotSmoothness / 100)
end
end
-- ESP
for _, box in pairs(Boxes) do for _, v in pairs(box) do v.Visible = false end
end
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and
player.Character:FindFirstChild("HumanoidRootPart") then
local char = player.Character
local hrp = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
if hrp and hum and hum.Health > 0 then
local tl = Camera:WorldToViewportPoint(hrp.Position +
Vector3.new(-2, 3, 0))
local br = Camera:WorldToViewportPoint(hrp.Position +
Vector3.new(2, -3, 0))
if br.Z > 0 then
if not Boxes[player] then
Boxes[player] = {
Outline = Drawing.new("Square"),
Box = Drawing.new("Square"),
Health = Drawing.new("Line")
}
for _, obj in pairs(Boxes[player]) do
obj.Thickness = 1 obj.Visible = false end
Boxes[player].Outline.Color = Color3.new(0, 0,
0)
Boxes[player].Box.Color = Color3.new(1, 1, 1)
Boxes[player].Health.Color = Color3.new(0, 1,
0)
end
local box = Boxes[player]
local size = Vector2.new(math.abs(tl.X - br.X),
math.abs(tl.Y - br.Y))
local pos = Vector2.new(math.min(tl.X, br.X),
math.min(tl.Y, br.Y))
local hpRatio = hum.Health / hum.MaxHealth
box.Outline.Size = size + Vector2.new(2, 2)
box.Outline.Position = pos - Vector2.new(1, 1)
box.Outline.Visible = ESPEnabled
box.Box.Size = size
box.Box.Position = pos
box.Box.Visible = ESPEnabled
box.Health.From = Vector2.new(pos.X - 5, pos.Y +
size.Y)
box.Health.To = Vector2.new(pos.X - 5, pos.Y + size.Y
* (1 - hpRatio))
box.Health.Visible = ESPEnabled
end
end
-- Update hitbox expander for player
updateHitboxExpander(player)
end
end
-- Fly Bypass movement
if FlyBypassEnabled then
local char = LocalPlayer.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local hrp = char.HumanoidRootPart
local hum = char:FindFirstChildOfClass("Humanoid")
if not flyBodyVelocity then
flyBodyVelocity = Instance.new("BodyVelocity")
flyBodyVelocity.MaxForce = Vector3.new(1e5, 1e5, 1e5)
flyBodyVelocity.Velocity = Vector3.new(0, 0, 0)
flyBodyVelocity.Parent = hrp
flyBodyGyro = Instance.new("BodyGyro")
flyBodyGyro.MaxTorque = Vector3.new(1e5, 1e5, 1e5)
flyBodyGyro.CFrame = hrp.CFrame
flyBodyGyro.Parent = hrp
end
-- Calculate move direction relative to camera look
local moveDir = Vector3.new(0,0,0)
for key,_ in pairs(keysPressed) do
moveDir = moveDir + flyMove[key]
end
local camCF = Camera.CFrame
local lookVector = camCF.LookVector
local rightVector = camCF.RightVector
local upVector = Vector3.new(0,1,0)
local velocity = Vector3.new(0,0,0)
if moveDir.Magnitude > 0 then
moveDir = moveDir.Unit
velocity = (rightVector * moveDir.X + upVector * moveDir.Y
+ lookVector * moveDir.Z) * FlySpeed
end
flyBodyVelocity.Velocity = velocity
flyBodyGyro.CFrame = CFrame.new(hrp.Position, hrp.Position +
camCF.LookVector)
if hum then
hum.PlatformStand = true
end
else
if flyBodyVelocity then
flyBodyVelocity:Destroy()
flyBodyVelocity = nil
end
if flyBodyGyro then
flyBodyGyro:Destroy()
flyBodyGyro = nil
end
end
else
local char = LocalPlayer.Character
if char then
local hum = char:FindFirstChildOfClass("Humanoid")
if hum and hum.PlatformStand then
hum.PlatformStand = false
end
end
if flyBodyVelocity then
flyBodyVelocity:Destroy()
flyBodyVelocity = nil
end
if flyBodyGyro then
flyBodyGyro:Destroy()
flyBodyGyro = nil
end
end
end)