
Key Required VerifiedUniversal

-- Stable Aggressive Aimbot + Prediction + Dead Check + Rapid Triggerbot
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local localPlayer = Players.LocalPlayer
local camera = workspace.CurrentCamera
-- Anti Double Load
if _G.MyESP_Aimbot_Triggerbot then
if _G.MyESP_Aimbot_Triggerbot.screenGui then _G.MyESP_Aimbot_Triggerbot.screenGui:Destroy() end
if _G.MyESP_Aimbot_Triggerbot.connections then
for _, conn in pairs(_G.MyESP_Aimbot_Triggerbot.connections) do conn:Disconnect() end
end
for _, data in pairs(_G.MyESP_Aimbot_Triggerbot.drawings or {}) do
if data.box then data.box:Remove() end
if data.name then data.name:Remove() end
if data.dist then data.dist:Remove() end
end
_G.MyESP_Aimbot_Triggerbot = nil
return
end
_G.MyESP_Aimbot_Triggerbot = { screenGui = nil, drawings = {}, connections = {} }
-- ================== SETTINGS ==================
local ALL_ENABLED = true
local AIM_PART = "Head"
local AIM_FOV = 180
local PREDICTION = 0.15
local STICK_TIME = 0.4 -- Helps prevent rapid switching
local TEAM_CHECK = false
local WALLCHECK = true
local FIRE_RATE = 0.07
local SHOW_BOXES = true
local SHOW_NAMES = true
local SHOW_DISTANCE = true
local BOX_COLOR = Color3.fromRGB(0, 255, 100)
local TEXT_COLOR = Color3.fromRGB(255, 255, 255)
-- ================== DRAWINGS ==================
local drawings = {}
_G.MyESP_Aimbot_Triggerbot.drawings = drawings
local function createDrawings(player)
if player == localPlayer then return end
local box = Drawing.new("Square")
box.Thickness = 2; box.Color = BOX_COLOR; box.Filled = false; box.Transparency = 1
local nameText = Drawing.new("Text")
nameText.Size = 16; nameText.Center = true; nameText.Outline = true; nameText.Color = TEXT_COLOR
local distText = Drawing.new("Text")
distText.Size = 14; distText.Center = true; distText.Outline = true; distText.Color = TEXT_COLOR
drawings[player] = {box = box, name = nameText, dist = distText}
end
local function isAlive(character)
local humanoid = character:FindFirstChild("Humanoid")
return humanoid and humanoid.Health > 0
end
local function isVisible(targetPart)
if not WALLCHECK then return true end
local blacklist = {}
for _, v in ipairs(localPlayer.Character:GetDescendants()) do
if v:IsA("BasePart") then table.insert(blacklist, v) end
end
for _, v in ipairs(targetPart.Parent:GetDescendants()) do
if v:IsA("BasePart") then table.insert(blacklist, v) end
end
return #camera:GetPartsObscuringTarget({targetPart.Position}, blacklist) == 0
end
local function updateESP()
if not ALL_ENABLED then
for _, d in pairs(drawings) do
d.box.Visible = false; d.name.Visible = false; d.dist.Visible = false
end
return
end
for player, data in pairs(drawings) do
local char = player.Character
if char and char:FindFirstChild("HumanoidRootPart") and char:FindFirstChild("Head") then
local root = char.HumanoidRootPart
local head = char.Head
local rootPos, onScreen = camera:WorldToViewportPoint(root.Position)
local headPos = camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.5, 0))
if onScreen then
local height = (camera:WorldToViewportPoint(root.Position - Vector3.new(0, 3, 0)).Y - headPos.Y) * 1.1
local width = height * 0.6
if SHOW_BOXES then
data.box.Size = Vector2.new(width, height)
data.box.Position = Vector2.new(rootPos.X - width/2, headPos.Y)
data.box.Visible = true
end
if SHOW_NAMES then
data.name.Text = player.Name
data.name.Position = Vector2.new(rootPos.X, headPos.Y - 20)
data.name.Visible = true
end
if SHOW_DISTANCE then
local dist = (root.Position - camera.CFrame.Position).Magnitude
data.dist.Text = string.format("%.0f", dist)
data.dist.Position = Vector2.new(rootPos.X, rootPos.Y + height/2 + 5)
data.dist.Visible = true
end
else
data.box.Visible = false; data.name.Visible = false; data.dist.Visible = false
end
else
data.box.Visible = false; data.name.Visible = false; data.dist.Visible = false
end
end
end
-- ================== STABLE AGGRESSIVE AIMBOT WITH DEAD CHECK ==================
local currentTarget = nil
local targetLockTime = 0
local lastShotTime = 0
local function getBestTarget()
local closest = nil
local shortest = AIM_FOV
for _, player in ipairs(Players:GetPlayers()) do
if player ~= localPlayer and player.Character then
local char = player.Character
local part = char:FindFirstChild(AIM_PART)
local hum = char:FindFirstChild("Humanoid")
-- Skip if player is dead
if not isAlive(char) then continue end
if part and hum then
if TEAM_CHECK and player.Team == localPlayer.Team then continue end
local screenPos, onScreen = camera:WorldToViewportPoint(part.Position)
if not onScreen then continue end
local mousePos = UserInputService:GetMouseLocation()
local dist = (Vector2.new(screenPos.X, screenPos.Y) - mousePos).Magnitude
-- Strong target sticking
if currentTarget and currentTarget.Parent == char and isAlive(char) and isVisible(part) then
return part
end
if dist < shortest and isVisible(part) then
shortest = dist
closest = part
end
end
end
end
return closest
end
local function updateAimbot()
if not ALL_ENABLED then
currentTarget = nil
return
end
local targetPart = getBestTarget()
if targetPart then
if targetPart ~= currentTarget then
if not currentTarget or (tick() - targetLockTime > STICK_TIME) then
currentTarget = targetPart
targetLockTime = tick()
end
end
else
currentTarget = nil
end
if currentTarget then
local root = currentTarget.Parent:FindFirstChild("HumanoidRootPart")
local predictedPos = currentTarget.Position
if root then
predictedPos = predictedPos + (root.Velocity * PREDICTION)
end
-- Aggressive hard lock
local lockCFrame = CFrame.new(camera.CFrame.Position, predictedPos)
camera.CFrame = lockCFrame
end
end
local function updateTriggerbot()
if not ALL_ENABLED or not currentTarget then return end
-- Extra safety: stop if target died
if not isAlive(currentTarget.Parent) then
currentTarget = nil
return
end
if not isVisible(currentTarget) then return end
local now = tick()
if now - lastShotTime >= FIRE_RATE then
mouse1click()
lastShotTime = now
end
end
-- ================== TOGGLE BUTTON ==================
local screenGui = Instance.new("ScreenGui")
screenGui.ResetOnSpawn = false
screenGui.Parent = localPlayer:WaitForChild("PlayerGui")
_G.MyESP_Aimbot_Triggerbot.screenGui = screenGui
local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(0, 110, 0, 55)
toggleBtn.Position = UDim2.new(0, 30, 0, 30)
toggleBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
toggleBtn.TextColor3 = Color3.new(1, 1, 1)
toggleBtn.Font = Enum.Font.GothamBold
toggleBtn.TextSize = 20
toggleBtn.BorderSizePixel = 0
toggleBtn.Text = "ON"
toggleBtn.Parent = screenGui
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 14)
corner.Parent = toggleBtn
-- Draggable
local dragging = false
local dragStart, startPos
toggleBtn.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = toggleBtn.Position
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - dragStart
toggleBtn.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
toggleBtn.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end)
toggleBtn.MouseButton1Click:Connect(function()
ALL_ENABLED = not ALL_ENABLED
if ALL_ENABLED then
toggleBtn.Text = "ON"
toggleBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
else
toggleBtn.Text = "OFF"
toggleBtn.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
currentTarget = nil
end
end)
-- ================== MAIN LOOP ==================
for _, plr in ipairs(Players:GetPlayers()) do
createDrawings(plr)
end
Players.PlayerAdded:Connect(createDrawings)
Players.PlayerRemoving:Connect(function(plr)
if drawings[plr] then
drawings[plr].box:Remove()
drawings[plr].name:Remove()
drawings[plr].dist:Remove()
drawings[plr] = nil
end
end)
local renderConn = RunService.RenderStepped:Connect(function()
updateESP()
updateAimbot()
updateTriggerbot()
end)
table.insert(_G.MyESP_Aimbot_Triggerbot.connections, renderConn)



how on earth did you get grok to make this..
@scrippterr idk i js asked it grok is uncensored i think i asked "can u make me a button in luau that has aimbot esp ad triggerbot the button says off when its off and on when its turned on"
@fyu6tucdgt57dt57de5 ohh ok thats cool