Roblox Script Add-on Help

local LobbySeconds = 15

local GameMinutes = 4
local GameSeconds = 0

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TimerValues = ReplicatedStorage:WaitForChild("TimerValues")
local gameTimer = TimerValues.GameTimer
local lobbyTimer = TimerValues.LobbyTimer

local TweenService = game:GetService("TweenService")
local FadeInfo = TweenInfo.new(1.3,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false,0)

function teleportPlayers(RP,SpawnPart)
	if RP ~= nil then
		if SpawnPart ~= nil then
			RP.CFrame = SpawnPart.CFrame
		end
	end
end

while true do
	lobbyTimer.Minutes.Value = LobbyMinutes
	lobbyTimer.Seconds.Value = LobbySeconds

	repeat wait(1)
		if lobbyTimer.Seconds.Value > 0 then
			lobbyTimer.Seconds.Value -= 1
		else
			if lobbyTimer.Minutes.Value > 0 then
				lobbyTimer.Minutes.Value -= 1
				lobbyTimer.Seconds.Value = 59
			end
		end
	until lobbyTimer.Minutes.Value == 0 and lobbyTimer.Seconds.Value == 0

	local mapHolder = game:GetService("ServerStorage").MapHolder
	local Children = mapHolder:GetChildren()
	local Index = math.random(1,#Children)
	local randomInt = Children[Index]

	local finalMap = mapHolder:FindFirstChild(randomInt.Name):Clone()   
	finalMap.Parent = workspace

	for _, LocalPlayer in pairs(game:GetService("Players"):GetChildren()) do
		if LocalPlayer.Character then
			if LocalPlayer:FindFirstChild('PlayerGui') and LocalPlayer.Character:FindFirstChild('HumanoidRootPart') then
				local GUI = Instance.new("ScreenGui")
				GUI.Name = "Fade"
				GUI.Parent = LocalPlayer.PlayerGui
				GUI.ResetOnSpawn = false
				GUI.IgnoreGuiInset = true
				GUI.Enabled = true

				local NewValue = Instance.new("BoolValue")
				NewValue.Name = "Ingame"
				NewValue.Parent = LocalPlayer.Character
				NewValue.Value = false

				local Frame = Instance.new("Frame")
				Frame.Parent = GUI 
				Frame.BackgroundTransparency = 1
				Frame.BackgroundColor3 = Color3.fromRGB(0,0,0)
				Frame.Visible = true
				Frame.Size = UDim2.new(1,0,1,0)
				Frame.Position = UDim2.new(0,0,0,0)

				local TweenIn = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 0})
				TweenIn:Play()

				TweenIn.Completed:Connect(function()
					teleportPlayers(LocalPlayer.Character.HumanoidRootPart,finalMap:FindFirstChild('SpawnPart'))
					wait(2)
					local TweenOut = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 1})
					TweenOut:Play()

					TweenOut.Completed:Connect(function()
						GUI:Destroy()
					end)
				end)
			end
		end
	end

	wait(1.6 + 2)

	gameTimer.Minutes.Value = GameMinutes
	gameTimer.Seconds.Value = GameSeconds

	repeat wait(1)
		if gameTimer.Seconds.Value > 0 then
			gameTimer.Seconds.Value -= 1
		else
			if gameTimer.Minutes.Value > 0 then
				gameTimer.Minutes.Value -= 1
				gameTimer.Seconds.Value = 59
			end
		end
	until gameTimer.Minutes.Value == 0 and gameTimer.Seconds.Value == 0

	for _, LocalPlayer in pairs(game:GetService("Players"):GetChildren()) do
		if LocalPlayer.Character then
			if LocalPlayer:FindFirstChild('PlayerGui') and LocalPlayer.Character:FindFirstChild('Ingame') then
				local GUI = Instance.new("ScreenGui")
				GUI.Name = "Fade"
				GUI.Parent = LocalPlayer.PlayerGui
				GUI.ResetOnSpawn = false
				GUI.IgnoreGuiInset = true
				GUI.Enabled = true

				local Frame = Instance.new("Frame")
				Frame.Parent = GUI 
				Frame.BackgroundTransparency = 1
				Frame.BackgroundColor3 = Color3.fromRGB(0,0,0)
				Frame.Visible = true
				Frame.Size = UDim2.new(1,0,1,0)
				Frame.Position = UDim2.new(0,0,0,0)

				local TweenIn = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 0})
				TweenIn:Play()

				TweenIn.Completed:Connect(function()
					LocalPlayer:LoadCharacter()
					wait(2)
					local TweenOut = TweenService:Create(Frame,FadeInfo,{BackgroundTransparency = 1})
					TweenOut:Play()

					TweenOut.Completed:Connect(function()
						GUI:Destroy()
					end)
				end)
			end
		end
	end

	wait(1.6)
	finalMap:Destroy()
	wait(2)
end
local TimerValues = ReplicatedStorage:WaitForChild("TimerValues")
local gameTimer = TimerValues.GameTimer
local lobbyTimer = TimerValues.LobbyTimer

function updateGameTimer()
	local MinutesString = "00"
	local SecondsString = "00"

	if gameTimer.Minutes.Value < 10 then
		MinutesString = "0" .. gameTimer.Minutes.Value
	else
		MinutesString = gameTimer.Minutes.Value
	end

	if gameTimer.Seconds.Value < 10 then
		SecondsString = "0" .. gameTimer.Seconds.Value
	else
		SecondsString = gameTimer.Seconds.Value
	end

	script.Parent.Text = MinutesString .. ":" .. SecondsString
end

function updateLobbyTimer()
	local MinutesString = "00"
	local SecondsString = "00"

	if lobbyTimer.Minutes.Value < 10 then
		MinutesString = "0" .. lobbyTimer.Minutes.Value
	else
		MinutesString = lobbyTimer.Minutes.Value
	end

	if lobbyTimer.Seconds.Value < 10 then
		SecondsString = "0" .. lobbyTimer.Seconds.Value
	else
		SecondsString = lobbyTimer.Seconds.Value
	end

	script.Parent.Text = MinutesString .. ":" .. SecondsString
end

for _, v in pairs(gameTimer:GetChildren()) do
	v:GetPropertyChangedSignal('Value'):Connect(function()
		updateGameTimer()
	end)
end

for _, v in pairs(lobbyTimer:GetChildren()) do
	v:GetPropertyChangedSignal('Value'):Connect(function()
		updateLobbyTimer()
	end)
end

those were both of my scripts, if you would like additional information just ask :smiley:

forgot to add that i am trying to end the round then restart the map choosing process once every player has died

why did you put second and minutes separately?

could you explain a little more on what you mean?

local GameMinutes = 4
local GameSeconds = 0

You can just set it to 240 seconds, unless you’re doing something with them.

yeah i guess your right it would be simpler