diff options
| author | Nay <dnpd.dd@gmail.com> | 2011-09-04 18:56:04 +0100 |
|---|---|---|
| committer | Nay <dnpd.dd@gmail.com> | 2011-09-04 18:56:04 +0100 |
| commit | bbde479f4aab7473373471f7cb5c266e5d31d1f0 (patch) | |
| tree | 92e7b9703273826bbd03c0ca89d41f15d5964d73 /src/server/game/Entities | |
| parent | 3ccfb5fefb1563442942948be40f7807ae9d57de (diff) | |
Core/Channels: Fix the console error "opcode CMSG_MESSAGECHAT have unprocessed tail data" and some logic problems when joining/leaving some channels (like only be able to join LFG inside a city)
Diffstat (limited to 'src/server/game/Entities')
| -rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 8742deb2eb5..7052615e9c1 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5522,14 +5522,14 @@ void Player::RepopAtGraveyard() bool Player::CanJoinConstantChannelInZone(ChatChannelsEntry const* channel, AreaTableEntry const* zone) { - if (channel->flags & CHANNEL_DBC_FLAG_ZONE_DEP) - { - if (zone->flags & AREA_FLAG_ARENA_INSTANCE) - return false; + if (channel->flags & CHANNEL_DBC_FLAG_ZONE_DEP && zone->flags & AREA_FLAG_ARENA_INSTANCE) + return false; - if ((channel->flags & CHANNEL_DBC_FLAG_CITY_ONLY) && !(zone->flags & AREA_FLAG_CAPITAL)) - return false; - } + if ((channel->flags & CHANNEL_DBC_FLAG_CITY_ONLY) && (!(zone->flags & AREA_FLAG_SLAVE_CAPITAL))) + return false; + + if ((channel->flags & CHANNEL_DBC_FLAG_GUILD_REQ) && GetGuildId()) + return false; return true; } @@ -5577,12 +5577,6 @@ void Player::UpdateLocalChannels(uint32 newZone) { if (ChatChannelsEntry const* channel = sChatChannelsStore.LookupEntry(i)) { - if (!(channel->flags & CHANNEL_DBC_FLAG_ZONE_DEP)) - continue; // Not zone dependent, don't handle it here - - if ((channel->flags & CHANNEL_DBC_FLAG_GUILD_REQ) && GetGuildId()) - continue; // Should not join to these channels automatically - Channel* usedChannel = NULL; for (JoinedChannelsList::iterator itr = m_channels.begin(); itr != m_channels.end(); ++itr) |
