From b5054debea38c35d2b66a461dc7d52005233107d Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Sun, 3 Sep 2017 17:02:08 -0400 Subject: [PATCH] Added first set of item search packets. --- .../packets/send/search/ItemSearchResult.cs | 16 +++++++ .../search/ItemSearchResultsBeginPacket.cs | 19 ++++++++ .../search/ItemSearchResultsBodyPacket.cs | 44 +++++++++++++++++++ .../send/search/ItemSearchResultsEndPacket.cs | 19 ++++++++ 4 files changed, 98 insertions(+) create mode 100644 FFXIVClassic Map Server/packets/send/search/ItemSearchResult.cs create mode 100644 FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBeginPacket.cs create mode 100644 FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBodyPacket.cs create mode 100644 FFXIVClassic Map Server/packets/send/search/ItemSearchResultsEndPacket.cs diff --git a/FFXIVClassic Map Server/packets/send/search/ItemSearchResult.cs b/FFXIVClassic Map Server/packets/send/search/ItemSearchResult.cs new file mode 100644 index 00000000..7d9c51d1 --- /dev/null +++ b/FFXIVClassic Map Server/packets/send/search/ItemSearchResult.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FFXIVClassic_Map_Server.packets.send.search +{ + class ItemSearchResult + { + + public uint itemId; + public uint numItems; + + } +} diff --git a/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBeginPacket.cs b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBeginPacket.cs new file mode 100644 index 00000000..cb1f59b4 --- /dev/null +++ b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBeginPacket.cs @@ -0,0 +1,19 @@ +using System.IO; +using System.Text; + +using FFXIVClassic.Common; + +namespace FFXIVClassic_Map_Server.packets.send.social +{ + class ItemSearchResultsBeginPacket + { + public const ushort OPCODE = 0x01D7; + public const uint PACKET_SIZE = 0x028; + + public static SubPacket BuildPacket(uint sourceActorId, bool isSuccess, string nameToAdd) + { + byte[] data = new byte[PACKET_SIZE - 0x20]; + return new SubPacket(OPCODE, sourceActorId, data); + } + } +} diff --git a/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBodyPacket.cs b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBodyPacket.cs new file mode 100644 index 00000000..e8e895bd --- /dev/null +++ b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBodyPacket.cs @@ -0,0 +1,44 @@ +using System.IO; +using System.Text; +using System; +using FFXIVClassic.Common; +using FFXIVClassic_Map_Server.packets.send.search; +using System.Collections.Generic; + +namespace FFXIVClassic_Map_Server.packets.send.social +{ + class ItemSearchResultsBodyPacket + { + public const ushort OPCODE = 0x01D8; + public const uint PACKET_SIZE = 0x228; + + public static SubPacket BuildPacket(uint sourceActorId, List itemSearchResult, ref int listOffset) + { + byte[] data = new byte[PACKET_SIZE - 0x20]; + + int max; + if (itemSearchResult.Count - listOffset <= 64) + max = itemSearchResult.Count - listOffset; + else + max = 64; + + using (MemoryStream mem = new MemoryStream(data)) + { + using (BinaryWriter binWriter = new BinaryWriter(mem)) + { + binWriter.Write((UInt32)max); + + foreach (ItemSearchResult item in itemSearchResult) + binWriter.Write((UInt32)item.itemId); + + binWriter.Seek(0x104, SeekOrigin.Begin); + + foreach (ItemSearchResult item in itemSearchResult) + binWriter.Write((UInt32)item.numItems); + } + } + + return new SubPacket(OPCODE, sourceActorId, data); + } + } +} diff --git a/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsEndPacket.cs b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsEndPacket.cs new file mode 100644 index 00000000..cc867306 --- /dev/null +++ b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsEndPacket.cs @@ -0,0 +1,19 @@ +using System.IO; +using System.Text; + +using FFXIVClassic.Common; + +namespace FFXIVClassic_Map_Server.packets.send.social +{ + class ItemSearchResultsEndPacket + { + public const ushort OPCODE = 0x01D9; + public const uint PACKET_SIZE = 0x028; + + public static SubPacket BuildPacket(uint sourceActorId, bool isSuccess, string nameToAdd) + { + byte[] data = new byte[PACKET_SIZE - 0x20]; + return new SubPacket(OPCODE, sourceActorId, data); + } + } +}