local TS = game:GetService("TeleportService")
local TweenService = game:GetService("TweenService")
local placeId = (0)
local leaveGuiEvent = game.ReplicatedStorage.LeaveGuiEvent
local TransitionEvent = game.ReplicatedStorage.TransitionEvent
local list = {}
local billboard = script.Parent.billboardPart.billboardGui
local timer
local teleporting = false
local spawnTeleport = script.Parent.spawn
local MinPlayers = 1
local MaxPlayers = 12
local GuiPart = script.Parent.GuiPart
local Debounce = false
local Seats = script.Parent.Parent.Bus.Seats:GetChildren()
local function updateGui()
billboard.Frame.players.Text = "Players: " ..#list.. "/12"
GuiPart.SurfaceGui.Frame.players.Text = "Players: "..#list.."/12"
end
local function removeFromList(character)
for i=1,#list do
if list[i] == character.Name then
table.remove(list,i)
updateGui()
end
end
end
local function teleportPlayers()
if #list >= MinPlayers then
billboard.Frame.Status.Text = "TELEPORTING"
billboard.Frame.Status.TextColor3 = Color3.fromRGB(255, 0, 0)
GuiPart.SurfaceGui.Frame.Status.Text = "TELEPORTING"
GuiPart.SurfaceGui.Frame.Status.TextColor3 = Color3.fromRGB(255, 0, 0)
local playersToTeleport = {}
local teleportTime = 0
for i=1,#list do
if game.Players:findFirstChild(list[i]) then
table.insert(playersToTeleport,game.Players:findFirstChild(list[i]))
TransitionEvent:FireClient(game.Players:findFirstChild(list[i]))
else
table.remove(list,i)
end
end
local code = TS:ReserveServer(placeId)
teleporting = true
TS:TeleportToPrivateServer(placeId,code,playersToTeleport)
repeat wait() until #list <= 0
billboard.Frame.Status.Text = "START"
billboard.Frame.Status.TextColor3 = Color3.fromRGB(85, 255, 0)
GuiPart.SurfaceGui.Frame.Status.Text = "START"
GuiPart.SurfaceGui.Frame.Status.TextColor3 = Color3.fromRGB(85, 255, 0)
teleporting = false
elseif #list < MinPlayers then
GuiPart.SurfaceGui.Frame.players.Text = MinPlayers.." Players Needed!"
billboard.Frame.players.Text = MinPlayers.." Players Needed!"
wait(1)
billboard.Frame.players.Text = "Players: "..#list.."/12"
GuiPart.SurfaceGui.Frame.players.Text = "Players: "..#list.."/12"
end
end
script.Parent.BusEnter.Touched:Connect(function(hit)
if hit.Parent:findFirstChild("Humanoid") then
if teleporting == false then
local char = hit.Parent
local player = game.Players:FindFirstChild(char.Name)
local alreadyExists = false
for i=1,#list do
if list[i] == char.Name then
alreadyExists = true
end
end
if alreadyExists == false then
if #list < MaxPlayers then -- Many Players have been teleported.
table.insert(list,char.Name)
char.PrimaryPart.CFrame = spawnTeleport.CFrame
if Debounce then return end
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
for i, v in pairs(Seats) do
if Seats.Occupant == nil then
local Check = Instance.new("Weld")
Check.Name = "Check"
Check.Parent = player.Character
Check.Parent.Humanoid.JumpPower = 0
Check.Parent.Humanoid.WalkSpeed = 0
end
end
Seats[math.random(1, #Seats)]:Sit(player.Character.Humanoid)
updateGui()
game.ServerStorage.ExitGui:Clone().Parent = player.PlayerGui
end
player.CharacterRemoving:connect(function(character)
removeFromList(character)
end)
end
end
end
end)
leaveGuiEvent.OnServerEvent:Connect(function(player)
player:LoadCharacter()
end)
while wait() do
timer = 41
for i=1,timer do
timer = timer - 1
billboard.Frame.time.Text = timer
GuiPart.SurfaceGui.Frame.time.Text = timer
wait(1)
end
teleportPlayers()
end