Place teleport script erroring without an error message

Hello,
I’ve been working on a script to teleport a player to another player, which errors on line 28, but does not specify why.
This is the output:

Server Script:

-- bunch of locals before this
function joinUser(plr, destinationUser)
	print(destinationUser)
	local success, errorMessage = pcall(function()
		teleSuccess, teleErrorMessage, placeId, jobId = TeleportService:GetPlayerPlaceInstanceAsync(destinationUser)
	end)

	if success == false or teleSuccess == false then
		errevent:FireClient(plr)
		if errorMessage then
			print(errorMessage)
		end
		if teleErrorMessage then
			print(teleErrorMessage) -- line 28
		end
	else
		successevent:FireClient(plr)
		print(placeId,jobId,plr)
		TeleportService:TeleportToPlaceInstance(placeId, jobId, plr)
	end
end

send.OnServerEvent:Connect(joinUser)

Local script:

-- bunch of locals and gui code
enterbt.MouseButton1Click:Connect(function()
	local success, error = pcall(function()
		game:GetService("Players"):GetUserIdFromNameAsync(userbox.Text)
	end)
	if success == true then
		print(game:GetService("Players"):GetUserIdFromNameAsync(tostring(userbox.Text)))
		send:FireServer(game:GetService("Players"):GetUserIdFromNameAsync(userbox.Text))
	else
		print(error)
		enterbt.Text = "Error!"
		wait(3)
		enterbt.Text = "Join"
	end
end)

The error on line 28 might occur if TeleportService:GetPlayerPlaceInstanceAsync(destinationUser) fails to return a value for either teleSuccess or teleErrorMessage , making them both nil . This would then cause an error when trying to print teleErrorMessage .

To avoid this error, you could add a check to see if teleErrorMessage is not nil before printing it. Here’s an updated version of your code that includes this check:

function joinUser(plr, destinationUser)
	print(destinationUser)
	local success, errorMessage = pcall(function()
		teleSuccess, teleErrorMessage, placeId, jobId = TeleportService:GetPlayerPlaceInstanceAsync(destinationUser)
	end)

	if success == false or teleSuccess == false then
		errevent:FireClient(plr)
		if errorMessage then
			print(errorMessage)
		end
		if teleErrorMessage then
			print(teleErrorMessage)
		end
	else
		successevent:FireClient(plr)
		print(placeId,jobId,plr)
		TeleportService:TeleportToPlaceInstance(placeId, jobId, plr)
	end
end

Note that I also added a check for errorMessage before printing it to avoid a similar error in case it is nil .

I’ve just removed the check if teleSuccess is false and the check for teleErrorMessage and it seems to work, I don’t know what GetPlayerPlaceInstanceAsync did for the teleSuccess to be false and teleErrorMessage to be "", but I’m not complaining that it works now. Thank you for your help!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.