I'm trying to make a fighting game where a 2 players is teleported after a certain amount of seconds. The teleporting works but the only problem is that the two players that join at different times would have a whole new timer. For example say Player one join the game and starts the time. Ten seconds later Player two joins. Instead of his timer starting at 20 his would restart and start and start and 30. This messes up the whole system and I don't know how to fix it.

Attempts

I've tried many attempts though the one you see in this script works like this. What I tried doing was making a IntVariable inside of replicated storage and set it to 30. Once I did that I told the server keep removing 1 every 1 second until it reached 0 and begun the teleportation. This would make other people cling to that same variable that i made until it has reached 0 on his client too. Though it didn't work. If you can help me that would be very appreciated. Thanks

Local Script

wait(1)
local NumbPlayers = #game.Players:GetPlayers()
local IntGui = script.Parent
local Camera = workspace.CurrentCamera
local NotEP = false
local BattleInt = game.ReplicatedStorage.IntermissionInts.BattleInt.Value
local IntermissionInt = game.ReplicatedStorage.IntermissionInts.InterInt.Value
local Player = game.Players.LocalPlayer
local PlayerGui = Player.PlayerGui
local LobbyMusic = game.ReplicatedStorage.Sounds.LobbyMusic:Clone()



LobbyMusic.Parent = PlayerGui
LobbyMusic:Play()



local function IntermissionIntS()
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	wait(1)
	IntGui.IntText.Text = (IntermissionInt)
	
end

local function GameEnd()
	IntGui.IntText.Text = ("Game End in(10)")
	wait(1)
	IntGui.IntText.Text = ("Game End in(9)")
	wait(1)
	IntGui.IntText.Text = ("Game End in(8)")
	wait(1)
	IntGui.IntText.Text = ("Game End in(7)")
	wait(1)
	IntGui.IntText.Text = ("Game End in(6)")
	wait(1)
	IntGui.IntText.Text = ("Game End in(5)")
	wait(1)
	IntGui.IntText.Text = ("Game End in(4)")
	wait(1)
	IntGui.IntText.Text = ("Game End in(3)")
	wait(1)
	IntGui.IntText.Text = ("Game End in(2)")
	wait(1)
	IntGui.IntText.Text = ("Game End in(1)")
	wait(1)
	IntGui.IntText.Text = ("Game End in(0)")
end

if NumbPlayers == 5 then
	IntGui.IntText.Text = "Not Enough Players: Must be more than 1"
end

for i = 1,math.huge do
if NumbPlayers >= 1 then
	game.ReplicatedStorage.Events.TeleEvent2:FireServer()
	IntermissionIntS()
	print("workingss")
		print("nanssik")
	IntGui.IntText.TextColor3 = Color3.new(0,0,0)
local randomPlayer1 = game.Players:GetPlayers()[math.random(1,#game.Players:GetPlayers())]
local randomPlayer2 = game.Players:GetPlayers()[math.random(1,#game.Players:GetPlayers())]
if randomPlayer2 == randomPlayer1 then
	randomPlayer2 = game.Players:GetPlayers()[math.random(1,#game.Players:GetPlayers())]
end


game.ReplicatedStorage.Events.TeleEvent:FireServer(randomPlayer1,randomPlayer2)
	Camera.CameraType = Enum.CameraType.Scriptable
	PlayerGui:FindFirstChild("LobbyMusic"):Destroy()
	local SpectateMusic = game.ReplicatedStorage.Sounds.SpectateMusic:Clone()
	SpectateMusic.Parent = PlayerGui
	SpectateMusic:Play()
for Num = 0,1,.01 do
		print("Lerping")
	Camera.CFrame = Camera.CFrame:lerp(game.Workspace:WaitForChild("CameraPart2").CFrame,Num)
	game:GetService("RunService").RenderStepped:Wait()
end
wait(2)
for Num = 0,1,.01 do
		print("Lerping2")
	Camera.CFrame = game.Workspace.CameraPart2.CFrame:lerp(game.Workspace:WaitForChild("CameraPart1").CFrame,Num)
	game:GetService("RunService").RenderStepped:Wait()
end
wait(2)
for Num = 0,1,.01 do
		print("Lerping2")
	Camera.CFrame = game.Workspace.CameraPart1.CFrame:lerp(game.Workspace:WaitForChild("CameraPart").CFrame,Num)
	game:GetService("RunService").RenderStepped:Wait()
end
wait(0.5)
GameEnd()
PlayerGui:FindFirstChild("SpectateMusic"):Destroy()
local LobbyMusic2 = game.ReplicatedStorage.Sounds.LobbyMusic:Clone()
LobbyMusic2.Parent = PlayerGui
LobbyMusic2:Play()
Camera.CameraType = Enum.CameraType.Custom
wait(5)
end
end

Server Script

local BattleInt = game.ReplicatedStorage.IntermissionInts.BattleInt.Value
local IntermissionInt = game.ReplicatedStorage.IntermissionInts.InterInt.Value





game.ReplicatedStorage.Events.TeleEvent2.OnServerEvent:Connect(function(Player)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	wait(1)
	IntermissionInt = IntermissionInt - 1
	print(IntermissionInt)
	IntermissionInt = 30
	
end)






game.ReplicatedStorage.Events.TeleEvent.OnServerEvent:Connect(function(Player,randomPlayer1,randomPlayer2)
	print("Sent")
	
	if Player == randomPlayer1 then
		--Humanoid Stattistics
		local RPC1 = Player.Character
		local RPC1R = RPC1.HumanoidRootPart
		local PlayerGui = randomPlayer1.PlayerGui
		
		RPC1.Animate.idle.Animation1.AnimationId = "rbxassetid://4291924978"
		RPC1.Animate.idle.Animation2.AnimationId = "rbxassetid://4291924978"
		    RPC1.Humanoid.WalkSpeed = 0
		RPC1.Humanoid.JumpPower = 0
		RPC1.Humanoid.AutoRotate = false
		--Gyroing--
			RPC1.Torso.CFrame = game.Workspace.PlayerFace2.CFrame
			local thing = Instance.new("BodyGyro",RPC1.HumanoidRootPart)
        thing.D = 350
        thing.P = 25000
		thing.MaxTorque = Vector3.new(500000,500000,500000)
		spawn(function()
			wait(7)
		print("Done Waiting")
		RPC1.Humanoid.WalkSpeed = 16
		RPC1.Humanoid.JumpPower = 50
		RPC1.Humanoid.AutoRotate = false
		wait(13)
		print("Worked")
		RPC1.Humanoid.AutoRotate = true
		RPC1.Humanoid.Health = RPC1.Humanoid.Health + 1000
		RPC1.Torso.CFrame = game.Workspace.TelePadDone2.CFrame
		thing:Destroy()
		RPC1.Animate.idle.Animation1.AnimationId = "http://www.roblox.com/asset/?id=180435571"
		RPC1.Animate.idle.Animation2.AnimationId = "http://www.roblox.com/asset/?id=180435792"
		end)
		while wait() do
		thing.CFrame = CFrame.new(RPC1R.Position,game.Workspace.PlayerFace2.z.Position)
		end
	end
	
	
	if Player == randomPlayer2 then
		--Humanoid Stastics
		local RPC2 = Player.Character
		print(randomPlayer1)
		print(randomPlayer2)
		RPC2.Animate.idle.Animation1.AnimationId = "rbxassetid://4291924978"
		RPC2.Animate.idle.Animation2.AnimationId = "rbxassetid://4291924978"
				local RPC2R = RPC2.HumanoidRootPart
		 RPC2.Humanoid.WalkSpeed = 0
		RPC2.Humanoid.JumpPower = 0
		RPC2.Humanoid.AutoRotate = false
		RPC2.Torso.CFrame = game.Workspace.PlayerFace1.CFrame
		  -----Gyroing--
			local thing = Instance.new("BodyGyro",RPC2.HumanoidRootPart)
        thing.D = 350
        thing.P = 25000
		thing.MaxTorque = Vector3.new(500000,500000,500000)
		spawn(function()
			wait(7)
		print("Done Waiting")
		RPC2.Humanoid.WalkSpeed = 16
		RPC2.Humanoid.JumpPower = 50
		RPC2.Humanoid.AutoRotate = false
		wait(13)
		print("Worked")
		RPC2.Humanoid.AutoRotate = true
		RPC2.Humanoid.Health = RPC2.Humanoid.Health + 1000
		RPC2.Torso.CFrame = game.Workspace.TelePadDone1.CFrame
		thing:Destroy()
		RPC2.Animate.idle.Animation1.AnimationId = "http://www.roblox.com/asset/?id=180435571"
		RPC2.Animate.idle.Animation2.AnimationId = "http://www.roblox.com/asset/?id=180435792"
		end)
		
		
		while wait() do
		thing.CFrame = CFrame.new(RPC2R.Position,game.Workspace.PlayerFace2.z.Position)
		end
	end
	
	end)

Regards, Bl_ueHistory