aim bot
Key RequiredUniversal

aim bot

Universal Scriptbenjaminthhansen073benjaminthhansen073 1.3K views 831 executesUpdated Jan 19, 2026
Unrated
00
Lua Script•301 lines (9170 chars)
-- CODE 4141
-- AIM + ESP + TRACERS + SPEED + ANTI HIT (STABLE MENU)

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

-- ================= STATES =================
local AimOn = false
local ESPOn = false
local TracerOn = false
local SpeedOn = false
local AntiHitOn = false

local WalkSpeedValue = 16
local FOVRadius = 120
local Smoothness = 0.2
local MaxDistance = 300
local MAX_ESP_DISTANCE = 2000

-- Anti Hit settings
local AntiHitDistance = 4
local AntiHitDelay = 0.5
local lastAntiHit = 0
local antiDir = 1

-- ================= GUI =================
local gui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui"))
gui.ResetOnSpawn = false

local frame = Instance.new("Frame", gui)
frame.Size = UDim2.new(0, 260, 0, 340)
frame.Position = UDim2.new(1, -270, 0, 10)
frame.BackgroundColor3 = Color3.fromRGB(28,28,28)
frame.BorderSizePixel = 0
Instance.new("UICorner", frame)

local header = Instance.new("TextLabel", frame)
header.Size = UDim2.new(1,0,0,28)
header.Text = "DEV MENU 4141"
header.TextColor3 = Color3.new(1,1,1)
header.BackgroundColor3 = Color3.fromRGB(40,40,40)
header.BorderSizePixel = 0
header.TextScaled = true
Instance.new("UICorner", header)

local function button(text, y)
	local b = Instance.new("TextButton", frame)
	b.Size = UDim2.new(1,-20,0,30)
	b.Position = UDim2.new(0,10,0,y)
	b.Text = text
	b.TextColor3 = Color3.new(1,1,1)
	b.BackgroundColor3 = Color3.fromRGB(65,65,65)
	b.BorderSizePixel = 0
	Instance.new("UICorner", b)
	return b
end

local aimBtn     = button("AIM: OFF", 40)
local espBtn     = button("ESP: OFF", 80)
local tracerBtn  = button("TRACERS: OFF", 120)
local speedBtn   = button("SPEED: OFF", 160)
local antihitBtn = button("ANTI HIT: OFF", 200)

-- ================= SPEED SLIDER =================
local speedLabel = Instance.new("TextLabel", frame)
speedLabel.Size = UDim2.new(1,-20,0,18)
speedLabel.Position = UDim2.new(0,10,0,240)
speedLabel.Text = "Speed: 16"
speedLabel.TextColor3 = Color3.new(1,1,1)
speedLabel.BackgroundTransparency = 1
speedLabel.TextScaled = true

local speedSlider = Instance.new("Frame", frame)
speedSlider.Size = UDim2.new(1,-20,0,16)
speedSlider.Position = UDim2.new(0,10,0,265)
speedSlider.BackgroundColor3 = Color3.fromRGB(55,55,55)
speedSlider.BorderSizePixel = 0
Instance.new("UICorner", speedSlider)

local speedBar = Instance.new("Frame", speedSlider)
speedBar.Size = UDim2.new(0.25,0,1,0)
speedBar.BackgroundColor3 = Color3.fromRGB(0,170,255)
speedBar.BorderSizePixel = 0
Instance.new("UICorner", speedBar)

-- ================= FOV CIRCLE =================
local fov = Instance.new("Frame", gui)
fov.AnchorPoint = Vector2.new(0.5,0.5)
fov.BackgroundTransparency = 1
fov.Size = UDim2.new(0, FOVRadius*2, 0, FOVRadius*2)
fov.Visible = false

local stroke = Instance.new("UIStroke", fov)
stroke.Thickness = 2
stroke.Color = Color3.fromRGB(0,170,255)
Instance.new("UICorner", fov).CornerRadius = UDim.new(1,0)

-- ================= BUTTON LOGIC =================
aimBtn.MouseButton1Click:Connect(function()
	AimOn = not AimOn
	aimBtn.Text = AimOn and "AIM: ON" or "AIM: OFF"
	fov.Visible = AimOn
end)

espBtn.MouseButton1Click:Connect(function()
	ESPOn = not ESPOn
	espBtn.Text = ESPOn and "ESP: ON" or "ESP: OFF"
end)

tracerBtn.MouseButton1Click:Connect(function()
	TracerOn = not TracerOn
	tracerBtn.Text = TracerOn and "TRACERS: ON" or "TRACERS: OFF"
end)

speedBtn.MouseButton1Click:Connect(function()
	SpeedOn = not SpeedOn
	speedBtn.Text = SpeedOn and "SPEED: ON" or "SPEED: OFF"
end)

antihitBtn.MouseButton1Click:Connect(function()
	AntiHitOn = not AntiHitOn
	antihitBtn.Text = AntiHitOn and "ANTI HIT: ON" or "ANTI HIT: OFF"
end)

-- ================= SPEED SLIDER =================
local draggingSpeed = false
speedSlider.InputBegan:Connect(function(i)
	if i.UserInputType == Enum.UserInputType.MouseButton1 then draggingSpeed = true end
end)
UserInputService.InputEnded:Connect(function(i)
	if i.UserInputType == Enum.UserInputType.MouseButton1 then draggingSpeed = false end
end)
UserInputService.InputChanged:Connect(function(i)
	if draggingSpeed and i.UserInputType == Enum.UserInputType.MouseMovement then
		local p = math.clamp((i.Position.X - speedSlider.AbsolutePosition.X) / speedSlider.AbsoluteSize.X,0,1)
		speedBar.Size = UDim2.new(p,0,1,0)
		WalkSpeedValue = math.floor(8 + p * 60)
		speedLabel.Text = "Speed: "..WalkSpeedValue
	end
end)

-- ================= ESP STORAGE =================
local espCache = {}

local function clearESP(plr)
	if espCache[plr] then
		for _,v in pairs(espCache[plr]) do
			v:Destroy()
		end
		espCache[plr] = nil
	end
end

local function createESP(plr)
	if plr == player or espCache[plr] or not plr.Character then return end
	local hrp = plr.Character:FindFirstChild("HumanoidRootPart")
	if not hrp then return end

	local box = Instance.new("BoxHandleAdornment")
	box.Adornee = plr.Character
	box.Size = Vector3.new(4,6,4)
	box.AlwaysOnTop = true
	box.ZIndex = 10
	box.Transparency = 0.45
	box.Color3 = Color3.fromRGB(255,80,80)
	box.Parent = plr.Character

	local bb = Instance.new("BillboardGui", plr.Character)
	bb.Adornee = hrp
	bb.Size = UDim2.new(0,200,0,40)
	bb.StudsOffset = Vector3.new(0,3.5,0)
	bb.AlwaysOnTop = true

	local label = Instance.new("TextLabel", bb)
	label.Size = UDim2.new(1,0,1,0)
	label.BackgroundTransparency = 1
	label.TextColor3 = Color3.new(1,1,1)
	label.TextStrokeTransparency = 0
	label.TextScaled = true
	label.Font = Enum.Font.GothamBold

	local tracer = Instance.new("Frame", gui)
	tracer.BackgroundColor3 = Color3.new(1,1,1)
	tracer.BorderSizePixel = 0
	tracer.AnchorPoint = Vector2.new(0,0.5)

	espCache[plr] = {box=box, billboard=bb, label=label, tracer=tracer}
end

-- ================= AIM =================
local rayParams = RaycastParams.new()
rayParams.FilterType = Enum.RaycastFilterType.Blacklist

local function inFOV(pos)
	local v, onScreen = camera:WorldToViewportPoint(pos)
	if not onScreen then return false end
	local center = Vector2.new(camera.ViewportSize.X/2, camera.ViewportSize.Y/2)
	return (Vector2.new(v.X,v.Y) - center).Magnitude <= FOVRadius
end

local function getTarget()
	local best, closest = nil, MaxDistance
	for _,p in pairs(Players:GetPlayers()) do
		if p ~= player and p.Character then
			local hum = p.Character:FindFirstChildOfClass("Humanoid")
			local head = p.Character:FindFirstChild("Head")
			if hum and hum.Health > 0 and head and inFOV(head.Position) then
				local d = (camera.CFrame.Position - head.Position).Magnitude
				if d < closest then
					rayParams.FilterDescendantsInstances = {player.Character}
					local ray = workspace:Raycast(camera.CFrame.Position, head.Position - camera.CFrame.Position, rayParams)
					if ray and ray.Instance:IsDescendantOf(p.Character) then
						closest = d
						best = head
					end
				end
			end
		end
	end
	return best
end

-- ================= MAIN LOOP =================
RunService.RenderStepped:Connect(function()
	-- FOV CENTER
	fov.Position = UDim2.fromOffset(camera.ViewportSize.X/2, camera.ViewportSize.Y/2)

	-- SPEED
	local hum = player.Character and player.Character:FindFirstChildOfClass("Humanoid")
	if hum then hum.WalkSpeed = SpeedOn and WalkSpeedValue or 16 end

	-- ANTI HIT (SIDE TO SIDE TP)
	if AntiHitOn then
		local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
		if hrp and tick() - lastAntiHit >= AntiHitDelay then
			lastAntiHit = tick()

			local rightVector = camera.CFrame.RightVector
			local offset = rightVector * AntiHitDistance * antiDir
			hrp.CFrame = hrp.CFrame + offset
			antiDir = -antiDir
		end
	end

	-- AIM
	if AimOn then
		local target = getTarget()
		if target then
			camera.CFrame = camera.CFrame:Lerp(
				CFrame.new(camera.CFrame.Position, target.Position),
				Smoothness
			)
		end
	end

	-- ESP + TRACERS
	local bottomCenter = Vector2.new(camera.ViewportSize.X/2, camera.ViewportSize.Y)
	for _,p in pairs(Players:GetPlayers()) do
		if p ~= player and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then
			createESP(p)
			local esp = espCache[p]
			local hrp = p.Character.HumanoidRootPart
			local dist = (camera.CFrame.Position - hrp.Position).Magnitude
			if dist > MAX_ESP_DISTANCE then clearESP(p) continue end

			-- ESP
			if ESPOn then
				esp.box.Visible = true
				esp.billboard.Enabled = true
				esp.label.Text = p.Name.." ["..math.floor(dist).."m]"
			else
				esp.box.Visible = false
				esp.billboard.Enabled = false
			end

			-- TRACERS
			if TracerOn then
				local pos, onScreen = camera:WorldToViewportPoint(hrp.Position)
				if onScreen then
					local dir = Vector2.new(pos.X,pos.Y) - bottomCenter
					esp.tracer.Position = UDim2.fromOffset(bottomCenter.X, bottomCenter.Y)
					esp.tracer.Size = UDim2.new(0, dir.Magnitude, 0, 2)
					esp.tracer.Rotation = math.deg(math.atan2(dir.Y, dir.X))
					esp.tracer.Visible = true
				else
					esp.tracer.Visible = false
				end
			else
				esp.tracer.Visible = false
			end
		else
			clearESP(p)
		end
	end
end)

Players.PlayerRemoving:Connect(clearESP)

Features & Information

best aim bot esp speed Anti-hit all games

Community Comments (1)

Anonimo54154Anonimo54154Feb 3, 2026

Esta del ano

More Scripts for Universal Scripts