diff options
| author | DDuarte <dnpd.dd@gmail.com> | 2014-09-11 04:01:32 +0100 |
|---|---|---|
| committer | DDuarte <dnpd.dd@gmail.com> | 2014-09-11 04:02:37 +0100 |
| commit | a84bfc3807a35907a9d6cac7c4f67041811e0615 (patch) | |
| tree | 81c6d373bb6713ac9f9a9075374e27c0915b6235 | |
| parent | e427ad6e412d36dd5ed3f7cbef0ed35be4f5d5a0 (diff) | |
Core/Groups: Handle CMSG_GROUP_REQUEST_JOIN_UPDATES & SMSG_REAL_GROUP_UPDATE
| -rw-r--r-- | src/server/game/Groups/Group.h | 1 | ||||
| -rw-r--r-- | src/server/game/Handlers/GroupHandler.cpp | 13 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 1 |
4 files changed, 17 insertions, 2 deletions
diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index 2a7295b641e..4559c5841ae 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -241,6 +241,7 @@ class Group GroupReference* GetFirstMember() { return m_memberMgr.getFirst(); } GroupReference const* GetFirstMember() const { return m_memberMgr.getFirst(); } uint32 GetMembersCount() const { return m_memberSlots.size(); } + GroupType GetGroupType() const { return m_groupType; } uint8 GetMemberGroup(uint64 guid) const; diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index d74aebaaa1f..761f23641ee 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -790,6 +790,19 @@ void WorldSession::HandleGroupRaidConvertOpcode(WorldPacket& recvData) group->ConvertToGroup(); } +void WorldSession::HandleGroupRequestJoinUpdates(WorldPacket& recvData) +{ + Group* group = GetPlayer()->GetGroup(); + if (!group) + return; + + WorldPacket data(SMSG_REAL_GROUP_UPDATE, 1 + 4 + 8); + data << uint8(group->GetGroupType()); + data << uint32(group->GetMembersCount()); + data << uint64(group->GetLeaderGUID()); + SendPacket(&data); +} + void WorldSession::HandleGroupChangeSubGroupOpcode(WorldPacket& recvData) { TC_LOG_DEBUG("network", "WORLD: Received CMSG_GROUP_CHANGE_SUB_GROUP"); diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 68e3227c339..e5f0014a45f 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -236,7 +236,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER(CMSG_GROUP_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupInviteOpcode ); DEFINE_OPCODE_HANDLER(CMSG_GROUP_INVITE_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupInviteResponseOpcode ); DEFINE_OPCODE_HANDLER(CMSG_GROUP_RAID_CONVERT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupRaidConvertOpcode ); - DEFINE_OPCODE_HANDLER(CMSG_GROUP_REQUEST_JOIN_UPDATES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); + DEFINE_OPCODE_HANDLER(CMSG_GROUP_REQUEST_JOIN_UPDATES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupRequestJoinUpdates ); DEFINE_OPCODE_HANDLER(CMSG_GROUP_SET_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupSetLeaderOpcode ); DEFINE_OPCODE_HANDLER(CMSG_GROUP_SET_ROLES, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGroupSetRolesOpcode ); DEFINE_OPCODE_HANDLER(CMSG_GROUP_SWAP_SUB_GROUP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupSwapSubGroupOpcode ); @@ -1129,7 +1129,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER(SMSG_READ_ITEM_FAILED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_READ_ITEM_OK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_REALM_SPLIT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); - DEFINE_OPCODE_HANDLER(SMSG_REAL_GROUP_UPDATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); + DEFINE_OPCODE_HANDLER(SMSG_REAL_GROUP_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_RECEIVED_MAIL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_REDIRECT_CLIENT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); DEFINE_OPCODE_HANDLER(SMSG_REFER_A_FRIEND_EXPIRED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 3a8c1eaec2f..225310e5418 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -555,6 +555,7 @@ class WorldSession void HandleRaidReadyCheckOpcode(WorldPacket& recvData); void HandleRaidReadyCheckFinishedOpcode(WorldPacket& recvData); void HandleGroupRaidConvertOpcode(WorldPacket& recvData); + void HandleGroupRequestJoinUpdates(WorldPacket& recvData); void HandleGroupChangeSubGroupOpcode(WorldPacket& recvData); void HandleGroupSwapSubGroupOpcode(WorldPacket& recvData); void HandleGroupAssistantLeaderOpcode(WorldPacket& recvData); |
