From 3ed49467ba97defec2eda625e8ead828bf1d995c Mon Sep 17 00:00:00 2001 From: Aokromes Date: Wed, 3 Aug 2016 11:56:08 +0200 Subject: [PATCH] Core/Chat: Split ChatLevelReq.Say into 3 --- src/server/game/Handlers/ChatHandler.cpp | 39 ++++++++++++++++---- src/server/game/World/World.cpp | 2 + src/server/game/World/World.h | 2 + src/server/worldserver/worldserver.conf.dist | 20 ++++------ 4 files changed, 42 insertions(+), 21 deletions(-) diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 0e94320c923..1bb249130d3 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -296,8 +296,6 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) switch (type) { case CHAT_MSG_SAY: - case CHAT_MSG_EMOTE: - case CHAT_MSG_YELL: { // Prevent cheating if (!sender->IsAlive()) @@ -309,12 +307,37 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) return; } - if (type == CHAT_MSG_SAY) - sender->Say(msg, Language(lang)); - else if (type == CHAT_MSG_EMOTE) - sender->TextEmote(msg); - else if (type == CHAT_MSG_YELL) - sender->Yell(msg, Language(lang)); + sender->Say(msg, Language(lang)); + break; + } + case CHAT_MSG_EMOTE: + { + // Prevent cheating + if (!sender->IsAlive()) + return; + + if (sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_EMOTE_LEVEL_REQ)) + { + SendNotification(GetTrinityString(LANG_SAY_REQ), sWorld->getIntConfig(CONFIG_CHAT_EMOTE_LEVEL_REQ)); + return; + } + + sender->TextEmote(msg); + break; + } + case CHAT_MSG_YELL: + { + // Prevent cheating + if (!sender->IsAlive()) + return; + + if (sender->getLevel() < sWorld->getIntConfig(CONFIG_CHAT_YELL_LEVEL_REQ)) + { + SendNotification(GetTrinityString(LANG_SAY_REQ), sWorld->getIntConfig(CONFIG_CHAT_YELL_LEVEL_REQ)); + return; + } + + sender->Yell(msg, Language(lang)); break; } case CHAT_MSG_WHISPER: diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 004d3bcb761..a333f4e00ba 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -603,7 +603,9 @@ void World::LoadConfigSettings(bool reload) } m_int_configs[CONFIG_CHAT_CHANNEL_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Channel", 1); m_int_configs[CONFIG_CHAT_WHISPER_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Whisper", 1); + m_int_configs[CONFIG_CHAT_EMOTE_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Emote", 1); m_int_configs[CONFIG_CHAT_SAY_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Say", 1); + m_int_configs[CONFIG_CHAT_YELL_LEVEL_REQ] = sConfigMgr->GetIntDefault("ChatLevelReq.Yell", 1); m_int_configs[CONFIG_PARTY_LEVEL_REQ] = sConfigMgr->GetIntDefault("PartyLevelReq", 1); m_int_configs[CONFIG_TRADE_LEVEL_REQ] = sConfigMgr->GetIntDefault("LevelReq.Trade", 1); m_int_configs[CONFIG_TICKET_LEVEL_REQ] = sConfigMgr->GetIntDefault("LevelReq.Ticket", 1); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 4a3e75b4752..6f4471641ce 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -287,7 +287,9 @@ enum WorldIntConfigs CONFIG_CHAT_STRICT_LINK_CHECKING_SEVERITY, CONFIG_CHAT_STRICT_LINK_CHECKING_KICK, CONFIG_CHAT_CHANNEL_LEVEL_REQ, + CONFIG_CHAT_EMOTE_LEVEL_REQ, CONFIG_CHAT_WHISPER_LEVEL_REQ, + CONFIG_CHAT_YELL_LEVEL_REQ, CONFIG_CHAT_SAY_LEVEL_REQ, CONFIG_PARTY_LEVEL_REQ, CONFIG_TRADE_LEVEL_REQ, diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index f6081007858..4639cf0ab30 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -1643,24 +1643,18 @@ Channel.RestrictedLfg = 1 # # ChatLevelReq.Channel -# Description: Level requirement for characters to be able to write in chat channels. +# ChatLevelReq.Whisper +# ChatLevelReq.Emote +# ChatLevelReq.Say +# ChatLevelReq.Yell +# Description: Level requirement for characters to be able to use chats. # Default: 1 ChatLevelReq.Channel = 1 - -# -# ChatLevelReq.Whisper -# Description: Level requirement for characters to be able to whisper other characters. -# Default: 1 - ChatLevelReq.Whisper = 1 - -# -# ChatLevelReq.Say -# Description: Level requirement for characters to be able to use say/yell/emote. -# Default: 1 - +ChatLevelReq.Emote = 1 ChatLevelReq.Say = 1 +ChatLevelReq.Yell = 1 # # PartyLevelReq