Core/Guild: CMSG_GUILD_ROSTER ft. Bit Streaming

Note: all the structures from this, previous and future commits are from our WPP
This commit is contained in:
Nay
2011-12-22 04:50:41 +00:00
parent 41b0a9ec86
commit 3eed377f48
2 changed files with 20 additions and 4 deletions

View File

@@ -125,12 +125,28 @@ void WorldSession::HandleGuildInfoOpcode(WorldPacket& /*recvPacket*/)
guild->SendInfo(this);
}
void WorldSession::HandleGuildRosterOpcode(WorldPacket& /*recvPacket*/)
void WorldSession::HandleGuildRosterOpcode(WorldPacket& recvPacket)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_ROSTER");
if (Guild* guild = _GetPlayerGuild(this))
guild->HandleRoster(this);
BitStream mask = recvPacket.ReadBitStream(8);
ByteBuffer bytes(8, true);
if (mask[0]) bytes[7] = recvPacket.ReadUInt8() ^ 1;
if (mask[5]) bytes[4] = recvPacket.ReadUInt8() ^ 1;
if (mask[4]) bytes[5] = recvPacket.ReadUInt8() ^ 1;
if (mask[7]) bytes[0] = recvPacket.ReadUInt8() ^ 1;
if (mask[3]) bytes[1] = recvPacket.ReadUInt8() ^ 1;
if (mask[2]) bytes[2] = recvPacket.ReadUInt8() ^ 1;
if (mask[1]) bytes[6] = recvPacket.ReadUInt8() ^ 1;
if (mask[6]) bytes[3] = recvPacket.ReadUInt8() ^ 1;
uint64 guildGuid = BitConverter::ToUInt64(bytes);
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid))
if (guild->IsMember(GetPlayer()->GetGUID()))
guild->HandleRoster(this);
}
void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket)

View File

@@ -179,7 +179,7 @@ void InitOpcodes()
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_DECLINE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildInfoOpcode );
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_INFO, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_ROSTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRosterOpcode );
DEFINE_OPCODE_HANDLER(CMSG_GUILD_ROSTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRosterOpcode );
//DEFINE_OPCODE_HANDLER(SMSG_GUILD_ROSTER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_PROMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildPromoteOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_GUILD_DEMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDemoteOpcode );