From af2262c4b1508cfbb72dad8896e72de9b1f9ecfc Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Tue, 6 Oct 2015 20:06:08 -0400 Subject: [PATCH] Added chat packet and state change packet. Fixed file spelling error for RemoveActorPacket and deleted UnknownLoginPacket. Was empty. --- FFXIVClassic Map Server/UnknownLoginPacket.cs | 1 - ...orPacketPacket.cs => RemoveActorPacket.cs} | 0 .../packets/send/Actor/SetActorStatePacket.cs | 27 +++++++++ .../packets/send/SendMessagePacket.cs | 60 +++++++++++++++++++ 4 files changed, 87 insertions(+), 1 deletion(-) delete mode 100644 FFXIVClassic Map Server/UnknownLoginPacket.cs rename FFXIVClassic Map Server/packets/send/Actor/{RemoveActorPacketPacket.cs => RemoveActorPacket.cs} (100%) create mode 100644 FFXIVClassic Map Server/packets/send/Actor/SetActorStatePacket.cs create mode 100644 FFXIVClassic Map Server/packets/send/SendMessagePacket.cs diff --git a/FFXIVClassic Map Server/UnknownLoginPacket.cs b/FFXIVClassic Map Server/UnknownLoginPacket.cs deleted file mode 100644 index 5f282702..00000000 --- a/FFXIVClassic Map Server/UnknownLoginPacket.cs +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/FFXIVClassic Map Server/packets/send/Actor/RemoveActorPacketPacket.cs b/FFXIVClassic Map Server/packets/send/Actor/RemoveActorPacket.cs similarity index 100% rename from FFXIVClassic Map Server/packets/send/Actor/RemoveActorPacketPacket.cs rename to FFXIVClassic Map Server/packets/send/Actor/RemoveActorPacket.cs diff --git a/FFXIVClassic Map Server/packets/send/Actor/SetActorStatePacket.cs b/FFXIVClassic Map Server/packets/send/Actor/SetActorStatePacket.cs new file mode 100644 index 00000000..f82baa00 --- /dev/null +++ b/FFXIVClassic Map Server/packets/send/Actor/SetActorStatePacket.cs @@ -0,0 +1,27 @@ +using FFXIVClassic_Lobby_Server.packets; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FFXIVClassic_Map_Server.packets.send.actor +{ + class SetActorStatePacket + { + public const ushort OPCODE = 0x0134; + public const uint PACKET_SIZE = 0x28; + + public const int STATE_NONE = 0x0000; + public const int STATE_DEAD = 0x0303; + public const int STATE_PASSIVE = 0xBF00; + public const int STATE_ACTIVE = 0xBF02; + + public static SubPacket buildPacket(uint playerActorID, uint targetID, uint state) + { + byte[] data = new byte[PACKET_SIZE - 0x20]; + + return new SubPacket(OPCODE, playerActorID, targetID, data); + } + } +} diff --git a/FFXIVClassic Map Server/packets/send/SendMessagePacket.cs b/FFXIVClassic Map Server/packets/send/SendMessagePacket.cs new file mode 100644 index 00000000..e5cda6a6 --- /dev/null +++ b/FFXIVClassic Map Server/packets/send/SendMessagePacket.cs @@ -0,0 +1,60 @@ +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 +{ + class SendMessagePacket + { + public const int MESSAGE_TYPE_NONE = 0; + public const int MESSAGE_TYPE_SAY = 1; + public const int MESSAGE_TYPE_SHOUT = 2; + public const int MESSAGE_TYPE_TELL = 3; + public const int MESSAGE_TYPE_PARTY = 4; + public const int MESSAGE_TYPE_LINKSHELL1 = 5; + public const int MESSAGE_TYPE_LINKSHELL2 = 6; + public const int MESSAGE_TYPE_LINKSHELL3 = 7; + public const int MESSAGE_TYPE_LINKSHELL4 = 8; + public const int MESSAGE_TYPE_LINKSHELL5 = 9; + public const int MESSAGE_TYPE_LINKSHELL6 = 10; + public const int MESSAGE_TYPE_LINKSHELL7 = 11; + public const int MESSAGE_TYPE_LINKSHELL8 = 12; + + public const int MESSAGE_TYPE_SAY_SPAM = 22; + public const int MESSAGE_TYPE_SHOUT_SPAM = 23; + public const int MESSAGE_TYPE_TELL_SPAM = 24; + public const int MESSAGE_TYPE_CUSTOM_EMOTE = 25; + public const int MESSAGE_TYPE_EMOTE_SPAM = 26; + public const int MESSAGE_TYPE_STANDARD_EMOTE = 27; + public const int MESSAGE_TYPE_URGENT_MESSAGE = 28; + public const int MESSAGE_TYPE_GENERAL_INFO = 29; + public const int MESSAGE_TYPE_SYSTEM = 32; + public const int MESSAGE_TYPE_SYSTEM_ERROR = 33; + + public const ushort OPCODE = 0x0003; + public const uint PACKET_SIZE = 0x248; + + public static SubPacket buildPacket(uint playerActorID, uint targetID, uint logtype, string sender, string message) + { + byte[] data = new byte[PACKET_SIZE - 0x20]; + + using (MemoryStream mem = new MemoryStream(data)) + { + using (BinaryWriter binWriter = new BinaryWriter(mem)) + { + binWriter.Write(ASCIIEncoding.ASCII.GetBytes(sender)); + binWriter.BaseStream.Seek(0x20, SeekOrigin.Begin); + binWriter.Write((UInt32)logtype); + binWriter.Write(ASCIIEncoding.ASCII.GetBytes(message)); + } + } + + return new SubPacket(OPCODE, playerActorID, targetID, data); + } + + } +}