Skip to content

Instantly share code, notes, and snippets.

@Langerz82
Created January 29, 2019 18:34
Show Gist options
  • Save Langerz82/ae1da9e4ed12db8d4510787568564604 to your computer and use it in GitHub Desktop.
Save Langerz82/ae1da9e4ed12db8d4510787568564604 to your computer and use it in GitHub Desktop.
diff --git a/src/game/Server/WorldSession.h b/src/game/Server/WorldSession.h
index 920096b..f763af8 100644
--- a/src/game/Server/WorldSession.h
+++ b/src/game/Server/WorldSession.h
@@ -648,6 +648,8 @@ class WorldSession
void HandleResurrectResponseOpcode(WorldPacket& recvPacket);
void HandleSummonResponseOpcode(WorldPacket& recv_data);
+ bool IsDefaultChatChannel(const char* channelName);
+
void HandleJoinChannelOpcode(WorldPacket& recvPacket);
void HandleLeaveChannelOpcode(WorldPacket& recvPacket);
void HandleChannelListOpcode(WorldPacket& recvPacket);
diff --git a/src/game/WorldHandlers/Channel.cpp b/src/game/WorldHandlers/Channel.cpp
index 0cf43aa..b268578 100644
--- a/src/game/WorldHandlers/Channel.cpp
+++ b/src/game/WorldHandlers/Channel.cpp
@@ -111,11 +111,14 @@ void Channel::Join(Player* player, const char* password)
JoinNotify(guid);
// if no owner first logged will become
- if (!IsConstant() && !m_ownerGuid)
- {
- SetOwner(guid, (m_players.size() > 1 ? true : false));
- m_players[guid].SetModerator(true);
- }
+ if (!player->GetSession()->IsDefaultChatChannel(m_name.c_str()))
+ {
+ if (!IsConstant() && !m_ownerGuid)
+ {
+ SetOwner(guid, (m_players.size() > 1 ? true : false));
+ m_players[guid].SetModerator(true);
+ }
+ }
}
void Channel::Leave(Player* player, bool send)
diff --git a/src/game/WorldHandlers/ChannelHandler.cpp b/src/game/WorldHandlers/ChannelHandler.cpp
index 03e58ac..1108552 100644
--- a/src/game/WorldHandlers/ChannelHandler.cpp
+++ b/src/game/WorldHandlers/ChannelHandler.cpp
@@ -165,6 +165,22 @@ void WorldSession::HandleChannelSetOwnerOpcode(WorldPacket& recvPacket)
}
}
+bool WorldSession::IsDefaultChatChannel(const char* channelName)
+{
+ for (uint32 i = 0; i < sChatChannelsStore.GetNumRows(); ++i)
+ {
+ ChatChannelsEntry const* channel = sChatChannelsStore.LookupEntry(i);
+ if (channel)
+ {
+ if (strcmp(channel->pattern[0], channelName) == 0)
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
void WorldSession::HandleChannelOwnerOpcode(WorldPacket& recvPacket)
{
DEBUG_LOG("WORLD: Received opcode %s (%u, 0x%X)", recvPacket.GetOpcodeName(), recvPacket.GetOpcode(), recvPacket.GetOpcode());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment