@@ -74,12 +74,13 @@ CVector g_vecBulletFireEndPosition;
74
74
#define DOUBLECLICK_MOVE_THRESHOLD 10 .0f
75
75
76
76
static constexpr long long TIME_DISCORD_UPDATE_RATE = 15000 ;
77
+ static constexpr int CANCEL_DAMAGE_EVENT_INTERVAL = 1000 ;
77
78
78
79
CClientGame::CClientGame (bool bLocalPlay) : m_ServerInfo(new CServerInfo())
79
80
{
80
81
// Init the global var with ourself
81
82
g_pClientGame = this ;
82
-
83
+
83
84
// Packet handler
84
85
m_pPacketHandler = new CPacketHandler ();
85
86
@@ -4428,6 +4429,29 @@ bool CClientGame::ApplyPedDamageFromGame(eWeaponType weaponUsed, float fDamage,
4428
4429
}
4429
4430
pDamagedPed->GetGamePlayer ()->SetHealth (fPreviousHealth );
4430
4431
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
+
4431
4455
return false ;
4432
4456
}
4433
4457
@@ -4787,6 +4811,28 @@ bool CClientGame::VehicleDamageHandler(CEntitySAInterface* pVehicleInterface, fl
4787
4811
if (!pClientVehicle->CallEvent (" onClientVehicleDamage" , Arguments, true ))
4788
4812
{
4789
4813
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
+ }
4790
4836
}
4791
4837
}
4792
4838
0 commit comments