From d7b5ed9063fcf1bad98d5ccd0813d311ea439de1 Mon Sep 17 00:00:00 2001 From: ColombuxMaximus Date: Sun, 29 Jun 2025 22:29:31 +0200 Subject: [PATCH 1/3] Update CGame.cpp --- Server/mods/deathmatch/logic/CGame.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index 16e7b7312bd..ddae77ff193 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -1641,7 +1641,7 @@ void CGame::AddBuiltInEvents() m_Events.AddEvent("onPlayerResourceStart", "resource", NULL, false); m_Events.AddEvent("onPlayerProjectileCreation", "weaponType, posX, posY, posZ, force, target, rotX, rotY, rotZ, velX, velY, velZ", nullptr, false); m_Events.AddEvent("onPlayerDetonateSatchels", "", nullptr, false); - m_Events.AddEvent("onPlayerTriggerEventThreshold", "", nullptr, false); + m_Events.AddEvent("onPlayerTriggerEventThreshold", "eventName", nullptr, false); m_Events.AddEvent("onPlayerTeamChange", "oldTeam, newTeam", nullptr, false); m_Events.AddEvent("onPlayerTriggerInvalidEvent", "eventName, isAdded, isRemote", nullptr, false); m_Events.AddEvent("onPlayerChangesProtectedData", "element, key, value", nullptr, false); @@ -2680,7 +2680,7 @@ void CGame::Packet_LuaEvent(CLuaEventPacket& Packet) m_pScriptDebugging->LogError(NULL, "Client (%s) triggered serverside event %s, but event is not added serverside", pCaller->GetNick(), szName); } - RegisterClientTriggeredEventUsage(pCaller); + RegisterClientTriggeredEventUsage(pCaller, szName); } } @@ -4982,7 +4982,7 @@ void CGame::HandleCrashDumpEncryption() #endif } -void CGame::RegisterClientTriggeredEventUsage(CPlayer* pPlayer) +void CGame::RegisterClientTriggeredEventUsage(CPlayer* pPlayer, const char* szEventName) { if (!pPlayer || !pPlayer->IsPlayer() || pPlayer->IsBeingDeleted()) return; @@ -4994,8 +4994,13 @@ void CGame::RegisterClientTriggeredEventUsage(CPlayer* pPlayer) m_mapClientTriggeredEvents[pPlayer].m_llTicks = now; // Only increment if we haven't reached the interval time already - if (now - m_mapClientTriggeredEvents[pPlayer].m_llTicks <= m_iClientTriggeredEventsIntervalMs) - m_mapClientTriggeredEvents[pPlayer].m_uiCounter++; + ClientTriggeredEventsInfo& info = m_mapClientTriggeredEvents[pPlayer]; + + if (now - info.m_llTicks <= m_iClientTriggeredEventsIntervalMs) + info.m_uiCounter++; + + if (szEventName) + info.m_strLastEventName = szEventName; } void CGame::ProcessClientTriggeredEventSpam() @@ -5010,7 +5015,11 @@ void CGame::ProcessClientTriggeredEventSpam() if (GetTickCount64_() - data.m_llTicks >= m_iClientTriggeredEventsIntervalMs) { if (data.m_uiCounter > m_iMaxClientTriggeredEventsPerInterval) - player->CallEvent("onPlayerTriggerEventThreshold", {}); + { + CLuaArguments args; + args.PushString(data.m_strLastEventName.c_str()); + player->CallEvent("onPlayerTriggerEventThreshold", args); + } remove = true; } From 8a95e406a47e7fcaafa2c1c7bc40575bb8368721 Mon Sep 17 00:00:00 2001 From: ColombuxMaximus Date: Sun, 29 Jun 2025 22:30:14 +0200 Subject: [PATCH 2/3] Update CGame.h --- Server/mods/deathmatch/logic/CGame.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CGame.h b/Server/mods/deathmatch/logic/CGame.h index bffd2970e37..8a84594f892 100644 --- a/Server/mods/deathmatch/logic/CGame.h +++ b/Server/mods/deathmatch/logic/CGame.h @@ -526,7 +526,7 @@ class CGame static void PlayerCompleteConnect(CPlayer* pPlayer); void ProcessClientTriggeredEventSpam(); - void RegisterClientTriggeredEventUsage(CPlayer* pPlayer); + void RegisterClientTriggeredEventUsage(CPlayer* pPlayer, const char* szEventName); // Technically, this could be put somewhere else. It's a callback function // which the voice server library will call to send out data. @@ -687,6 +687,7 @@ class CGame { long long m_llTicks = 0; uint32_t m_uiCounter = 0; + std::string m_strLastEventName; }; std::map m_mapClientTriggeredEvents; From b3f85596c19f2281cd1e4617fdab751d507b1a5e Mon Sep 17 00:00:00 2001 From: ColombuxMaximus Date: Tue, 1 Jul 2025 15:49:59 +0200 Subject: [PATCH 3/3] Update CGame.cpp --- Server/mods/deathmatch/logic/CGame.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index ddae77ff193..6b114ed01f0 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -5017,7 +5017,7 @@ void CGame::ProcessClientTriggeredEventSpam() if (data.m_uiCounter > m_iMaxClientTriggeredEventsPerInterval) { CLuaArguments args; - args.PushString(data.m_strLastEventName.c_str()); + args.PushString(data.m_strLastEventName); player->CallEvent("onPlayerTriggerEventThreshold", args); }