Core/PacketIO: Update opcodes and packet structures to 8.2.5
Port From (https://github.com/TrinityCore/TrinityCore/commit/ee2e49429f4383732b4e0f39b493470b9c1dd10c)
This commit is contained in:
@@ -19,6 +19,7 @@ using Framework.Constants;
|
||||
using Game.Entities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Framework.Dynamic;
|
||||
|
||||
namespace Game.Network.Packets
|
||||
{
|
||||
@@ -302,7 +303,11 @@ namespace Game.Network.Packets
|
||||
data.WriteUInt32(TimeFromStart);
|
||||
data.WriteUInt32(TimeFromCreate);
|
||||
data.WriteBits(Flags, 4);
|
||||
data.WriteBit(RafAcceptanceID.HasValue);
|
||||
data.FlushBits();
|
||||
|
||||
if (RafAcceptanceID.HasValue)
|
||||
data.WriteUInt64(RafAcceptanceID.Value);
|
||||
}
|
||||
|
||||
public uint Id;
|
||||
@@ -312,6 +317,7 @@ namespace Game.Network.Packets
|
||||
public long Date;
|
||||
public uint TimeFromStart;
|
||||
public uint TimeFromCreate;
|
||||
public Optional<ulong> RafAcceptanceID;
|
||||
}
|
||||
|
||||
public struct GuildCriteriaProgress
|
||||
|
||||
@@ -135,6 +135,25 @@ namespace Game.Network.Packets
|
||||
public uint ContributionPoints;
|
||||
}
|
||||
|
||||
public struct PVPMatchPlayerPVPStat
|
||||
{
|
||||
public int PvpStatID;
|
||||
public uint PvpStatValue;
|
||||
|
||||
public PVPMatchPlayerPVPStat(int pvpStatID, uint pvpStatValue)
|
||||
{
|
||||
PvpStatID = pvpStatID;
|
||||
PvpStatValue = pvpStatValue;
|
||||
}
|
||||
|
||||
public void Write(WorldPacket data)
|
||||
{
|
||||
data.WriteInt32(PvpStatID);
|
||||
data.WriteUInt32(PvpStatValue);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class PVPMatchPlayerStatistics
|
||||
{
|
||||
public void Write(WorldPacket data)
|
||||
@@ -151,8 +170,8 @@ namespace Game.Network.Packets
|
||||
data.WriteInt32(CreatureID);
|
||||
data.WriteInt32(HonorLevel);
|
||||
|
||||
foreach (var id in Stats)
|
||||
data.WriteUInt32(id);
|
||||
foreach (var pvpStat in Stats)
|
||||
pvpStat.Write(data);
|
||||
|
||||
data.WriteBit(Faction);
|
||||
data.WriteBit(IsInWorld);
|
||||
@@ -190,7 +209,7 @@ namespace Game.Network.Packets
|
||||
public Optional<int> RatingChange;
|
||||
public Optional<uint> PreMatchMMR;
|
||||
public Optional<int> MmrChange;
|
||||
public List<uint> Stats = new List<uint>();
|
||||
public List<PVPMatchPlayerPVPStat> Stats = new List<PVPMatchPlayerPVPStat>();
|
||||
public int PrimaryTalentTree;
|
||||
public int Sex;
|
||||
public Race PlayerRace;
|
||||
|
||||
@@ -116,6 +116,7 @@ namespace Game.Network.Packets
|
||||
_worldPacket.WriteUInt32((uint)ChannelFlags);
|
||||
_worldPacket.WriteInt32(ChatChannelID);
|
||||
_worldPacket.WriteUInt64((ulong)InstanceID);
|
||||
_worldPacket.WritePackedGuid(ChannelGUID);
|
||||
_worldPacket.WriteString(Channel);
|
||||
_worldPacket.WriteString(ChannelWelcomeMsg);
|
||||
}
|
||||
@@ -125,6 +126,7 @@ namespace Game.Network.Packets
|
||||
public int InstanceID;
|
||||
public ChannelFlags ChannelFlags;
|
||||
public string Channel = "";
|
||||
public ObjectGuid ChannelGUID;
|
||||
}
|
||||
|
||||
public class ChannelNotifyLeft : ServerPacket
|
||||
|
||||
@@ -97,19 +97,19 @@ namespace Game.Network.Packets
|
||||
Name = fields.Read<string>(1);
|
||||
RaceId = fields.Read<byte>(2);
|
||||
ClassId = (Class)fields.Read<byte>(3);
|
||||
Sex = fields.Read<byte>(4);
|
||||
Skin = fields.Read<byte>(5);
|
||||
Face = fields.Read<byte>(6);
|
||||
SexId = fields.Read<byte>(4);
|
||||
SkinId = fields.Read<byte>(5);
|
||||
FaceId = fields.Read<byte>(6);
|
||||
HairStyle = fields.Read<byte>(7);
|
||||
HairColor = fields.Read<byte>(8);
|
||||
FacialHair = fields.Read<byte>(9);
|
||||
CustomDisplay[0] = fields.Read<byte>(10);
|
||||
CustomDisplay[1] = fields.Read<byte>(11);
|
||||
CustomDisplay[2] = fields.Read<byte>(12);
|
||||
Level = fields.Read<byte>(13);
|
||||
ExperienceLevel = fields.Read<byte>(13);
|
||||
ZoneId = fields.Read<uint>(14);
|
||||
MapId = fields.Read<uint>(15);
|
||||
PreLoadPosition = new Vector3(fields.Read<float>(16), fields.Read<float>(17), fields.Read<float>(18));
|
||||
PreloadPos = new Vector3(fields.Read<float>(16), fields.Read<float>(17), fields.Read<float>(18));
|
||||
|
||||
ulong guildId = fields.Read<ulong>(19);
|
||||
if (guildId != 0)
|
||||
@@ -134,11 +134,11 @@ namespace Game.Network.Packets
|
||||
Flags |= CharacterFlags.Declined;
|
||||
|
||||
if (atLoginFlags.HasAnyFlag(AtLoginFlags.Customize))
|
||||
CustomizationFlag = CharacterCustomizeFlags.Customize;
|
||||
Flags2 = CharacterCustomizeFlags.Customize;
|
||||
else if (atLoginFlags.HasAnyFlag(AtLoginFlags.ChangeFaction))
|
||||
CustomizationFlag = CharacterCustomizeFlags.Faction;
|
||||
Flags2 = CharacterCustomizeFlags.Faction;
|
||||
else if (atLoginFlags.HasAnyFlag(AtLoginFlags.ChangeRace))
|
||||
CustomizationFlag = CharacterCustomizeFlags.Race;
|
||||
Flags2 = CharacterCustomizeFlags.Race;
|
||||
|
||||
Flags3 = 0;
|
||||
Flags4 = 0;
|
||||
@@ -150,9 +150,9 @@ namespace Game.Network.Packets
|
||||
CreatureTemplate creatureInfo = Global.ObjectMgr.GetCreatureTemplate(fields.Read<uint>(22));
|
||||
if (creatureInfo != null)
|
||||
{
|
||||
Pet.CreatureDisplayId = fields.Read<uint>(23);
|
||||
Pet.Level = fields.Read<ushort>(24);
|
||||
Pet.CreatureFamily = (uint)creatureInfo.Family;
|
||||
PetCreatureDisplayId = fields.Read<uint>(23);
|
||||
PetExperienceLevel = fields.Read<ushort>(24);
|
||||
PetCreatureFamilyId = (uint)creatureInfo.Family;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,9 +172,10 @@ namespace Game.Network.Packets
|
||||
|
||||
for (byte slot = 0; slot < InventorySlots.BagEnd; ++slot)
|
||||
{
|
||||
VisualItems[slot].InventoryType = (byte)equipment.NextUInt32();
|
||||
VisualItems[slot].InvType = (byte)equipment.NextUInt32();
|
||||
VisualItems[slot].DisplayId = equipment.NextUInt32();
|
||||
VisualItems[slot].DisplayEnchantId = equipment.NextUInt32();
|
||||
VisualItems[slot].Subclass = (byte)equipment.NextUInt32();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,9 +186,9 @@ namespace Game.Network.Packets
|
||||
data.WriteUInt8(ListPosition);
|
||||
data.WriteUInt8(RaceId);
|
||||
data.WriteUInt8((byte)ClassId);
|
||||
data.WriteUInt8(Sex);
|
||||
data.WriteUInt8(Skin);
|
||||
data.WriteUInt8(Face);
|
||||
data.WriteUInt8(SexId);
|
||||
data.WriteUInt8(SkinId);
|
||||
data.WriteUInt8(FaceId);
|
||||
data.WriteUInt8(HairStyle);
|
||||
data.WriteUInt8(HairColor);
|
||||
data.WriteUInt8(FacialHair);
|
||||
@@ -195,17 +196,17 @@ namespace Game.Network.Packets
|
||||
foreach (var display in CustomDisplay)
|
||||
data.WriteUInt8(display);
|
||||
|
||||
data.WriteUInt8(Level);
|
||||
data.WriteUInt8(ExperienceLevel);
|
||||
data.WriteUInt32(ZoneId);
|
||||
data.WriteUInt32(MapId);
|
||||
data.WriteVector3(PreLoadPosition);
|
||||
data.WriteVector3(PreloadPos);
|
||||
data.WritePackedGuid(GuildGuid);
|
||||
data.WriteUInt32((uint)Flags);
|
||||
data.WriteUInt32((uint)CustomizationFlag);
|
||||
data.WriteUInt32((uint)Flags2);
|
||||
data.WriteUInt32(Flags3);
|
||||
data.WriteUInt32(Pet.CreatureDisplayId);
|
||||
data.WriteUInt32(Pet.Level);
|
||||
data.WriteUInt32(Pet.CreatureFamily);
|
||||
data.WriteUInt32(PetCreatureDisplayId);
|
||||
data.WriteUInt32(PetExperienceLevel);
|
||||
data.WriteUInt32(PetCreatureFamilyId);
|
||||
|
||||
data.WriteUInt32(ProfessionIds[0]);
|
||||
data.WriteUInt32(ProfessionIds[1]);
|
||||
@@ -233,20 +234,20 @@ namespace Game.Network.Packets
|
||||
public byte ListPosition; // Order of the characters in list
|
||||
public byte RaceId;
|
||||
public Class ClassId;
|
||||
public byte Sex;
|
||||
public byte Skin;
|
||||
public byte Face;
|
||||
public byte SexId;
|
||||
public byte SkinId;
|
||||
public byte FaceId;
|
||||
public byte HairStyle;
|
||||
public byte HairColor;
|
||||
public byte FacialHair;
|
||||
public Array<byte> CustomDisplay = new Array<byte>(PlayerConst.CustomDisplaySize);
|
||||
public byte Level;
|
||||
public byte ExperienceLevel;
|
||||
public uint ZoneId;
|
||||
public uint MapId;
|
||||
public Vector3 PreLoadPosition;
|
||||
public Vector3 PreloadPos;
|
||||
public ObjectGuid GuildGuid;
|
||||
public CharacterFlags Flags; // Character flag @see enum CharacterFlags
|
||||
public CharacterCustomizeFlags CustomizationFlag; // Character customization flags @see enum CharacterCustomizeFlags
|
||||
public CharacterCustomizeFlags Flags2; // Character customization flags @see enum CharacterCustomizeFlags
|
||||
public uint Flags3; // Character flags 3 @todo research
|
||||
public uint Flags4;
|
||||
public bool FirstLogin;
|
||||
@@ -255,7 +256,9 @@ namespace Game.Network.Packets
|
||||
public ushort SpecID;
|
||||
public uint Unknown703;
|
||||
public uint LastLoginVersion;
|
||||
public PetInfo Pet = new PetInfo();
|
||||
public uint PetCreatureDisplayId;
|
||||
public uint PetExperienceLevel;
|
||||
public uint PetCreatureFamilyId;
|
||||
public bool BoostInProgress; // @todo
|
||||
public uint[] ProfessionIds = new uint[2]; // @todo
|
||||
public VisualItemInfo[] VisualItems = new VisualItemInfo[InventorySlots.BagEnd];
|
||||
@@ -266,12 +269,14 @@ namespace Game.Network.Packets
|
||||
{
|
||||
data.WriteUInt32(DisplayId);
|
||||
data.WriteUInt32(DisplayEnchantId);
|
||||
data.WriteUInt8(InventoryType);
|
||||
data.WriteUInt8(InvType);
|
||||
data.WriteUInt8(Subclass);
|
||||
}
|
||||
|
||||
public uint DisplayId;
|
||||
public uint DisplayEnchantId;
|
||||
public byte InventoryType;
|
||||
public byte InvType;
|
||||
public byte Subclass;
|
||||
}
|
||||
|
||||
public struct PetInfo
|
||||
|
||||
@@ -559,7 +559,6 @@ namespace Game.Network.Packets
|
||||
RankID = _worldPacket.ReadInt32();
|
||||
RankOrder = _worldPacket.ReadInt32();
|
||||
Flags = _worldPacket.ReadUInt32();
|
||||
OldFlags = _worldPacket.ReadUInt32();
|
||||
WithdrawGoldLimit = _worldPacket.ReadUInt32();
|
||||
|
||||
for (byte i = 0; i < GuildConst.MaxBankTabs; i++)
|
||||
@@ -572,6 +571,8 @@ namespace Game.Network.Packets
|
||||
uint rankNameLen = _worldPacket.ReadBits<uint>(7);
|
||||
|
||||
RankName = _worldPacket.ReadString(rankNameLen);
|
||||
|
||||
OldFlags = _worldPacket.ReadUInt32();
|
||||
}
|
||||
|
||||
public int RankID;
|
||||
@@ -1445,7 +1446,7 @@ namespace Game.Network.Packets
|
||||
{
|
||||
public void Write(WorldPacket data)
|
||||
{
|
||||
data.WriteUInt32(RankID);
|
||||
data.WriteUInt8(RankID);
|
||||
data.WriteUInt32(RankOrder);
|
||||
data.WriteUInt32(Flags);
|
||||
data.WriteUInt32(WithdrawGoldLimit);
|
||||
@@ -1460,7 +1461,7 @@ namespace Game.Network.Packets
|
||||
data.WriteString(RankName);
|
||||
}
|
||||
|
||||
public uint RankID;
|
||||
public byte RankID;
|
||||
public uint RankOrder;
|
||||
public uint Flags;
|
||||
public uint WithdrawGoldLimit;
|
||||
|
||||
@@ -179,6 +179,7 @@ namespace Game.Network.Packets
|
||||
_worldPacket.WriteInt32(Slots.Count);
|
||||
_worldPacket.WriteUInt32(RequestedRoles);
|
||||
_worldPacket.WriteInt32(SuspendedPlayers.Count);
|
||||
_worldPacket.WriteUInt32(QueueMapID);
|
||||
|
||||
foreach (var slot in Slots)
|
||||
_worldPacket.WriteUInt32(slot);
|
||||
@@ -201,6 +202,7 @@ namespace Game.Network.Packets
|
||||
public List<uint> Slots = new List<uint>();
|
||||
public uint RequestedRoles;
|
||||
public List<ObjectGuid> SuspendedPlayers = new List<ObjectGuid>();
|
||||
public uint QueueMapID;
|
||||
public bool NotifyUI;
|
||||
public bool IsParty;
|
||||
public bool Joined;
|
||||
|
||||
@@ -731,7 +731,6 @@ namespace Game.Network.Packets
|
||||
|
||||
public struct DBQueryRecord
|
||||
{
|
||||
public ObjectGuid GUID;
|
||||
public uint RecordID;
|
||||
}
|
||||
|
||||
|
||||
@@ -202,6 +202,7 @@ namespace Game.Network.Packets
|
||||
_worldPacket.WriteInt32(Info.TreasurePickerID);
|
||||
_worldPacket.WriteInt32(Info.Expansion);
|
||||
_worldPacket.WriteInt32(Info.ManagedWorldStateID);
|
||||
_worldPacket.WriteInt32(Info.QuestSessionBonus);
|
||||
|
||||
_worldPacket.WriteBits(Info.LogTitle.GetByteCount(), 9);
|
||||
_worldPacket.WriteBits(Info.LogDescription.GetByteCount(), 12);
|
||||
@@ -428,6 +429,7 @@ namespace Game.Network.Packets
|
||||
_worldPacket.WriteInt32(DescEmotes.Count);
|
||||
_worldPacket.WriteInt32(Objectives.Count);
|
||||
_worldPacket.WriteInt32(QuestStartItemID);
|
||||
_worldPacket.WriteInt32(QuestSessionBonus);
|
||||
|
||||
foreach (uint spell in LearnSpells)
|
||||
_worldPacket.WriteUInt32(spell);
|
||||
@@ -454,6 +456,7 @@ namespace Game.Network.Packets
|
||||
_worldPacket.WriteBits(PortraitTurnInText.GetByteCount(), 10);
|
||||
_worldPacket.WriteBits(PortraitTurnInName.GetByteCount(), 8);
|
||||
_worldPacket.WriteBit(AutoLaunched);
|
||||
_worldPacket.WriteBit(false); // unused in client
|
||||
_worldPacket.WriteBit(StartCheat);
|
||||
_worldPacket.WriteBit(DisplayPopup);
|
||||
_worldPacket.FlushBits();
|
||||
@@ -483,6 +486,7 @@ namespace Game.Network.Packets
|
||||
public uint PortraitGiver;
|
||||
public uint PortraitGiverMount;
|
||||
public int QuestStartItemID;
|
||||
public int QuestSessionBonus;
|
||||
public string PortraitGiverText = "";
|
||||
public string PortraitGiverName = "";
|
||||
public string PortraitTurnInText = "";
|
||||
@@ -969,6 +973,7 @@ namespace Game.Network.Packets
|
||||
public int TreasurePickerID;
|
||||
public int Expansion;
|
||||
public int ManagedWorldStateID;
|
||||
public int QuestSessionBonus;
|
||||
public List<QuestObjective> Objectives = new List<QuestObjective>();
|
||||
public uint[] RewardItems = new uint[SharedConst.QuestRewardItemCount];
|
||||
public uint[] RewardAmount = new uint[SharedConst.QuestRewardItemCount];
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace Game.Network.Packets
|
||||
public ObjectGuid Target;
|
||||
}
|
||||
|
||||
public class ProposeLevelGrant : ServerPacket
|
||||
/*public class ProposeLevelGrant : ServerPacket
|
||||
{
|
||||
public ProposeLevelGrant() : base(ServerOpcodes.ProposeLevelGrant) { }
|
||||
|
||||
@@ -55,7 +55,7 @@ namespace Game.Network.Packets
|
||||
}
|
||||
|
||||
public ObjectGuid Sender;
|
||||
}
|
||||
}*/
|
||||
|
||||
public class ReferAFriendFailure : ServerPacket
|
||||
{
|
||||
|
||||
@@ -41,11 +41,15 @@ namespace Game.Network.Packets
|
||||
_worldPacket.WriteUInt32(CfgRealmID);
|
||||
_worldPacket.WriteInt32(CfgRealmRecID);
|
||||
|
||||
_worldPacket.WriteUInt32(RAFSystem.MaxRecruits);
|
||||
_worldPacket.WriteUInt32(RAFSystem.MaxRecruitMonths);
|
||||
_worldPacket.WriteUInt32(RAFSystem.MaxRecruitmentUses);
|
||||
_worldPacket.WriteUInt32(RAFSystem.DaysInCycle);
|
||||
|
||||
_worldPacket.WriteUInt32(TwitterPostThrottleLimit);
|
||||
_worldPacket.WriteUInt32(TwitterPostThrottleCooldown);
|
||||
|
||||
_worldPacket.WriteUInt32(TokenPollTimeSeconds);
|
||||
_worldPacket.WriteUInt32(TokenRedeemIndex);
|
||||
_worldPacket.WriteInt64(TokenBalanceAmount);
|
||||
|
||||
_worldPacket.WriteUInt32(BpayStoreProductDeliveryDelay);
|
||||
@@ -61,7 +65,8 @@ namespace Game.Network.Packets
|
||||
_worldPacket.WriteBit(ItemRestorationButtonEnabled);
|
||||
_worldPacket.WriteBit(BrowserEnabled);
|
||||
_worldPacket.WriteBit(SessionAlert.HasValue);
|
||||
_worldPacket.WriteBit(RecruitAFriendSendingEnabled);
|
||||
_worldPacket.WriteBit(RAFSystem.Enabled);
|
||||
_worldPacket.WriteBit(RAFSystem.RecruitingEnabled);
|
||||
_worldPacket.WriteBit(CharUndeleteEnabled);
|
||||
_worldPacket.WriteBit(RestrictedAccount);
|
||||
_worldPacket.WriteBit(CommerceSystemEnabled);
|
||||
@@ -81,6 +86,9 @@ namespace Game.Network.Packets
|
||||
_worldPacket.WriteBit(ClubsPresenceUpdateEnabled);
|
||||
_worldPacket.WriteBit(VoiceChatDisabledByParentalControl);
|
||||
_worldPacket.WriteBit(VoiceChatMutedByParentalControl);
|
||||
_worldPacket.WriteBit(QuestSessionEnabled);
|
||||
_worldPacket.WriteBit(Unused825);
|
||||
_worldPacket.WriteBit(ClubFinderEnabled);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
{
|
||||
@@ -144,7 +152,6 @@ namespace Game.Network.Packets
|
||||
public bool VoiceEnabled;
|
||||
public bool BrowserEnabled;
|
||||
public bool BpayStoreAvailable;
|
||||
public bool RecruitAFriendSendingEnabled;
|
||||
public bool BpayStoreEnabled;
|
||||
public Optional<SessionAlertConfig> SessionAlert;
|
||||
public uint ScrollOfResurrectionMaxRequestsPerDay;
|
||||
@@ -157,7 +164,6 @@ namespace Game.Network.Packets
|
||||
public uint TwitterPostThrottleLimit;
|
||||
public uint TwitterPostThrottleCooldown;
|
||||
public uint TokenPollTimeSeconds;
|
||||
public uint TokenRedeemIndex;
|
||||
public long TokenBalanceAmount;
|
||||
public uint BpayStoreProductDeliveryDelay;
|
||||
public uint ClubsPresenceUpdateTimer;
|
||||
@@ -182,10 +188,14 @@ namespace Game.Network.Packets
|
||||
public bool ClubsPresenceUpdateEnabled;
|
||||
public bool VoiceChatDisabledByParentalControl;
|
||||
public bool VoiceChatMutedByParentalControl;
|
||||
public bool QuestSessionEnabled;
|
||||
public bool Unused825;
|
||||
public bool ClubFinderEnabled;
|
||||
|
||||
public Optional<List<byte>> RaceClassExpansionLevels;
|
||||
public SocialQueueConfig QuickJoinConfig;
|
||||
public VoiceChatProxySettings VoiceChatManagerSettings;
|
||||
public RafSystemFeatureInfo RAFSystem;
|
||||
|
||||
public struct SavedThrottleObjectState
|
||||
{
|
||||
@@ -245,6 +255,16 @@ namespace Game.Network.Packets
|
||||
public ObjectGuid BnetAccountGuid;
|
||||
public ObjectGuid GuildGuid;
|
||||
}
|
||||
|
||||
public struct RafSystemFeatureInfo
|
||||
{
|
||||
public bool Enabled;
|
||||
public bool RecruitingEnabled;
|
||||
public uint MaxRecruits;
|
||||
public uint MaxRecruitMonths;
|
||||
public uint MaxRecruitmentUses;
|
||||
public uint DaysInCycle;
|
||||
}
|
||||
}
|
||||
|
||||
public class FeatureSystemStatusGlueScreen : ServerPacket
|
||||
@@ -263,7 +283,6 @@ namespace Game.Network.Packets
|
||||
_worldPacket.WriteBit(IsExpansionPreorderInStore);
|
||||
_worldPacket.WriteBit(KioskModeEnabled);
|
||||
_worldPacket.WriteBit(CompetitiveModeEnabled);
|
||||
_worldPacket.WriteBit(false); // not accessed in handler
|
||||
_worldPacket.WriteBit(TrialBoostEnabled);
|
||||
_worldPacket.WriteBit(TokenBalanceEnabled);
|
||||
_worldPacket.WriteBit(LiveRegionCharacterListEnabled);
|
||||
@@ -271,8 +290,7 @@ namespace Game.Network.Packets
|
||||
_worldPacket.WriteBit(LiveRegionAccountCopyEnabled);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteInt32(TokenPollTimeSeconds);
|
||||
_worldPacket.WriteInt32(TokenRedeemIndex);
|
||||
_worldPacket.WriteUInt32(TokenPollTimeSeconds);
|
||||
_worldPacket.WriteInt64(TokenBalanceAmount);
|
||||
_worldPacket.WriteInt32(MaxCharactersPerRealm);
|
||||
_worldPacket.WriteUInt32(BpayStoreProductDeliveryDelay);
|
||||
@@ -297,8 +315,7 @@ namespace Game.Network.Packets
|
||||
public bool LiveRegionCharacterListEnabled; // NYI
|
||||
public bool LiveRegionCharacterCopyEnabled; // NYI
|
||||
public bool LiveRegionAccountCopyEnabled; // NYI
|
||||
public int TokenPollTimeSeconds; // NYI
|
||||
public int TokenRedeemIndex; // NYI
|
||||
public uint TokenPollTimeSeconds; // NYI
|
||||
public long TokenBalanceAmount; // NYI
|
||||
public int MaxCharactersPerRealm;
|
||||
public uint BpayStoreProductDeliveryDelay; // NYI
|
||||
|
||||
@@ -149,6 +149,7 @@ namespace Game.Network.Packets
|
||||
bool hasLFGListSearchResult = _worldPacket.HasBit();
|
||||
bool hasLFGListApplicant = _worldPacket.HasBit();
|
||||
bool hasClubMessage = _worldPacket.HasBit();
|
||||
bool hasClubFinderResult = _worldPacket.HasBit();
|
||||
|
||||
_worldPacket.ResetBitPos();
|
||||
|
||||
@@ -159,14 +160,16 @@ namespace Game.Network.Packets
|
||||
_worldPacket.ResetBitPos();
|
||||
}
|
||||
|
||||
HorusChatLog.Read(_worldPacket);
|
||||
|
||||
Note = _worldPacket.ReadString(noteLength);
|
||||
|
||||
if (hasMailInfo)
|
||||
{
|
||||
MailInfo.HasValue = true;
|
||||
MailInfo.Value.Read(_worldPacket);
|
||||
}
|
||||
|
||||
Note = _worldPacket.ReadString(noteLength);
|
||||
|
||||
if (hasCalendarInfo)
|
||||
{
|
||||
CalenderInfo.HasValue = true;
|
||||
@@ -196,6 +199,12 @@ namespace Game.Network.Packets
|
||||
LFGListApplicant.HasValue = true;
|
||||
LFGListApplicant.Value.Read(_worldPacket);
|
||||
}
|
||||
|
||||
if (hasClubFinderResult)
|
||||
{
|
||||
ClubFinderResult.HasValue = true;
|
||||
ClubFinderResult.Value.Read(_worldPacket);
|
||||
}
|
||||
}
|
||||
|
||||
public SupportTicketHeader Header;
|
||||
@@ -203,6 +212,7 @@ namespace Game.Network.Packets
|
||||
public ObjectGuid TargetCharacterGUID;
|
||||
public byte ComplaintType;
|
||||
public string Note;
|
||||
public SupportTicketHorusChatLog HorusChatLog;
|
||||
public Optional<SupportTicketMailInfo> MailInfo;
|
||||
public Optional<SupportTicketCalendarEventInfo> CalenderInfo;
|
||||
public Optional<SupportTicketPetInfo> PetInfo;
|
||||
@@ -210,6 +220,7 @@ namespace Game.Network.Packets
|
||||
public Optional<SupportTicketLFGListSearchResult> LFGListSearchResult;
|
||||
public Optional<SupportTicketLFGListApplicant> LFGListApplicant;
|
||||
public Optional<SupportTicketCommunityMessage> CommunityMessage;
|
||||
public Optional<SupportTicketClubFinderResult> ClubFinderResult;
|
||||
|
||||
public struct SupportTicketChatLine
|
||||
{
|
||||
@@ -254,6 +265,82 @@ namespace Game.Network.Packets
|
||||
public Optional<uint> ReportLineIndex;
|
||||
}
|
||||
|
||||
public struct SupportTicketHorusChatLine
|
||||
{
|
||||
public void Read(WorldPacket data)
|
||||
{
|
||||
Timestamp = data.ReadInt32();
|
||||
AuthorGUID = data.ReadPackedGuid();
|
||||
|
||||
bool hasClubID = data.HasBit();
|
||||
bool hasChannelGUID = data.HasBit();
|
||||
bool hasRealmAddress = data.HasBit();
|
||||
bool hasSlashCmd = data.HasBit();
|
||||
uint textLength = data.ReadBits<uint>(12);
|
||||
|
||||
if (hasClubID)
|
||||
{
|
||||
ClubID.HasValue = true;
|
||||
ClubID.Value = data.ReadUInt64();
|
||||
}
|
||||
|
||||
if (hasChannelGUID)
|
||||
{
|
||||
ChannelGUID.HasValue = true;
|
||||
ChannelGUID.Value = data.ReadPackedGuid();
|
||||
}
|
||||
|
||||
if (hasRealmAddress)
|
||||
{
|
||||
RealmAddress.HasValue = true;
|
||||
RealmAddress.Value.VirtualRealmAddress = data.ReadUInt32();
|
||||
RealmAddress.Value.field_4 = data.ReadUInt16();
|
||||
RealmAddress.Value.field_6 = data.ReadUInt8();
|
||||
}
|
||||
|
||||
if (hasSlashCmd)
|
||||
{
|
||||
SlashCmd.HasValue = true;
|
||||
SlashCmd.Value = data.ReadInt32();
|
||||
}
|
||||
|
||||
Text = data.ReadString(textLength);
|
||||
}
|
||||
|
||||
public struct SenderRealm
|
||||
{
|
||||
public uint VirtualRealmAddress;
|
||||
public ushort field_4;
|
||||
public byte field_6;
|
||||
}
|
||||
|
||||
public int Timestamp;
|
||||
public ObjectGuid AuthorGUID;
|
||||
public Optional<ulong> ClubID;
|
||||
public Optional<ObjectGuid> ChannelGUID;
|
||||
public Optional<SenderRealm> RealmAddress;
|
||||
public Optional<int> SlashCmd;
|
||||
public string Text;
|
||||
}
|
||||
|
||||
public class SupportTicketHorusChatLog
|
||||
{
|
||||
public List<SupportTicketHorusChatLine> Lines = new List<SupportTicketHorusChatLine>();
|
||||
|
||||
public void Read(WorldPacket data)
|
||||
{
|
||||
uint linesCount = data.ReadUInt32();
|
||||
data.ResetBitPos();
|
||||
|
||||
for (uint i = 0; i < linesCount; i++)
|
||||
{
|
||||
var chatLine = new SupportTicketHorusChatLine();
|
||||
chatLine.Read(data);
|
||||
Lines.Add(chatLine);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public struct SupportTicketMailInfo
|
||||
{
|
||||
public void Read(WorldPacket data)
|
||||
@@ -266,9 +353,9 @@ namespace Game.Network.Packets
|
||||
MailSubject = data.ReadString(subjectLength);
|
||||
}
|
||||
|
||||
int MailID;
|
||||
string MailSubject;
|
||||
string MailBody;
|
||||
public int MailID;
|
||||
public string MailSubject;
|
||||
public string MailBody;
|
||||
}
|
||||
|
||||
public struct SupportTicketCalendarEventInfo
|
||||
@@ -281,9 +368,9 @@ namespace Game.Network.Packets
|
||||
EventTitle = data.ReadString(data.ReadBits<byte>(8));
|
||||
}
|
||||
|
||||
ulong EventID;
|
||||
ulong InviteID;
|
||||
string EventTitle;
|
||||
public ulong EventID;
|
||||
public ulong InviteID;
|
||||
public string EventTitle;
|
||||
}
|
||||
|
||||
public struct SupportTicketPetInfo
|
||||
@@ -295,8 +382,8 @@ namespace Game.Network.Packets
|
||||
PetName = data.ReadString(data.ReadBits<byte>(8));
|
||||
}
|
||||
|
||||
ObjectGuid PetID;
|
||||
string PetName;
|
||||
public ObjectGuid PetID;
|
||||
public string PetName;
|
||||
}
|
||||
|
||||
public struct SupportTicketGuildInfo
|
||||
@@ -309,8 +396,8 @@ namespace Game.Network.Packets
|
||||
GuildName = data.ReadString(nameLength);
|
||||
}
|
||||
|
||||
ObjectGuid GuildID;
|
||||
string GuildName;
|
||||
public ObjectGuid GuildID;
|
||||
public string GuildName;
|
||||
}
|
||||
|
||||
public struct SupportTicketLFGListSearchResult
|
||||
@@ -336,16 +423,16 @@ namespace Game.Network.Packets
|
||||
VoiceChat = data.ReadString(voiceChatLength);
|
||||
}
|
||||
|
||||
RideTicket RideTicket;
|
||||
uint GroupFinderActivityID;
|
||||
ObjectGuid LastTitleAuthorGuid;
|
||||
ObjectGuid LastDescriptionAuthorGuid;
|
||||
ObjectGuid LastVoiceChatAuthorGuid;
|
||||
ObjectGuid ListingCreatorGuid;
|
||||
ObjectGuid Unknown735;
|
||||
string Title;
|
||||
string Description;
|
||||
string VoiceChat;
|
||||
public RideTicket RideTicket;
|
||||
public uint GroupFinderActivityID;
|
||||
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
|
||||
@@ -358,14 +445,30 @@ namespace Game.Network.Packets
|
||||
Comment = data.ReadString(data.ReadBits<uint>(9));
|
||||
}
|
||||
|
||||
RideTicket RideTicket;
|
||||
string Comment;
|
||||
public RideTicket RideTicket;
|
||||
public string Comment;
|
||||
}
|
||||
|
||||
public struct SupportTicketCommunityMessage
|
||||
{
|
||||
public bool IsPlayerUsingVoice;
|
||||
}
|
||||
|
||||
public struct SupportTicketClubFinderResult
|
||||
{
|
||||
public ulong ClubFinderPostingID;
|
||||
public ulong ClubID;
|
||||
public ObjectGuid ClubFinderGUID;
|
||||
public string ClubName;
|
||||
|
||||
public void Read(WorldPacket data)
|
||||
{
|
||||
ClubFinderPostingID = data.ReadUInt64();
|
||||
ClubID = data.ReadUInt64();
|
||||
ClubFinderGUID = data.ReadPackedGuid();
|
||||
ClubName = data.ReadString(data.ReadBits<uint>(12));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Complaint : ClientPacket
|
||||
|
||||
@@ -54,14 +54,19 @@ namespace Game.Network.Packets
|
||||
_worldPacket.WriteBit(IsFullUpdate);
|
||||
_worldPacket.WriteBit(IsSetFavorite);
|
||||
_worldPacket.WriteInt32(FavoriteAppearances.Count);
|
||||
_worldPacket.WriteInt32(NewAppearances.Count);
|
||||
|
||||
foreach (uint itemModifiedAppearanceId in FavoriteAppearances)
|
||||
_worldPacket.WriteUInt32(itemModifiedAppearanceId);
|
||||
|
||||
foreach (var newAppearance in NewAppearances)
|
||||
_worldPacket.WriteUInt32(newAppearance);
|
||||
}
|
||||
|
||||
public bool IsFullUpdate;
|
||||
public bool IsSetFavorite;
|
||||
public List<uint> FavoriteAppearances = new List<uint>();
|
||||
public List<uint> NewAppearances = new List<uint>();
|
||||
}
|
||||
|
||||
class OpenTransmogrifier : ServerPacket
|
||||
|
||||
Reference in New Issue
Block a user