Skip to content

Commit e4faac6

Browse files
committed
New setting
1 parent bd14174 commit e4faac6

File tree

11 files changed

+36
-13
lines changed

11 files changed

+36
-13
lines changed

Client/mods/deathmatch/logic/CClientGame.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4444,7 +4444,7 @@ bool CClientGame::ApplyPedDamageFromGame(eWeaponType weaponUsed, float fDamage,
44444444
pDamagedPed->GetGamePlayer()->SetHealth(fPreviousHealth);
44454445
pDamagedPed->GetGamePlayer()->SetArmor(fPreviousArmor);
44464446

4447-
if (GetTickCount64_() - pDamagedPed->m_lastEventDamageCancelledTime >= g_TickRateSettings.cancelledDamageInterval)
4447+
if (m_triggerEventDamageCancelledForPeds && GetTickCount64_() - pDamagedPed->m_lastEventDamageCancelledTime >= g_TickRateSettings.cancelledDamageInterval)
44484448
{
44494449
bool sendPacket = true;
44504450

Client/mods/deathmatch/logic/CClientGame.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -710,9 +710,10 @@ class CClientGame
710710
void PedStepHandler(CPedSAInterface* pPed, bool bFoot);
711711
void VehicleWeaponHitHandler(SVehicleWeaponHitEvent& event);
712712

713-
void SetEventDamageCancelledSettings(bool calledForVehicles, bool calledForDmgEveryFrame) noexcept
713+
void SetEventDamageCancelledSettings(bool calledForVehicles, bool calledForPeds, bool calledForDmgEveryFrame) noexcept
714714
{
715715
m_triggerEventDamageCancelledForVehicles = calledForVehicles;
716+
m_triggerEventDamageCancelledForPeds = calledForPeds;
716717
m_triggerEventDamageCancelledForDamageEveryFrame = calledForDmgEveryFrame;
717718
}
718719

@@ -930,8 +931,9 @@ class CClientGame
930931

931932
long long m_timeLastDiscordStateUpdate;
932933

933-
bool m_triggerEventDamageCancelledForVehicles;
934-
bool m_triggerEventDamageCancelledForDamageEveryFrame;
934+
bool m_triggerEventDamageCancelledForVehicles{false};
935+
bool m_triggerEventDamageCancelledForPeds{false};
936+
bool m_triggerEventDamageCancelledForDamageEveryFrame{false};
935937
};
936938

937939
extern CClientGame* g_pClientGame;

Client/mods/deathmatch/logic/CPacketHandler.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5507,10 +5507,13 @@ void CPacketHandler::Packet_SyncSettings(NetBitStreamInterface& bitStream)
55075507
bool triggerEventDamageCancelledForVehicles;
55085508
bitStream.ReadBit(triggerEventDamageCancelledForVehicles);
55095509

5510+
bool trigggerEventDamageCancelledForPeds;
5511+
bitStream.ReadBit(trigggerEventDamageCancelledForPeds);
5512+
55105513
bool triggerEventDamageCancelledForDamageEveryFrame;
55115514
bitStream.ReadBit(triggerEventDamageCancelledForDamageEveryFrame);
55125515

5513-
g_pClientGame->SetEventDamageCancelledSettings(triggerEventDamageCancelledForVehicles, triggerEventDamageCancelledForDamageEveryFrame);
5516+
g_pClientGame->SetEventDamageCancelledSettings(triggerEventDamageCancelledForVehicles, trigggerEventDamageCancelledForPeds, triggerEventDamageCancelledForDamageEveryFrame);
55145517

55155518
SMiscGameSettings miscGameSettings;
55165519
miscGameSettings.bUseAltPulseOrder = (ucUseAltPulseOrder != 0);

Server/mods/deathmatch/editor.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,10 @@
304304
Values: 0 - Off, 1 - Enabled. Default: 0 -->
305305
<cancelled_damage_for_vehicles>0</cancelled_damage_for_vehicles>
306306

307+
<!-- This parameter specifies whether the onDamageEventCancelled event should be triggered for peds/players. If you are naturally cancelling onClientPedDamage/onClientPlayerDamage event, it is recommended to leave this parameter set to 0 to avoid unnecessary event flooding.
308+
Values: 0 - Off, 1 - Enabled. Default: 0 -->
309+
<cancelled_damage_for_peds>0</cancelled_damage_for_peds>
310+
307311
<!-- This parameter specifies whether the onDamageEventCancelled event should be triggered when a ped takes damage every frame (drowning, burning, fire extinguisher, spraycan, runover by car, minigun, chainsaw cutting, teargas).
308312
Values: 0 - Off, 1 - Enabled. Default: 1 -->
309313
<cancelled_damage_send_frame_based_dmg>1</cancelled_damage_send_frame_based_dmg>

Server/mods/deathmatch/local.conf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,10 @@
310310
Values: 0 - Off, 1 - Enabled. Default: 0 -->
311311
<cancelled_damage_for_vehicles>0</cancelled_damage_for_vehicles>
312312

313+
<!-- This parameter specifies whether the onDamageEventCancelled event should be triggered for peds/players. If you are naturally cancelling onClientPedDamage/onClientPlayerDamage event, it is recommended to leave this parameter set to 0 to avoid unnecessary event flooding.
314+
Values: 0 - Off, 1 - Enabled. Default: 0 -->
315+
<cancelled_damage_for_peds>0</cancelled_damage_for_peds>
316+
313317
<!-- This parameter specifies whether the onDamageEventCancelled event should be triggered when a ped takes damage every frame (drowning, burning, fire extinguisher, spraycan, runover by car, minigun, chainsaw cutting, teargas).
314318
Values: 0 - Off, 1 - Enabled. Default: 1 -->
315319
<cancelled_damage_send_frame_based_dmg>1</cancelled_damage_send_frame_based_dmg>

Server/mods/deathmatch/logic/CGame.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4801,7 +4801,7 @@ void CGame::SendSyncSettings(CPlayer* pPlayer)
48014801
const SEVentDamageCancelledSettings& damageCancelledSettings = m_pMainConfig->GetEventDamageCancelledSettings();
48024802

48034803
CSyncSettingsPacket packet(weaponTypesUsingBulletSync, ucVehExtrapolateEnabled, sVehExtrapolateBaseMs, sVehExtrapolatePercent, sVehExtrapolateMaxMs,
4804-
ucUseAltPulseOrder, ucAllowFastSprintFix, ucAllowDrivebyAnimFix, ucAllowShotgunDamageFix, multiCommandHandlerPolicy, damageCancelledSettings.triggerOnVehicleDamage == 1, damageCancelledSettings.triggerForDamageCalledEveryFrame == 1);
4804+
ucUseAltPulseOrder, ucAllowFastSprintFix, ucAllowDrivebyAnimFix, ucAllowShotgunDamageFix, multiCommandHandlerPolicy, damageCancelledSettings.triggerOnVehicleDamage == 1, damageCancelledSettings.triggerOnPedDamage == 1, damageCancelledSettings.triggerForDamageCalledEveryFrame == 1);
48054805

48064806
if (pPlayer)
48074807
pPlayer->Send(packet);

Server/mods/deathmatch/logic/CMainConfig.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,7 @@ bool CMainConfig::Load()
541541
m_allowMultiCommandHandlers = Clamp(0, m_allowMultiCommandHandlers, 2);
542542

543543
GetInteger(m_pRootNode, "cancelled_damage_for_vehicles", m_eventDamageCancelledSettings.triggerOnVehicleDamage);
544+
GetInteger(m_pRootNode, "cancelled_damage_for_peds", m_eventDamageCancelledSettings.triggerOnPedDamage);
544545
GetInteger(m_pRootNode, "cancelled_damage_send_frame_based_dmg", m_eventDamageCancelledSettings.triggerForDamageCalledEveryFrame);
545546

546547
ApplyNetOptions();
@@ -1541,7 +1542,8 @@ const std::vector<SIntSetting>& CMainConfig::GetIntSettingList()
15411542
{true, true, 0, 1, 1, "resource_client_file_checks", &m_checkResourceClientFiles, nullptr},
15421543
{true, true, 0, 1, 2, "allow_multi_command_handlers", &m_allowMultiCommandHandlers, &CMainConfig::OnSettingChange},
15431544
{true, true, 0, 0, 1, "cancelled_damage_for_vehicles", &m_eventDamageCancelledSettings.triggerOnVehicleDamage, &CMainConfig::OnSettingChange},
1544-
{true, true, 0, 1, 1, "cancelled_damage_send_frame_based_dmg", &m_eventDamageCancelledSettings.triggerForDamageCalledEveryFrame, &CMainConfig::OnSettingChange},
1545+
{true, true, 0, 0, 1, "cancelled_damage_for_peds", &m_eventDamageCancelledSettings.triggerOnPedDamage, &CMainConfig::OnSettingChange},
1546+
{true, true, 0, 0, 1, "cancelled_damage_send_frame_based_dmg", &m_eventDamageCancelledSettings.triggerForDamageCalledEveryFrame, &CMainConfig::OnSettingChange},
15451547
};
15461548

15471549
static std::vector<SIntSetting> settingsList;

Server/mods/deathmatch/logic/CMainConfig.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ struct SIntSetting
4242
struct SEVentDamageCancelledSettings
4343
{
4444
int triggerOnVehicleDamage{false};
45+
int triggerOnPedDamage{false};
4546
int triggerForDamageCalledEveryFrame{true};
4647
};
4748

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
CSyncSettingsPacket::CSyncSettingsPacket(const std::set<eWeaponType>& weaponTypesUsingBulletSync, uchar ucVehExtrapolateEnabled, short sVehExtrapolateBaseMs,
1717
short sVehExtrapolatePercent, short sVehExtrapolateMaxMs, uchar ucUseAltPulseOrder, uchar ucAllowFastSprintFix,
18-
uchar ucAllowDrivebyAnimationFix, uchar ucAllowShotgunDamageFix, std::uint8_t multiCommandHandlerPolicy, bool triggerDamageEventCancelledForVehicles, bool triggerDamageEventCancelledForDamageEveryFrame)
18+
uchar ucAllowDrivebyAnimationFix, uchar ucAllowShotgunDamageFix, std::uint8_t multiCommandHandlerPolicy, bool triggerDamageEventCancelledForVehicles, bool triggerDamageEventCancelledForPeds, bool triggerDamageEventCancelledForDamageEveryFrame)
1919
{
2020
m_weaponTypesUsingBulletSync = weaponTypesUsingBulletSync;
2121
m_ucVehExtrapolateEnabled = ucVehExtrapolateEnabled;
@@ -28,6 +28,7 @@ CSyncSettingsPacket::CSyncSettingsPacket(const std::set<eWeaponType>& weaponType
2828
m_ucAllowShotgunDamageFix = ucAllowShotgunDamageFix;
2929
m_multiCommandHandlerPolicy = multiCommandHandlerPolicy;
3030
m_triggerDamageEventCancelledForVehicles = triggerDamageEventCancelledForVehicles;
31+
m_triggerEventDamageCancelledForPeds = triggerDamageEventCancelledForPeds;
3132
m_triggerDamageEventCancelledForDamageEveryFrame = triggerDamageEventCancelledForDamageEveryFrame;
3233
}
3334

@@ -56,6 +57,7 @@ bool CSyncSettingsPacket::Write(NetBitStreamInterface& BitStream) const
5657
BitStream.Write(m_ucAllowShotgunDamageFix);
5758
BitStream.Write(m_multiCommandHandlerPolicy);
5859
BitStream.WriteBit(m_triggerDamageEventCancelledForVehicles);
60+
BitStream.WriteBit(m_triggerEventDamageCancelledForPeds);
5961
BitStream.WriteBit(m_triggerDamageEventCancelledForDamageEveryFrame);
6062
return true;
6163
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class CSyncSettingsPacket final : public CPacket
1919
CSyncSettingsPacket(){};
2020
CSyncSettingsPacket(const std::set<eWeaponType>& weaponTypesUsingBulletSync, uchar ucVehExtrapolateEnabled, short sVehExtrapolateBaseMs,
2121
short sVehExtrapolatePercent, short sVehExtrapolateMaxMs, uchar ucUseAltPulseOrder, uchar ucAllowFastSprintFix,
22-
uchar ucAllowDrivebyAnimationFix, uchar ucAllowShotgunDamageFix, std::uint8_t multiCommandHandlerPolicy, bool triggerDamageEventCancelledForVehicles, bool triggerDamageEventCancelledForDamageEveryFrame);
22+
uchar ucAllowDrivebyAnimationFix, uchar ucAllowShotgunDamageFix, std::uint8_t multiCommandHandlerPolicy, bool triggerDamageEventCancelledForVehicles, bool triggerDamageEventCancelledForPeds, bool triggerDamageEventCancelledForDamageEveryFrame);
2323

2424
ePacketID GetPacketID() const { return PACKET_ID_SYNC_SETTINGS; };
2525
unsigned long GetFlags() const { return PACKET_HIGH_PRIORITY | PACKET_RELIABLE | PACKET_SEQUENCED; };
@@ -37,6 +37,7 @@ class CSyncSettingsPacket final : public CPacket
3737
uchar m_ucAllowDrivebyAnimationFix;
3838
uchar m_ucAllowShotgunDamageFix;
3939
std::uint8_t m_multiCommandHandlerPolicy;
40-
bool m_triggerDamageEventCancelledForVehicles;
41-
bool m_triggerDamageEventCancelledForDamageEveryFrame;
40+
bool m_triggerDamageEventCancelledForVehicles{};
41+
bool m_triggerEventDamageCancelledForPeds{};
42+
bool m_triggerDamageEventCancelledForDamageEveryFrame{};
4243
};

0 commit comments

Comments
 (0)