Ai sword bot
Key RequiredUniversal

Ai sword bot

Universal Scriptcj49cj49 455 views 3.2K executesUpdated Aug 9, 2026
Unrated
00
Lua Script•200 lines (3953 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer

local FOLLOW_DISTANCE = 6
local ATTACK_DISTANCE = 10
local ATTACK_DELAY = 0.18
local JUMP_MIN = 0.7
local JUMP_MAX = 1.8

local character
local humanoid
local root
local equippedTool

local attacking = false
local nextJump = 0

local function setupCharacter(char)
	character = char
	humanoid = char:WaitForChild("Humanoid")
	root = char:WaitForChild("HumanoidRootPart")
	equippedTool = nil
end

if player.Character then
	setupCharacter(player.Character)
end

player.CharacterAdded:Connect(setupCharacter)

local function isDamageTool(tool)
	if not tool:IsA("Tool") then
		return false
	end

	-- Look for common damage indicators
	if tool:FindFirstChild("Handle") then
		return true
	end

	if tool:FindFirstChildWhichIsA("RemoteEvent", true) then
		return true
	end

	return true
end

local function getClosestPlayer()
	if not root then
		return nil
	end

	local closest = nil
	local closestDistance = math.huge

	for _, target in ipairs(Players:GetPlayers()) do
		if target ~= player and target.Character then
			local targetHumanoid = target.Character:FindFirstChildOfClass("Humanoid")
			local targetRoot = target.Character:FindFirstChild("HumanoidRootPart")

			if targetHumanoid and targetRoot and targetHumanoid.Health > 0 then
				local distance = (targetRoot.Position - root.Position).Magnitude

				if distance < closestDistance then
					closestDistance = distance
					closest = target
				end
			end
		end
	end

	return closest, closestDistance
end

local function attack()
	if not equippedTool or not equippedTool.Parent then
		return
	end

	-- Uses the Tool's normal activation/damage system
	pcall(function()
		equippedTool:Activate()
	end)
end

local function equipDetectedTool(tool)
	if tool:IsA("Tool") and isDamageTool(tool) then
		equippedTool = tool
	end
end

local function checkTool(tool)
	if tool:IsA("Tool") then
		tool.Equipped:Connect(function()
			if isDamageTool(tool) then
				equippedTool = tool
			end
		end)

		tool.Unequipped:Connect(function()
			if equippedTool == tool then
				equippedTool = nil
			end
		end)

		if tool.Parent == character then
			equippedTool = tool
		end
	end
end

local function monitorTools()
	if not character then
		return
	end

	for _, tool in ipairs(character:GetChildren()) do
		checkTool(tool)
	end

	for _, tool in ipairs(player.Backpack:GetChildren()) do
		checkTool(tool)
	end
end

player.Backpack.ChildAdded:Connect(function(child)
	checkTool(child)
end)

if character then
	character.ChildAdded:Connect(function(child)
		checkTool(child)
	end)
end

monitorTools()

RunService.Heartbeat:Connect(function()
	if not character or not humanoid or not root then
		return
	end

	if humanoid.Health <= 0 then
		return
	end

	if not equippedTool or equippedTool.Parent ~= character then
		return
	end

	local target, distance = getClosestPlayer()

	if not target or not target.Character then
		return
	end

	local targetRoot = target.Character:FindFirstChild("HumanoidRootPart")
	if not targetRoot then
		return
	end

	-- Follow the closest player
	if distance > FOLLOW_DISTANCE then
		humanoid:MoveTo(targetRoot.Position)
	else
		-- Stay around the target instead of standing directly inside them
		local direction = (root.Position - targetRoot.Position)

		if direction.Magnitude < 1 then
			direction = Vector3.new(0, 0, 1)
		end

		local desiredPosition =
			targetRoot.Position + direction.Unit * FOLLOW_DISTANCE

		humanoid:MoveTo(desiredPosition)
	end

	-- Random jumping
	if os.clock() >= nextJump then
		if math.random(1, 100) <= 70 then
			humanoid.Jump = true
		end

		nextJump = os.clock() + math.random() * (JUMP_MAX - JUMP_MIN) + JUMP_MIN
	end

	-- Attack when close enough
	if distance <= ATTACK_DISTANCE and not attacking then
		attacking = true

		task.spawn(function()
			attack()
			task.wait(ATTACK_DELAY)
			attacking = false
		end)
	end
end)

Features & Information

Ai open source sword bot, equip a tool that deals dmg for it to work, not tested on pc.
#Free admin#Sword bot#Universal#Dahood#Admin

Community Comments (1)

awyyawyyOct 11, 2026

the code is mid cutted

More Scripts for Universal Scripts