Skip to content

Commit 76d7764

Browse files
Add eventName to onPlayerTriggerEventThreshold (#4271)
* Update CGame.cpp * Update CGame.h * Update CGame.cpp
1 parent 892beb0 commit 76d7764

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

Server/mods/deathmatch/logic/CGame.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1641,7 +1641,7 @@ void CGame::AddBuiltInEvents()
16411641
m_Events.AddEvent("onPlayerResourceStart", "resource", NULL, false);
16421642
m_Events.AddEvent("onPlayerProjectileCreation", "weaponType, posX, posY, posZ, force, target, rotX, rotY, rotZ, velX, velY, velZ", nullptr, false);
16431643
m_Events.AddEvent("onPlayerDetonateSatchels", "", nullptr, false);
1644-
m_Events.AddEvent("onPlayerTriggerEventThreshold", "", nullptr, false);
1644+
m_Events.AddEvent("onPlayerTriggerEventThreshold", "eventName", nullptr, false);
16451645
m_Events.AddEvent("onPlayerTeamChange", "oldTeam, newTeam", nullptr, false);
16461646
m_Events.AddEvent("onPlayerTriggerInvalidEvent", "eventName, isAdded, isRemote", nullptr, false);
16471647
m_Events.AddEvent("onPlayerChangesProtectedData", "element, key, value", nullptr, false);
@@ -2680,7 +2680,7 @@ void CGame::Packet_LuaEvent(CLuaEventPacket& Packet)
26802680
m_pScriptDebugging->LogError(NULL, "Client (%s) triggered serverside event %s, but event is not added serverside", pCaller->GetNick(), szName);
26812681
}
26822682

2683-
RegisterClientTriggeredEventUsage(pCaller);
2683+
RegisterClientTriggeredEventUsage(pCaller, szName);
26842684
}
26852685
}
26862686

@@ -4982,7 +4982,7 @@ void CGame::HandleCrashDumpEncryption()
49824982
#endif
49834983
}
49844984

4985-
void CGame::RegisterClientTriggeredEventUsage(CPlayer* pPlayer)
4985+
void CGame::RegisterClientTriggeredEventUsage(CPlayer* pPlayer, const char* szEventName)
49864986
{
49874987
if (!pPlayer || !pPlayer->IsPlayer() || pPlayer->IsBeingDeleted())
49884988
return;
@@ -4994,8 +4994,13 @@ void CGame::RegisterClientTriggeredEventUsage(CPlayer* pPlayer)
49944994
m_mapClientTriggeredEvents[pPlayer].m_llTicks = now;
49954995

49964996
// Only increment if we haven't reached the interval time already
4997-
if (now - m_mapClientTriggeredEvents[pPlayer].m_llTicks <= m_iClientTriggeredEventsIntervalMs)
4998-
m_mapClientTriggeredEvents[pPlayer].m_uiCounter++;
4997+
ClientTriggeredEventsInfo& info = m_mapClientTriggeredEvents[pPlayer];
4998+
4999+
if (now - info.m_llTicks <= m_iClientTriggeredEventsIntervalMs)
5000+
info.m_uiCounter++;
5001+
5002+
if (szEventName)
5003+
info.m_strLastEventName = szEventName;
49995004
}
50005005

50015006
void CGame::ProcessClientTriggeredEventSpam()
@@ -5010,7 +5015,11 @@ void CGame::ProcessClientTriggeredEventSpam()
50105015
if (GetTickCount64_() - data.m_llTicks >= m_iClientTriggeredEventsIntervalMs)
50115016
{
50125017
if (data.m_uiCounter > m_iMaxClientTriggeredEventsPerInterval)
5013-
player->CallEvent("onPlayerTriggerEventThreshold", {});
5018+
{
5019+
CLuaArguments args;
5020+
args.PushString(data.m_strLastEventName);
5021+
player->CallEvent("onPlayerTriggerEventThreshold", args);
5022+
}
50145023

50155024
remove = true;
50165025
}

Server/mods/deathmatch/logic/CGame.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ class CGame
526526
static void PlayerCompleteConnect(CPlayer* pPlayer);
527527

528528
void ProcessClientTriggeredEventSpam();
529-
void RegisterClientTriggeredEventUsage(CPlayer* pPlayer);
529+
void RegisterClientTriggeredEventUsage(CPlayer* pPlayer, const char* szEventName);
530530

531531
// Technically, this could be put somewhere else. It's a callback function
532532
// which the voice server library will call to send out data.
@@ -687,6 +687,7 @@ class CGame
687687
{
688688
long long m_llTicks = 0;
689689
uint32_t m_uiCounter = 0;
690+
std::string m_strLastEventName;
690691
};
691692

692693
std::map<CPlayer*, ClientTriggeredEventsInfo> m_mapClientTriggeredEvents;

0 commit comments

Comments
 (0)