Humanoid.SeatPart sometimes set on server or client even though Humanoid is not seated anymore

Hello,

In recent months, we have received many bug reports in which users in our game Emergency Hamburg could not enter vehicles and equip tools (except the phone) after doing stuff involving vehicles.

After testing, we suspected it was due to SeatPart not being set correctly, as Humanoid.SeatPart being set while the Humanoid is not seated would exactly cause these issues.

We have now found a replication, which most often only works in Roblox Studio though, but I have some screenshots that show the issue.

In Emergency Hamburg Roblox Studio:

  1. Press play and locate your car.
  2. Enable a network delay tool like clumsy.
    Filtering: “inbound or outbound”
    Functions: Drop and Throttle Enabled (Default Settings are fine)
  3. Enter a vehicle seat repeatedly after jumping (Press Space and immediately after that press E) until it isn’t possible anymore.

If the “Seat” Prompt disappears, SeatPart is set incorrectly on the Client.
If the prompt is visible, but the interaction doesn’t work, it’s set incorrectly on the client.

In the following screenshots i was able to replicate the bug:

On this screenshot, you can see SeatPart is correctly set to nil on the Client:

On this screenshot, you can see that SeatPart is incorrectly set on the Server.:

Seat.Occupant and Seat.GetPropertyChangedSignal(“Occupant”) still works correctly even if SeatPart is incorrect on the character.

The issue with SeatPart being set incorrectly can happen both on the client and on the server; In our bug reports, it was most often set incorrectly on the server.

This issue seems to happen to players mostly with a bad internet connection, however, it leaves them in a soft-locked state and requires them to rejoin as vital game mechanics stop working, so I hope for a fast fix.

Let me know if you need any additional information.

Thanks!
~ Felix

2 Likes

Thank you for the report and for the details on how to repro. Using our own placefiles and seats we are unable to repro - would it be possible for you to DM me a minimal placefile which contains just enough to reproduce the issue? Is the vehicle seat the only part that is needed?

Thank you!

Hi,

Unfortunately, I was not able to create a working reproduction place. The issue is rare and depends on network factors that don’t really exist on empty place files.

With the two screenshots I submitted, it’s pretty obvious that the SeatPart property gets out of sync. My game code could not cause this, as SeatPart is a read-only property.

I also don’t know which factors play into the fact that the property gets out of sync. Our game systems have additional functionality regarding vehicle seats, including calling Humanoid:SetState(“GettingUp”) when jumping in a vehicle seat to stop the jump animation as well as teleporting the player out of the vehicle once they are unseated.

With clumsy or another network delay tool in studio (50% Drop, 50% Throttle Rates work best for replication) you could easily replicate the issue in 10-15 minutes in our experience, let me know if you need access via dm.

Thanks!
~ Felix

1 Like

Hello, Felix!

Try flipping this flag and let me know what happens: WaitForSeatWeld