Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How to tell when a player has sat in a seat?

Im just starting to mess around with vehicles but I cant seem to understand how to tell when a player is sitting on a seat this is what I tried:

Seat.Occupant.Changed:Connect(function()
	if Seat.Occupant == Instance.new("Humanoid")then
		print("player sat")
	else
		print("player got up")
	end
end)

But I only get the error " attempt to index nil with 'Changed'".

1 answer

✓ Accepted answer

The Changed event is located in the seat, not Occupant (which is a property of the object). You could do this:

Seat.Changed:Connect(function()

but this will fire every time anything about the seat changes, so you can only listen for when the "Occupant" property changes with this:

Seat:GetPropertyChangedSignal("Occupant"):Connect(function()

Also, the if statement will always be false because rather than checking if the type of Seat.Occupant is a Humanoid, you are checking if Seat.Occupant is the new Humanoid that you just created. Do this instead:

-- nvm this will give an error oops
if Seat.Occupant:IsA("Humanoid") then
	print("player sat")
else
	print("player got up")
end

edit: I just realized this will give an error when you get up from the seat because Seat.Occupant will be nil, so :IsA() won't exist. You should instead just check if Seat.Occupant is nil or not, but I will still leave this up to show how to check types of Roblox objects

-- do this
if Seat.Occupant then
	print("player sat")
else
	print("player got up")
end

This discussion is preserved as it was. New answers, comments, and votes are closed.