diff options
Diffstat (limited to 'src/server/game/Handlers/ChannelHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/ChannelHandler.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/server/game/Handlers/ChannelHandler.cpp b/src/server/game/Handlers/ChannelHandler.cpp index bb6eab2565e..531642d6958 100644 --- a/src/server/game/Handlers/ChannelHandler.cpp +++ b/src/server/game/Handlers/ChannelHandler.cpp @@ -68,8 +68,23 @@ void WorldSession::HandleJoinChannel(WorldPacket& recvPacket) return; if (ChannelMgr* cMgr = ChannelMgr::forTeam(GetPlayer()->GetTeam())) - if (Channel* channel = cMgr->GetJoinChannel(channelId, channelName, zone)) - channel->JoinChannel(GetPlayer(), password); + { + if (channelId) + { // system channel + if (Channel* channel = cMgr->GetSystemChannel(channelId, zone)) + channel->JoinChannel(GetPlayer()); + } + else + { // custom channel + if (Channel* channel = cMgr->GetCustomChannel(channelName)) + channel->JoinChannel(GetPlayer(), password); + else if (Channel* channel = cMgr->CreateCustomChannel(channelName)) + { + channel->SetPassword(password); + channel->JoinChannel(GetPlayer(), password); + } + } + } } void WorldSession::HandleLeaveChannel(WorldPacket& recvPacket) |