I made this script so that I can lock all players in the server from using a certain gui. It can only be activated by players with a numbervalue (defined as "Rank") that has a value of 999 (developers). It works, but it can't be undone unless you keep the gui up because literally everyoen loses the abiltity to open the gui. I want to make an exception for players whose stored numbervalue ("Rank") is 999 so that their gui doesn't disappear. Any help is welcome :)

Here is the script (It is a server script):

local AlreadyActive = false

function activate()
	local player = script.Parent.Parent.Parent.Parent.Parent.Parent
	local Rank = player:WaitForChild('Rank')
	if player.Rank.Value == 999 and AlreadyActive == false then -- This checks that the person running the command has a rank of 999.
		AlreadyActive = true
		local gamers = game.Players:GetChildren() -- This is the table that adds all the players
		for i, v in pairs(gamers) do
			v.PlayerGui.trollGui.Open.Visible = false
		end
		game.StarterGui.trollGui.Open.Visible = false
	elseif player.Rank.Value == 999 and AlreadyActive == true then
		AlreadyActive = false
		local sadgamers = game.Players:GetChildren()
		for i, v in pairs(sadgamers) do
			v.PlayerGui.trollGui.Open.Visible = true
		end
		game.StarterGui.trollGui.Open.Visible = true
	end
end

script.Parent.MouseButton1Click:Connect(activate)