How to make a event run only once in a loop

Use a debounce like this one here:

local Zone = require(game.ReplicatedStorage.Zone)
local container = game.Workspace.Container
local zone2 = Zone.new(container)
local Event = game.ReplicatedStorage.Events.RemoteEvent
local gs = workspace.gamestatus
-- Debounce set to false here
local scriptHasRun = false

while true do
	local playersArray = zone2:getPlayers()
	if #playersArray == 1 and scriptHasRun == false then
		gs.Value = 1
		if gs.Value == 1 then
			Event:FireServer()
			gs.Value = 0
			scriptHasRun = true
			print(gs.Value)
		else
			print("!!!!!!!!")
		end
	end
	wait(0.1)
end

1 Like