Skip to content

Commit c1357ed

Browse files
committed
make WeaponDamageDelegate dynamic return
1 parent a82d526 commit c1357ed

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

api/AltV.Net/Core.Events.cs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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,

api/AltV.Net/Events/Events.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public delegate void PlayerHealDelegate(IPlayer target, ushort oldHealth, ushort
5959
public delegate bool ExplosionDelegate(IPlayer player, ExplosionType explosionType, Position position,
6060
uint explosionFx, IEntity targetEntity);
6161

62-
public delegate uint WeaponDamageDelegate(IPlayer player, IEntity target, uint weapon, ushort damage,
62+
public delegate dynamic WeaponDamageDelegate(IPlayer player, IEntity target, uint weapon, ushort damage,
6363
Position shotOffset, BodyPart bodyPart);
6464

6565
public delegate void VehicleDestroyDelegate(IVehicle vehicle);

0 commit comments

Comments
 (0)