From d33ffd2ac6230059cce68ecae862d3bdc813b93d Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 27 Nov 2018 21:51:59 +0300 Subject: Avoid shop spam in legacy server. --- src/net/tmwa/buysellhandler.cpp | 5 ++++- src/net/tmwa/chatrecv.cpp | 17 +++++++++++++++++ src/net/tmwa/chatrecv.h | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) (limited to 'src/net/tmwa') diff --git a/src/net/tmwa/buysellhandler.cpp b/src/net/tmwa/buysellhandler.cpp index 23bef65de..787b9ef33 100644 --- a/src/net/tmwa/buysellhandler.cpp +++ b/src/net/tmwa/buysellhandler.cpp @@ -31,6 +31,8 @@ #include "net/ea/buysellrecv.h" +#include "net/tmwa/chatrecv.h" + #include "utils/timer.h" #include "debug.h" @@ -57,6 +59,7 @@ void BuySellHandler::requestSellList(const std::string &nick) const const std::string data("!selllist " + toString(tick_time)); shopWindow->setAcceptPlayer(nick); + ChatRecv::mShopRequestName = nick; if (config.getBoolValue("hideShopMessages")) { chatHandler->privateMessage(nick, data); @@ -75,7 +78,7 @@ void BuySellHandler::requestBuyList(const std::string &nick) const const std::string data("!buylist " + toString(tick_time)); shopWindow->setAcceptPlayer(nick); - + ChatRecv::mShopRequestName = nick; if (config.getBoolValue("hideShopMessages")) { chatHandler->privateMessage(nick, data); diff --git a/src/net/tmwa/chatrecv.cpp b/src/net/tmwa/chatrecv.cpp index e044d5877..b9dd73af5 100644 --- a/src/net/tmwa/chatrecv.cpp +++ b/src/net/tmwa/chatrecv.cpp @@ -44,11 +44,18 @@ #include "net/tmwa/guildmanager.h" +#include "utils/gettext.h" + #include "debug.h" namespace TmwAthena { +namespace ChatRecv +{ + std::string mShopRequestName; +} // namespace ChatRecv + void ChatRecv::processChat(Net::MessageIn &msg) { BLOCK_START("ChatRecv::processChat") @@ -248,6 +255,16 @@ void ChatRecv::processWhisperContinue(const std::string &nick, && chatMsg.find("\302\202") == 0) { chatMsg = chatMsg.erase(0, 2); + if (mShopRequestName != nick) + { + debugMsg(strprintf( + // TRANSLATORS: message about spam player + _("Detected spam from: %s"), + nick.c_str())); + BLOCK_END("ChatRecv::processWhisper") + return; + } + mShopRequestName.clear(); if (showMsg && chatWindow != nullptr) { chatWindow->addWhisper(nick, diff --git a/src/net/tmwa/chatrecv.h b/src/net/tmwa/chatrecv.h index c896f1337..2c5e6a084 100644 --- a/src/net/tmwa/chatrecv.h +++ b/src/net/tmwa/chatrecv.h @@ -34,6 +34,8 @@ namespace TmwAthena { namespace ChatRecv { + extern std::string mShopRequestName; + void processChat(Net::MessageIn &msg); void processChatContinue(std::string chatMsg); void processGmChat(Net::MessageIn &msg); -- cgit v1.2.3-60-g2f50