CCCPaste

Bus MainScript (Bus TeleportScript)

local TS = game:GetService("TeleportService")
local GuiPart = script.Parent.Parent.GuiPart
local Seats = script.Parent.Parent.BusModel.SeatsModel:GetChildren()

local List = {}
local MinPlayers = 1
local MaxPlayers = 12
local Timer

local PlaceId = (17424851138)

GuiPart.SurfaceGui.Players.Text = "Players: "..#List.." / "..MaxPlayers

local function removeFromList(character)
	for i=1,#List do
		if List[i] == character.Name then
			table.remove(List,i)
			GuiPart.SurfaceGui.Players.Text = "Players: "..#List.." / "..MaxPlayers
		end
	end
end

local function TeleportPlayers()
	if #List >= MinPlayers then
		GuiPart.SurfaceGui.Status.Text = "Teleporting..."
		GuiPart.SurfaceGui.Status.TextColor3 = Color3.new(1, 0, 0)
		local playersToTeleport = {}
		for i=1,#List do
			if game.Players:FindFirstChild(List[i]) then
				table.insert(playersToTeleport, game.Players:FindFirstChild(List[i]))
				game.ReplicatedStorage.TransitionEvent:FireClient(game.Players:FindFirstChild(List[i]))
			else
				table.remove(List,i)
			end
		end
		local Code = TS:ReserveServer(PlaceId)
		TS:TeleportToPrivateServer(PlaceId, Code, playersToTeleport)
		repeat wait() until #List <= 0
		GuiPart.SurfaceGui.Status.Text = "READY"
		GuiPart.SurfaceGui.Status.TextColor3 = Color3.new(0.333333, 1, 0)
	else
		GuiPart.SurfaceGui.Players.Text = "1 Players Neeeded"
		wait(2.5)
		GuiPart.SurfaceGui.Players.Text = "Players: "..#List.." / "..MaxPlayers
	end
end

script.Parent.Touched:Connect(function(Hit)
	if Hit.Parent:FindFirstChild("Humanoid") then
		
		local character = Hit.Parent
		local Player = game.Players:GetPlayerFromCharacter(character)
		local alreadyExists = false
		
		for i=1,#List do
			if List[i] == character.Name then
				alreadyExists = true
			end
		end
		
		if alreadyExists == false then
			if #List < MinPlayers then
				table.insert(List,character.Name)
				for i, v in pairs(Seats) do
					if Seats == 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)
				game.ServerStorage.LeaveGui:Clone().Parent = Player.PlayerGui
				GuiPart.SurfaceGui.Players.Text = "Players: "..#List.." / "..MaxPlayers
			end
		end
		Player.CharacterRemoving:connect(function(character)
			removeFromList(character)
		end)
	end
end)

game.ReplicatedStorage.LeaveGuiEvent.OnServerEvent:Connect(function(player)
	player:LoadCharacter()
end)

while wait() do
	Timer = 41
	for i=1,Timer do
		Timer = Timer - 1
		GuiPart.SurfaceGui.timeLabel.Text = "Time: "..Timer
		wait(1)
	end
	TeleportPlayers()
end