From c4dea467e3901d7f8d9860cbff20da7ea2f06950 Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Sun, 7 Feb 2016 15:43:32 -0500 Subject: [PATCH] Fixed missing seek, added battle packet 0x13C. --- .../FFXIVClassic Map Server.csproj | 5 ++- .../Actor/battle/BattleActionX00Packet.cs | 40 +++++++++++++++++++ .../Actor/battle/BattleActionX10Packet.cs | 3 +- .../Actor/battle/BattleActionX18Packet.cs | 3 +- 4 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX00Packet.cs diff --git a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj index db728865..a590db7b 100644 --- a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj +++ b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj @@ -125,7 +125,8 @@ - + + @@ -136,7 +137,7 @@ - + diff --git a/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX00Packet.cs b/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX00Packet.cs new file mode 100644 index 00000000..a24b0ee6 --- /dev/null +++ b/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX00Packet.cs @@ -0,0 +1,40 @@ +using FFXIVClassic_Lobby_Server.packets; +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.actor.battle +{ + class BattleActionX00Packet + { + public const ushort OPCODE = 0x013C; + public const uint PACKET_SIZE = 0x48; + + public static SubPacket buildPacket(uint playerActorID, uint sourceActorId, uint targetActorId, uint animationId, ushort commandId) + { + byte[] data = new byte[PACKET_SIZE - 0x20]; + + using (MemoryStream mem = new MemoryStream(data)) + { + using (BinaryWriter binWriter = new BinaryWriter(mem)) + { + binWriter.Write((UInt32)sourceActorId); + binWriter.Write((UInt32)animationId); + + //Missing... last value is float, string in here as well? + + binWriter.Seek(0x20, SeekOrigin.Begin); + binWriter.Write((UInt32)0); //Num actions (always 0 for this) + binWriter.Write((UInt16)commandId); + binWriter.Write((UInt16)810); //? + + } + } + + return new SubPacket(OPCODE, sourceActorId, playerActorID, data); + } + } +} diff --git a/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX10Packet.cs b/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX10Packet.cs index c6fb10ed..7f22a969 100644 --- a/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX10Packet.cs +++ b/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX10Packet.cs @@ -26,7 +26,8 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle binWriter.Write((UInt32)animationId); //Missing... last value is float, string in here as well? - + + binWriter.Seek(0x20, SeekOrigin.Begin); binWriter.Write((UInt32) actionList.Length); //Num actions (always 1 for this) binWriter.Write((UInt16)commandId); binWriter.Write((UInt16)810); //? diff --git a/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX18Packet.cs b/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX18Packet.cs index f05ef6a8..9cf5469c 100644 --- a/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX18Packet.cs +++ b/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX18Packet.cs @@ -26,7 +26,8 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle binWriter.Write((UInt32)animationId); //Missing... last value is float, string in here as well? - + + binWriter.Seek(0x20, SeekOrigin.Begin); binWriter.Write((UInt32) actionList.Length); //Num actions (always 1 for this) binWriter.Write((UInt16)commandId); binWriter.Write((UInt16)810); //?