Core/PacketIO: Named a bunch of unknown/unused fields

Port From (https://github.com/TrinityCore/TrinityCore/commit/806611075659ddde60f3003763e442a46d70f993)
This commit is contained in:
Hondacrx
2024-11-17 13:07:52 -05:00
parent ba80dede79
commit 447c222665
41 changed files with 525 additions and 516 deletions
@@ -58,27 +58,27 @@ namespace Game.Networking.Packets
_worldPacket.WriteUInt32(CriteriaID);
_worldPacket.WriteUInt64(Quantity);
_worldPacket.WritePackedGuid(PlayerGUID);
_worldPacket.WriteUInt32(Unused_10_1_5);
_worldPacket.WriteUInt32(Flags);
_worldPacket.WriteUInt32(StateFlags);
CurrentTime.Write(_worldPacket);
_worldPacket.WriteInt64(ElapsedTime);
_worldPacket.WriteInt64(CreationTime);
_worldPacket.WriteBit(RafAcceptanceID.HasValue);
_worldPacket.WriteBit(DynamicID.HasValue);
_worldPacket.FlushBits();
if (RafAcceptanceID.HasValue)
_worldPacket.WriteUInt64(RafAcceptanceID.Value);
if (DynamicID.HasValue)
_worldPacket.WriteUInt64(DynamicID.Value);
}
public uint CriteriaID;
public ulong Quantity;
public ObjectGuid PlayerGUID;
public uint Unused_10_1_5;
public uint StateFlags;
public uint Flags;
public WowTime CurrentTime;
public long ElapsedTime;
public long CreationTime;
public ulong? RafAcceptanceID;
public ulong? DynamicID;
}
class AccountCriteriaUpdate : ServerPacket
@@ -180,8 +180,8 @@ namespace Game.Networking.Packets
_worldPacket.WriteUInt32(0); // this is a hack. this is a packed time written as int64 (progress.DateUpdated)
_worldPacket.WriteUInt64(progress.Quantity);
_worldPacket.WritePackedGuid(progress.PlayerGUID);
_worldPacket.WriteInt32(progress.Unused_10_1_5);
_worldPacket.WriteInt32(progress.Flags);
_worldPacket.WriteInt32(progress.StateFlags);
}
}
@@ -321,27 +321,27 @@ namespace Game.Networking.Packets
data.WriteUInt32(Id);
data.WriteUInt64(Quantity);
data.WritePackedGuid(Player);
data.WriteUInt32(Unused_10_1_5);
data.WriteUInt32(Flags);
data.WriteUInt32(StateFlags);
Date.Write(data);
data.WriteInt64(TimeFromStart);
data.WriteInt64(TimeFromCreate);
data.WriteBit(RafAcceptanceID.HasValue);
data.WriteBit(DynamicID.HasValue);
data.FlushBits();
if (RafAcceptanceID.HasValue)
data.WriteUInt64(RafAcceptanceID.Value);
if (DynamicID.HasValue)
data.WriteUInt64(DynamicID.Value);
}
public uint Id;
public ulong Quantity;
public ObjectGuid Player;
public uint Unused_10_1_5;
public uint StateFlags;
public uint Flags;
public WowTime Date;
public long TimeFromStart;
public long TimeFromCreate;
public ulong? RafAcceptanceID;
public ulong? DynamicID;
}
public struct GuildCriteriaProgress
@@ -352,8 +352,8 @@ namespace Game.Networking.Packets
public WowTime DateUpdated;
public ulong Quantity;
public ObjectGuid PlayerGUID;
public int Unused_10_1_5;
public int Flags;
public int StateFlags;
}
public class AllAchievements
@@ -722,7 +722,7 @@ namespace Game.Networking.Packets
public uint ItemID;
public ushort ItemLevel;
public ushort? BattlePetSpeciesID;
public ushort? SuffixItemNameDescriptionID;
public ushort? ItemSuffix;
public AuctionBucketKey() { }
@@ -735,7 +735,7 @@ namespace Game.Networking.Packets
BattlePetSpeciesID = key.BattlePetSpeciesId;
if (key.SuffixItemNameDescriptionId != 0)
SuffixItemNameDescriptionID = key.SuffixItemNameDescriptionId;
ItemSuffix = key.SuffixItemNameDescriptionId;
}
public AuctionBucketKey(WorldPacket data)
@@ -750,7 +750,7 @@ namespace Game.Networking.Packets
BattlePetSpeciesID = data.ReadUInt16();
if (hasSuffixItemNameDescriptionId)
SuffixItemNameDescriptionID = data.ReadUInt16();
ItemSuffix = data.ReadUInt16();
}
public void Write(WorldPacket data)
@@ -758,14 +758,14 @@ namespace Game.Networking.Packets
data.WriteBits(ItemID, 20);
data.WriteBit(BattlePetSpeciesID.HasValue);
data.WriteBits(ItemLevel, 11);
data.WriteBit(SuffixItemNameDescriptionID.HasValue);
data.WriteBit(ItemSuffix.HasValue);
data.FlushBits();
if (BattlePetSpeciesID.HasValue)
data.WriteUInt16(BattlePetSpeciesID.Value);
if (SuffixItemNameDescriptionID.HasValue)
data.WriteUInt16(SuffixItemNameDescriptionID.Value);
if (ItemSuffix.HasValue)
data.WriteUInt16(ItemSuffix.Value);
}
}
@@ -885,7 +885,7 @@ namespace Game.Networking.Packets
public byte? MaxBattlePetQuality;
public byte? MaxBattlePetLevel;
public byte? BattlePetBreedID;
public uint? Unk901_1;
public uint? BattlePetLevelMask;
public bool ContainsOwnerItem;
public bool ContainsOnlyCollectedAppearances;
@@ -905,7 +905,7 @@ namespace Game.Networking.Packets
data.WriteBit(MaxBattlePetQuality.HasValue);
data.WriteBit(MaxBattlePetLevel.HasValue);
data.WriteBit(BattlePetBreedID.HasValue);
data.WriteBit(Unk901_1.HasValue);
data.WriteBit(BattlePetLevelMask.HasValue);
data.WriteBit(ContainsOwnerItem);
data.WriteBit(ContainsOnlyCollectedAppearances);
data.FlushBits();
@@ -919,8 +919,8 @@ namespace Game.Networking.Packets
if (BattlePetBreedID.HasValue)
data.WriteUInt8(BattlePetBreedID.Value);
if (Unk901_1.HasValue)
data.WriteUInt32(Unk901_1.Value);
if (BattlePetLevelMask.HasValue)
data.WriteUInt32(BattlePetLevelMask.Value);
}
}
@@ -137,13 +137,12 @@ namespace Game.Networking.Packets
_worldPacket.FlushBits();
{
_worldPacket.WriteUInt32(SuccessInfo.GameTimeInfo.BillingPlan);
_worldPacket.WriteUInt32(SuccessInfo.GameTimeInfo.TimeRemain);
_worldPacket.WriteUInt32(SuccessInfo.GameTimeInfo.Unknown735);
// 3x same bit is not a mistake - preserves legacy client behavior of BillingPlanFlags::SESSION_IGR
_worldPacket.WriteBit(SuccessInfo.GameTimeInfo.InGameRoom); // inGameRoom check in function checking which lua event to fire when remaining time is near end - BILLING_NAG_DIALOG vs IGR_BILLING_NAG_DIALOG
_worldPacket.WriteBit(SuccessInfo.GameTimeInfo.InGameRoom); // inGameRoom lua return from Script_GetBillingPlan
_worldPacket.WriteBit(SuccessInfo.GameTimeInfo.InGameRoom); // not used anywhere in the client
_worldPacket.WriteUInt32(SuccessInfo.GameTimeInfo.BillingType);
_worldPacket.WriteUInt32(SuccessInfo.GameTimeInfo.MinutesRemaining);
_worldPacket.WriteUInt32(SuccessInfo.GameTimeInfo.RealBillingType);
_worldPacket.WriteBit(SuccessInfo.GameTimeInfo.IsInIGR); // inGameRoom check in function checking which lua event to fire when remaining time is near end - BILLING_NAG_DIALOG vs IGR_BILLING_NAG_DIALOG
_worldPacket.WriteBit(SuccessInfo.GameTimeInfo.IsPaidForByIGR); // inGameRoom lua return from Script_GetBillingPlan
_worldPacket.WriteBit(SuccessInfo.GameTimeInfo.IsCAISEnabled); // not used anywhere in the client
_worldPacket.FlushBits();
}
@@ -222,10 +221,12 @@ namespace Game.Networking.Packets
public struct GameTime
{
public uint BillingPlan;
public uint TimeRemain;
public uint Unknown735;
public bool InGameRoom;
public uint BillingType;
public uint MinutesRemaining;
public uint RealBillingType;
public bool IsInIGR;
public bool IsPaidForByIGR;
public bool IsCAISEnabled;
}
public class NewBuild
@@ -24,8 +24,8 @@ namespace Game.Networking.Packets
_worldPacket.WriteInt32(PvpSeasonID);
_worldPacket.WriteInt32(Unknown1027_1);
_worldPacket.WriteBit(WeeklyRewardChestsEnabled);
_worldPacket.WriteBit(Unknown1027_2);
_worldPacket.WriteBit(Unknown1027_3);
_worldPacket.WriteBit(CurrentArenaSeasonUsesTeams);
_worldPacket.WriteBit(PreviousArenaSeasonUsesTeams);
_worldPacket.FlushBits();
}
@@ -37,8 +37,8 @@ namespace Game.Networking.Packets
public int ConquestWeeklyProgressCurrencyID;
public int Unknown1027_1;
public bool WeeklyRewardChestsEnabled;
public bool Unknown1027_2;
public bool Unknown1027_3;
public bool CurrentArenaSeasonUsesTeams;
public bool PreviousArenaSeasonUsesTeams;
}
public class AreaSpiritHealerQuery : ClientPacket
@@ -167,7 +167,7 @@ namespace Game.Networking.Packets
Hdr.Write(_worldPacket);
_worldPacket.WriteUInt32(AverageWaitTime);
_worldPacket.WriteUInt32(WaitTime);
_worldPacket.WriteInt32(Unused920);
_worldPacket.WriteInt32(SpecSelected);
_worldPacket.WriteBit(AsGroup);
_worldPacket.WriteBit(EligibleForMatchmaking);
_worldPacket.WriteBit(SuspendedQueue);
@@ -180,7 +180,7 @@ namespace Game.Networking.Packets
public bool SuspendedQueue;
public bool EligibleForMatchmaking;
public uint WaitTime;
public int Unused920;
public int SpecSelected;
}
public class BattlefieldStatusFailed : ServerPacket
@@ -582,8 +582,8 @@ namespace Game.Networking.Packets
public int Ranking;
public int SeasonPlayed;
public int SeasonWon;
public int Unused1;
public int Unused2;
public int SeasonFactionPlayed;
public int SeasonFactionWon;
public int WeeklyPlayed;
public int WeeklyWon;
public int RoundsSeasonPlayed;
@@ -594,9 +594,9 @@ namespace Game.Networking.Packets
public int LastWeeksBestRating;
public int BestSeasonRating;
public int PvpTierID;
public int Unused3;
public int Unused4;
public int Rank;
public int SeasonPvpTier;
public int BestWeeklyPvpTier;
public int BestSeasonPvpTierEnum;
public bool Disqualified;
public void Write(WorldPacket data)
@@ -605,8 +605,8 @@ namespace Game.Networking.Packets
data.WriteInt32(Ranking);
data.WriteInt32(SeasonPlayed);
data.WriteInt32(SeasonWon);
data.WriteInt32(Unused1);
data.WriteInt32(Unused2);
data.WriteInt32(SeasonFactionPlayed);
data.WriteInt32(SeasonFactionWon);
data.WriteInt32(WeeklyPlayed);
data.WriteInt32(WeeklyWon);
data.WriteInt32(RoundsSeasonPlayed);
@@ -617,9 +617,9 @@ namespace Game.Networking.Packets
data.WriteInt32(LastWeeksBestRating);
data.WriteInt32(BestSeasonRating);
data.WriteInt32(PvpTierID);
data.WriteInt32(Unused3);
data.WriteInt32(Unused4);
data.WriteInt32(Rank);
data.WriteInt32(SeasonPvpTier);
data.WriteInt32(BestWeeklyPvpTier);
data.WriteInt32(BestSeasonPvpTierEnum);
data.WriteBit(Disqualified);
data.FlushBits();
}
@@ -724,6 +724,13 @@ namespace Game.Networking.Packets
//Structs
struct CalendarAddEventInviteInfo
{
public ObjectGuid Guid;
public byte Status;
public byte Moderator;
public ObjectGuid? BnetAccountID;
public ulong? RealmAddress;
public ulong? CommunityID;
public void Read(WorldPacket data)
{
Guid = data.ReadPackedGuid();
@@ -735,19 +742,12 @@ namespace Game.Networking.Packets
bool hasUnused801_3 = data.HasBit();
if (hasUnused801_1)
Unused801_1 = data.ReadPackedGuid();
BnetAccountID = data.ReadPackedGuid();
if (hasUnused801_2)
Unused801_2 = data.ReadUInt64();
RealmAddress = data.ReadUInt64();
if (hasUnused801_3)
Unused801_3 = data.ReadUInt64();
CommunityID = data.ReadUInt64();
}
public ObjectGuid Guid;
public byte Status;
public byte Moderator;
public ObjectGuid? Unused801_1;
public ulong? Unused801_2;
public ulong? Unused801_3;
}
class CalendarAddEventInfo
@@ -29,11 +29,11 @@ namespace Game.Networking.Packets
_worldPacket.WriteBit(Success);
_worldPacket.WriteBit(Realmless);
_worldPacket.WriteBit(IsDeletedCharacters);
_worldPacket.WriteBit(IsNewPlayerRestrictionSkipped);
_worldPacket.WriteBit(IsNewPlayerRestricted);
_worldPacket.WriteBit(IsNewPlayer);
_worldPacket.WriteBit(IsTrialAccountRestricted);
_worldPacket.WriteBit(DisabledClassesMask.HasValue);
_worldPacket.WriteBit(IgnoreNewPlayerRestrictions);
_worldPacket.WriteBit(IsRestrictedNewPlayer);
_worldPacket.WriteBit(IsNewcomerChatCompleted);
_worldPacket.WriteBit(IsRestrictedTrial);
_worldPacket.WriteBit(ClassDisableMask.HasValue);
_worldPacket.WriteBit(DontCreateCharacterDisplays);
_worldPacket.WriteInt32(Characters.Count);
_worldPacket.WriteInt32(RegionwideCharacters.Count);
@@ -43,8 +43,8 @@ namespace Game.Networking.Packets
_worldPacket.WriteInt32(RaceLimitDisables.Count);
_worldPacket.WriteInt32(WarbandGroups.Count);
if (DisabledClassesMask.HasValue)
_worldPacket.WriteUInt32(DisabledClassesMask.Value);
if (ClassDisableMask.HasValue)
_worldPacket.WriteUInt32(ClassDisableMask.Value);
foreach (UnlockedConditionalAppearance unlockedConditionalAppearance in UnlockedConditionalAppearances)
unlockedConditionalAppearance.Write(_worldPacket);
@@ -68,14 +68,14 @@ namespace Game.Networking.Packets
public bool Success;
public bool Realmless;
public bool IsDeletedCharacters; // used for character undelete list
public bool IsNewPlayerRestrictionSkipped; // allows client to skip new player restrictions
public bool IsNewPlayerRestricted; // forbids using level boost and class trials
public bool IsNewPlayer; // forbids hero classes and allied races
public bool IsTrialAccountRestricted;
public bool IgnoreNewPlayerRestrictions; // allows client to skip new player restrictions
public bool IsRestrictedNewPlayer; // forbids using level boost and class trials
public bool IsNewcomerChatCompleted; // forbids hero classes and allied races
public bool IsRestrictedTrial;
public bool DontCreateCharacterDisplays;
public int MaxCharacterLevel = 1;
public uint? DisabledClassesMask = new();
public uint? ClassDisableMask = new();
public List<CharacterInfo> Characters = new(); // all characters on the list
public List<RegionwideCharacterListEntry> RegionwideCharacters = new();
@@ -150,7 +150,7 @@ namespace Game.Networking.Packets
StringArray equipment = new(fields.Read<string>(17), ' ');
ListPosition = fields.Read<byte>(19);
LastPlayedTime = fields.Read<long>(20);
LastActiveTime = fields.Read<long>(20);
var spec = Global.DB2Mgr.GetChrSpecializationByIndex(ClassId, fields.Read<byte>(21));
if (spec != null)
@@ -197,7 +197,7 @@ namespace Game.Networking.Packets
data.WriteUInt32((uint)Flags);
data.WriteUInt32((uint)Flags2);
data.WriteUInt32(Flags3);
data.WriteUInt8(unkWod61x);
data.WriteUInt8(CantLoginReason);
data.WriteUInt32(PetCreatureDisplayId);
data.WriteUInt32(PetExperienceLevel);
@@ -206,8 +206,8 @@ namespace Game.Networking.Packets
foreach (var visualItem in VisualItems)
visualItem.Write(data);
data.WriteInt32(Unknown703);
data.WriteInt64(LastPlayedTime);
data.WriteInt32(SaveVersion);
data.WriteInt64(LastActiveTime);
data.WriteInt32(LastLoginVersion);
PersonalTabard.Write(data);
@@ -248,10 +248,10 @@ namespace Game.Networking.Packets
public CharacterCustomizeFlags Flags2; // Character customization flags @see enum CharacterCustomizeFlags
public uint Flags3; // Character flags 3 @todo research
public bool FirstLogin;
public byte unkWod61x;
public long LastPlayedTime;
public byte CantLoginReason;
public long LastActiveTime;
public short SpecID;
public int Unknown703;
public int SaveVersion;
public int LastLoginVersion;
public uint OverrideSelectScreenFileDataID;
public int TimerunningSeasonID;
@@ -295,7 +295,7 @@ namespace Game.Networking.Packets
public class CharacterRestrictionAndMailData
{
public bool BoostInProgress; ///< @todo
public uint Flags4;
public uint RestrictionFlags;
public List<string> MailSenders = new();
public List<uint> MailSenderTypes = new();
public bool RpeResetAvailable;
@@ -310,7 +310,7 @@ namespace Game.Networking.Packets
data.WriteBit(RpeResetQuestClearAvailable);
data.FlushBits();
data.WriteUInt32(Flags4);
data.WriteUInt32(RestrictionFlags);
data.WriteInt32(MailSenders.Count);
data.WriteInt32(MailSenderTypes.Count);
@@ -373,46 +373,46 @@ namespace Game.Networking.Packets
public struct RaceUnlock
{
public int RaceID;
public bool HasUnlockedLicense;
public bool HasUnlockedAchievement;
public bool HasHeritageArmorUnlockAchievement;
public bool HideRaceOnClient;
public bool Unused1027;
public void Write(WorldPacket data)
{
data.WriteInt32(RaceID);
data.WriteBit(HasExpansion);
data.WriteBit(HasAchievement);
data.WriteBit(HasHeritageArmor);
data.WriteBit(IsLocked);
data.WriteBit(HasUnlockedLicense);
data.WriteBit(HasUnlockedAchievement);
data.WriteBit(HasHeritageArmorUnlockAchievement);
data.WriteBit(HideRaceOnClient);
data.WriteBit(Unused1027);
data.FlushBits();
}
public int RaceID;
public bool HasExpansion;
public bool HasAchievement;
public bool HasHeritageArmor;
public bool IsLocked;
public bool Unused1027;
}
public struct UnlockedConditionalAppearance
{
public int AchievementID;
public int ConditionalType;
public void Write(WorldPacket data)
{
data.WriteInt32(AchievementID);
data.WriteInt32(Unused);
data.WriteInt32(ConditionalType);
}
public int AchievementID;
public int Unused;
}
public struct RaceLimitDisableInfo
{
public int RaceID;
public int BlockReason;
public int Reason;
public void Write(WorldPacket data)
{
data.WriteInt32(RaceID);
data.WriteInt32(BlockReason);
data.WriteInt32(Reason);
}
}
}
@@ -191,7 +191,7 @@ namespace Game.Networking.Packets
Clear();
SenderGUID.Clear();
SenderAccountGUID.Clear();
SenderWowAccount.Clear();
SenderGuildGUID.Clear();
TargetGUID.Clear();
SenderName = "";
@@ -226,7 +226,7 @@ namespace Game.Networking.Packets
Player playerSender = sender.ToPlayer();
if (playerSender != null)
{
SenderAccountGUID = playerSender.GetSession().GetAccountGUID();
SenderWowAccount = playerSender.GetSession().GetAccountGUID();
_ChatFlags = playerSender.GetChatFlags();
SenderGuildGUID = ObjectGuid.Create(HighGuid.Guild, playerSender.GetGuildId());
@@ -248,7 +248,7 @@ namespace Game.Networking.Packets
_worldPacket.WriteUInt32((uint)_Language);
_worldPacket.WritePackedGuid(SenderGUID);
_worldPacket.WritePackedGuid(SenderGuildGUID);
_worldPacket.WritePackedGuid(SenderAccountGUID);
_worldPacket.WritePackedGuid(SenderWowAccount);
_worldPacket.WritePackedGuid(TargetGUID);
_worldPacket.WriteUInt32(TargetVirtualAddress);
_worldPacket.WriteUInt32(SenderVirtualAddress);
@@ -263,7 +263,7 @@ namespace Game.Networking.Packets
_worldPacket.WriteBits(ChatText.GetByteCount(), 12);
_worldPacket.WriteBit(HideChatLog);
_worldPacket.WriteBit(FakeSenderName);
_worldPacket.WriteBit(Unused_801.HasValue);
_worldPacket.WriteBit(BroadcastTextID.HasValue);
_worldPacket.WriteBit(ChannelGUID.HasValue);
_worldPacket.FlushBits();
@@ -273,8 +273,8 @@ namespace Game.Networking.Packets
_worldPacket.WriteString(Channel);
_worldPacket.WriteString(ChatText);
if (Unused_801.HasValue)
_worldPacket.WriteUInt32(Unused_801.Value);
if (BroadcastTextID.HasValue)
_worldPacket.WriteUInt32(BroadcastTextID.Value);
if (ChannelGUID.HasValue)
_worldPacket.WritePackedGuid(ChannelGUID.Value);
@@ -284,7 +284,7 @@ namespace Game.Networking.Packets
public Language _Language = Language.Universal;
public ObjectGuid SenderGUID;
public ObjectGuid SenderGuildGUID;
public ObjectGuid SenderAccountGUID;
public ObjectGuid SenderWowAccount;
public ObjectGuid TargetGUID;
public uint SenderVirtualAddress;
public uint TargetVirtualAddress;
@@ -297,7 +297,7 @@ namespace Game.Networking.Packets
public ChatFlags _ChatFlags;
public float DisplayTime;
public uint SpellID;
public uint? Unused_801;
public uint? BroadcastTextID;
public bool HideChatLog;
public bool FakeSenderName;
public ObjectGuid? ChannelGUID;
@@ -209,16 +209,16 @@ namespace Game.Networking.Packets
public override void Read()
{
uint nameLen = _worldPacket.ReadBits<uint>(9);
bool hasUnused910 = _worldPacket.HasBit();
bool hasArenaTeam = _worldPacket.HasBit();
Name = _worldPacket.ReadString(nameLen);
if (hasUnused910)
Unused910 = _worldPacket.ReadInt32();
if (hasArenaTeam)
ArenaTeam = _worldPacket.ReadInt32();
}
public string Name;
public int? Unused910;
public int? ArenaTeam;
}
public class GuildInvite : ServerPacket
@@ -1700,7 +1700,7 @@ namespace Game.Networking.Packets
public class GuildRewardItem
{
public uint ItemID;
public uint Unk4;
public uint AchievementLogic;
public List<uint> AchievementsRequired = new();
public RaceMask<ulong> RaceMask;
public int MinGuildLevel;
@@ -1710,7 +1710,7 @@ namespace Game.Networking.Packets
public void Write(WorldPacket data)
{
data.WriteUInt32(ItemID);
data.WriteUInt32(Unk4);
data.WriteUInt32(AchievementLogic);
data.WriteInt32(AchievementsRequired.Count);
data.WriteUInt64(RaceMask.RawValue);
data.WriteInt32(MinGuildLevel);
@@ -276,10 +276,30 @@ namespace Game.Networking.Packets
public struct PVPBracketData
{
public int Rating;
public int RatingID;
public int Rank;
public int WeeklyPlayed;
public int WeeklyWon;
public int SeasonPlayed;
public int SeasonWon;
public int WeeklyBestRating;
public int LastWeeksBestRating;
public int Tier;
public int WeeklyBestTier;
public int SeasonBestRating;
public int SeasonBestTierEnum;
public int RoundsSeasonPlayed;
public int RoundsSeasonWon;
public int RoundsWeeklyPlayed;
public int RoundsWeeklyWon;
public byte Bracket;
public bool Disqualified;
public void Write(WorldPacket data)
{
data.WriteUInt8(Bracket);
data.WriteInt32(Unused3);
data.WriteInt32(RatingID);
data.WriteInt32(Rating);
data.WriteInt32(Rank);
data.WriteInt32(WeeklyPlayed);
@@ -287,11 +307,11 @@ namespace Game.Networking.Packets
data.WriteInt32(SeasonPlayed);
data.WriteInt32(SeasonWon);
data.WriteInt32(WeeklyBestRating);
data.WriteInt32(LastWeeksBestRating);
data.WriteInt32(Tier);
data.WriteInt32(WeeklyBestTier);
data.WriteInt32(SeasonBestRating);
data.WriteInt32(PvpTierID);
data.WriteInt32(WeeklyBestWinPvpTierID);
data.WriteInt32(Unused1);
data.WriteInt32(Unused2);
data.WriteInt32(SeasonBestTierEnum);
data.WriteInt32(RoundsSeasonPlayed);
data.WriteInt32(RoundsSeasonWon);
data.WriteInt32(RoundsWeeklyPlayed);
@@ -299,26 +319,6 @@ namespace Game.Networking.Packets
data.WriteBit(Disqualified);
data.FlushBits();
}
public int Rating;
public int Rank;
public int WeeklyPlayed;
public int WeeklyWon;
public int SeasonPlayed;
public int SeasonWon;
public int WeeklyBestRating;
public int SeasonBestRating;
public int PvpTierID;
public int WeeklyBestWinPvpTierID;
public int Unused1;
public int Unused2;
public int Unused3;
public int RoundsSeasonPlayed;
public int RoundsSeasonWon;
public int RoundsWeeklyPlayed;
public int RoundsWeeklyWon;
public byte Bracket;
public bool Disqualified;
}
public class TraitInspectInfo
+10 -10
View File
@@ -408,11 +408,11 @@ namespace Game.Networking.Packets
_worldPacket.WritePackedGuid(PlayerGUID);
_worldPacket.WriteUInt8(Slot);
_worldPacket.WriteInt32(SlotInBag);
_worldPacket.WriteInt32(QuestLogItemID);
_worldPacket.WriteInt32(ProxyItemID);
_worldPacket.WriteUInt32(Quantity);
_worldPacket.WriteUInt32(QuantityInInventory);
_worldPacket.WriteInt32(QuantityInQuestLog);
_worldPacket.WriteInt32(DungeonEncounterID);
_worldPacket.WriteInt32(EncounterID);
_worldPacket.WriteInt32(BattlePetSpeciesID);
_worldPacket.WriteInt32(BattlePetBreedID);
_worldPacket.WriteUInt8(BattlePetBreedQuality);
@@ -424,10 +424,10 @@ namespace Game.Networking.Packets
_worldPacket.WriteBit(Pushed);
_worldPacket.WriteBit(Created);
_worldPacket.WriteBit(Unused_1017);
_worldPacket.WriteBits((uint)DisplayText, 3);
_worldPacket.WriteBit(FakeQuestItem);
_worldPacket.WriteBits((uint)ChatNotifyType, 3);
_worldPacket.WriteBit(IsBonusRoll);
_worldPacket.WriteBit(IsEncounterLoot);
_worldPacket.WriteBit(IsPersonalLoot);
_worldPacket.WriteBit(CraftingData != null);
_worldPacket.WriteBit(FirstCraftOperationID.HasValue);
_worldPacket.FlushBits();
@@ -445,12 +445,12 @@ namespace Game.Networking.Packets
public byte Slot;
public int SlotInBag;
public ItemInstance Item = new();
public int QuestLogItemID;// Item ID used for updating quest progress
public int ProxyItemID;// Item ID used for updating quest progress
// only set if different than real ID (similar to CreatureTemplate.KillCredit)
public uint Quantity;
public uint QuantityInInventory;
public int QuantityInQuestLog;
public int DungeonEncounterID;
public int EncounterID;
public int BattlePetSpeciesID;
public int BattlePetBreedID;
public byte BattlePetBreedQuality;
@@ -460,11 +460,11 @@ namespace Game.Networking.Packets
public CraftingData CraftingData;
public uint? FirstCraftOperationID;
public bool Pushed;
public DisplayType DisplayText;
public DisplayType ChatNotifyType;
public bool Created;
public bool Unused_1017;
public bool FakeQuestItem;
public bool IsBonusRoll;
public bool IsEncounterLoot;
public bool IsPersonalLoot;
public enum DisplayType
{
+19 -19
View File
@@ -17,7 +17,7 @@ namespace Game.Networking.Packets
{
QueueAsGroup = _worldPacket.HasBit();
bool hasPartyIndex = _worldPacket.HasBit();
Unknown = _worldPacket.HasBit();
Mercenary = _worldPacket.HasBit();
Roles = (LfgRoles)_worldPacket.ReadUInt32();
var slotsCount = _worldPacket.ReadInt32();
@@ -29,7 +29,7 @@ namespace Game.Networking.Packets
}
public bool QueueAsGroup;
public bool Unknown; // Always false in 7.2.5
public bool Mercenary;
public byte? PartyIndex;
public LfgRoles Roles;
public List<uint> Slots = new();
@@ -184,7 +184,7 @@ namespace Game.Networking.Packets
_worldPacket.WriteBit(Joined);
_worldPacket.WriteBit(LfgJoined);
_worldPacket.WriteBit(Queued);
_worldPacket.WriteBit(Unused);
_worldPacket.WriteBit(Brawl);
_worldPacket.FlushBits();
}
@@ -200,7 +200,7 @@ namespace Game.Networking.Packets
public bool Joined;
public bool LfgJoined;
public bool Queued;
public bool Unused;
public bool Brawl;
}
class RoleChosen : ServerPacket
@@ -368,10 +368,10 @@ namespace Game.Networking.Packets
_worldPacket.WriteUInt32(CompletedMask);
_worldPacket.WriteUInt32(EncounterMask);
_worldPacket.WriteInt32(Players.Count);
_worldPacket.WriteUInt8(Unused);
_worldPacket.WriteUInt8(PromisedShortageRolePriority);
_worldPacket.WriteBit(ValidCompletedMask);
_worldPacket.WriteBit(ProposalSilent);
_worldPacket.WriteBit(IsRequeue);
_worldPacket.WriteBit(FailedByMyParty);
_worldPacket.FlushBits();
foreach (var player in Players)
@@ -385,10 +385,10 @@ namespace Game.Networking.Packets
public byte State;
public uint CompletedMask;
public uint EncounterMask;
public byte Unused;
public byte PromisedShortageRolePriority;
public bool ValidCompletedMask;
public bool ProposalSilent;
public bool IsRequeue;
public bool FailedByMyParty;
public List<LFGProposalUpdatePlayer> Players = new();
}
@@ -532,19 +532,19 @@ namespace Game.Networking.Packets
}
data.WriteBit(RewardSpellID.HasValue);
data.WriteBit(Unused1.HasValue);
data.WriteBit(Unused2.HasValue);
data.WriteBit(ArtifactXPCategory.HasValue);
data.WriteBit(ArtifactXP.HasValue);
data.WriteBit(Honor.HasValue);
data.FlushBits();
if (RewardSpellID.HasValue)
data.WriteInt32(RewardSpellID.Value);
if (Unused1.HasValue)
data.WriteInt32(Unused1.Value);
if (ArtifactXPCategory.HasValue)
data.WriteInt32(ArtifactXPCategory.Value);
if (Unused2.HasValue)
data.WriteUInt64(Unused2.Value);
if (ArtifactXP.HasValue)
data.WriteUInt64(ArtifactXP.Value);
if (Honor.HasValue)
data.WriteInt32(Honor.Value);
@@ -557,8 +557,8 @@ namespace Game.Networking.Packets
public List<LfgPlayerQuestRewardCurrency> Currency = new();
public List<LfgPlayerQuestRewardCurrency> BonusCurrency = new();
public int? RewardSpellID; // Only used by SMSG_LFG_PLAYER_INFO
public int? Unused1;
public ulong? Unused2;
public int? ArtifactXPCategory;
public ulong? ArtifactXP;
public int? Honor; // Only used by SMSG_REQUEST_PVP_REWARDS_RESPONSE
}
@@ -754,7 +754,7 @@ namespace Game.Networking.Packets
Id = data.ReadUInt32();
Type = (RideType)data.ReadUInt32();
Time = data.ReadInt64();
Unknown925 = data.HasBit();
IsCrossFaction = data.HasBit();
data.ResetBitPos();
}
@@ -764,7 +764,7 @@ namespace Game.Networking.Packets
data.WriteUInt32(Id);
data.WriteUInt32((uint)Type);
data.WriteInt64(Time);
data.WriteBit(Unknown925);
data.WriteBit(IsCrossFaction);
data.FlushBits();
}
@@ -772,7 +772,7 @@ namespace Game.Networking.Packets
public uint Id;
public RideType Type;
public long Time;
public bool Unknown925;
public bool IsCrossFaction;
}
public enum RideType
@@ -1192,7 +1192,7 @@ namespace Game.Networking.Packets
_worldPacket.WriteBit(IsFullUpdate);
_worldPacket.FlushBits();
_worldPacket.WriteInt32(Unk);
_worldPacket.WriteInt32(ItemCollectionType);
// both lists have to have the same size
_worldPacket.WriteInt32(Heirlooms.Count);
@@ -1207,7 +1207,7 @@ namespace Game.Networking.Packets
public bool IsFullUpdate;
public Dictionary<uint, HeirloomData> Heirlooms = new();
public int Unk;
public int ItemCollectionType;
}
class MountSpecial : ClientPacket
@@ -359,7 +359,7 @@ namespace Game.Networking.Packets
data.WriteUInt32(movementForce.TransportID);
data.WriteFloat(movementForce.Magnitude);
data.WriteInt32(movementForce.Unused910);
data.WriteInt32(movementForce.MovementForceID);
data.WriteBits((byte)movementForce.Type, 2);
data.FlushBits();
}
@@ -1467,7 +1467,7 @@ namespace Game.Networking.Packets
data.WriteBits((byte)Face, 2);
data.WriteBits(Points.Count, 16);
data.WriteBit(VehicleExitVoluntary);
data.WriteBit(Interpolate);
data.WriteBit(TaxiSmoothing);
data.WriteBits(PackedDeltas.Count, 16);
data.WriteBit(SplineFilter != null);
data.WriteBit(SpellEffectExtraData.HasValue);
@@ -1520,7 +1520,7 @@ namespace Game.Networking.Packets
public List<Vector3> Points = new(); // Spline path
public byte Mode; // Spline mode - actually always 0 in this packet - Catmullrom mode appears only in SMSG_UPDATE_OBJECT. In this packet it is determined by flags
public bool VehicleExitVoluntary;
public bool Interpolate;
public bool TaxiSmoothing;
public ObjectGuid TransportGUID;
public sbyte VehicleSeat = -1;
public List<Vector3> PackedDeltas = new();
@@ -1545,14 +1545,14 @@ namespace Game.Networking.Packets
{
data.WriteUInt32(Id);
data.WriteBit(CrzTeleport);
data.WriteBits(StopDistanceTolerance, 3);
data.WriteBits(StopSplineStyle, 3);
Move.Write(data);
}
public uint Id;
public bool CrzTeleport;
public byte StopDistanceTolerance; // Determines how far from spline destination the mover is allowed to stop in place 0, 0, 3.0, 2.76, numeric_limits<float>::max, 1.1, float(INT_MAX); default before this field existed was distance 3.0 (index 2)
public byte StopSplineStyle; // Determines how far from spline destination the mover is allowed to stop in place 0, 0, 3.0, 2.76, numeric_limits<float>::max, 1.1, float(INT_MAX); default before this field existed was distance 3.0 (index 2)
public MovementSpline Move;
}
+18 -15
View File
@@ -84,19 +84,19 @@ namespace Game.Networking.Packets
public override void Write()
{
_worldPacket.WriteBit(CanAccept);
_worldPacket.WriteBit(MightCRZYou);
_worldPacket.WriteBit(IsXRealm);
_worldPacket.WriteBit(MustBeBNetFriend);
_worldPacket.WriteBit(IsXNativeRealm);
_worldPacket.WriteBit(ShouldSquelch);
_worldPacket.WriteBit(AllowMultipleRoles);
_worldPacket.WriteBit(QuestSessionActive);
_worldPacket.WriteBits(InviterName.GetByteCount(), 6);
_worldPacket.WriteBit(Unused1102);
_worldPacket.WriteBit(IsCrossFaction);
InviterRealm.Write(_worldPacket);
_worldPacket.WritePackedGuid(InviterGUID);
_worldPacket.WritePackedGuid(InviterBNetAccountId);
_worldPacket.WriteUInt16(Unk1);
_worldPacket.WriteUInt16(InviterCfgRealmID);
_worldPacket.WriteUInt8(ProposedRoles);
_worldPacket.WriteInt32(LfgSlots.Count);
_worldPacket.WriteInt32(LfgCompletedMask);
@@ -107,12 +107,11 @@ namespace Game.Networking.Packets
_worldPacket.WriteInt32(LfgSlot);
}
public bool MightCRZYou;
public bool MustBeBNetFriend;
public bool ShouldSquelch;
public bool AllowMultipleRoles;
public bool QuestSessionActive;
public bool Unused1102;
public ushort Unk1;
public bool IsCrossFaction;
public ushort InviterCfgRealmID;
public bool CanAccept;
@@ -124,6 +123,7 @@ namespace Game.Networking.Packets
// Realm
public bool IsXRealm;
public bool IsXNativeRealm;
// Lfg
public byte ProposedRoles;
@@ -362,8 +362,11 @@ namespace Game.Networking.Packets
MemberStats.PetStats.Auras.Add(aura);
}
}
MemberStats.ChromieTime.ConditionalFlags = player.m_playerData.CtrOptions.GetValue().ConditionalFlags;
MemberStats.ChromieTime.FactionGroup = (int)player.m_playerData.CtrOptions.GetValue().FactionGroup;
MemberStats.ChromieTime.ChromieTimeExpansionMask = player.m_playerData.CtrOptions.GetValue().ChromieTimeExpansionMask;
}
public bool ForEnemy;
@@ -1163,15 +1166,15 @@ namespace Game.Networking.Packets
public struct CTROptions
{
public uint ContentTuningConditionMask;
public int Unused901;
public uint ExpansionLevelMask;
public uint ConditionalFlags;
public int FactionGroup;
public uint ChromieTimeExpansionMask;
public void Write(WorldPacket data)
{
data.WriteUInt32(ContentTuningConditionMask);
data.WriteInt32(Unused901);
data.WriteUInt32(ExpansionLevelMask);
data.WriteUInt32(ConditionalFlags);
data.WriteInt32(FactionGroup);
data.WriteUInt32(ChromieTimeExpansionMask);
}
}
@@ -77,13 +77,13 @@ namespace Game.Networking.Packets
uint titleLen = _worldPacket.ReadBits<uint>(7);
Unit = _worldPacket.ReadPackedGuid();
Unused910 = _worldPacket.ReadUInt32();
Muid = _worldPacket.ReadUInt32();
Title = _worldPacket.ReadString(titleLen);
}
public ObjectGuid Unit;
public string Title;
public uint Unused910;
public uint Muid;
}
public class PetitionShowSignatures : ClientPacket
+18 -16
View File
@@ -614,6 +614,7 @@ namespace Game.Networking.Packets
Sex = player.GetNativeGender();
ClassID = player.GetClass();
Level = (byte)player.GetLevel();
PvpFaction = (byte)(player.GetTeamId() == BattleGroundTeamId.Alliance ? 1 : 0);
TimerunningSeasonID = player.m_activePlayerData.TimerunningSeasonID;
DeclinedNames names = player.GetDeclinedNames();
@@ -632,6 +633,7 @@ namespace Game.Networking.Packets
Sex = characterInfo.Sex;
ClassID = characterInfo.ClassId;
Level = characterInfo.Level;
PvpFaction = (byte)(Player.TeamIdForRace(characterInfo.RaceId) == BattleGroundTeamId.Alliance ? 1 : 0);
}
IsDeleted = characterInfo.IsDeleted;
@@ -662,7 +664,7 @@ namespace Game.Networking.Packets
data.WriteUInt8((byte)Sex);
data.WriteUInt8((byte)ClassID);
data.WriteUInt8(Level);
data.WriteUInt8(Unused915);
data.WriteUInt8(PvpFaction);
data.WriteInt32(TimerunningSeasonID);
data.WriteString(Name);
}
@@ -678,25 +680,25 @@ namespace Game.Networking.Packets
public Gender Sex = Gender.None;
public Class ClassID = Class.None;
public byte Level;
public byte Unused915;
public byte PvpFaction;
public int TimerunningSeasonID;
public DeclinedName DeclinedNames = new();
}
public class NameCacheUnused920
public class GuildGuidLookupData
{
public uint Unused1;
public ObjectGuid Unused2;
public string Unused3 = "";
public uint VirtualRealmAddress;
public ObjectGuid Guid;
public string Name = "";
public void Write(WorldPacket data)
{
data.WriteUInt32(Unused1);
data.WritePackedGuid(Unused2);
data.WriteBits(Unused3.GetByteCount(), 7);
data.WriteUInt32(VirtualRealmAddress);
data.WritePackedGuid(Guid);
data.WriteBits(Name.GetByteCount(), 7);
data.FlushBits();
data.WriteString(Unused3);
data.WriteString(Name);
}
}
@@ -705,21 +707,21 @@ namespace Game.Networking.Packets
public ObjectGuid Player;
public byte Result; // 0 - full packet, != 0 - only guid
public PlayerGuidLookupData Data;
public NameCacheUnused920 Unused920;
public GuildGuidLookupData GuildData;
public void Write(WorldPacket data)
{
data.WriteUInt8(Result);
data.WritePackedGuid(Player);
data.WriteBit(Data != null);
data.WriteBit(Unused920 != null);
data.WriteBit(GuildData != null);
data.FlushBits();
if (Data != null)
Data.Write(data);
if (Unused920 != null)
Unused920.Write(data);
if (GuildData != null)
GuildData.Write(data);
}
}
@@ -837,14 +839,14 @@ namespace Game.Networking.Packets
public List<TreasurePickItem> Items = new();
public List<TreasurePickCurrency> Currencies = new();
public ulong Money;
public bool Unknown;
public bool Context;
public void Write(WorldPacket data)
{
data.WriteInt32(Items.Count);
data.WriteInt32(Currencies.Count);
data.WriteUInt64(Money);
data.WriteBit(Unknown);
data.WriteBit(Context);
data.FlushBits();
foreach (TreasurePickItem treasurePickerItem in Items)
@@ -89,8 +89,8 @@ namespace Game.Networking.Packets
{
public ObjectGuid ScenarioGUID;
public int ScenarioID;
public int Unk1;
public byte Unk2;
public int TimeRemain;
public byte Reason;
public ScenarioVacate() : base(ServerOpcodes.ScenarioVacate, ConnectionType.Instance) { }
@@ -98,8 +98,8 @@ namespace Game.Networking.Packets
{
_worldPacket.WritePackedGuid(ScenarioGUID);
_worldPacket.WriteInt32(ScenarioID);
_worldPacket.WriteInt32(Unk1);
_worldPacket.WriteBits(Unk2, 2);
_worldPacket.WriteInt32(TimeRemain);
_worldPacket.WriteBits(Reason, 2);
_worldPacket.FlushBits();
}
}
+10 -10
View File
@@ -1537,17 +1537,17 @@ namespace Game.Networking.Packets
public struct SpellSupportInfo
{
public ObjectGuid CasterGUID;
public int SpellID;
public int Amount;
public float Percentage;
public ObjectGuid Supporter;
public int SupportSpellID;
public int AmountRaw;
public float AmountPortion;
public void Write(WorldPacket data)
{
data.WritePackedGuid(CasterGUID);
data.WriteInt32(SpellID);
data.WriteInt32(Amount);
data.WriteFloat(Percentage);
data.WritePackedGuid(Supporter);
data.WriteInt32(SupportSpellID);
data.WriteInt32(AmountRaw);
data.WriteFloat(AmountPortion);
}
}
@@ -1780,7 +1780,7 @@ namespace Game.Networking.Packets
public int ItemID;
public int DataSlotIndex;
public int Quantity;
public byte? Unknown_1000;
public byte? Source;
public void Read(WorldPacket data)
{
@@ -1788,7 +1788,7 @@ namespace Game.Networking.Packets
DataSlotIndex = data.ReadInt32();
Quantity = data.ReadInt32();
if (data.HasBit())
Unknown_1000 = data.ReadUInt8();
Source = data.ReadUInt8();
}
}
+135 -134
View File
@@ -23,30 +23,30 @@ namespace Game.Networking.Packets
_worldPacket.WriteUInt32(RAFSystem.MaxRecruitMonths);
_worldPacket.WriteUInt32(RAFSystem.MaxRecruitmentUses);
_worldPacket.WriteUInt32(RAFSystem.DaysInCycle);
_worldPacket.WriteUInt32(RAFSystem.Unknown1007);
_worldPacket.WriteUInt32(RAFSystem.RewardsVersion);
_worldPacket.WriteUInt32(TokenPollTimeSeconds);
_worldPacket.WriteUInt32(KioskSessionMinutes);
_worldPacket.WriteInt64(TokenBalanceAmount);
_worldPacket.WriteUInt32(CommercePricePollTimeSeconds);
_worldPacket.WriteUInt32(KioskSessionDurationMinutes);
_worldPacket.WriteInt64(RedeemForBalanceAmount);
_worldPacket.WriteUInt32(BpayStoreProductDeliveryDelay);
_worldPacket.WriteUInt32(ClubsPresenceUpdateTimer);
_worldPacket.WriteUInt32(HiddenUIClubsPresenceUpdateTimer);
_worldPacket.WriteUInt32(BpayStorePurchaseTimeout);
_worldPacket.WriteUInt32(ClubsPresenceDelay);
_worldPacket.WriteUInt32(ClubPresenceUnsubscribeDelay);
_worldPacket.WriteInt32(ActiveSeason);
_worldPacket.WriteInt32(GameRuleValues.Count);
_worldPacket.WriteInt32(ContentSetID);
_worldPacket.WriteInt32(GameRules.Count);
_worldPacket.WriteInt32(ActiveTimerunningSeasonID);
_worldPacket.WriteInt32(RemainingTimerunningSeasonSeconds);
_worldPacket.WriteInt16(MaxPlayerNameQueriesPerPacket);
_worldPacket.WriteInt16(PlayerNameQueryTelemetryInterval);
_worldPacket.WriteUInt32((uint)PlayerNameQueryInterval.TotalSeconds);
_worldPacket.WriteInt16(MaxPlayerGuidLookupsPerRequest);
_worldPacket.WriteInt16(NameLookupTelemetryInterval);
_worldPacket.WriteUInt32((uint)NotFoundCacheTimeSeconds.TotalSeconds);
_worldPacket.WriteInt32(AddonChatThrottle.MaxTries);
_worldPacket.WriteInt32(AddonChatThrottle.TriesRestoredPerSecond);
_worldPacket.WriteInt32(AddonChatThrottle.UsedTriesPerMessage);
foreach (GameRuleValuePair gameRuleValue in GameRuleValues)
foreach (GameRuleValuePair gameRuleValue in GameRules)
gameRuleValue.Write(_worldPacket);
_worldPacket.WriteBit(VoiceEnabled);
@@ -62,43 +62,43 @@ namespace Game.Networking.Packets
_worldPacket.WriteBit(RAFSystem.RecruitingEnabled);
_worldPacket.WriteBit(CharUndeleteEnabled);
_worldPacket.WriteBit(RestrictedAccount);
_worldPacket.WriteBit(CommerceSystemEnabled);
_worldPacket.WriteBit(TutorialsEnabled);
_worldPacket.WriteBit(CommerceServerEnabled);
_worldPacket.WriteBit(TutorialEnabled);
_worldPacket.WriteBit(Unk67);
_worldPacket.WriteBit(WillKickFromWorld);
_worldPacket.WriteBit(VeteranTokenRedeemWillKick);
_worldPacket.WriteBit(WorldTokenRedeemWillKick);
_worldPacket.WriteBit(KioskModeEnabled);
_worldPacket.WriteBit(CompetitiveModeEnabled);
_worldPacket.WriteBit(TokenBalanceEnabled);
_worldPacket.WriteBit(WarModeFeatureEnabled);
_worldPacket.WriteBit(ClubsEnabled);
_worldPacket.WriteBit(ClubsBattleNetClubTypeAllowed);
_worldPacket.WriteBit(RedeemForBalanceAvailable);
_worldPacket.WriteBit(WarModeEnabled);
_worldPacket.WriteBit(CommunitiesEnabled);
_worldPacket.WriteBit(BnetGroupsEnabled);
_worldPacket.WriteBit(ClubsCharacterClubTypeAllowed);
_worldPacket.WriteBit(ClubsPresenceUpdateEnabled);
_worldPacket.WriteBit(VoiceChatDisabledByParentalControl);
_worldPacket.WriteBit(VoiceChatMutedByParentalControl);
_worldPacket.WriteBit(CharacterCommunitiesEnabled);
_worldPacket.WriteBit(ClubPresenceAllowSubscribeAll);
_worldPacket.WriteBit(VoiceChatParentalDisabled);
_worldPacket.WriteBit(VoiceChatParentalMuted);
_worldPacket.WriteBit(QuestSessionEnabled);
_worldPacket.WriteBit(IsMuted);
_worldPacket.WriteBit(IsChatMuted);
_worldPacket.WriteBit(ClubFinderEnabled);
_worldPacket.WriteBit(CommunityFinderEnabled);
_worldPacket.WriteBit(Unknown901CheckoutRelated);
_worldPacket.WriteBit(TextToSpeechFeatureEnabled);
_worldPacket.WriteBit(BrowserCrashReporterEnabled);
_worldPacket.WriteBit(SpeakForMeAllowed);
_worldPacket.WriteBit(ChatDisabledByDefault);
_worldPacket.WriteBit(ChatDisabledByPlayer);
_worldPacket.WriteBit(LFGListCustomRequiresAuthenticator);
_worldPacket.WriteBit(AddonsDisabled);
_worldPacket.WriteBit(DoesAccountNeedAADCPrompt);
_worldPacket.WriteBit(IsAccountOptedInToAADC);
_worldPacket.WriteBit(LfgRequireAuthenticatorEnabled);
_worldPacket.WriteBit(ScriptsDisallowedForBeta);
_worldPacket.WriteBit(TimerunningEnabled);
_worldPacket.WriteBit(WarGamesEnabled);
_worldPacket.WriteBit(ContentTrackingEnabled);
_worldPacket.WriteBit(IsSellAllJunkEnabled);
_worldPacket.WriteBit(IsPlayerContentTrackingEnabled);
_worldPacket.WriteBit(SellAllJunkEnabled);
_worldPacket.WriteBit(IsGroupFinderEnabled);
_worldPacket.WriteBit(IsLFDEnabled);
_worldPacket.WriteBit(IsLFREnabled);
_worldPacket.WriteBit(GroupFinderEnabled);
_worldPacket.WriteBit(LfdEnabled);
_worldPacket.WriteBit(LfrEnabled);
_worldPacket.WriteBit(IsPremadeGroupEnabled);
_worldPacket.WriteBit(CanShowSetRoleButton);
_worldPacket.WriteBit(PremadeGroupsEnabled);
_worldPacket.WriteBit(false); // unused 10.2.7
_worldPacket.WriteBit(GuildEventsEditsEnabled);
_worldPacket.WriteBit(GuildTradeSkillsEnabled);
@@ -163,54 +163,54 @@ namespace Game.Networking.Packets
public uint CfgRealmID;
public byte ComplaintStatus;
public int CfgRealmRecID;
public uint TokenPollTimeSeconds;
public long TokenBalanceAmount;
public uint BpayStoreProductDeliveryDelay;
public uint ClubsPresenceUpdateTimer;
public uint HiddenUIClubsPresenceUpdateTimer; // Timer for updating club presence when communities ui frame is hidden
public uint KioskSessionMinutes;
public int ActiveSeason; // Currently active Classic season
public short MaxPlayerNameQueriesPerPacket = 50;
public short PlayerNameQueryTelemetryInterval = 600;
public TimeSpan PlayerNameQueryInterval = TimeSpan.FromSeconds(10);
public uint CommercePricePollTimeSeconds;
public long RedeemForBalanceAmount;
public uint BpayStorePurchaseTimeout;
public uint ClubsPresenceDelay;
public uint ClubPresenceUnsubscribeDelay; // Timer for updating club presence when communities ui frame is hidden
public uint KioskSessionDurationMinutes;
public int ContentSetID; // Currently active Classic season
public short MaxPlayerGuidLookupsPerRequest = 50;
public short NameLookupTelemetryInterval = 600;
public TimeSpan NotFoundCacheTimeSeconds = TimeSpan.FromSeconds(10);
public bool ItemRestorationButtonEnabled;
public bool CharUndeleteEnabled; // Implemented
public bool BpayStoreDisabledByParentalControls;
public bool CommerceSystemEnabled;
public bool Unk67;
public bool WillKickFromWorld;
public bool CommerceServerEnabled;
public bool VeteranTokenRedeemWillKick;
public bool WorldTokenRedeemWillKick;
public bool RestrictedAccount;
public bool TutorialsEnabled;
public bool TutorialEnabled;
public bool NPETutorialsEnabled;
public bool KioskModeEnabled;
public bool CompetitiveModeEnabled;
public bool TokenBalanceEnabled;
public bool WarModeFeatureEnabled;
public bool ClubsEnabled;
public bool ClubsBattleNetClubTypeAllowed;
public bool ClubsCharacterClubTypeAllowed;
public bool ClubsPresenceUpdateEnabled;
public bool VoiceChatDisabledByParentalControl;
public bool VoiceChatMutedByParentalControl;
public bool RedeemForBalanceAvailable;
public bool WarModeEnabled;
public bool CommunitiesEnabled;
public bool BnetGroupsEnabled;
public bool CharacterCommunitiesEnabled;
public bool ClubPresenceAllowSubscribeAll;
public bool VoiceChatParentalDisabled;
public bool VoiceChatParentalMuted;
public bool QuestSessionEnabled;
public bool IsMuted;
public bool IsChatMuted;
public bool ClubFinderEnabled;
public bool CommunityFinderEnabled;
public bool Unknown901CheckoutRelated;
public bool TextToSpeechFeatureEnabled;
public bool ChatDisabledByDefault;
public bool ChatDisabledByPlayer;
public bool LFGListCustomRequiresAuthenticator;
public bool AddonsDisabled;
public bool BrowserCrashReporterEnabled;
public bool SpeakForMeAllowed;
public bool DoesAccountNeedAADCPrompt;
public bool IsAccountOptedInToAADC;
public bool LfgRequireAuthenticatorEnabled;
public bool ScriptsDisallowedForBeta;
public bool TimerunningEnabled;
public bool WarGamesEnabled; // classic only
public bool ContentTrackingEnabled;
public bool IsSellAllJunkEnabled;
public bool IsGroupFinderEnabled = true; // classic only
public bool IsLFDEnabled = true; // classic only
public bool IsLFREnabled = true; // classic only
public bool IsPlayerContentTrackingEnabled;
public bool SellAllJunkEnabled;
public bool GroupFinderEnabled = true; // classic only
public bool LfdEnabled = true; // classic only
public bool LfrEnabled = true; // classic only
public bool IsPremadeGroupEnabled = true; // classic only
public bool CanShowSetRoleButton = true;
public bool PremadeGroupsEnabled = true;
public bool GuildEventsEditsEnabled = true;
public bool GuildTradeSkillsEnabled = true;
public bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService
@@ -220,7 +220,7 @@ namespace Game.Networking.Packets
public SocialQueueConfig QuickJoinConfig;
public SquelchInfo Squelch;
public RafSystemFeatureInfo RAFSystem;
public List<GameRuleValuePair> GameRuleValues = new();
public List<GameRuleValuePair> GameRules = new();
public int ActiveTimerunningSeasonID;
public int RemainingTimerunningSeasonSeconds;
public string Unknown1027; // related to movement lua functions used by keybinds
@@ -275,7 +275,7 @@ namespace Game.Networking.Packets
public uint MaxRecruitMonths;
public uint MaxRecruitmentUses;
public uint DaysInCycle;
public uint Unknown1007;
public uint RewardsVersion;
}
public struct AddonChatThrottleParams
@@ -296,33 +296,33 @@ namespace Game.Networking.Packets
_worldPacket.WriteBit(BpayStoreAvailable);
_worldPacket.WriteBit(BpayStoreDisabledByParentalControls);
_worldPacket.WriteBit(CharUndeleteEnabled);
_worldPacket.WriteBit(CommerceSystemEnabled);
_worldPacket.WriteBit(Unk14);
_worldPacket.WriteBit(WillKickFromWorld);
_worldPacket.WriteBit(IsExpansionPreorderInStore);
_worldPacket.WriteBit(CommerceServerEnabled);
_worldPacket.WriteBit(VeteranTokenRedeemWillKick);
_worldPacket.WriteBit(WorldTokenRedeemWillKick);
_worldPacket.WriteBit(ExpansionPreorderInStore);
_worldPacket.WriteBit(KioskModeEnabled);
_worldPacket.WriteBit(CompetitiveModeEnabled);
_worldPacket.WriteBit(IsBoostEnabled);
_worldPacket.WriteBit(BoostEnabled);
_worldPacket.WriteBit(TrialBoostEnabled);
_worldPacket.WriteBit(TokenBalanceEnabled);
_worldPacket.WriteBit(RedeemForBalanceAvailable);
_worldPacket.WriteBit(PaidCharacterTransfersBetweenBnetAccountsEnabled);
_worldPacket.WriteBit(LiveRegionCharacterListEnabled);
_worldPacket.WriteBit(LiveRegionCharacterCopyEnabled);
_worldPacket.WriteBit(LiveRegionAccountCopyEnabled);
_worldPacket.WriteBit(LiveRegionKeyBindingsCopyEnabled);
_worldPacket.WriteBit(Unknown901CheckoutRelated);
_worldPacket.WriteBit(false); // unused, 10.0.2
_worldPacket.WriteBit(BrowserCrashReporterEnabled);
_worldPacket.WriteBit(IsEmployeeAccount);
_worldPacket.WriteBit(EuropaTicketSystemStatus.HasValue);
_worldPacket.WriteBit(IsNameReservationEnabled);
_worldPacket.WriteBit(LaunchETA.HasValue);
_worldPacket.WriteBit(NameReservationOnly);
_worldPacket.WriteBit(LaunchDurationETA.HasValue);
_worldPacket.WriteBit(TimerunningEnabled);
_worldPacket.WriteBit(AddonsDisabled);
_worldPacket.WriteBit(Unused1000);
_worldPacket.WriteBit(AccountSaveDataExportEnabled);
_worldPacket.WriteBit(AccountLockedByExport);
_worldPacket.WriteBit(ScriptsDisallowedForBeta);
_worldPacket.WriteBit(PlayerIdentityOptionsEnabled);
_worldPacket.WriteBit(AccountExportEnabled);
_worldPacket.WriteBit(AccountLockedPostExport);
_worldPacket.WriteBits(RealmHiddenAlert.GetByteCount() + 1, 11);
_worldPacket.WriteBit(BNSendWhisperUseV2Services);
@@ -335,29 +335,29 @@ namespace Game.Networking.Packets
if (EuropaTicketSystemStatus.HasValue)
EuropaTicketSystemStatus.Value.Write(_worldPacket);
_worldPacket.WriteUInt32(TokenPollTimeSeconds);
_worldPacket.WriteUInt32(KioskSessionMinutes);
_worldPacket.WriteInt64(TokenBalanceAmount);
_worldPacket.WriteInt32(MaxCharactersPerRealm);
_worldPacket.WriteUInt32(CommercePricePollTimeSeconds);
_worldPacket.WriteUInt32(KioskSessionDurationMinutes);
_worldPacket.WriteInt64(RedeemForBalanceAmount);
_worldPacket.WriteInt32(MaxCharactersOnThisRealm);
_worldPacket.WriteInt32(LiveRegionCharacterCopySourceRegions.Count);
_worldPacket.WriteUInt32(BpayStoreProductDeliveryDelay);
_worldPacket.WriteInt32(ActiveCharacterUpgradeBoostType);
_worldPacket.WriteInt32(ActiveClassTrialBoostType);
_worldPacket.WriteUInt32(BpayStorePurchaseTimeout);
_worldPacket.WriteInt32(ActiveBoostType);
_worldPacket.WriteInt32(TrialBoostType);
_worldPacket.WriteInt32(MinimumExpansionLevel);
_worldPacket.WriteInt32(MaximumExpansionLevel);
_worldPacket.WriteInt32(ActiveSeason);
_worldPacket.WriteInt32(GameRuleValues.Count);
_worldPacket.WriteInt32(ContentSetID);
_worldPacket.WriteInt32(GameRules.Count);
_worldPacket.WriteInt32(ActiveTimerunningSeasonID);
_worldPacket.WriteInt32(RemainingTimerunningSeasonSeconds);
_worldPacket.WriteInt16(MaxPlayerNameQueriesPerPacket);
_worldPacket.WriteInt16(PlayerNameQueryTelemetryInterval);
_worldPacket.WriteUInt32((uint)PlayerNameQueryInterval.TotalSeconds);
_worldPacket.WriteInt16(MaxPlayerGuidLookupsPerRequest);
_worldPacket.WriteInt16(NameLookupTelemetryInterval);
_worldPacket.WriteUInt32((uint)NotFoundCacheTimeSeconds.TotalSeconds);
_worldPacket.WriteInt32(DebugTimeEvents.Count);
_worldPacket.WriteInt32(Unused1007);
_worldPacket.WriteInt32(MostRecentTimeEventID);
_worldPacket.WriteUInt32(EventRealmQueues);
if (LaunchETA.HasValue)
_worldPacket.WriteInt32(LaunchETA.Value);
if (LaunchDurationETA.HasValue)
_worldPacket.WriteInt32(LaunchDurationETA.Value);
if (!RealmHiddenAlert.IsEmpty())
_worldPacket.WriteString(RealmHiddenAlert);
@@ -365,7 +365,7 @@ namespace Game.Networking.Packets
foreach (var sourceRegion in LiveRegionCharacterCopySourceRegions)
_worldPacket.WriteInt32(sourceRegion);
foreach (GameRuleValuePair gameRuleValue in GameRuleValues)
foreach (GameRuleValuePair gameRuleValue in GameRules)
gameRuleValue.Write(_worldPacket);
foreach (DebugTimeEventInfo debugTimeEventInfo in DebugTimeEvents)
@@ -376,51 +376,52 @@ namespace Game.Networking.Packets
public bool BpayStoreDisabledByParentalControls; // NYI
public bool CharUndeleteEnabled;
public bool BpayStoreEnabled; // NYI
public bool CommerceSystemEnabled; // NYI
public bool Unk14; // NYI
public bool WillKickFromWorld; // NYI
public bool IsExpansionPreorderInStore; // NYI
public bool CommerceServerEnabled; // NYI
public bool VeteranTokenRedeemWillKick; // NYI
public bool WorldTokenRedeemWillKick; // NYI
public bool ExpansionPreorderInStore; // NYI
public bool KioskModeEnabled; // NYI
public bool CompetitiveModeEnabled; // NYI
public bool IsBoostEnabled; // classic only
public bool BoostEnabled; // classic only
public bool TrialBoostEnabled; // NYI
public bool TokenBalanceEnabled; // NYI
public bool RedeemForBalanceAvailable; // NYI
public bool PaidCharacterTransfersBetweenBnetAccountsEnabled;
public bool LiveRegionCharacterListEnabled; // NYI
public bool LiveRegionCharacterCopyEnabled; // NYI
public bool LiveRegionAccountCopyEnabled; // NYI
public bool LiveRegionKeyBindingsCopyEnabled;
public bool Unknown901CheckoutRelated; // NYI
public bool IsNameReservationEnabled; // classic only
public bool BrowserCrashReporterEnabled; // NYI
public bool IsEmployeeAccount; // NYI
public bool NameReservationOnly; // classic only
public bool TimerunningEnabled; // NYI
public bool AddonsDisabled;
public bool Unused1000;
public bool AccountSaveDataExportEnabled;
public bool AccountLockedByExport;
public bool ScriptsDisallowedForBeta;
public bool PlayerIdentityOptionsEnabled;
public bool AccountExportEnabled;
public bool AccountLockedPostExport;
public bool BNSendWhisperUseV2Services = true; ///< BNSendWhisper will send to v2.WhisperService instead of v1.NotificationService
public bool BNSendGameDataUseV2Services = true; ///< BNSendGameData will send to v2.NotificationService instead of v1.NotificationService
public bool CharacterSelectListModeRealmless;
public EuropaTicketConfig? EuropaTicketSystemStatus;
public List<int> LiveRegionCharacterCopySourceRegions = new();
public uint TokenPollTimeSeconds; // NYI
public long TokenBalanceAmount; // NYI
public int MaxCharactersPerRealm;
public uint BpayStoreProductDeliveryDelay; // NYI
public int ActiveCharacterUpgradeBoostType; // NYI
public int ActiveClassTrialBoostType; // NYI
public uint CommercePricePollTimeSeconds; // NYI
public long RedeemForBalanceAmount; // NYI
public int MaxCharactersOnThisRealm;
public uint BpayStorePurchaseTimeout; // NYI
public int ActiveBoostType; // NYI
public int TrialBoostType; // NYI
public int MinimumExpansionLevel;
public int MaximumExpansionLevel;
public uint KioskSessionMinutes;
public int ActiveSeason; // Currently active Classic season
public List<GameRuleValuePair> GameRuleValues = new();
public uint KioskSessionDurationMinutes;
public int ContentSetID; // Currently active Classic season
public List<GameRuleValuePair> GameRules = new();
public int ActiveTimerunningSeasonID;
public int RemainingTimerunningSeasonSeconds;
public short MaxPlayerNameQueriesPerPacket = 50;
public short PlayerNameQueryTelemetryInterval = 600;
public TimeSpan PlayerNameQueryInterval = TimeSpan.FromSeconds(10);
public int? LaunchETA;
public short MaxPlayerGuidLookupsPerRequest = 50;
public short NameLookupTelemetryInterval = 600;
public TimeSpan NotFoundCacheTimeSeconds = TimeSpan.FromSeconds(10);
public int? LaunchDurationETA;
public List<DebugTimeEventInfo> DebugTimeEvents = new();
public int Unused1007;
public int MostRecentTimeEventID;
public uint EventRealmQueues;
public string RealmHiddenAlert;
}
@@ -433,17 +434,17 @@ namespace Game.Networking.Packets
{
_worldPacket.WriteBits(ServerTimeTZ.GetByteCount(), 7);
_worldPacket.WriteBits(GameTimeTZ.GetByteCount(), 7);
_worldPacket.WriteBits(ServerRegionalTZ.GetByteCount(), 7);
_worldPacket.WriteBits(ServerRegionalTimeTZ.GetByteCount(), 7);
_worldPacket.FlushBits();
_worldPacket.WriteString(ServerTimeTZ);
_worldPacket.WriteString(GameTimeTZ);
_worldPacket.WriteString(ServerRegionalTZ);
_worldPacket.WriteString(ServerRegionalTimeTZ);
}
public string ServerTimeTZ;
public string GameTimeTZ;
public string ServerRegionalTZ;
public string ServerRegionalTimeTZ;
}
public struct SavedThrottleObjectState
+70 -71
View File
@@ -2,7 +2,6 @@
// Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information.
using Framework.Constants;
using Framework.Dynamic;
using Game.Entities;
using System;
using System.Collections.Generic;
@@ -125,19 +124,19 @@ namespace Game.Networking.Packets
bool hasCalendarInfo = _worldPacket.HasBit();
bool hasPetInfo = _worldPacket.HasBit();
bool hasGuildInfo = _worldPacket.HasBit();
bool hasLFGListSearchResult = _worldPacket.HasBit();
bool hasLFGListApplicant = _worldPacket.HasBit();
bool hasClubMessage = _worldPacket.HasBit();
bool hasLfgListEntryInfo = _worldPacket.HasBit();
bool hasLfgListAppInfo = _worldPacket.HasBit();
bool hasVoiceChatInfo = _worldPacket.HasBit();
bool hasClubFinderResult = _worldPacket.HasBit();
bool hasUnk910 = _worldPacket.HasBit();
bool hasArenaTeamInfo = _worldPacket.HasBit();
_worldPacket.ResetBitPos();
if (hasClubMessage)
if (hasVoiceChatInfo)
{
SupportTicketCommunityMessage communityMessage = new();
communityMessage.IsPlayerUsingVoice = _worldPacket.HasBit();
CommunityMessage = communityMessage;
SupportTicketVoiceChatInfo voiceChatInfo = new();
voiceChatInfo.TargetIsCurrentlyInVoiceChatWithPlayer = _worldPacket.HasBit();
VoiceChatInfo = voiceChatInfo;
_worldPacket.ResetBitPos();
}
@@ -169,28 +168,28 @@ namespace Game.Networking.Packets
GuildInfo.Value.Read(_worldPacket);
}
if (hasLFGListSearchResult)
if (hasLfgListEntryInfo)
{
LFGListSearchResult = new();
LFGListSearchResult.Value.Read(_worldPacket);
LfgListEntryInfo = new();
LfgListEntryInfo.Value.Read(_worldPacket);
}
if (hasLFGListApplicant)
if (hasLfgListAppInfo)
{
LFGListApplicant = new();
LFGListApplicant.Value.Read(_worldPacket);
LfgListAppInfo = new();
LfgListAppInfo.Value.Read(_worldPacket);
}
if (hasClubFinderResult)
{
ClubFinderResult = new();
ClubFinderResult.Value.Read(_worldPacket);
ClubFinderInfo = new();
ClubFinderInfo.Value.Read(_worldPacket);
}
if (hasUnk910)
if (hasArenaTeamInfo)
{
Unused910 = new();
Unused910.Value.Read(_worldPacket);
ArenaTeamInfo = new();
ArenaTeamInfo.Value.Read(_worldPacket);
}
}
@@ -206,11 +205,11 @@ namespace Game.Networking.Packets
public SupportTicketCalendarEventInfo? CalenderInfo;
public SupportTicketPetInfo? PetInfo;
public SupportTicketGuildInfo? GuildInfo;
public SupportTicketLFGListSearchResult? LFGListSearchResult;
public SupportTicketLFGListApplicant? LFGListApplicant;
public SupportTicketCommunityMessage? CommunityMessage;
public SupportTicketClubFinderResult? ClubFinderResult;
public SupportTicketUnused910? Unused910;
public SupportTicketLFGListEntryInfo? LfgListEntryInfo;
public SupportTicketLFGListApplicant? LfgListAppInfo;
public SupportTicketVoiceChatInfo? VoiceChatInfo;
public SupportTicketClubFinderInfo? ClubFinderInfo;
public SupportTicketArenaTeamInfo? ArenaTeamInfo;
public struct SupportTicketChatLine
{
@@ -383,88 +382,88 @@ namespace Game.Networking.Packets
public string GuildName;
}
public struct SupportTicketLFGListSearchResult
public struct SupportTicketLFGListEntryInfo
{
public RideTicket Ticket;
public uint ActivityID;
public byte FactionID;
public ObjectGuid LastTouchedName;
public ObjectGuid LastTouchedComment;
public ObjectGuid LastTouchedVoiceChat;
public ObjectGuid LastTouchedAny;
public ObjectGuid PartyGuid;
public string Name;
public string Comment;
public string VoiceChat;
public void Read(WorldPacket data)
{
RideTicket = new RideTicket();
RideTicket.Read(data);
Ticket = new RideTicket();
Ticket.Read(data);
GroupFinderActivityID = data.ReadUInt32();
Unknown1007 = data.ReadUInt8();
LastTitleAuthorGuid = data.ReadPackedGuid();
LastDescriptionAuthorGuid = data.ReadPackedGuid();
LastVoiceChatAuthorGuid = data.ReadPackedGuid();
ListingCreatorGuid = data.ReadPackedGuid();
Unknown735 = data.ReadPackedGuid();
ActivityID = data.ReadUInt32();
FactionID = data.ReadUInt8();
LastTouchedName = data.ReadPackedGuid();
LastTouchedComment = data.ReadPackedGuid();
LastTouchedVoiceChat = data.ReadPackedGuid();
LastTouchedAny = data.ReadPackedGuid();
PartyGuid = data.ReadPackedGuid();
byte titleLength = data.ReadBits<byte>(10);
byte descriptionLength = data.ReadBits<byte>(11);
byte nameLength = data.ReadBits<byte>(10);
byte commentLength = data.ReadBits<byte>(11);
byte voiceChatLength = data.ReadBits<byte>(8);
Title = data.ReadString(titleLength);
Description = data.ReadString(descriptionLength);
Name = data.ReadString(nameLength);
Comment = data.ReadString(commentLength);
VoiceChat = data.ReadString(voiceChatLength);
}
public RideTicket RideTicket;
public uint GroupFinderActivityID;
public byte Unknown1007;
public ObjectGuid LastTitleAuthorGuid;
public ObjectGuid LastDescriptionAuthorGuid;
public ObjectGuid LastVoiceChatAuthorGuid;
public ObjectGuid ListingCreatorGuid;
public ObjectGuid Unknown735;
public string Title;
public string Description;
public string VoiceChat;
}
public struct SupportTicketLFGListApplicant
{
public RideTicket Ticket;
public string Comment;
public void Read(WorldPacket data)
{
RideTicket = new RideTicket();
RideTicket.Read(data);
Ticket = new RideTicket();
Ticket.Read(data);
Comment = data.ReadString(data.ReadBits<uint>(9));
}
public RideTicket RideTicket;
public string Comment;
}
public struct SupportTicketCommunityMessage
public struct SupportTicketVoiceChatInfo
{
public bool IsPlayerUsingVoice;
public bool TargetIsCurrentlyInVoiceChatWithPlayer;
}
public struct SupportTicketClubFinderResult
public struct SupportTicketClubFinderInfo
{
public ulong ClubFinderPostingID;
public ulong PostingID;
public ulong ClubID;
public ObjectGuid ClubFinderGUID;
public string ClubName;
public ObjectGuid GuildID;
public string PostingDescription;
public void Read(WorldPacket data)
{
ClubFinderPostingID = data.ReadUInt64();
PostingID = data.ReadUInt64();
ClubID = data.ReadUInt64();
ClubFinderGUID = data.ReadPackedGuid();
ClubName = data.ReadString(data.ReadBits<uint>(12));
GuildID = data.ReadPackedGuid();
PostingDescription = data.ReadString(data.ReadBits<uint>(12));
}
}
public struct SupportTicketUnused910
public struct SupportTicketArenaTeamInfo
{
public string field_0;
public ObjectGuid field_104;
public string ArenaTeamName;
public ObjectGuid ArenaTeamID;
public void Read(WorldPacket data)
{
uint field_0Length = data.ReadBits<uint>(7);
field_104 = data.ReadPackedGuid();
field_0 = data.ReadString(field_0Length);
uint arenaTeamNameLength = data.ReadBits<uint>(7);
ArenaTeamID = data.ReadPackedGuid();
ArenaTeamName = data.ReadString(arenaTeamNameLength);
}
}
}
+25 -25
View File
@@ -12,10 +12,10 @@ namespace Game.Networking.Packets
public override void Read()
{
UnkInt = _worldPacket.ReadUInt32();
ClientToken = _worldPacket.ReadUInt32();
}
public uint UnkInt;
public uint ClientToken;
}
class CommerceTokenGetLogResponse : ServerPacket
@@ -24,30 +24,30 @@ namespace Game.Networking.Packets
public override void Write()
{
_worldPacket.WriteUInt32(UnkInt);
_worldPacket.WriteUInt32(ClientToken);
_worldPacket.WriteUInt32((uint)Result);
_worldPacket.WriteInt32(AuctionableTokenAuctionableList.Count);
_worldPacket.WriteInt32(AuctionableTokens.Count);
foreach (AuctionableTokenInfo auctionableTokenAuctionable in AuctionableTokenAuctionableList)
foreach (AuctionableTokenInfo auctionableTokenAuctionable in AuctionableTokens)
{
_worldPacket.WriteUInt64(auctionableTokenAuctionable.UnkInt1);
_worldPacket.WriteInt64(auctionableTokenAuctionable.UnkInt2);
_worldPacket.WriteUInt64(auctionableTokenAuctionable.BuyoutPrice);
_worldPacket.WriteUInt32(auctionableTokenAuctionable.Owner);
_worldPacket.WriteUInt64(auctionableTokenAuctionable.Id);
_worldPacket.WriteInt64(auctionableTokenAuctionable.LastUpdate);
_worldPacket.WriteUInt64(auctionableTokenAuctionable.Price);
_worldPacket.WriteUInt32(auctionableTokenAuctionable.Status);
_worldPacket.WriteUInt32(auctionableTokenAuctionable.DurationLeft);
}
}
public uint UnkInt; // send CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST
public uint ClientToken;
public TokenResult Result;
List<AuctionableTokenInfo> AuctionableTokenAuctionableList = new();
List<AuctionableTokenInfo> AuctionableTokens = new();
struct AuctionableTokenInfo
{
public ulong UnkInt1;
public long UnkInt2;
public uint Owner;
public ulong BuyoutPrice;
public ulong Id;
public long LastUpdate;
public uint Status;
public ulong Price;
public uint DurationLeft;
}
}
@@ -58,10 +58,10 @@ namespace Game.Networking.Packets
public override void Read()
{
UnkInt = _worldPacket.ReadUInt32();
ClientToken = _worldPacket.ReadUInt32();
}
public uint UnkInt;
public uint ClientToken;
}
class CommerceTokenGetMarketPriceResponse : ServerPacket
@@ -70,15 +70,15 @@ namespace Game.Networking.Packets
public override void Write()
{
_worldPacket.WriteUInt64(CurrentMarketPrice);
_worldPacket.WriteUInt32(UnkInt);
_worldPacket.WriteUInt32((uint)Result);
_worldPacket.WriteUInt32(AuctionDuration);
_worldPacket.WriteUInt64(PriceGuarantee);
_worldPacket.WriteUInt32(ClientToken);
_worldPacket.WriteUInt32((uint)ServerToken);
_worldPacket.WriteUInt32(PriceLockDurationSeconds);
}
public ulong CurrentMarketPrice;
public uint UnkInt; // send CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE
public TokenResult Result;
public uint AuctionDuration; // preset auction duration enum
public ulong PriceGuarantee;
public uint ClientToken;
public TokenResult ServerToken;
public uint PriceLockDurationSeconds;
}
}