@@ -74,12 +74,13 @@ CVector g_vecBulletFireEndPosition;
7474#define DOUBLECLICK_MOVE_THRESHOLD 10 .0f
7575
7676static constexpr long long TIME_DISCORD_UPDATE_RATE = 15000 ;
77+ static constexpr int CANCEL_DAMAGE_EVENT_INTERVAL = 1000 ;
7778
7879CClientGame::CClientGame (bool bLocalPlay) : m_ServerInfo(new CServerInfo())
7980{
8081 // Init the global var with ourself
8182 g_pClientGame = this ;
82-
83+
8384 // Packet handler
8485 m_pPacketHandler = new CPacketHandler ();
8586
@@ -4428,6 +4429,29 @@ bool CClientGame::ApplyPedDamageFromGame(eWeaponType weaponUsed, float fDamage,
44284429 }
44294430 pDamagedPed->GetGamePlayer ()->SetHealth (fPreviousHealth );
44304431 pDamagedPed->GetGamePlayer ()->SetArmor (fPreviousArmor );
4432+
4433+ if (GetTickCount64_ () - m_lastCancelDamageEventTime_Ped >= CANCEL_DAMAGE_EVENT_INTERVAL && weaponUsed != eWeaponType::WEAPONTYPE_DROWNING)
4434+ {
4435+ NetBitStreamInterface* bitStream = g_pNet->AllocateNetBitStream ();
4436+
4437+ bitStream->Write (pDamagedPed->GetID ());
4438+
4439+ SWeaponTypeSync weapon;
4440+ weapon.data .ucWeaponType = weaponUsed;
4441+ bitStream->Write (&weapon);
4442+
4443+ SFloatSync<8 , 10 > damage;
4444+ damage.data .fValue = fDamage ;
4445+ bitStream->Write (&damage);
4446+
4447+ bitStream->WriteString (m_pLuaManager->GetEvents ()->GetEventCancellingResourceName ());
4448+
4449+ g_pNet->SendPacket (PACKET_ID_CANCEL_DAMAGE_EVENT, bitStream, PACKET_PRIORITY_HIGH, PACKET_RELIABILITY_RELIABLE_ORDERED);
4450+ g_pNet->DeallocateNetBitStream (bitStream);
4451+
4452+ m_lastCancelDamageEventTime_Ped = GetTickCount64_ ();
4453+ }
4454+
44314455 return false ;
44324456 }
44334457
@@ -4787,6 +4811,28 @@ bool CClientGame::VehicleDamageHandler(CEntitySAInterface* pVehicleInterface, fl
47874811 if (!pClientVehicle->CallEvent (" onClientVehicleDamage" , Arguments, true ))
47884812 {
47894813 bAllowDamage = false ;
4814+
4815+ if (GetTickCount64_ () - m_lastCancelDamageEventTime_Vehicle >= CANCEL_DAMAGE_EVENT_INTERVAL)
4816+ {
4817+ NetBitStreamInterface* bitStream = g_pNet->AllocateNetBitStream ();
4818+
4819+ bitStream->Write (pClientVehicle->GetID ());
4820+
4821+ SWeaponTypeSync weapon;
4822+ weapon.data .ucWeaponType = weaponType;
4823+ bitStream->Write (&weapon);
4824+
4825+ SFloatSync<8 , 10 > damage;
4826+ damage.data .fValue = fLoss ;
4827+ bitStream->Write (&damage);
4828+
4829+ bitStream->WriteString (m_pLuaManager->GetEvents ()->GetEventCancellingResourceName ());
4830+
4831+ g_pNet->SendPacket (PACKET_ID_CANCEL_DAMAGE_EVENT, bitStream, PACKET_PRIORITY_HIGH, PACKET_RELIABILITY_RELIABLE_ORDERED);
4832+ g_pNet->DeallocateNetBitStream (bitStream);
4833+
4834+ m_lastCancelDamageEventTime_Vehicle = GetTickCount64_ ();
4835+ }
47904836 }
47914837 }
47924838
0 commit comments