diff options
author | Nay <dnpd.dd@gmail.com> | 2012-08-07 00:56:59 +0100 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2012-08-07 00:56:59 +0100 |
commit | 7c9f8660c5a81da3e9e132316687cefe92ae2f2d (patch) | |
tree | 56d319b36b4a5be7c9792d2d1802d21ab3046555 /src | |
parent | 96765f81b6d8980262c0c8c6fcffa49c7e1439bc (diff) |
Cleanup and fix commit 96765f81b6d8980262c0c8c6fcffa49c7e1439bc
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Handlers/GroupHandler.cpp | 130 |
1 files changed, 74 insertions, 56 deletions
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index 433930bd7c6..17a4d19e689 100755 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -97,8 +97,6 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket & recvData) recvData.ReadByteSeq(crossRealmGuid[3]); recvData.ReadByteSeq(crossRealmGuid[2]); - ObjectGuid inviterGuid = GetPlayer()->GetGUID(); - // attempt add selected player // cheating @@ -148,6 +146,8 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket & recvData) return; } + ObjectGuid invitedGuid = player->GetGUID(); + Group* group = GetPlayer()->GetGroup(); if (group && group->isBGGroup()) group = GetPlayer()->GetOriginalGroup(); @@ -163,49 +163,58 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket & recvData) if (group2) { // tell the player that they were invited but it failed as they were already in a group - WorldPacket data(SMSG_GROUP_INVITE, 10); - data.WriteBit(0); - data.WriteBit(inviterGuid[0]); - data.WriteBit(inviterGuid[3]); - data.WriteBit(inviterGuid[2]); - data.WriteBit(0); // Already in group byte - data.WriteBit(inviterGuid[6]); - data.WriteBit(inviterGuid[5]); - - data.WriteBits(0, 9); // Cross realm name or invited name size - data.WriteBit(inviterGuid[4]); - data.WriteBits(strlen(GetPlayer()->GetName()), 7); + WorldPacket data(SMSG_GROUP_INVITE, 50); + + data.WriteBit(0); + + data.WriteBit(invitedGuid[0]); + data.WriteBit(invitedGuid[3]); + data.WriteBit(invitedGuid[2]); + + data.WriteBit(0); // Inverse already in group + + data.WriteBit(invitedGuid[6]); + data.WriteBit(invitedGuid[5]); + + data.WriteBits(strlen(GetPlayer()->GetName()), 9); // Inviter name length + + data.WriteBit(invitedGuid[4]); + + data.WriteBits(strlen(player->GetName()), 7); // Invited name length + data.WriteBits(0, 24); // Count 2 - + data.WriteBit(0); - data.WriteBit(inviterGuid[1]); - data.WriteBit(inviterGuid[7]); + data.WriteBit(invitedGuid[1]); + data.WriteBit(invitedGuid[7]); + + data.FlushBits(); - data.WriteByteSeq(inviterGuid[1]); - data.WriteByteSeq(inviterGuid[4]); + data.WriteByteSeq(invitedGuid[1]); + data.WriteByteSeq(invitedGuid[4]); data << int32(getMSTime()); data << int32(0); data << int32(0); - data.WriteByteSeq(inviterGuid[6]); - data.WriteByteSeq(inviterGuid[0]); - data.WriteByteSeq(inviterGuid[2]); - data.WriteByteSeq(inviterGuid[3]); + data.WriteByteSeq(invitedGuid[6]); + data.WriteByteSeq(invitedGuid[0]); + data.WriteByteSeq(invitedGuid[2]); + data.WriteByteSeq(invitedGuid[3]); // for count2 { int32(0) } - data.WriteByteSeq(inviterGuid[5]); + data.WriteByteSeq(invitedGuid[5]); - // If it's cross realm here is Realm Name, if it's normal case place here Player Name - data.append((uint8 const*)GetPlayer()->GetName(), strlen(GetPlayer()->GetName())); + data.append((uint8 const*)GetPlayer()->GetName(), strlen(GetPlayer()->GetName())); // inviter name - data.WriteByteSeq(inviterGuid[7]); + data.WriteByteSeq(invitedGuid[7]); - // Player name in Cross Realm case + data.append((uint8 const*)player->GetName(), strlen(player->GetName())); // invited name data << int32(0); + player->GetSession()->SendPacket(&data); } @@ -256,49 +265,58 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket & recvData) } // ok, we do it - WorldPacket data(SMSG_GROUP_INVITE, 10); + WorldPacket data(SMSG_GROUP_INVITE, 50); + data.WriteBit(0); - data.WriteBit(inviterGuid[0]); - data.WriteBit(inviterGuid[3]); - data.WriteBit(inviterGuid[2]); - data.WriteBit(1); // Already in group byte - data.WriteBit(inviterGuid[6]); - data.WriteBit(inviterGuid[5]); - - data.WriteBits(0, 9); // Cross realm name or invited name size - data.WriteBit(inviterGuid[4]); - data.WriteBits(strlen(GetPlayer()->GetName()), 7); + + data.WriteBit(invitedGuid[0]); + data.WriteBit(invitedGuid[3]); + data.WriteBit(invitedGuid[2]); + + data.WriteBit(1); // Inverse already in group + + data.WriteBit(invitedGuid[6]); + data.WriteBit(invitedGuid[5]); + + data.WriteBits(strlen(GetPlayer()->GetName()), 9); // Inviter name length + + data.WriteBit(invitedGuid[4]); + + data.WriteBits(strlen(player->GetName()), 7); // Invited name length + data.WriteBits(0, 24); // Count 2 - + data.WriteBit(0); - data.WriteBit(inviterGuid[1]); - data.WriteBit(inviterGuid[7]); - - data.WriteByteSeq(inviterGuid[1]); - data.WriteByteSeq(inviterGuid[4]); - + data.WriteBit(invitedGuid[1]); + data.WriteBit(invitedGuid[7]); + + data.FlushBits(); + + data.WriteByteSeq(invitedGuid[1]); + data.WriteByteSeq(invitedGuid[4]); + data << int32(getMSTime()); data << int32(0); data << int32(0); - data.WriteByteSeq(inviterGuid[6]); - data.WriteByteSeq(inviterGuid[0]); - data.WriteByteSeq(inviterGuid[2]); - data.WriteByteSeq(inviterGuid[3]); + data.WriteByteSeq(invitedGuid[6]); + data.WriteByteSeq(invitedGuid[0]); + data.WriteByteSeq(invitedGuid[2]); + data.WriteByteSeq(invitedGuid[3]); // for count2 { int32(0) } - data.WriteByteSeq(inviterGuid[5]); + data.WriteByteSeq(invitedGuid[5]); - // If it's cross realm here is Realm Name, if it's normal case place here Player Name - data.append((uint8 const*)GetPlayer()->GetName(), strlen(GetPlayer()->GetName())); + data.append((uint8 const*)GetPlayer()->GetName(), strlen(GetPlayer()->GetName())); // inviter name - data.WriteByteSeq(inviterGuid[7]); + data.WriteByteSeq(invitedGuid[7]); + + data.append((uint8 const*)player->GetName(), strlen(player->GetName())); // invited name - // Player name in Cross Realm case - data << int32(0); + player->GetSession()->SendPacket(&data); SendPartyResult(PARTY_OP_INVITE, memberName, ERR_PARTY_RESULT_OK); |