diff options
author | Nay <dnpd.dd@gmail.com> | 2011-12-22 04:50:41 +0000 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2011-12-22 04:50:41 +0000 |
commit | 3eed377f48c3e20ab2ff9cca620fb730333b1445 (patch) | |
tree | 4da75b7e1d7390eb8ee2f4cb621d4856bd1f0c24 | |
parent | 41b0a9ec86b2805801924bc78da28d790a618142 (diff) |
Core/Guild: CMSG_GUILD_ROSTER ft. Bit Streaming
Note: all the structures from this, previous and future commits are from our WPP
-rwxr-xr-x | src/server/game/Server/Protocol/Handlers/GuildHandler.cpp | 22 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 |
2 files changed, 20 insertions, 4 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/GuildHandler.cpp b/src/server/game/Server/Protocol/Handlers/GuildHandler.cpp index 28d4292977b..e229da81719 100755 --- a/src/server/game/Server/Protocol/Handlers/GuildHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/GuildHandler.cpp @@ -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) diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index d63528adedb..14069a0910a 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -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 ); |