@@ -4879,28 +4879,57 @@ bool CClientGame::VehicleDamageHandler(CEntitySAInterface* pVehicleInterface, fl
48794879
48804880 if (m_triggerEventDamageCancelledForVehicles && GetTickCount64_ () - pClientVehicle->m_lastEventDamageCancelledTime >= g_TickRateSettings.cancelledDamageInterval )
48814881 {
4882- NetBitStreamInterface* bitStream = g_pNet-> AllocateNetBitStream () ;
4882+ bool sendPacket = true ;
48834883
4884- bitStream->Write (pClientVehicle->GetID ());
4884+ if (m_triggerEventDamageCancelledForDamageEveryFrame)
4885+ {
4886+ switch (weaponType)
4887+ {
4888+ case WEAPONTYPE_FLAMETHROWER:
4889+ case WEAPONTYPE_MINIGUN:
4890+ case WEAPONTYPE_MOLOTOV:
4891+ {
4892+ sendPacket = false ;
4893+ break ;
4894+ }
4895+ case WEAPONTYPE_CHAINSAW:
4896+ {
4897+ if (pClientAttacker && pClientAttacker->GetType () == eClientEntityType::CCLIENTPED || pClientAttacker->GetType () == eClientEntityType::CCLIENTPLAYER)
4898+ {
4899+ CClientPed* attackerPed = static_cast <CClientPed*>(pClientAttacker);
4900+ if (!attackerPed->m_pPlayerPed || !attackerPed->m_pPlayerPed ->IsPedCuttingWithChainsaw ())
4901+ sendPacket = false ;
4902+ }
4903+ break ;
4904+ }
4905+ }
4906+ }
4907+
4908+ if (sendPacket)
4909+ {
4910+ NetBitStreamInterface* bitStream = g_pNet->AllocateNetBitStream ();
4911+
4912+ bitStream->Write (pClientVehicle->GetID ());
48854913
4886- bitStream->WriteBit (pClientAttacker != nullptr );
4887- if (pClientAttacker)
4888- bitStream->Write (pClientAttacker->GetID ());
4914+ bitStream->WriteBit (pClientAttacker != nullptr );
4915+ if (pClientAttacker)
4916+ bitStream->Write (pClientAttacker->GetID ());
48894917
4890- SWeaponTypeSync weapon;
4891- weapon.data .ucWeaponType = weaponType;
4892- bitStream->Write (&weapon);
4918+ SWeaponTypeSync weapon;
4919+ weapon.data .ucWeaponType = weaponType;
4920+ bitStream->Write (&weapon);
48934921
4894- SFloatSync<8 , 10 > damage;
4895- damage.data .fValue = fLoss ;
4896- bitStream->Write (&damage);
4922+ SFloatSync<8 , 10 > damage;
4923+ damage.data .fValue = fLoss ;
4924+ bitStream->Write (&damage);
48974925
4898- bitStream->WriteString (m_pLuaManager->GetEvents ()->GetEventCancellingResourceName ());
4926+ bitStream->WriteString (m_pLuaManager->GetEvents ()->GetEventCancellingResourceName ());
48994927
4900- g_pNet->SendPacket (PACKET_ID_CANCEL_DAMAGE_EVENT, bitStream, PACKET_PRIORITY_HIGH, PACKET_RELIABILITY_RELIABLE_ORDERED);
4901- g_pNet->DeallocateNetBitStream (bitStream);
4928+ g_pNet->SendPacket (PACKET_ID_CANCEL_DAMAGE_EVENT, bitStream, PACKET_PRIORITY_HIGH, PACKET_RELIABILITY_RELIABLE_ORDERED);
4929+ g_pNet->DeallocateNetBitStream (bitStream);
49024930
4903- pClientVehicle->m_lastEventDamageCancelledTime = GetTickCount64_ ();
4931+ pClientVehicle->m_lastEventDamageCancelledTime = GetTickCount64_ ();
4932+ }
49044933 }
49054934 }
49064935 }
0 commit comments