Skip to content

Commit cc37301

Browse files
committed
Add attacker
1 parent 9775262 commit cc37301

File tree

4 files changed

+17
-1
lines changed

4 files changed

+17
-1
lines changed

Client/mods/deathmatch/logic/CClientGame.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4436,6 +4436,10 @@ bool CClientGame::ApplyPedDamageFromGame(eWeaponType weaponUsed, float fDamage,
44364436

44374437
bitStream->Write(pDamagedPed->GetID());
44384438

4439+
bitStream->WriteBit(pInflictingEntity != nullptr);
4440+
if (pInflictingEntity)
4441+
bitStream->Write(pInflictingEntity->GetID());
4442+
44394443
SWeaponTypeSync weapon;
44404444
weapon.data.ucWeaponType = weaponUsed;
44414445
bitStream->Write(&weapon);

Server/mods/deathmatch/logic/CGame.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1657,7 +1657,7 @@ void CGame::AddBuiltInEvents()
16571657
m_Events.AddEvent("onPlayerChangesProtectedData", "element, key, value", nullptr, false);
16581658
m_Events.AddEvent("onPlayerChangesWorldSpecialProperty", "property, enabled", nullptr, false);
16591659
m_Events.AddEvent("onPlayerTeleport", "previousX, previousY, previousZ, currentX, currentY, currentZ", nullptr, false);
1660-
m_Events.AddEvent("onDamageEventCancelled", "damagedEntity, weapon, damage, resourceName", nullptr, false);
1660+
m_Events.AddEvent("onDamageEventCancelled", "attacker, damagedEntity, weapon, damage, resourceName", nullptr, false);
16611661

16621662
// Ped events
16631663
m_Events.AddEvent("onPedVehicleEnter", "vehicle, seat, jacked", NULL, false);
@@ -4224,7 +4224,14 @@ void CGame::Packet_CancelDamageEvent(CDamageCancelEventPacket& packet) noexcept
42244224
if (!damagedEntity)
42254225
return;
42264226

4227+
CElement* attackerEntity = CElementIDs::GetElement(packet.GetAtackerEntityID());
4228+
42274229
CLuaArguments arguments;
4230+
if (attackerEntity)
4231+
arguments.PushElement(attackerEntity);
4232+
else
4233+
arguments.PushNil();
4234+
42284235
arguments.PushElement(damagedEntity);
42294236
arguments.PushNumber(packet.GetWeaponType());
42304237
arguments.PushNumber(packet.GetDamage());

Server/mods/deathmatch/logic/packets/CDamageCancelEventPacket.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ bool CDamageCancelEventPacket::Read(NetBitStreamInterface& bitStream) noexcept
1616
{
1717
bitStream.Read(m_damagedEntityID);
1818

19+
if (bitStream.ReadBit())
20+
bitStream.Read(m_atackerEntityID);
21+
1922
SWeaponTypeSync weaponType;
2023
bitStream.Read(&weaponType);
2124
m_weaponType = static_cast<eWeaponType>(weaponType.data.ucWeaponType);

Server/mods/deathmatch/logic/packets/CDamageCancelEventPacket.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@ class CDamageCancelEventPacket final : public CPacket
2525
bool Read(NetBitStreamInterface& bitStream) noexcept;
2626

2727
ElementID GetDamagedEntityID() const noexcept { return m_damagedEntityID; }
28+
ElementID GetAtackerEntityID() const noexcept { return m_atackerEntityID; }
2829
eWeaponType GetWeaponType() const noexcept { return m_weaponType; }
2930
float GetDamage() const noexcept { return m_damage; }
3031
std::string GetResourceName() const noexcept { return m_resourceName; }
3132

3233
private:
3334
std::string m_resourceName{};
3435
ElementID m_damagedEntityID;
36+
ElementID m_atackerEntityID{INVALID_ELEMENT_ID};
3537
float m_damage;
3638
eWeaponType m_weaponType;
3739
};

0 commit comments

Comments
 (0)