aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/ChannelHandler.cpp
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2019-07-13 17:44:41 +0200
committerShauren <shauren.trinity@gmail.com>2021-12-16 00:37:01 +0100
commitea753efb9370455979c8af8ebaafa734b77d6052 (patch)
treef34607eef7b093e44510dca18b441146a52e58e3 /src/server/game/Handlers/ChannelHandler.cpp
parent71b2f8c6ab26ef7683100fdf288813e87f6bbf73 (diff)
Core/Chat: Rewrite some custom channel handling. Channel creation now properly saves passwords. Closes #23589.
(cherry picked from commit 8c16f318fe072709fc40c61987570dba8f5b6483)
Diffstat (limited to 'src/server/game/Handlers/ChannelHandler.cpp')
-rw-r--r--src/server/game/Handlers/ChannelHandler.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/server/game/Handlers/ChannelHandler.cpp b/src/server/game/Handlers/ChannelHandler.cpp
index b85eb83eefc..9cd28f709b5 100644
--- a/src/server/game/Handlers/ChannelHandler.cpp
+++ b/src/server/game/Handlers/ChannelHandler.cpp
@@ -58,8 +58,23 @@ void WorldSession::HandleJoinChannel(WorldPackets::Channel::JoinChannel& packet)
return;
if (ChannelMgr* cMgr = ChannelMgr::ForTeam(GetPlayer()->GetTeam()))
- if (Channel* channel = cMgr->GetJoinChannel(packet.ChatChannelId, packet.ChannelName, zone))
- channel->JoinChannel(GetPlayer(), packet.Password);
+ {
+ if (packet.ChatChannelId)
+ { // system channel
+ if (Channel* channel = cMgr->GetSystemChannel(packet.ChatChannelId, zone))
+ channel->JoinChannel(GetPlayer());
+ }
+ else
+ { // custom channel
+ if (Channel* channel = cMgr->GetCustomChannel(packet.ChannelName))
+ channel->JoinChannel(GetPlayer(), packet.Password);
+ else if (Channel* channel = cMgr->CreateCustomChannel(packet.ChannelName))
+ {
+ channel->SetPassword(packet.Password);
+ channel->JoinChannel(GetPlayer(), packet.Password);
+ }
+ }
+ }
}
void WorldSession::HandleLeaveChannel(WorldPackets::Channel::LeaveChannel& packet)