Core/PacketIO: Added empty implementation for treasure picker opcodes
Port From (https://github.com/TrinityCore/TrinityCore/commit/4936094379a3558022d63f7520cd0d988d718daf)
This commit is contained in:
@@ -344,5 +344,21 @@ namespace Game
|
|||||||
|
|
||||||
SendPacket(realmQueryResponse);
|
SendPacket(realmQueryResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WorldPacketHandler(ClientOpcodes.QueryTreasurePicker)]
|
||||||
|
void HandleQueryTreasurePicker(QueryTreasurePicker queryTreasurePicker)
|
||||||
|
{
|
||||||
|
Quest questInfo = Global.ObjectMgr.GetQuestTemplate(queryTreasurePicker.QuestID);
|
||||||
|
if (questInfo == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
TreasurePickerResponse treasurePickerResponse = new();
|
||||||
|
treasurePickerResponse.QuestID = queryTreasurePicker.QuestID;
|
||||||
|
treasurePickerResponse.TreasurePickerID = queryTreasurePicker.TreasurePickerID;
|
||||||
|
|
||||||
|
// TODO: Missing treasure picker implementation
|
||||||
|
|
||||||
|
_player.SendPacket(treasurePickerResponse);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -564,6 +564,36 @@ namespace Game.Networking.Packets
|
|||||||
public VirtualRealmNameInfo NameInfo;
|
public VirtualRealmNameInfo NameInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class QueryTreasurePicker : ClientPacket
|
||||||
|
{
|
||||||
|
public uint QuestID;
|
||||||
|
public uint TreasurePickerID;
|
||||||
|
|
||||||
|
public QueryTreasurePicker(WorldPacket packet) : base(packet) { }
|
||||||
|
|
||||||
|
public override void Read()
|
||||||
|
{
|
||||||
|
QuestID = _worldPacket.ReadUInt32();
|
||||||
|
TreasurePickerID = _worldPacket.ReadUInt32();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TreasurePickerResponse : ServerPacket
|
||||||
|
{
|
||||||
|
public uint QuestID;
|
||||||
|
public uint TreasurePickerID;
|
||||||
|
public TreasurePickerPick Pick;
|
||||||
|
|
||||||
|
public TreasurePickerResponse() : base(ServerOpcodes.TreasurePickerResponse, ConnectionType.Instance) { }
|
||||||
|
|
||||||
|
public override void Write()
|
||||||
|
{
|
||||||
|
_worldPacket.WriteUInt32(QuestID);
|
||||||
|
_worldPacket.WriteUInt32(TreasurePickerID);
|
||||||
|
Pick.Write(_worldPacket);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Structs
|
//Structs
|
||||||
public class PlayerGuidLookupData
|
public class PlayerGuidLookupData
|
||||||
{
|
{
|
||||||
@@ -765,4 +795,93 @@ namespace Game.Networking.Packets
|
|||||||
public uint QuestID;
|
public uint QuestID;
|
||||||
public List<uint> NPCs = new();
|
public List<uint> NPCs = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct TreasurePickItem
|
||||||
|
{
|
||||||
|
public ItemInstance Item;
|
||||||
|
public uint Quantity;
|
||||||
|
public QuestRewardContextFlags? ContextFlags;
|
||||||
|
|
||||||
|
public void Write(WorldPacket data)
|
||||||
|
{
|
||||||
|
Item.Write(data);
|
||||||
|
data.WriteUInt32(Quantity);
|
||||||
|
data.WriteBit(ContextFlags.HasValue);
|
||||||
|
data.FlushBits();
|
||||||
|
|
||||||
|
if (ContextFlags.HasValue)
|
||||||
|
data.WriteInt32((int)ContextFlags.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct TreasurePickCurrency
|
||||||
|
{
|
||||||
|
public uint CurrencyID;
|
||||||
|
public uint Quantity;
|
||||||
|
public QuestRewardContextFlags? ContextFlags;
|
||||||
|
|
||||||
|
public void Write(WorldPacket data)
|
||||||
|
{
|
||||||
|
data.WriteUInt32(CurrencyID);
|
||||||
|
data.WriteUInt32(Quantity);
|
||||||
|
data.WriteBit(ContextFlags.HasValue);
|
||||||
|
data.FlushBits();
|
||||||
|
|
||||||
|
if (ContextFlags.HasValue)
|
||||||
|
data.WriteInt32((int)ContextFlags.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TreasurePickerBonus
|
||||||
|
{
|
||||||
|
public List<TreasurePickItem> Items = new();
|
||||||
|
public List<TreasurePickCurrency> Currencies = new();
|
||||||
|
public ulong Money;
|
||||||
|
public bool Unknown;
|
||||||
|
|
||||||
|
public void Write(WorldPacket data)
|
||||||
|
{
|
||||||
|
data.WriteInt32(Items.Count);
|
||||||
|
data.WriteInt32(Currencies.Count);
|
||||||
|
data.WriteUInt64(Money);
|
||||||
|
data.WriteBit(Unknown);
|
||||||
|
data.FlushBits();
|
||||||
|
|
||||||
|
foreach (TreasurePickItem treasurePickerItem in Items)
|
||||||
|
treasurePickerItem.Write(data);
|
||||||
|
|
||||||
|
foreach (TreasurePickCurrency treasurePickCurrency in Currencies)
|
||||||
|
treasurePickCurrency.Write(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TreasurePickerPick
|
||||||
|
{
|
||||||
|
public List<TreasurePickItem> Items = new();
|
||||||
|
public List<TreasurePickCurrency> Currencies = new();
|
||||||
|
public List<TreasurePickerBonus> Bonuses = new();
|
||||||
|
public ulong Money;
|
||||||
|
public int Flags;
|
||||||
|
public bool IsChoice;
|
||||||
|
|
||||||
|
public void Write(WorldPacket data)
|
||||||
|
{
|
||||||
|
data.WriteInt32(Items.Count);
|
||||||
|
data.WriteInt32(Currencies.Count);
|
||||||
|
data.WriteUInt64(Money);
|
||||||
|
data.WriteInt32(Bonuses.Count);
|
||||||
|
data.WriteInt32(Flags);
|
||||||
|
data.WriteBit(IsChoice);
|
||||||
|
data.FlushBits();
|
||||||
|
|
||||||
|
foreach (TreasurePickCurrency treasurePickCurrency in Currencies)
|
||||||
|
treasurePickCurrency.Write(data);
|
||||||
|
|
||||||
|
foreach (TreasurePickItem treasurePickItem in Items)
|
||||||
|
treasurePickItem.Write(data);
|
||||||
|
|
||||||
|
foreach (TreasurePickerBonus treasurePickerBonus in Bonuses)
|
||||||
|
treasurePickerBonus.Write(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user