From 39ee95075835d524ad167b167fcdcd624d14911a Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 7 Jan 2012 23:43:05 +0000 Subject: [PATCH] add gameId usage to mute players ingame instead of kick --- src/chatcleaner/cleanerserver.cpp | 4 +-- src/chatcleaner/messagefilter.cpp | 56 ++++++++++++++++++------------- src/chatcleaner/messagefilter.h | 2 +- 3 files changed, 36 insertions(+), 26 deletions(-) diff --git a/src/chatcleaner/cleanerserver.cpp b/src/chatcleaner/cleanerserver.cpp index 22ebf404..91f61afc 100644 --- a/src/chatcleaner/cleanerserver.cpp +++ b/src/chatcleaner/cleanerserver.cpp @@ -133,8 +133,8 @@ bool CleanerServer::handleMessage(InternalChatCleanerPacket &msg) if (netRequest->cleanerChatType.present == CleanerChatType_PR_cleanerChatTypeGame) { gameId = netRequest->cleanerChatType.choice.cleanerChatTypeGame.gameId; } - // TODO use gameId - QStringList checkreturn = myMessageFilter->check(playerId, nick, message); + + QStringList checkreturn = myMessageFilter->check(gameId, playerId, nick, message); QString checkAction = checkreturn.at(0); QString checkMessage = checkreturn.at(1); diff --git a/src/chatcleaner/messagefilter.cpp b/src/chatcleaner/messagefilter.cpp index f2a04ce8..fdb36dfc 100644 --- a/src/chatcleaner/messagefilter.cpp +++ b/src/chatcleaner/messagefilter.cpp @@ -13,7 +13,8 @@ enum ActionType { NOTHING, WARN, KICK, - KICKBAN + KICKBAN, + MUTE }; enum OffenceType { @@ -49,7 +50,7 @@ MessageFilter::~MessageFilter() delete cleanTimer; } -QStringList MessageFilter::check(unsigned playerId, QString nick, QString msg) +QStringList MessageFilter::check(unsigned gameId, unsigned playerId, QString nick, QString msg) { QStringList returnList; QString returnMessage; @@ -77,30 +78,36 @@ QStringList MessageFilter::check(unsigned playerId, QString nick, QString msg) action = WARN; } else { if(i.value().warnLevel == warnLevelToKick || i.value().lastWarnType == offence) { - // Kick Command - action = KICK; - //remove playerId from all lists and as LAST from myClientWarnLevelList - myTextFloodCheck->removeNickFromList(i.key()); - myClientWarnLevelList.remove(i.key()); - //check if player is already on kickCounterList - QMap::const_iterator j = myClientKickCounterList.find(nick); - if(j == myClientKickCounterList.end()) { - //if player is NOT on this list put the playerId on it to ban after multiple offence - ClientKickInfos tmpInfos; - tmpInfos.kickNumber = 1; - tmpInfos.lastKickTimestamp = timer.elapsed().total_seconds(); - myClientKickCounterList.insert(nick, tmpInfos); - } else { - //pleayer is already on the list: either raise kickNumber or kickban when kickNumerToBan is reached - if(j.value().kickNumber == kickNumberToBan) { - action = KICKBAN; - //remove player from kickCounterList - myClientKickCounterList.remove(j.key()); - } else { + if(gameId) { + //check for ingame to do not kick but mute + action = MUTE; + } + else { + // Kick Command + action = KICK; + //remove playerId from all lists and as LAST from myClientWarnLevelList + myTextFloodCheck->removeNickFromList(i.key()); + myClientWarnLevelList.remove(i.key()); + //check if player is already on kickCounterList + QMap::const_iterator j = myClientKickCounterList.find(nick); + if(j == myClientKickCounterList.end()) { + //if player is NOT on this list put the playerId on it to ban after multiple offence ClientKickInfos tmpInfos; - tmpInfos.kickNumber = j.value().kickNumber+1; + tmpInfos.kickNumber = 1; tmpInfos.lastKickTimestamp = timer.elapsed().total_seconds(); myClientKickCounterList.insert(nick, tmpInfos); + } else { + //pleayer is already on the list: either raise kickNumber or kickban when kickNumerToBan is reached + if(j.value().kickNumber == kickNumberToBan) { + action = KICKBAN; + //remove player from kickCounterList + myClientKickCounterList.remove(j.key()); + } else { + ClientKickInfos tmpInfos; + tmpInfos.kickNumber = j.value().kickNumber+1; + tmpInfos.lastKickTimestamp = timer.elapsed().total_seconds(); + myClientKickCounterList.insert(nick, tmpInfos); + } } } } else { @@ -146,6 +153,9 @@ QStringList MessageFilter::check(unsigned playerId, QString nick, QString msg) } else if(action == KICKBAN) { returnMessage = QString("%1 kicked and banned! Please respect: http://chatrules.pokerth.net\n").arg(nick); returnAction = QString("kickban"); + } else if(action == MUTE) { + returnMessage = QString("%1 muted! Please respect: http://chatrules.pokerth.net\n").arg(nick); + returnAction = QString("mute"); } } else { returnAction = QString(""); diff --git a/src/chatcleaner/messagefilter.h b/src/chatcleaner/messagefilter.h index 7f4e3af1..46887383 100644 --- a/src/chatcleaner/messagefilter.h +++ b/src/chatcleaner/messagefilter.h @@ -19,7 +19,7 @@ public: MessageFilter(CleanerConfig*); ~MessageFilter(); - QStringList check(unsigned, QString, QString); + QStringList check(unsigned, unsigned, QString, QString); void refreshConfig(); public slots: