aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2012-08-07 00:56:59 +0100
committerNay <dnpd.dd@gmail.com>2012-08-07 00:56:59 +0100
commit7c9f8660c5a81da3e9e132316687cefe92ae2f2d (patch)
tree56d319b36b4a5be7c9792d2d1802d21ab3046555 /src
parent96765f81b6d8980262c0c8c6fcffa49c7e1439bc (diff)
Cleanup and fix commit 96765f81b6d8980262c0c8c6fcffa49c7e1439bc
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Handlers/GroupHandler.cpp130
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);