@@ -164,6 +164,13 @@ bool Vehicle::updateFromDriverSync(const VehicleDriverSyncPacket& vehicleSync, I
164164 return false ;
165165 }
166166
167+ if (vehicleSync.TrailerID && trailer && trailer->getID () != vehicleSync.TrailerID )
168+ {
169+ // The client instantly jumped from one trailer to another one. Probably a cheat, so don't
170+ // allow it.
171+ return false ;
172+ }
173+
167174 pos = vehicleSync.Position ;
168175 rot = vehicleSync.Rotation ;
169176 velocity = vehicleSync.Velocity ;
@@ -218,16 +225,7 @@ bool Vehicle::updateFromDriverSync(const VehicleDriverSyncPacket& vehicleSync, I
218225
219226 if (vehicleSync.TrailerID )
220227 {
221- if (trailer)
222- {
223- if (trailer->getID () != vehicleSync.TrailerID )
224- {
225- // The client instantly jumped from one trailer to another one. Probably a cheat, so don't
226- // allow it.
227- return false ;
228- }
229- }
230- else
228+ if (!trailer)
231229 {
232230 // Got a new one that we didn't know about.
233231 trailer = static_cast <Vehicle*>(pool->get (vehicleSync.TrailerID ));
@@ -322,19 +320,19 @@ bool Vehicle::updateFromTrailerSync(const VehicleTrailerSyncPacket& trailerSync,
322320 return false ;
323321 }
324322
323+ PlayerVehicleData* playerData = queryExtension<PlayerVehicleData>(player);
324+ if (!playerData)
325+ {
326+ return false ;
327+ }
328+
325329 pos = trailerSync.Position ;
326330 velocity = trailerSync.Velocity ;
327331 angularVelocity = trailerSync.TurnVelocity ;
328332 rot.q = glm::quat (trailerSync.Quat [0 ], trailerSync.Quat [1 ], trailerSync.Quat [2 ], trailerSync.Quat [3 ]);
329333
330334 updateOccupied ();
331335
332- PlayerVehicleData* playerData = queryExtension<PlayerVehicleData>(player);
333- if (!playerData)
334- {
335- return false ;
336- }
337-
338336 Vehicle* vehicle = static_cast <Vehicle*>(playerData->getVehicle ());
339337
340338 if (!vehicle || vehicle->detaching )
0 commit comments