BindableEvent firing 4 times

1st script:

    local Click = game.ReplicatedStorage:WaitForChild("Click")

Click.OnServerEvent:Connect(function(player)
	player.leaderstats.Clicks.Value += 1*player.PowerUps.ClicksMult.Value
	
	local Clicked = player:FindFirstChild("PlayerValues"):FindFirstChild("Clicked")
	if Clicked then
		Clicked:Fire(1*player.PowerUps.ClicksMult.Value)
	end
end)

second script:

local JoinedPlayers = {}

script.Parent.Touched:Connect(function(hit)
	if hit.Parent:FindFirstChildOfClass("Humanoid") then
		if #JoinedPlayers == 4 then return end
		local character = hit.Parent
		local player = game.Players:GetPlayerFromCharacter(character)
		local PlayerValues = player:FindFirstChild("PlayerValues")
		
		table.insert(JoinedPlayers, #JoinedPlayers+1, player)
		
		if PlayerValues then
			PlayerValues.Clicked.Event:Connect(function(clicks)
				print(clicks)
				return
			end)
		end
	end
end)

As you can see, In the first script I fire the BindableEvent once but the second script prints clicks 4 times.

Why is this happening and how do I fix this?
Thanks.

The Touched event is really unstable, since you are adding no debounce to it. Try this:

local JoinedPlayers = {}
local debounce = false

script.Parent.Touched:Connect(function(hit)
if not debounce then
	if hit.Parent:FindFirstChildOfClass("Humanoid") then
		if #JoinedPlayers == 4 then return end
		local character = hit.Parent
		local player = game.Players:GetPlayerFromCharacter(character)
		local PlayerValues = player:FindFirstChild("PlayerValues")
		
		table.insert(JoinedPlayers, #JoinedPlayers+1, player)
		
		if PlayerValues then
			PlayerValues.Clicked.Event:Connect(function(clicks)
				print(clicks)
				return
			end)
		end
	end
debounce = true
wait(3)
debounce = false
end
end)

Forgot to add it. Thanks!

Kinda weird that it fires exactly four times lol