Skip to content

Commit 40e8587

Browse files
committed
cancelled_damage_send_frame_based_dmg for vehicles
1 parent e4faac6 commit 40e8587

File tree

1 file changed

+44
-15
lines changed

1 file changed

+44
-15
lines changed

Client/mods/deathmatch/logic/CClientGame.cpp

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

Comments
 (0)