@@ -522,6 +522,24 @@ public void OnPlayerChangeVehicleSeat(IntPtr vehiclePointer, IntPtr playerPointe
522522 return ;
523523 }
524524
525+ if ( VehiclePassengers . TryGetValue ( vehiclePointer , out var passengers ) )
526+ {
527+ if ( passengers . Exists ( x => x . PlayerPointer == playerPointer ) )
528+ {
529+ var playerSeat = passengers . First ( x => x . PlayerPointer == playerPointer ) ;
530+ playerSeat . Seat = newSeat ;
531+ }
532+ else
533+ {
534+ passengers . Add ( new InternalPlayerSeat { PlayerPointer = playerPointer , Seat = newSeat } ) ;
535+ }
536+ }
537+ else
538+ {
539+ VehiclePassengers [ vehiclePointer ] = new List < InternalPlayerSeat >
540+ { new ( ) { PlayerPointer = playerPointer , Seat = newSeat } } ;
541+ }
542+
525543 OnPlayerChangeVehicleSeatEvent ( vehicle , player , oldSeat , newSeat ) ;
526544 }
527545
@@ -562,6 +580,24 @@ public void OnPlayerEnterVehicle(IntPtr vehiclePointer, IntPtr playerPointer, by
562580 return ;
563581 }
564582
583+ if ( VehiclePassengers . TryGetValue ( vehiclePointer , out var passengers ) )
584+ {
585+ if ( passengers . Exists ( x => x . PlayerPointer == playerPointer ) )
586+ {
587+ var playerSeat = passengers . First ( x => x . PlayerPointer == playerPointer ) ;
588+ playerSeat . Seat = seat ;
589+ }
590+ else
591+ {
592+ passengers . Add ( new InternalPlayerSeat { PlayerPointer = playerPointer , Seat = seat } ) ;
593+ }
594+ }
595+ else
596+ {
597+ VehiclePassengers [ vehiclePointer ] = new List < InternalPlayerSeat >
598+ { new ( ) { PlayerPointer = playerPointer , Seat = seat } } ;
599+ }
600+
565601 OnPlayerEnterVehicleEvent ( vehicle , player , seat ) ;
566602 }
567603
@@ -602,6 +638,24 @@ public void OnPlayerEnteringVehicle(IntPtr vehiclePointer, IntPtr playerPointer,
602638 return ;
603639 }
604640
641+ if ( VehiclePassengers . TryGetValue ( vehiclePointer , out var passengers ) )
642+ {
643+ if ( passengers . Exists ( x => x . PlayerPointer == playerPointer ) )
644+ {
645+ var playerSeat = passengers . First ( x => x . PlayerPointer == playerPointer ) ;
646+ playerSeat . Seat = seat ;
647+ }
648+ else
649+ {
650+ passengers . Add ( new InternalPlayerSeat { PlayerPointer = playerPointer , Seat = seat } ) ;
651+ }
652+ }
653+ else
654+ {
655+ VehiclePassengers [ vehiclePointer ] = new List < InternalPlayerSeat >
656+ { new ( ) { PlayerPointer = playerPointer , Seat = seat } } ;
657+ }
658+
605659 OnPlayerEnteringVehicleEvent ( vehicle , player , seat ) ;
606660 }
607661
@@ -642,6 +696,20 @@ public void OnPlayerLeaveVehicle(IntPtr vehiclePointer, IntPtr playerPointer, by
642696 return ;
643697 }
644698
699+ if ( VehiclePassengers . TryGetValue ( vehiclePointer , out var passengers ) )
700+ {
701+ if ( passengers . Exists ( x => x . PlayerPointer == playerPointer ) )
702+ {
703+ var playerSeat = passengers . First ( x => x . PlayerPointer == playerPointer ) ;
704+ passengers . Remove ( playerSeat ) ;
705+ }
706+
707+ if ( ! passengers . Any ( ) )
708+ {
709+ VehiclePassengers . Remove ( vehiclePointer ) ;
710+ }
711+ }
712+
645713 OnPlayerLeaveVehicleEvent ( vehicle , player , seat ) ;
646714 }
647715
@@ -1928,6 +1996,17 @@ public void OnPlayerRemove(IntPtr playerPointer)
19281996 return ;
19291997 }
19301998
1999+ foreach ( var vehiclePassenger in VehiclePassengers )
2000+ {
2001+ if ( vehiclePassenger . Value . All ( x => x . PlayerPointer != playerPointer ) )
2002+ {
2003+ continue ;
2004+ }
2005+
2006+ var playerSeat = vehiclePassenger . Value . First ( x => x . PlayerPointer == playerPointer ) ;
2007+ vehiclePassenger . Value . Remove ( playerSeat ) ;
2008+ }
2009+
19312010 OnPlayerRemoveEvent ( player ) ;
19322011 }
19332012
@@ -1959,6 +2038,11 @@ public void OnVehicleRemove(IntPtr vehiclePointer)
19592038 return ;
19602039 }
19612040
2041+ if ( VehiclePassengers . ContainsKey ( vehiclePointer ) )
2042+ {
2043+ VehiclePassengers . Remove ( vehiclePointer ) ;
2044+ }
2045+
19622046 OnVehicleRemoveEvent ( vehicle ) ;
19632047 }
19642048
0 commit comments