More efficient way to see if a player has a tool equipped?

Currently I am using this script to use a 3rd person toggled camera strafing module when a tool is equipped. Each tool must have this script in it. Is there a more efficient way to use one script in serverscript service? or starter characters that would do this same script if any tool in the game is equipped? Like a master command to check if a player is using a tool?

local rs = game:GetService("ReplicatedStorage")
local module = rs:WaitForChild("StrafingController")
local controller = require(module)


script.Parent.Equipped:Connect(function()
	controller:SetEnabled(true)
end)

script.Parent.Unequipped:Connect(function()
	controller:SetEnabled(false)
end)

Thank you.

Try this:
Make a serverscript on serverscriptservice.

game:GetService("Players").OnPlayerAdded:Connect(function(plr)
   plr.OnCharacterAdded:Connect(function(char)
      while task.wait() do
         if char:FindFirstChildWhichIsA("Tool") then
            --Do smth.
         else
            --else
         end
      end
   end)
end)

I will try this right now. I found another issue. If I die with the tool out and the camera locked, the camera stays locked to the death location and a new tool of the same kind cannot be used.

I wouldn’t advise a while true do loop/run service event loop, especially considering existing RBXScriptSignals can be used instead.

Tool.Equipped:Connect(function()
	--Do code.
end)

Character.ChildAdded:Connect(function(Child)
	if Child:IsA("Tool") then
		--Do code.
	end
end)