@@ -407,7 +407,8 @@ public virtual void OnPlayerDeathEvent(IPlayer player, IEntity killer, uint weap
407407 }
408408 }
409409
410- public void OnPlayerHeal ( IntPtr playerPointer , ushort oldHealth , ushort newHealth , ushort oldArmour , ushort newArmour )
410+ public void OnPlayerHeal ( IntPtr playerPointer , ushort oldHealth , ushort newHealth , ushort oldArmour ,
411+ ushort newArmour )
411412 {
412413 var player = PoolManager . Player . Get ( playerPointer ) ;
413414 if ( player == null )
@@ -420,7 +421,8 @@ public void OnPlayerHeal(IntPtr playerPointer, ushort oldHealth, ushort newHealt
420421 OnPlayerHealEvent ( player , oldHealth , newHealth , oldArmour , newArmour ) ;
421422 }
422423
423- public virtual void OnPlayerHealEvent ( IPlayer player , ushort oldHealth , ushort newHealth , ushort oldArmour , ushort newArmour )
424+ public virtual void OnPlayerHealEvent ( IPlayer player , ushort oldHealth , ushort newHealth , ushort oldArmour ,
425+ ushort newArmour )
424426 {
425427 foreach ( var @delegate in PlayerHealEventHandler . GetEvents ( ) )
426428 {
@@ -510,12 +512,21 @@ public virtual void OnWeaponDamageEvent(IntPtr eventPointer, IPlayer sourcePlaye
510512 Position shotOffset , BodyPart bodyPart )
511513 {
512514 uint ? weaponDamage = null ;
515+ var cancel = false ;
513516 foreach ( var @delegate in WeaponDamageEventHandler . GetEvents ( ) )
514517 {
515518 try
516519 {
517520 var result = @delegate ( sourcePlayer , targetEntity , weapon , damage , shotOffset , bodyPart ) ;
518- weaponDamage ??= result ;
521+
522+ if ( result is bool )
523+ {
524+ cancel = true ;
525+ }
526+ else if ( uint . TryParse ( result , out uint newDamage ) )
527+ {
528+ weaponDamage ??= newDamage ;
529+ }
519530 }
520531 catch ( TargetInvocationException exception )
521532 {
@@ -534,6 +545,14 @@ public virtual void OnWeaponDamageEvent(IntPtr eventPointer, IPlayer sourcePlaye
534545 Alt . Core . Library . Server . Event_WeaponDamageEvent_SetDamageValue ( eventPointer , weaponDamage . Value ) ;
535546 }
536547 }
548+
549+ if ( cancel )
550+ {
551+ unsafe
552+ {
553+ Alt . Core . Library . Shared . Event_Cancel ( eventPointer ) ;
554+ }
555+ }
537556 }
538557
539558 public void OnPlayerChangeVehicleSeat ( IntPtr vehiclePointer , IntPtr playerPointer , byte oldSeat ,
0 commit comments