CCCPaste

Bus MainScript 2

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