diff --git a/FFXIVClassic_Lobby_Server/packets/CharacterListPacket.cs b/FFXIVClassic_Lobby_Server/packets/CharacterListPacket.cs index b7361c5d..c75f5c61 100644 --- a/FFXIVClassic_Lobby_Server/packets/CharacterListPacket.cs +++ b/FFXIVClassic_Lobby_Server/packets/CharacterListPacket.cs @@ -43,7 +43,8 @@ namespace FFXIVClassic_Lobby_Server.packets //Write List Info binWriter.Write((UInt64)sequence); - binWriter.Write(maxChars - totalCount <= MAXPERPACKET ? (byte)(maxChars + 1) : (byte)0); + byte listTracker = (byte)((MAXPERPACKET * 2) * subPackets.Count); + binWriter.Write(characterList.Count - totalCount <= MAXPERPACKET ? (byte)(listTracker + 1) : (byte)(listTracker)); //binWriter.Write((byte)1); binWriter.Write(maxChars - totalCount <= MAXPERPACKET ? (UInt32)(maxChars - totalCount) : (UInt32)MAXPERPACKET); binWriter.Write((byte)0); @@ -144,7 +145,8 @@ namespace FFXIVClassic_Lobby_Server.packets //Write Empty List Info binWriter.Write((UInt64)sequence); - binWriter.Write((byte)1); + byte listTracker = (byte)((MAXPERPACKET * 2) * subPackets.Count); + binWriter.Write(characterList.Count - totalCount <= MAXPERPACKET ? (byte)(listTracker + 1) : (byte)(listTracker)); binWriter.Write((UInt32)0); binWriter.Write((byte)0); binWriter.Write((UInt16)0); diff --git a/FFXIVClassic_Lobby_Server/packets/ImportListPacket.cs b/FFXIVClassic_Lobby_Server/packets/ImportListPacket.cs index 4f55e934..c8afd789 100644 --- a/FFXIVClassic_Lobby_Server/packets/ImportListPacket.cs +++ b/FFXIVClassic_Lobby_Server/packets/ImportListPacket.cs @@ -41,7 +41,8 @@ namespace FFXIVClassic_Lobby_Server.packets //Write List Info binWriter.Write((UInt64)sequence); - binWriter.Write(namesList.Count - totalCount <= MAXPERPACKET ? (byte)(namesList.Count + 1) : (byte)0); + byte listTracker = (byte)((MAXPERPACKET * 2) * subPackets.Count); + binWriter.Write(namesList.Count - totalCount <= MAXPERPACKET ? (byte)(listTracker + 1) : (byte)(listTracker)); binWriter.Write(namesList.Count - totalCount <= MAXPERPACKET ? (UInt32)(namesList.Count - totalCount) : (UInt32)MAXPERPACKET); binWriter.Write((byte)0); binWriter.Write((UInt16)0); @@ -82,7 +83,8 @@ namespace FFXIVClassic_Lobby_Server.packets //Write Empty List Info binWriter.Write((UInt64)sequence); - binWriter.Write((byte)1); + byte listTracker = (byte)((MAXPERPACKET * 2) * subPackets.Count); + binWriter.Write(namesList.Count - totalCount <= MAXPERPACKET ? (byte)(listTracker + 1) : (byte)(listTracker)); binWriter.Write((UInt32)0); binWriter.Write((byte)0); binWriter.Write((UInt16)0); diff --git a/FFXIVClassic_Lobby_Server/packets/RetainerListPacket.cs b/FFXIVClassic_Lobby_Server/packets/RetainerListPacket.cs index dbaeba90..b00d2b2a 100644 --- a/FFXIVClassic_Lobby_Server/packets/RetainerListPacket.cs +++ b/FFXIVClassic_Lobby_Server/packets/RetainerListPacket.cs @@ -11,7 +11,7 @@ namespace FFXIVClassic_Lobby_Server.packets class RetainerListPacket { public const ushort OPCODE = 0x17; - public const ushort MAXPERPACKET = 9; + public const ushort MAXPERPACKET = 9; private UInt64 sequence; private List retainerList; @@ -41,11 +41,11 @@ namespace FFXIVClassic_Lobby_Server.packets //Write List Info binWriter.Write((UInt64)sequence); - binWriter.Write(retainerList.Count - totalCount <= MAXPERPACKET ? (byte)(retainerList.Count + 1) : (byte)0); + byte listTracker = (byte)((MAXPERPACKET * 2) * subPackets.Count); + binWriter.Write(retainerList.Count - totalCount <= MAXPERPACKET ? (byte)(listTracker + 1) : (byte)(listTracker)); binWriter.Write(retainerList.Count - totalCount <= MAXPERPACKET ? (UInt32)(retainerList.Count - totalCount) : (UInt32)MAXPERPACKET); binWriter.Write((byte)0); binWriter.Write((UInt16)0); - binWriter.Write((UInt64)0); binWriter.Write((UInt32)0); } @@ -84,7 +84,8 @@ namespace FFXIVClassic_Lobby_Server.packets //Write Empty List Info binWriter.Write((UInt64)sequence); - binWriter.Write((byte)1); + byte listTracker = (byte)((MAXPERPACKET * 2) * subPackets.Count); + binWriter.Write(retainerList.Count - totalCount <= MAXPERPACKET ? (byte)(listTracker + 1) : (byte)(listTracker)); binWriter.Write((UInt32)0); binWriter.Write((byte)0); binWriter.Write((UInt16)0); diff --git a/FFXIVClassic_Lobby_Server/packets/WorldListPacket.cs b/FFXIVClassic_Lobby_Server/packets/WorldListPacket.cs index 2794cd65..e2912825 100644 --- a/FFXIVClassic_Lobby_Server/packets/WorldListPacket.cs +++ b/FFXIVClassic_Lobby_Server/packets/WorldListPacket.cs @@ -41,7 +41,8 @@ namespace FFXIVClassic_Lobby_Server.packets //Write List Info binWriter.Write((UInt64)sequence); - binWriter.Write(worldList.Count - totalCount <= MAXPERPACKET ? (byte)(worldList.Count + 1) : (byte)0); + byte listTracker = (byte)((MAXPERPACKET * 2) * subPackets.Count); + binWriter.Write(worldList.Count - totalCount <= MAXPERPACKET ? (byte)(listTracker + 1) : (byte)(listTracker)); binWriter.Write(worldList.Count - totalCount <= MAXPERPACKET ? (UInt32)(worldList.Count - totalCount) : (UInt32)MAXPERPACKET); binWriter.Write((byte)0); binWriter.Write((UInt16)0); @@ -80,7 +81,8 @@ namespace FFXIVClassic_Lobby_Server.packets //Write Empty List Info binWriter.Write((UInt64)sequence); - binWriter.Write((byte)1); + byte listTracker = (byte)((MAXPERPACKET * 2) * subPackets.Count); + binWriter.Write(worldList.Count - totalCount <= MAXPERPACKET ? (byte)(listTracker + 1) : (byte)(listTracker)); binWriter.Write((UInt32)0); binWriter.Write((byte)0); binWriter.Write((UInt16)0);