33using System . Runtime . Loader ;
44using System . Threading . Tasks ;
55using AltV . Net . Async . Events ;
6+ using AltV . Net . Data ;
67using AltV . Net . Elements . Entities ;
78using AltV . Net . Elements . Args ;
89using AltV . Net . Native ;
@@ -26,6 +27,12 @@ public class AsyncModule : Module
2627 internal readonly AsyncEventHandler < PlayerDeadAsyncDelegate > PlayerDeadAsyncEventHandler =
2728 new AsyncEventHandler < PlayerDeadAsyncDelegate > ( ) ;
2829
30+ internal readonly AsyncEventHandler < ExplosionAsyncDelegate > ExplosionAsyncEventHandler =
31+ new AsyncEventHandler < ExplosionAsyncDelegate > ( ) ;
32+
33+ internal readonly AsyncEventHandler < WeaponDamageAsyncDelegate > WeaponDamageAsyncEventHandler =
34+ new AsyncEventHandler < WeaponDamageAsyncDelegate > ( ) ;
35+
2936 internal readonly AsyncEventHandler < PlayerChangeVehicleSeatAsyncDelegate >
3037 PlayerChangeVehicleSeatAsyncEventHandler =
3138 new AsyncEventHandler < PlayerChangeVehicleSeatAsyncDelegate > ( ) ;
@@ -74,7 +81,8 @@ public AsyncModule(IServer server, AssemblyLoadContext assemblyLoadContext, Nati
7481 IBaseObjectPool < IBlip > blipPool ,
7582 IBaseObjectPool < ICheckpoint > checkpointPool ,
7683 IBaseObjectPool < IVoiceChannel > voiceChannelPool ,
77- IBaseObjectPool < IColShape > colShapePool ) : base ( server , assemblyLoadContext , moduleResource , baseBaseObjectPool ,
84+ IBaseObjectPool < IColShape > colShapePool ) : base ( server , assemblyLoadContext , moduleResource ,
85+ baseBaseObjectPool ,
7886 baseEntityPool , playerPool , vehiclePool , blipPool ,
7987 checkpointPool , voiceChannelPool , colShapePool )
8088 {
@@ -96,23 +104,23 @@ public override void OnPlayerConnectEvent(IPlayer player, string reason)
96104 Task . Run ( ( ) => PlayerConnectAsyncEventHandler . CallAsyncWithoutTask ( @delegate => @delegate ( player , reason ) ) ) ;
97105 }
98106
99- public override void OnPlayerDamageEvent ( IPlayer player , IEntity attacker , uint weapon , ushort damage )
107+ public override void OnExplosionEvent ( IPlayer sourcePlayer , ExplosionType explosionType , Position position ,
108+ uint explosionFx )
100109 {
101- base . OnPlayerDamageEvent ( player , attacker , weapon , damage ) ;
102- if ( ! PlayerDamageAsyncEventHandler . HasEvents ( ) ) return ;
103- var oldHealth = player . Health ;
104- var oldArmor = player . Armor ;
110+ base . OnExplosionEvent ( sourcePlayer , explosionType , position , explosionFx ) ;
111+ if ( ! ExplosionAsyncEventHandler . HasEvents ( ) ) return ;
105112 Task . Run ( ( ) =>
106- PlayerDamageAsyncEventHandler . CallAsyncWithoutTask ( @delegate =>
107- @delegate ( player , attacker , oldHealth , oldArmor , weapon , damage ) ) ) ;
113+ ExplosionAsyncEventHandler . CallAsyncWithoutTask ( @delegate =>
114+ @delegate ( sourcePlayer , explosionType , position , explosionFx ) ) ) ;
108115 }
109116
110- public override void OnPlayerDeathEvent ( IPlayer player , IEntity killer , uint weapon )
117+ public override void OnWeaponDamageEvent ( IPlayer sourcePlayer , IEntity targetEntity , uint weapon , ushort damage ,
118+ Position shotOffset , BodyPart bodyPart )
111119 {
112- base . OnPlayerDeathEvent ( player , killer , weapon ) ;
113- if ( ! PlayerDeadAsyncEventHandler . HasEvents ( ) ) return ;
114- Task . Run ( ( ) =>
115- PlayerDeadAsyncEventHandler . CallAsyncWithoutTask ( @delegate => @delegate ( player , killer , weapon ) ) ) ;
120+ base . OnWeaponDamageEvent ( sourcePlayer , targetEntity , weapon , damage , shotOffset , bodyPart ) ;
121+ if ( ! WeaponDamageAsyncEventHandler . HasEvents ( ) ) return ;
122+ Task . Run ( ( ) => WeaponDamageAsyncEventHandler . CallAsyncWithoutTask ( @delegate =>
123+ @delegate ( sourcePlayer , targetEntity , weapon , damage , shotOffset , bodyPart ) ) ) ;
116124 }
117125
118126 public override void OnPlayerChangeVehicleSeatEvent ( IVehicle vehicle , IPlayer player , byte oldSeat ,
0 commit comments