tf2 bot but it doesnt send signal
Key Required

tf2 bot but it doesnt send signal

Trench Warboingboingboingboing 887 views 482 executesUpdated Feb 13, 2026
5.0/ 5(2 votes)
20100% Positive
Lua Script•209 lines (5538 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")

local player = Players.LocalPlayer
local camera = Workspace.CurrentCamera
local playerGui = player:WaitForChild("PlayerGui")

local ENABLED = false
local FOV_RADIUS = 400
local AGGRO_RADIUS = 440
local SMOOTH = 0.25
local TARGET_PART = "Head"

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

local function updateRayFilter()
	if player.Character then
		rayParams.FilterDescendantsInstances = { player.Character }
	end
end

player.CharacterAdded:Connect(updateRayFilter)
updateRayFilter()

local currentTarget = nil
local lastJump = 0
local jumpCooldown = 0.6

local function isEnemy(plr)
	if not plr.Team or not player.Team then
		return true
	end
	return plr.Team ~= player.Team
end

local function hasVision(part, character)
	local origin = camera.CFrame.Position
	local direction = (part.Position - origin)
	local result = Workspace:Raycast(origin, direction, rayParams)
	return not result or result.Instance:IsDescendantOf(character)
end

local function isValidTarget(plr)
	if not plr or not plr.Character then
		return false
	end
	if not isEnemy(plr) then
		return false
	end

	local head = plr.Character:FindFirstChild(TARGET_PART)
	local humanoid = plr.Character:FindFirstChild("Humanoid")

	if not head or not humanoid or humanoid.Health <= 0 then
		return false
	end

	local screenPos, onScreen = camera:WorldToViewportPoint(head.Position)
	if not onScreen then
		return false
	end

	local center = camera.ViewportSize / 2
	local dist2D = (Vector2.new(screenPos.X, screenPos.Y) - center).Magnitude
	if dist2D > FOV_RADIUS then
		return false
	end

	return hasVision(head, plr.Character)
end

local function getClosestTarget()
	local closest = nil
	local closestDist = math.huge

	local char = player.Character
	local root = char and char:FindFirstChild("HumanoidRootPart")
	if not root then
		return nil
	end

	for _, plr in ipairs(Players:GetPlayers()) do
		if plr ~= player and isEnemy(plr) and plr.Character then
			local hrp = plr.Character:FindFirstChild("HumanoidRootPart")
			local head = plr.Character:FindFirstChild(TARGET_PART)
			local hum = plr.Character:FindFirstChild("Humanoid")

			if hrp and head and hum and hum.Health > 0 and hasVision(head, plr.Character) then
				local dist = (hrp.Position - root.Position).Magnitude
				if dist < closestDist then
					closest = plr
					closestDist = dist
				end
			end
		end
	end

	return closest
end

local function aggressiveMove(targetHRP)
	local char = player.Character
	if not char then
		return
	end

	local humanoid = char:FindFirstChild("Humanoid")
	local root = char:FindFirstChild("HumanoidRootPart")
	if not humanoid or not root then
		return
	end

	local dir = (targetHRP.Position - root.Position)
	dir = Vector3.new(dir.X, 0, dir.Z)

	if dir.Magnitude > 0 then
		dir = dir.Unit
	end

	local strafe = root.CFrame.RightVector * math.sin(time() * 4) * 0.35
	humanoid:Move(dir + strafe, false)

	if time() - lastJump > jumpCooldown then
		humanoid.Jump = true
		lastJump = time()
	end
end

local gui = Instance.new("ScreenGui", playerGui)
gui.Name = "HeadlockGUI"
gui.ResetOnSpawn = false

local frame = Instance.new("Frame", gui)
frame.Size = UDim2.new(0, 240, 0, 140)
frame.Position = UDim2.new(0, 20, 0.5, -70)
frame.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
frame.BorderSizePixel = 0

Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 12)

local title = Instance.new("TextLabel", frame)
title.Size = UDim2.new(1, 0, 0, 40)
title.Text = "🎯 Headlock + Aggro"
title.BackgroundTransparency = 1
title.TextColor3 = Color3.new(1,1,1)
title.Font = Enum.Font.GothamBold
title.TextScaled = true

local toggle = Instance.new("TextButton", frame)
toggle.Size = UDim2.new(0.9, 0, 0, 50)
toggle.Position = UDim2.new(0.05, 0, 0, 50)
toggle.Text = "OFF"
toggle.Font = Enum.Font.GothamBold
toggle.TextScaled = true
toggle.BackgroundColor3 = Color3.fromRGB(180, 60, 60)
toggle.TextColor3 = Color3.new(1,1,1)

Instance.new("UICorner", toggle).CornerRadius = UDim.new(0, 8)

local status = Instance.new("TextLabel", frame)
status.Size = UDim2.new(1, -20, 0, 25)
status.Position = UDim2.new(0, 10, 1, -30)
status.Text = "Idle"
status.BackgroundTransparency = 1
status.TextColor3 = Color3.new(1,1,1)
status.Font = Enum.Font.Gotham
status.TextScaled = true

toggle.MouseButton1Click:Connect(function()
	ENABLED = not ENABLED
	toggle.Text = ENABLED and "ON" or "OFF"
	toggle.BackgroundColor3 = ENABLED and Color3.fromRGB(60,180,60) or Color3.fromRGB(180,60,60)
	currentTarget = nil
end)

RunService.RenderStepped:Connect(function()
	updateRayFilter()

	if not ENABLED then
		status.Text = "Idle"
		return
	end

	currentTarget = getClosestTarget()

	if currentTarget and currentTarget.Character then
		local head = currentTarget.Character:FindFirstChild(TARGET_PART)
		local hrp = currentTarget.Character:FindFirstChild("HumanoidRootPart")

		if head and hrp then
			status.Text = "Locked: " .. currentTarget.Name

			local camCF = CFrame.lookAt(camera.CFrame.Position, head.Position)
			camera.CFrame = camera.CFrame:Lerp(camCF, SMOOTH)

			local myHRP = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
			if myHRP and (hrp.Position - myHRP.Position).Magnitude <= AGGRO_RADIUS then
				aggressiveMove(hrp)
			end
		end
	else
		status.Text = "Searching..."
	end
end)

print("FULL SYSTEM LOADED")

Features & Information

just turn it on, play and spam click

Community Comments (1)

NPCNOkNPCNOkFeb 13, 2026

nice script

More Scripts for Trench War