diff options
-rwxr-xr-x | src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp b/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp index 3f9609bc0e0..93042a69eb2 100755 --- a/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp @@ -26,15 +26,21 @@ void WorldSession::HandleJoinChannel(WorldPacket& recvPacket) uint32 channel_id; uint8 unknown1, unknown2; std::string channelname, pass; - ChatChannelsEntry const* channel; recvPacket >> channel_id; if (channel_id) { - channel = sChatChannelsStore.LookupEntry(channel_id); + ChatChannelsEntry const* channel = sChatChannelsStore.LookupEntry(channel_id); if (!channel) return; + + AreaTableEntry const* current_zone = GetAreaEntryByAreaID(_player->GetZoneId()); + if (!current_zone) + return; + + if (!_player->CanJoinConstantChannelInZone(channel, current_zone)) + return; } recvPacket >> unknown1 >> unknown2; @@ -45,17 +51,10 @@ void WorldSession::HandleJoinChannel(WorldPacket& recvPacket) recvPacket >> pass; - AreaTableEntry const* current_zone = GetAreaEntryByAreaID(_player->GetZoneId()); - if (!current_zone) - return; - - if (!_player->CanJoinConstantChannelInZone(channel, current_zone)) - return; - if (ChannelMgr* cMgr = channelMgr(_player->GetTeam())) { cMgr->team = _player->GetTeam(); - if (Channel *chn = cMgr->GetJoinChannel(channelname, channel_id)) + if (Channel* chn = cMgr->GetJoinChannel(channelname, channel_id)) chn->Join(_player->GetGUID(), pass.c_str()); } } |