Handle timeout reaching during camera point selection problem

Any people can help me try fix it

imagem_2025-01-19_115138243

Also if i click to play it stops at black screen, i think it happens bc of the “Timeout Error”

local LocalPlayer = game:GetService("Players").LocalPlayer
local MainMenu = script:WaitForChild("MainMenu")

local loadingScreenFinished = LocalPlayer:WaitForChild("LoadingScreenFinished", 10)

if not loadingScreenFinished then
	warn("Timeout while waiting for 'LoadingScreenFinished'. The script may continue with an error.")
else
	repeat
		wait()
	until LocalPlayer.LoadingScreenFinished.Value == true
end 

if game:GetService("ReplicatedFirst"):WaitForChild("DevMode").Value == false then
	MainMenu.Parent = LocalPlayer.PlayerGui
	local TweenService = game:GetService("TweenService")
	local MainMenuCameraPoints = workspace:FindFirstChild("MainMenuCameraPoints")
	if not MainMenuCameraPoints then
		MainMenuCameraPoints = workspace:WaitForChild("IgnoreFolder"):WaitForChild("MainMenuCameraPoints")
	end

	local isTransitioning = false
	local CurrentCamera = workspace.CurrentCamera
	local PlayFrame = MainMenu:WaitForChild("PlayFrame")
	local SettingsFrame = MainMenu:WaitForChild("SettingsFrame")
	local SettingsMenu = MainMenu:WaitForChild("SettingsMenu")
	local UpdateLogFrame = MainMenu:WaitForChild("UpdateLogFrame")
	local MenuMusic = script.MenuMusic
	local Fade = MainMenu:WaitForChild("Fade")

	CurrentCamera.CameraType = Enum.CameraType.Scriptable
	MenuMusic:Play()

	local cameraPoints = {}
	local usedPoints = {}
	local children = MainMenuCameraPoints:GetChildren()

	local Spin1 = MainMenu:WaitForChild("Spin1")
	local Spin2 = MainMenu:WaitForChild("Spin2")

	task.spawn(function()
		local timeout = 10
		local startTime = tick()

		while not isTransitioning do
			cameraPoints = {}
			usedPoints = {}
			for i, v in pairs(children) do
				cameraPoints[#cameraPoints + 1] = v.Name
			end

			repeat
				local randomIndex
				if #cameraPoints <= 1 then break end
				if isTransitioning then break end

				repeat
					randomIndex = math.random(1, #cameraPoints)
				until not table.find(usedPoints, cameraPoints[randomIndex])

				usedPoints[#usedPoints + 1] = cameraPoints[randomIndex]

				local cameraPoint = MainMenuCameraPoints[cameraPoints[randomIndex]]
				local fov = cameraPoint:GetAttribute("SetFOV")
				local xAngle = cameraPoint:GetAttribute("CameraXAngle")
				local startAngle = cameraPoint:GetAttribute("StartAngle")
				local position = Vector3.new(xAngle, startAngle, cameraPoint:GetAttribute("CameraZAngle"))
				cameraPoint.Orientation = position

				TweenService:Create(Fade, TweenInfo.new(0.3, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut), {
					ImageTransparency = 1;
				}):Play()

				TweenService:Create(Spin1, TweenInfo.new(0.3, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut), {
					ImageTransparency = 1;
				}):Play()

				TweenService:Create(Spin2, TweenInfo.new(0.3, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut), {
					ImageTransparency = 1;
				}):Play()

				local currentAngle = 0
				while currentAngle <= cameraPoint:GetAttribute("EndAngle") and not isTransitioning do
					CurrentCamera.CFrame = cameraPoint.CFrame * CFrame.new(0, 0, cameraPoint:GetAttribute("CameraDistance"))
					CurrentCamera.FieldOfView = fov
					cameraPoint.Orientation = Vector3.new(cameraPoint.Orientation.X, currentAngle, cameraPoint.Orientation.Z)
					currentAngle = currentAngle + 0.1 * cameraPoint:GetAttribute("CameraSpeed")
					wait(0.01)

					if tick() - startTime > timeout then
						warn("Timeout reached during camera point selection.") -- line 91 problem
						break
					end
				end
			until #usedPoints == #cameraPoints
		end
	end)

	PlayFrame:WaitForChild("Button").MouseEnter:Connect(function()
		PlayFrame.PlayTextNormal.Visible = false
		PlayFrame.PlayTextBold.Visible = true
	end)

	PlayFrame:WaitForChild("Button").MouseLeave:Connect(function()
		PlayFrame.PlayTextNormal.Visible = true
		PlayFrame.PlayTextBold.Visible = false
	end)

	local canPlay = false
	local SpawnPlayer = game.ReplicatedStorage:WaitForChild("Functions"):WaitForChild("SpawnPlayer")

	PlayFrame:WaitForChild("Button").MouseButton1Click:Connect(function()
		if not canPlay then
			pcall(function()
				canPlay = true
				Fade:Destroy()

				local clone = script.FinalFade:Clone()
				clone.Parent = LocalPlayer.PlayerGui
				TweenService:Create(clone.Fade, TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut), {
					Transparency = 0;
				}):Play()

				TweenService:Create(MenuMusic, TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut), {
					Volume = 0;
				}):Play()

				task.wait(1.1)
				local FinalFade = script.FinalFade
				FinalFade.Fade.Transparency = 0
				FinalFade.Parent = LocalPlayer.PlayerGui
				clone:Destroy()

				SpawnPlayer:InvokeServer()
				MenuMusic:Stop()

				isTransitioning = true
				MainMenu:Destroy()
				CurrentCamera.CameraType = Enum.CameraType.Custom
				CurrentCamera.FieldOfView = 70
				game.Players.LocalPlayer.PlayerGui.Main.Gold.Visible = true
				game.Players.LocalPlayer.PlayerGui.Main.MsgBar.Visible = true
				game.Players.LocalPlayer.PlayerGui.Main.OldUIFrame.Visible = true
				game.Players.LocalPlayer.PlayerGui.Main.SoundButton.Visible = true
				game.Players.LocalPlayer.PlayerGui.Main.Minor.IgnoreMusic.Value = false

				TweenService:Create(FinalFade.Fade, TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut), {
					Transparency = 1;
				}):Play()

				wait(1.1)
				clone:Destroy()
			end)
		end
	end)

	SettingsFrame.Button.MouseEnter:Connect(function()
		SettingsFrame.SettingsTextNormal.Visible = false
		SettingsFrame.SettingsTextBold.Visible = true
	end)

	SettingsFrame.Button.MouseLeave:Connect(function()
		SettingsFrame.SettingsTextNormal.Visible = true
		SettingsFrame.SettingsTextBold.Visible = false
	end)

	SettingsFrame.Button.MouseButton1Click:Connect(function()
		if SettingsMenu.Visible == false then
			SettingsMenu.Visible = true
		else
			SettingsMenu.Visible = false
		end
	end)

	SettingsMenu.ChangeGraphicsHolder.LowGLabel.Check.MouseButton1Click:Connect(function()
		if SettingsMenu.ChangeGraphicsHolder.LowGLabel.Value.Value == false then
			SettingsMenu.ChangeGraphicsHolder.LowGLabel.Value.Value = true
			SettingsMenu.ChangeGraphicsHolder.LowGLabel.Check.Image = "http://www.roblox.com/asset/?id=135397552837940"
		else
			SettingsMenu.ChangeGraphicsHolder.LowGLabel.Value.Value = false
			SettingsMenu.ChangeGraphicsHolder.LowGLabel.Check.Image = "http://www.roblox.com/asset/?id=126458187759848"
		end
	end)

	UpdateLogFrame.Button.MouseEnter:Connect(function()
		UpdateLogFrame.UpdateLogTextNormal.Visible = false
		UpdateLogFrame.UpdateLogTextBold.Visible = true
	end)

	UpdateLogFrame.Button.MouseLeave:Connect(function()
		UpdateLogFrame.UpdateLogTextNormal.Visible = true
		UpdateLogFrame.UpdateLogTextBold.Visible = false
	end)

	local UpdateLogMenu = MainMenu:WaitForChild("UpdateLogMenu")
	local UpdateLogMenuBackground = MainMenu:WaitForChild("UpdateLogMenuBackground")

	UpdateLogFrame.Button.MouseButton1Click:Connect(function()
		if UpdateLogMenu.Visible == false then
			UpdateLogMenuBackground.Visible = true
			UpdateLogMenu.Visible = true
		else
			UpdateLogMenuBackground.Visible = false
			UpdateLogMenu.Visible = false
		end
	end)
else
	MainMenuCameraPoints = game.Players.LocalPlayer
	TweenService = MainMenuCameraPoints.PlayerGui:WaitForChild("Main").Gold
	TweenService.Visible = true
	MainMenuCameraPoints = game.Players.LocalPlayer.PlayerGui
	TweenService = MainMenuCameraPoints.Main.MsgBar
	TweenService.Visible = true
	MainMenuCameraPoints = game.Players.LocalPlayer.PlayerGui
	TweenService = MainMenuCameraPoints.Main.OldUIFrame
	TweenService.Visible = true
	MainMenuCameraPoints = game.Players.LocalPlayer.PlayerGui
	TweenService = MainMenuCameraPoints.Main.SoundButton
	TweenService.Visible = true
	MainMenuCameraPoints = game.Players
	TweenService = MainMenuCameraPoints.LocalPlayer.PlayerGui
	MainMenuCameraPoints = "Main"
	TweenService = TweenService:WaitForChild(MainMenuCameraPoints)
	MainMenuCameraPoints = "Minor"
	TweenService = TweenService:WaitForChild(MainMenuCameraPoints)
	MainMenuCameraPoints = "IgnoreMusic"
	TweenService = TweenService:WaitForChild(MainMenuCameraPoints)
	TweenService.Value = false
end
1 Like

You didn’t add any task.Wait()s during your repeat, and while loops

I added a lot of they and its still don’t work.