Ok, so I have a round system, but I need a better way to get the player. Right now, it looks like this:
game.Players.PlayerAdded:Connect(function(player)
-- whatever
end)
but I’m going to take a guess that if i put my round function it, the round is going to fire everytime a player joins which may interrupting to other players that were playing before. How can I fix this?
if you MUST, here is the full code:
game.Players.RespawnTime = math.huge
local ts = game:GetService("TweenService")
local ti = TweenInfo.new(
1.5,
Enum.EasingStyle.Linear,
Enum.EasingDirection.Out,
0,
false,
0
)
local waitTime = 4.5
local extraTime = 2.5
local price = 365
game.ReplicatedStorage.BuyMoreTime.OnServerEvent:Connect(function(player)
if player.leaderstats.Coins.Value >= price then
player.leaderstats.Coins.Value -= price
waitTime += extraTime
game.ReplicatedStorage.DisplayTimer:FireClient(player)
task.wait(150)
waitTime -= extraTime
end
end)
game.Players.PlayerAdded:Connect(function(player)
if player.MembershipType == Enum.MembershipType.Premium then
waitTime += 1
end
local function round()
task.wait(3.5)
local random = math.random(1, 4)
if random == 1 then
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.Text = "Red"
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.TextColor3 = Color3.fromRGB(255, 0, 0)
local t = ts:Create(player.PlayerGui:WaitForChild("ScreenGui").ReadyUp, ti, {TextTransparency = 1})
t:Play()
t.Completed:Connect(function()
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.Visible = false
end)
task.wait(waitTime)
for i, v in pairs(workspace.Map:GetChildren()) do
if v.Name ~= player.PlayerGui.ScreenGui.ReadyUp.Text and v:IsA("Part") then
v.Transparency = 0.7
v.CanCollide = false
end
end
task.wait(math.sqrt(workspace.Gravity / player.Character.Torso.Position.Y))
if player.Character.Humanoid.Health ~= 0 then
if player.MembershipType == Enum.MembershipType.None then
player.leaderstats.Coins.Value += 50
elseif player.MembershipType == Enum.MembershipType.Premium then
player.leaderstats.Coins.Value += 75
end
else
if player.MembershipType == Enum.MembershipType.None then
if player.leaderstats.Coins.Value >= 0 then
player.leaderstats.Coins.Value -= 50 / 2
end
elseif player.MembershipType == Enum.MembershipType.Premium then
if player.leaderstats.Coins.Value >= 0 then
player.leaderstats.Coins.Value -= 75 / 5
end
end
end
elseif random == 2 then
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.Text = "Yellow"
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.TextColor3 = Color3.fromRGB(255, 255, 0)
local t = ts:Create(player.PlayerGui:WaitForChild("ScreenGui").ReadyUp, ti, {TextTransparency = 1})
t:Play()
t.Completed:Connect(function()
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.Visible = false
end)
task.wait(waitTime)
for i, v in pairs(workspace.Map:GetChildren()) do
if v.Name ~= player.PlayerGui.ScreenGui.ReadyUp.Text and v:IsA("Part") then
v.Transparency = 0.7
v.CanCollide = false
end
end
task.wait(math.sqrt(workspace.Gravity / player.Character.Torso.Position.Y))
if player.Character.Humanoid.Health ~= 0 then
if player.MembershipType == Enum.MembershipType.None then
player.leaderstats.Coins.Value += 50
elseif player.MembershipType == Enum.MembershipType.Premium then
player.leaderstats.Coins.Value += 75
end
else
if player.MembershipType == Enum.MembershipType.None then
if player.leaderstats.Coins.Value >= 0 then
player.leaderstats.Coins.Value -= 50 / 2
end
elseif player.MembershipType == Enum.MembershipType.Premium then
if player.leaderstats.Coins.Value >= 0 then
player.leaderstats.Coins.Value -= 75 / 5
end
end
end
elseif random == 3 then
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.Text = "Green"
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.TextColor3 = Color3.fromRGB(0, 255, 0)
local t = ts:Create(player.PlayerGui:WaitForChild("ScreenGui").ReadyUp, ti, {TextTransparency = 1})
t:Play()
t.Completed:Connect(function()
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.Visible = false
end)
task.wait(waitTime)
for i, v in pairs(workspace.Map:GetChildren()) do
if v.Name ~= player.PlayerGui.ScreenGui.ReadyUp.Text and v:IsA("Part") then
v.Transparency = 0.7
v.CanCollide = false
end
end
task.wait(math.sqrt(workspace.Gravity / player.Character.Torso.Position.Y))
if player.Character.Humanoid.Health ~= 0 then
if player.MembershipType == Enum.MembershipType.None then
player.leaderstats.Coins.Value += 50
elseif player.MembershipType == Enum.MembershipType.Premium then
player.leaderstats.Coins.Value += 75
end
else
if player.MembershipType == Enum.MembershipType.None then
if player.leaderstats.Coins.Value >= 0 then
player.leaderstats.Coins.Value -= 50 / 2
end
elseif player.MembershipType == Enum.MembershipType.Premium then
if player.leaderstats.Coins.Value >= 0 then
player.leaderstats.Coins.Value -= 75 / 5
end
end
end
elseif random == 4 then
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.Text = "Blue"
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.TextColor3 = Color3.fromRGB(0, 0, 255)
local t = ts:Create(player.PlayerGui:WaitForChild("ScreenGui").ReadyUp, ti, {TextTransparency = 1})
t:Play()
t.Completed:Connect(function()
player.PlayerGui:WaitForChild("ScreenGui").ReadyUp.Visible = false
end)
task.wait(waitTime)
for i, v in pairs(workspace.Map:GetChildren()) do
if v.Name ~= player.PlayerGui.ScreenGui.ReadyUp.Text and v:IsA("Part") then
v.Transparency = 0.7
v.CanCollide = false
end
end
task.wait(math.sqrt(workspace.Gravity / player.Character.Torso.Position.Y))
if player.Character.Humanoid.Health ~= 0 then
if player.MembershipType == Enum.MembershipType.None then
player.leaderstats.Coins.Value += 50
elseif player.MembershipType == Enum.MembershipType.Premium then
player.leaderstats.Coins.Value += 75
end
else
if player.MembershipType == Enum.MembershipType.None then
if player.leaderstats.Coins.Value >= 0 then
player.leaderstats.Coins.Value -= 50 / 2
end
elseif player.MembershipType == Enum.MembershipType.Premium then
if player.leaderstats.Coins.Value >= 0 then
player.leaderstats.Coins.Value -= 75 / 5
end
end
end
end
task.wait(3)
player:LoadCharacter()
for i, v in pairs(workspace.Map:GetChildren()) do
if v.Name ~= player.PlayerGui.ScreenGui.ReadyUp.Text and v:IsA("Part") then
v.Transparency = 0
v.CanCollide = true
end
end
round()
end
task.wait(3.5)
round()
end)