From af121f52bd2552343672bc580e98428561cbf986 Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Fri, 17 Nov 2017 15:13:38 -0500 Subject: [PATCH] Added packets for various search things Showmo found. --- .../FFXIVClassic Map Server.csproj | 7 ++++ .../send/search/ItemSearchClosePacket.cs | 2 +- .../search/ItemSearchResultsBeginPacket.cs | 2 +- .../search/ItemSearchResultsBodyPacket.cs | 3 +- .../send/search/ItemSearchResultsEndPacket.cs | 2 +- .../search/PlayerSearchCommentResultPacket.cs | 3 +- .../search/PlayerSearchInfoResultPacket.cs | 3 +- .../send/search/RetainerResultBodyPacket.cs | 12 +++++- .../send/search/RetainerResultEndPacket.cs | 2 +- .../send/search/RetainerResultUpdatePacket.cs | 3 +- .../search/RetainerSearchHistoryPacket.cs | 42 +++++++++++++++++++ .../search/RetainerSearchHistoryResult.cs | 16 +++++++ .../send/search/RetainerSearchResult.cs | 21 ++++++++++ 13 files changed, 104 insertions(+), 14 deletions(-) create mode 100644 FFXIVClassic Map Server/packets/send/search/RetainerSearchHistoryPacket.cs create mode 100644 FFXIVClassic Map Server/packets/send/search/RetainerSearchHistoryResult.cs create mode 100644 FFXIVClassic Map Server/packets/send/search/RetainerSearchResult.cs diff --git a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj index 29f7a4af..5ff268f7 100644 --- a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj +++ b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj @@ -264,6 +264,7 @@ + @@ -271,6 +272,12 @@ + + + + + + diff --git a/FFXIVClassic Map Server/packets/send/search/ItemSearchClosePacket.cs b/FFXIVClassic Map Server/packets/send/search/ItemSearchClosePacket.cs index 794d1e65..759efea7 100644 --- a/FFXIVClassic Map Server/packets/send/search/ItemSearchClosePacket.cs +++ b/FFXIVClassic Map Server/packets/send/search/ItemSearchClosePacket.cs @@ -3,7 +3,7 @@ using System.Text; using FFXIVClassic.Common; -namespace FFXIVClassic_Map_Server.packets.send.social +namespace FFXIVClassic_Map_Server.packets.send.search { class ItemSearchClosePacket { diff --git a/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBeginPacket.cs b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBeginPacket.cs index cb1f59b4..42fc4f51 100644 --- a/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBeginPacket.cs +++ b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBeginPacket.cs @@ -3,7 +3,7 @@ using System.Text; using FFXIVClassic.Common; -namespace FFXIVClassic_Map_Server.packets.send.social +namespace FFXIVClassic_Map_Server.packets.send.search { class ItemSearchResultsBeginPacket { diff --git a/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBodyPacket.cs b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBodyPacket.cs index e8e895bd..54df84a8 100644 --- a/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBodyPacket.cs +++ b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsBodyPacket.cs @@ -2,10 +2,9 @@ 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 +namespace FFXIVClassic_Map_Server.packets.send.search { class ItemSearchResultsBodyPacket { diff --git a/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsEndPacket.cs b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsEndPacket.cs index cc867306..8eedcb3f 100644 --- a/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsEndPacket.cs +++ b/FFXIVClassic Map Server/packets/send/search/ItemSearchResultsEndPacket.cs @@ -3,7 +3,7 @@ using System.Text; using FFXIVClassic.Common; -namespace FFXIVClassic_Map_Server.packets.send.social +namespace FFXIVClassic_Map_Server.packets.send.search { class ItemSearchResultsEndPacket { diff --git a/FFXIVClassic Map Server/packets/send/search/PlayerSearchCommentResultPacket.cs b/FFXIVClassic Map Server/packets/send/search/PlayerSearchCommentResultPacket.cs index 5edd045c..d6588878 100644 --- a/FFXIVClassic Map Server/packets/send/search/PlayerSearchCommentResultPacket.cs +++ b/FFXIVClassic Map Server/packets/send/search/PlayerSearchCommentResultPacket.cs @@ -3,9 +3,8 @@ using System.Text; using FFXIVClassic.Common; using System; -using FFXIVClassic_Map_Server.packets.send.search; -namespace FFXIVClassic_Map_Server.packets.send.social +namespace FFXIVClassic_Map_Server.packets.send.search { class PlayerSearchCommentResultPacket { diff --git a/FFXIVClassic Map Server/packets/send/search/PlayerSearchInfoResultPacket.cs b/FFXIVClassic Map Server/packets/send/search/PlayerSearchInfoResultPacket.cs index 55e54ed8..137cc0d3 100644 --- a/FFXIVClassic Map Server/packets/send/search/PlayerSearchInfoResultPacket.cs +++ b/FFXIVClassic Map Server/packets/send/search/PlayerSearchInfoResultPacket.cs @@ -3,9 +3,8 @@ using System.Text; using FFXIVClassic.Common; using System; -using FFXIVClassic_Map_Server.packets.send.search; -namespace FFXIVClassic_Map_Server.packets.send.social +namespace FFXIVClassic_Map_Server.packets.send.search { class PlayerSearchInfoResultPacket { diff --git a/FFXIVClassic Map Server/packets/send/search/RetainerResultBodyPacket.cs b/FFXIVClassic Map Server/packets/send/search/RetainerResultBodyPacket.cs index 4f8fca23..eb472a7d 100644 --- a/FFXIVClassic Map Server/packets/send/search/RetainerResultBodyPacket.cs +++ b/FFXIVClassic Map Server/packets/send/search/RetainerResultBodyPacket.cs @@ -3,7 +3,7 @@ using System.Text; using FFXIVClassic.Common; -namespace FFXIVClassic_Map_Server.packets.send.social +namespace FFXIVClassic_Map_Server.packets.send.search { class RetainerResultBodyPacket { @@ -12,7 +12,15 @@ namespace FFXIVClassic_Map_Server.packets.send.social public static SubPacket BuildPacket(uint sourceActorId, bool isSuccess, string nameToAdd) { - byte[] data = new byte[PACKET_SIZE - 0x20]; + byte[] data = new byte[PACKET_SIZE - 0x20]; + using (MemoryStream mem = new MemoryStream(data)) + { + using (BinaryWriter binWriter = new BinaryWriter(mem)) + { + binWriter.Write(Encoding.ASCII.GetBytes(sender), 0, Encoding.ASCII.GetByteCount(sender) >= 0x20 ? 0x20 : Encoding.ASCII.GetByteCount(sender)); + + } + } return new SubPacket(OPCODE, sourceActorId, data); } } diff --git a/FFXIVClassic Map Server/packets/send/search/RetainerResultEndPacket.cs b/FFXIVClassic Map Server/packets/send/search/RetainerResultEndPacket.cs index d8dabd24..4e3707fa 100644 --- a/FFXIVClassic Map Server/packets/send/search/RetainerResultEndPacket.cs +++ b/FFXIVClassic Map Server/packets/send/search/RetainerResultEndPacket.cs @@ -3,7 +3,7 @@ using System.Text; using FFXIVClassic.Common; -namespace FFXIVClassic_Map_Server.packets.send.social +namespace FFXIVClassic_Map_Server.packets.send.search { class RetainerResultEndPacket { diff --git a/FFXIVClassic Map Server/packets/send/search/RetainerResultUpdatePacket.cs b/FFXIVClassic Map Server/packets/send/search/RetainerResultUpdatePacket.cs index aa7f510a..2a8a0619 100644 --- a/FFXIVClassic Map Server/packets/send/search/RetainerResultUpdatePacket.cs +++ b/FFXIVClassic Map Server/packets/send/search/RetainerResultUpdatePacket.cs @@ -2,10 +2,9 @@ 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 +namespace FFXIVClassic_Map_Server.packets.send.search { class RetainerResultUpdatePacket { diff --git a/FFXIVClassic Map Server/packets/send/search/RetainerSearchHistoryPacket.cs b/FFXIVClassic Map Server/packets/send/search/RetainerSearchHistoryPacket.cs new file mode 100644 index 00000000..85d79d9c --- /dev/null +++ b/FFXIVClassic Map Server/packets/send/search/RetainerSearchHistoryPacket.cs @@ -0,0 +1,42 @@ +using FFXIVClassic.Common; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FFXIVClassic_Map_Server.packets.send.search +{ + class RetainerSearchHistoryPacket + { + public const ushort OPCODE = 0x01DD; + public const uint PACKET_SIZE = 0x120; + + public static SubPacket BuildPacket(uint sourceActorId, byte count, bool hasEnded) + { + byte[] data = new byte[PACKET_SIZE - 0x20]; + using (MemoryStream mem = new MemoryStream(data)) + { + using (BinaryWriter binWriter = new BinaryWriter(mem)) + { + binWriter.Seek(0x12, SeekOrigin.Begin); + binWriter.Write((UInt16)count); + binWriter.Write((Byte)(hasEnded ? 2 : 0)); + + for (int i = 0; i < count; i++) + { + binWriter.Seek(0x10 + (0x80 * i), SeekOrigin.Begin); + RetainerSearchHistoryResult result = null; + binWriter.Write((UInt32)result.timestamp); + binWriter.Write((UInt16)0); + binWriter.Write((UInt16)result.quanitiy); + binWriter.Write((UInt32)result.gilCostPerItem); + binWriter.Write((Byte)result.numStack); + } + } + } + return new SubPacket(OPCODE, sourceActorId, data); + } + } +} diff --git a/FFXIVClassic Map Server/packets/send/search/RetainerSearchHistoryResult.cs b/FFXIVClassic Map Server/packets/send/search/RetainerSearchHistoryResult.cs new file mode 100644 index 00000000..df801164 --- /dev/null +++ b/FFXIVClassic Map Server/packets/send/search/RetainerSearchHistoryResult.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 RetainerSearchHistoryResult + { + public uint timestamp; + public ushort quanitiy; + public uint gilCostPerItem; + public byte numStack; + } +} diff --git a/FFXIVClassic Map Server/packets/send/search/RetainerSearchResult.cs b/FFXIVClassic Map Server/packets/send/search/RetainerSearchResult.cs new file mode 100644 index 00000000..7747d90c --- /dev/null +++ b/FFXIVClassic Map Server/packets/send/search/RetainerSearchResult.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FFXIVClassic_Map_Server.packets.send.search +{ + class RetainerSearchResult + { + public uint itemId; + public uint marketWard; + public uint gilCostPerItem; + public uint quantity; + public byte numStack; + public byte quality; + public string sellerRetainerName; + public byte[] materiaType = new byte[5]; + public byte[] materiaGrade = new byte[5]; + } +}