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
