RemoteEvent firing once, but being picked up twice on client

Server side

print('Sending from server') -- prints once
DisplayVictory:FireAllClients(Settings.TEAMS, winner)

Client side

local function ShowVictory(teams, winner)
    print('Victory sent') -- prints twice
	EndGame.Visible = true
	Menu.Visible = false


	EndGame.Visible = false
	Menu.Visible = true


Note, the client is inside a GUI. The GUI is not stored in StarterGui, but in StarterPlayer, as I don’t load the character in from the start. Thus I have to manually parent the GUI to the player.

local HUD = script:WaitForChild('HUD')

local HUDClone = HUD:Clone()

HUDClone.Parent = PlayerGui

	local OriginalHUD = PlayerGui:FindFirstChild('HUD')
	if OriginalHUD then

	HUDClone = HUD:Clone()
	HUDClone.Parent = PlayerGui

GUI is also set to ResetOnSpawn false

The problem is you are Cloning the GUI! So the original script will run inside of StarterPlayer AND inside PlayerGui. For every time the HUD is cloned, a new connection is added.

So how can I fix it???

Simply stop Cloning the HUD over and over. Why do you need to keep cloning it? Once placed in PlayerGui it will be there forever unless you destroy it.