heres the setup for my Sword Script

local tool = script.Parent

local damage = 20
local speedboost = 1.25
local swingtime = 1
local handle = tool:WaitForChild("Handle")
local event = tool:WaitForChild("RemoteEvent")
local SlashSound = handle:WaitForChild("SlashSound")
local OverheadSound = handle:WaitForChild("OverheadSound")
local LungeSound = handle:WaitForChild("LungeSound")
local lastclick = tick()
local combowindow = .5
local combo = 0

handle.Touched:connect(function()
	if equipped and character and humanoid and humanoid.Health > 0 and hit and not hit:isDecendentOf(character) then
		local targethumanoid = hit.Parent:FindFirstChild("Humanoid")
		if targethumanoid and targethumanoid.Health > 0 and not hithumanoids[targethumanoid] then
			hithumanoids[targethumanoid] = true
			targethumanoid:TakeDamage(damage * combo)
		end
	end
end)

tool.Activated:connect(function()
	local clickdelta = tick() - lastclick
	if lastclick > swingtime then
	   lastclick = tick()
	   combo = 0
	   hithumanoids = {}
	if clickdelta < swingtime + combowindow then
		combo = (combo + 1) % 3
	else
		combo = 0
	end
	   if player then
		if combo == 0 then
			event:FireClient(player, "RunAnimation", "SlashAnim2")
			SlashSound:Play()
		elseif combo == 1 then
			event:FireClient(player, "RunAnimation", "ThrustAnim2")
			OverheadSound:Play()
		elseif combo == 2 then
			event:FireClient(player, "RunAnimation", "OverheadAnim2")
			LungeSound:PLay()
		end
	end
	end
end)

tool.Equipped:connect(function()
	equipped = true
	lastclick = tick()
	character = tool.Parent
	player = game.Players:GetPlayerFromCharacter(character)
	humanoid = character:FindFirstChild("Humanoid")
	if humanoid then
		humanoid.WalkSpeed =  humanoid.WalkSpeed * speedboost
	else
		character = nil
	end
end)

tool.Unequipped:connect(function()
	equipped = false
	if humanoid then
		humanoid.WalkSpeed = humanoid.WalkSpeed / speedboost
	end
	character = nil
	humanoid = nil
end)

here is my local script setup

local tool = script.Parent



local event = tool:WaitForChild("RemoteEvent")

event.OnClientEvent:connect(function(...)
	local tuple = (...)
	if tuple[1] == "RunAnimation" then
		local anim = tool:FindFirstChild(tuple[2])
		if anim and humanoid then
			local loadedanim = humanoid:LoadAnimation(anim)
			if loadedanim then
				loadedanim:Play()
				if themouse then
					themouse.Icon = "rbxasset://tetures\\GunWaitCursor.png"
					wait(1)
					themouse.Icon = "rbxasset://tetures\\GunCursor.png"
				end
			end
		end
	end
end)



tool.Equipped:connect(function(mouse)
	themouse = mouse
	humanoid = tool.Parent:FindFirstChild("Humanoid")
	if humanoid then
		local anim = tool:FindFirstChild("IdleAnim3")
		if anim and humanoid then
			if loadedidleanim then
				loadedidleanim:Stop()
			end
			local loadedidleanim = humanoid:LoadAnimation(anim)
			if loadedidleanim then
				loadedidleanim:Play()
			end
		end
		local anim = tool:FindFirstChild("EquipAnim")
		if anim and humanoid then
			local loadedanim = humanoid:LoadedAnimation(anim)
			if loadedanim then
				loadedanim:Play()
			end
		end
	end
	if themouse then
		themouse.Icon = "rbxasset://tetures\\GunCursor.png"
	end
end)

tool.Unequipped:connect(function()
	if loadedidleanim then
	loadedidleanim:Stop()
	end
end)