diff options
Diffstat (limited to 'src/game/server')
| -rw-r--r-- | src/game/server/gamecontext.cpp | 33 | ||||
| -rw-r--r-- | src/game/server/player.cpp | 6 | ||||
| -rw-r--r-- | src/game/server/player.h | 1 |
3 files changed, 26 insertions, 14 deletions
diff --git a/src/game/server/gamecontext.cpp b/src/game/server/gamecontext.cpp index 7b651486..a22f2415 100644 --- a/src/game/server/gamecontext.cpp +++ b/src/game/server/gamecontext.cpp @@ -690,6 +690,25 @@ void CGameContext::OnMessage(int MsgID, CUnpacker *pUnpacker, int ClientID) *pMessage = ' '; pMessage++; } + + //Check if the player is muted + char aAddrStr[NETADDR_MAXSTRSIZE] = {0}; + Server()->GetClientAddr(ClientID, aAddrStr, sizeof(aAddrStr)); + int Pos; + if((Pos = Muted(aAddrStr)) > -1) + { + char aBuf[128]; + int Expires = (m_aMutes[Pos].m_Expires - Server()->Tick())/Server()->TickSpeed(); + str_format(aBuf, sizeof(aBuf), "You are muted for %d minutes and %d seconds.", Expires/60, Expires%60); + SendChatTarget(ClientID, aBuf); + return; + } + else if((pPlayer->m_ChatTicks += g_Config.m_SvChatValue) > g_Config.m_SvChatThreshold) //is he spamming? + { + AddMute(ClientID, 60); + pPlayer->m_ChatTicks = 0; + return; + } /* begin zCatch*/ if(!str_comp("/info", pMsg->m_pMessage) || !str_comp("/about", pMsg->m_pMessage)) @@ -728,20 +747,8 @@ void CGameContext::OnMessage(int MsgID, CUnpacker *pUnpacker, int ClientID) else if(!str_comp_num("/", pMsg->m_pMessage, 1)) SendChatTarget(ClientID, "Unknown command."); else - { - char aAddrStr[NETADDR_MAXSTRSIZE] = {0}; - Server()->GetClientAddr(ClientID, aAddrStr, sizeof(aAddrStr)); - int Pos = Muted(aAddrStr); - if(Pos > -1) - { - char aBuf[128]; - int Expires = (m_aMutes[Pos].m_Expires - Server()->Tick())/Server()->TickSpeed(); - str_format(aBuf, sizeof(aBuf), "You are muted for %d minutes and %d seconds.", Expires/60, Expires%60); - SendChatTarget(ClientID, aBuf); - return; - } SendChat(ClientID, Team, pMsg->m_pMessage); - } + /* end zCatch */ } else if(MsgID == NETMSGTYPE_CL_CALLVOTE) diff --git a/src/game/server/player.cpp b/src/game/server/player.cpp index 4ea2a4a6..ea1e0233 100644 --- a/src/game/server/player.cpp +++ b/src/game/server/player.cpp @@ -31,6 +31,7 @@ CPlayer::CPlayer(CGameContext *pGameServer, int ClientID, int Team) m_LastKillTry = Server()->Tick(); m_TicksSpec = 0; m_TicksIngame = 0; + m_ChatTicks = 0; } CPlayer::~CPlayer() @@ -55,7 +56,10 @@ void CPlayer::Tick() m_TicksSpec++; else m_TicksIngame++; - + + if(m_ChatTicks > 0) + m_ChatTicks--; + /* end zCatch*/ // do latency stuff diff --git a/src/game/server/player.h b/src/game/server/player.h index 05e52f05..fdad4b09 100644 --- a/src/game/server/player.h +++ b/src/game/server/player.h @@ -107,6 +107,7 @@ public: int m_TicksSpec; int m_TicksIngame; + int m_ChatTicks; private: CCharacter *m_pCharacter; |