mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 17:05:44 +01:00
Core/Groups: Fix CMSG_GROUP_SET_ROLES and SMSG_GROUP_SET_ROLE
This commit is contained in:
@@ -510,6 +510,80 @@ void WorldSession::HandleGroupSetLeaderOpcode(WorldPacket& recvData)
|
||||
group->SendUpdate();
|
||||
}
|
||||
|
||||
void WorldSession::HandleGroupSetRolesOpcode(WorldPacket& recvData)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_SET_ROLES");
|
||||
|
||||
uint32 newRole;
|
||||
ObjectGuid guid1; // Assigner GUID
|
||||
ObjectGuid guid2; // Target GUID
|
||||
|
||||
guid1 = GetPlayer()->GetGUID();
|
||||
|
||||
recvData >> newRole;
|
||||
|
||||
guid2[2] = recvData.ReadBit();
|
||||
guid2[6] = recvData.ReadBit();
|
||||
guid2[3] = recvData.ReadBit();
|
||||
guid2[7] = recvData.ReadBit();
|
||||
guid2[5] = recvData.ReadBit();
|
||||
guid2[1] = recvData.ReadBit();
|
||||
guid2[0] = recvData.ReadBit();
|
||||
guid2[4] = recvData.ReadBit();
|
||||
|
||||
recvData.ReadByteSeq(guid2[6]);
|
||||
recvData.ReadByteSeq(guid2[4]);
|
||||
recvData.ReadByteSeq(guid2[1]);
|
||||
recvData.ReadByteSeq(guid2[3]);
|
||||
recvData.ReadByteSeq(guid2[0]);
|
||||
recvData.ReadByteSeq(guid2[5]);
|
||||
recvData.ReadByteSeq(guid2[2]);
|
||||
recvData.ReadByteSeq(guid2[7]);
|
||||
|
||||
WorldPacket data(SMSG_GROUP_SET_ROLE, 24);
|
||||
|
||||
data.WriteBit(guid1[1]);
|
||||
data.WriteBit(guid2[0]);
|
||||
data.WriteBit(guid2[2]);
|
||||
data.WriteBit(guid2[4]);
|
||||
data.WriteBit(guid2[7]);
|
||||
data.WriteBit(guid2[3]);
|
||||
data.WriteBit(guid1[7]);
|
||||
data.WriteBit(guid2[5]);
|
||||
data.WriteBit(guid1[5]);
|
||||
data.WriteBit(guid1[4]);
|
||||
data.WriteBit(guid1[3]);
|
||||
data.WriteBit(guid2[6]);
|
||||
data.WriteBit(guid1[2]);
|
||||
data.WriteBit(guid1[6]);
|
||||
data.WriteBit(guid2[1]);
|
||||
data.WriteBit(guid1[0]);
|
||||
|
||||
data.WriteByteSeq(guid1[7]);
|
||||
data.WriteByteSeq(guid2[3]);
|
||||
data.WriteByteSeq(guid1[6]);
|
||||
data.WriteByteSeq(guid2[4]);
|
||||
data.WriteByteSeq(guid2[0]);
|
||||
data << uint32(newRole); // New Role
|
||||
data.WriteByteSeq(guid2[6]);
|
||||
data.WriteByteSeq(guid2[2]);
|
||||
data.WriteByteSeq(guid1[0]);
|
||||
data.WriteByteSeq(guid1[4]);
|
||||
data.WriteByteSeq(guid2[1]);
|
||||
data.WriteByteSeq(guid1[3]);
|
||||
data.WriteByteSeq(guid1[5]);
|
||||
data.WriteByteSeq(guid1[2]);
|
||||
data.WriteByteSeq(guid2[5]);
|
||||
data.WriteByteSeq(guid2[7]);
|
||||
data.WriteByteSeq(guid1[1]);
|
||||
data << uint32(0); // Old Role
|
||||
|
||||
if (GetPlayer()->GetGroup())
|
||||
GetPlayer()->GetGroup()->BroadcastPacket(&data, false);
|
||||
else
|
||||
SendPacket(&data);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGroupDisbandOpcode(WorldPacket& /*recvData*/)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_DISBAND");
|
||||
|
||||
@@ -239,7 +239,7 @@ void InitOpcodes()
|
||||
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_SET_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupSetLeaderOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GROUP_SET_ROLES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
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 );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GROUP_UNINVITE_GUID, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGroupUninviteGuidOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_ACCEPT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAcceptOpcode );
|
||||
@@ -843,7 +843,7 @@ void InitOpcodes()
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GROUP_JOINED_BATTLEGROUND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GROUP_LIST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GROUP_SET_LEADER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GROUP_SET_ROLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GROUP_SET_ROLE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GROUP_UNINVITE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_DATA, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_ACHIEVEMENT_DELETED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
|
||||
@@ -545,6 +545,7 @@ class WorldSession
|
||||
void HandleGroupUninviteOpcode(WorldPacket& recvPacket);
|
||||
void HandleGroupUninviteGuidOpcode(WorldPacket& recvPacket);
|
||||
void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket);
|
||||
void HandleGroupSetRolesOpcode(WorldPacket& recvData);
|
||||
void HandleGroupDisbandOpcode(WorldPacket& recvPacket);
|
||||
void HandleOptOutOfLootOpcode(WorldPacket& recvData);
|
||||
void HandleLootMethodOpcode(WorldPacket& recvPacket);
|
||||
|
||||
Reference in New Issue
Block a user