aimbot esp and trigerbot made by grok ai
Key RequiredUniversal

aimbot esp and trigerbot made by grok ai

Universal Scriptfyu6tucdgt57dt57de5fyu6tucdgt57dt57de5 703 views 152 executesUpdated Mar 25, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•298 lines (8679 chars)
-- 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)

Features & Information

aimbot triggerbot esp

Community Comments (3)

scrippterrscrippterrMar 25, 2026

how on earth did you get grok to make this..

Replying to @scrippterr

@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"

Replying to @fyu6tucdgt57dt57de5
scrippterrscrippterrMar 25, 2026

@fyu6tucdgt57dt57de5 ohh ok thats cool

More Scripts for Universal Scripts