Skip to content

Commit

Permalink
Add 3.4.3 SMSG_PVP_LOG_DATA
Browse files Browse the repository at this point in the history
  • Loading branch information
funjoker committed Nov 14, 2023
1 parent 88d364a commit de6808e
Showing 1 changed file with 92 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,54 @@ public static void ReadRatedPvpBracketInfo(Packet packet, params object[] idx)
packet.ReadBit("Disqualified", idx);
}

[Parser(Opcode.SMSG_RATED_PVP_INFO)]
public static void ReadPvPMatchPlayerStatistics(Packet packet, params object[] idx)
{
packet.ReadPackedGuid128("PlayerGUID", idx);
packet.ReadUInt32("Kills", idx);
packet.ReadUInt32("DamageDone", idx);
packet.ReadUInt32("HealingDone", idx);
var statsCount = packet.ReadUInt32("StatsCount", idx);
packet.ReadInt32("PrimaryTalentTree", idx);
packet.ReadByteE<Gender>("Sex", idx);
packet.ReadInt32E<Race>("Race", idx);
packet.ReadInt32E<Class>("Class", idx);
packet.ReadInt32("CreatureID", idx);
packet.ReadInt32("HonorLevel", idx);
packet.ReadInt32("Role", idx);

for (int i = 0; i < statsCount; i++)
packet.ReadUInt32("Stats", i, idx);

packet.ResetBitReader();

packet.ReadBit("Faction", idx);
packet.ReadBit("IsInWorld", idx);

var hasHonor = packet.ReadBit("HasHonor", idx);
var hasPreMatchRating = packet.ReadBit("HasPreMatchRating", idx);
var hasRatingChange = packet.ReadBit("HasRatingChange", idx);
var hasPreMatchMMR = packet.ReadBit("HasPreMatchMMR", idx);
var hasMmrChange = packet.ReadBit("HasMmrChange", idx);

packet.ResetBitReader();

if (hasHonor)
V6_0_2_19033.Parsers.BattlegroundHandler.ReadHonorData(packet, "Honor");

if (hasPreMatchRating)
packet.ReadUInt32("PreMatchRating", idx);

if (hasRatingChange)
packet.ReadInt32("RatingChange", idx);

if (hasPreMatchMMR)
packet.ReadUInt32("PreMatchMMR", idx);

if (hasMmrChange)
packet.ReadInt32("MmrChange", idx);
}

[Parser(Opcode.SMSG_RATED_PVP_INFO, ClientVersionBuild.V3_4_0_44832, ClientVersionBuild.V3_4_3_51505)]
public static void HandleRatedBattlefieldInfo(Packet packet)
{
for (int i = 0; i < 6; i++)
Expand All @@ -43,5 +90,49 @@ public static void HandleBattlemasterJoinSkirmish(Packet packet)
packet.ResetBitReader();
packet.ReadBit("IsRequeue");
}

[Parser(Opcode.SMSG_PVP_LOG_DATA)]
public static void HandlePvPLogData(Packet packet)
{
var hasRatings = packet.ReadBit("HasRatings");
var hasNames = packet.ReadBit("HasNames");
var hasWinner = packet.ReadBit("HasWinner");

if (hasNames)
{
byte[] stringLength = new byte[2];
for (int i = 0; i < 2; i++)
stringLength[i] = packet.ReadByte("StringLength", i);

for (int i = 0; i < 2; i++)
{
packet.ReadPackedGuid128("PlayerGUID");
packet.ReadWoWString("PlayerName", stringLength[i], i);
}
}

var statisticsCount = packet.ReadUInt32();

for (int i = 0; i < 2; i++)
{
packet.ReadByte("PlayerCount", i);
}

if (hasRatings)
{
for (int i = 0; i < 2; i++)
{
packet.ReadUInt32("TeamRating", i);
packet.ReadUInt32("NewTeamRating", i);
packet.ReadUInt32("AvgMatchmakingRating", i);
}
}

if (hasWinner)
packet.ReadByte("Winner");

for (int i = 0; i < statisticsCount; i++)
ReadPvPMatchPlayerStatistics(packet, "Statistics", i);
}
}
}

0 comments on commit de6808e

Please sign in to comment.