@@ -1433,7 +1433,7 @@ public virtual void OnServerStartedEvent()
14331433 }
14341434 }
14351435
1436- public virtual void OnPlayerRequestControl ( IntPtr targetPtr , BaseObjectType targetType , IntPtr playerPtr )
1436+ public virtual void OnPlayerRequestControl ( IntPtr eventPtr , IntPtr targetPtr , BaseObjectType targetType , IntPtr playerPtr )
14371437 {
14381438 var target = ( IEntity ) PoolManager . Get ( targetPtr , targetType ) ;
14391439 if ( target is null )
@@ -1449,16 +1449,20 @@ public virtual void OnPlayerRequestControl(IntPtr targetPtr, BaseObjectType targ
14491449 return ;
14501450 }
14511451
1452- OnPlayerRequestControlEvent ( target , player ) ;
1452+ OnPlayerRequestControlEvent ( eventPtr , target , player ) ;
14531453 }
14541454
1455- public virtual void OnPlayerRequestControlEvent ( IEntity target , IPlayer player )
1455+ public virtual void OnPlayerRequestControlEvent ( IntPtr eventPtr , IEntity target , IPlayer player )
14561456 {
1457+ var cancel = false ;
14571458 foreach ( var @delegate in PlayerRequestControlHandler . GetEvents ( ) )
14581459 {
14591460 try
14601461 {
1461- @delegate ( target , player ) ;
1462+ if ( ! @delegate ( target , player ) )
1463+ {
1464+ cancel = true ;
1465+ }
14621466 }
14631467 catch ( TargetInvocationException exception )
14641468 {
@@ -1469,6 +1473,14 @@ public virtual void OnPlayerRequestControlEvent(IEntity target, IPlayer player)
14691473 Alt . Log ( "exception at event:" + "OnPlayerRequestControlEvent" + ":" + exception ) ;
14701474 }
14711475 }
1476+
1477+ if ( cancel )
1478+ {
1479+ unsafe
1480+ {
1481+ Alt . Core . Library . Shared . Event_Cancel ( eventPtr ) ;
1482+ }
1483+ }
14721484 }
14731485
14741486 public virtual void OnPlayerChangeAnimation ( IntPtr playerPtr , uint oldDict , uint newDict , uint oldName ,
0 commit comments