@@ -259,10 +259,13 @@ bool CSharpResource::OnEvent(const alt::CEvent* ev) {
259259 }
260260 case alt::CEvent::Type::CHECKPOINT_EVENT: {
261261 auto entity = ((alt::CCheckpointEvent*) (ev))->GetEntity ();
262- OnCheckpointDelegate (((alt::CCheckpointEvent*) (ev))->GetTarget (),
263- GetEntityPointer (entity),
264- entity != nullptr ? entity->GetType () : alt::IBaseObject::Type::CHECKPOINT,
265- ((alt::CCheckpointEvent*) (ev))->GetState ());
262+ auto entityPtr = GetEntityPointer (entity);
263+ if (entity != nullptr && entityPtr != nullptr ) {
264+ OnCheckpointDelegate (((alt::CCheckpointEvent*) (ev))->GetTarget (),
265+ entityPtr,
266+ entity->GetType (),
267+ ((alt::CCheckpointEvent*) (ev))->GetState ());
268+ }
266269 break ;
267270 }
268271 case alt::CEvent::Type::CLIENT_SCRIPT_EVENT: {
@@ -280,20 +283,38 @@ bool CSharpResource::OnEvent(const alt::CEvent* ev) {
280283 }
281284 case alt::CEvent::Type::PLAYER_DAMAGE: {
282285 auto entity = ((alt::CPlayerDamageEvent*) (ev))->GetAttacker ();
283- OnPlayerDamageDelegate (((alt::CPlayerDamageEvent*) (ev))->GetTarget (),
284- GetEntityPointer (entity),
285- entity != nullptr ? entity->GetType () : alt::IBaseObject::Type::CHECKPOINT,
286- entity != nullptr ? entity->GetID () : (uint16_t ) 0 ,
287- ((alt::CPlayerDamageEvent*) (ev))->GetWeapon (),
288- ((alt::CPlayerDamageEvent*) (ev))->GetDamage ());
286+ auto entityPtr = GetEntityPointer (entity);
287+ if (entity != nullptr && entityPtr != nullptr ) {
288+ OnPlayerDamageDelegate (((alt::CPlayerDamageEvent*) (ev))->GetTarget (),
289+ entityPtr,
290+ entity->GetType (),
291+ entity->GetID (),
292+ ((alt::CPlayerDamageEvent*) (ev))->GetWeapon (),
293+ ((alt::CPlayerDamageEvent*) (ev))->GetDamage ());
294+ } else {
295+ OnPlayerDamageDelegate (((alt::CPlayerDamageEvent*) (ev))->GetTarget (),
296+ nullptr ,
297+ alt::IBaseObject::Type::BLIP,// These are placeholders for none ptr type and are ignored on c# side
298+ 0 ,
299+ ((alt::CPlayerDamageEvent*) (ev))->GetWeapon (),
300+ ((alt::CPlayerDamageEvent*) (ev))->GetDamage ());
301+ }
289302 break ;
290303 }
291304 case alt::CEvent::Type::PLAYER_DEATH: {
292305 auto entity = ((alt::CPlayerDeathEvent*) (ev))->GetKiller ();
293- OnPlayerDeathDelegate (((alt::CPlayerDeathEvent*) (ev))->GetTarget (),
294- GetEntityPointer (entity),
295- entity != nullptr ? entity->GetType () : alt::IBaseObject::Type::CHECKPOINT,
296- ((alt::CPlayerDeathEvent*) (ev))->GetWeapon ());
306+ auto entityPtr = GetEntityPointer (entity);
307+ if (entity != nullptr && entityPtr != nullptr ) {
308+ OnPlayerDeathDelegate (((alt::CPlayerDeathEvent*) (ev))->GetTarget (),
309+ entityPtr,
310+ entity->GetType (),
311+ ((alt::CPlayerDeathEvent*) (ev))->GetWeapon ());
312+ } else {
313+ OnPlayerDeathDelegate (((alt::CPlayerDeathEvent*) (ev))->GetTarget (),
314+ nullptr ,
315+ alt::IBaseObject::Type::BLIP,
316+ ((alt::CPlayerDeathEvent*) (ev))->GetWeapon ());
317+ }
297318 break ;
298319 }
299320 case alt::CEvent::Type::PLAYER_DISCONNECT: {
@@ -359,7 +380,7 @@ bool CSharpResource::OnEvent(const alt::CEvent* ev) {
359380 case alt::CEvent::Type::COLSHAPE_EVENT: {
360381 auto entity = ((alt::CColShapeEvent*) (ev))->GetEntity ();
361382 auto entityPointer = GetEntityPointer (entity);
362- if (entityPointer != nullptr ) {
383+ if (entity != nullptr && entityPointer != nullptr ) {
363384 ColShapeDelegate (((alt::CColShapeEvent*) (ev))->GetTarget (),
364385 entityPointer,
365386 entity->GetType (),
0 commit comments