mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04:00 
			
		
		
		
	Added receiving packets for GM stuff. Started implementing the recruitment packets.
This commit is contained in:
		| @@ -0,0 +1,49 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.packets.receive.recruitment | ||||
| { | ||||
|     class RecruitmentSearchRequestPacket | ||||
|     { | ||||
|         public bool invalidPacket = false; | ||||
|  | ||||
|         public uint purposeId; | ||||
|         public uint locationId; | ||||
|  | ||||
|         public uint discipleId; | ||||
|         public uint classjobId; | ||||
|  | ||||
|         public byte unknown1; | ||||
|         public byte unknown2; | ||||
|          | ||||
|         public string text; | ||||
|  | ||||
|         public RecruitmentSearchRequestPacket(byte[] data) | ||||
|         { | ||||
|             using (MemoryStream mem = new MemoryStream(data)) | ||||
|             { | ||||
|                 using (BinaryReader binReader = new BinaryReader(mem)) | ||||
|                 { | ||||
|                     try{ | ||||
|                         purposeId = binReader.ReadUInt32(); | ||||
|                         locationId = binReader.ReadUInt32();                        | ||||
|                         discipleId = binReader.ReadUInt32(); | ||||
|                         classjobId = binReader.ReadUInt32(); | ||||
|  | ||||
|                         unknown1 = binReader.ReadByte(); | ||||
|                         unknown2 = binReader.ReadByte(); | ||||
|                          | ||||
|                         text = Encoding.ASCII.GetString(binReader.ReadBytes(0x20)); | ||||
|                     } | ||||
|                     catch (Exception){ | ||||
|                         invalidPacket = true; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,56 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.packets.receive.recruitment | ||||
| { | ||||
|     class StartRecruitingRequestPacket | ||||
|     { | ||||
|         public bool invalidPacket = false; | ||||
|  | ||||
|         public uint purposeId; | ||||
|         public uint locationId; | ||||
|         public uint subTaskId; | ||||
|  | ||||
|         public uint[] discipleId = new uint[4]; | ||||
|         public uint[] classjobId = new uint[4]; | ||||
|         public byte[] minLvl = new byte[4]; | ||||
|         public byte[] maxLvl = new byte[4]; | ||||
|         public byte[] num = new byte[4]; | ||||
|  | ||||
|         public string comment; | ||||
|  | ||||
|         public StartRecruitingRequestPacket(byte[] data) | ||||
|         { | ||||
|             using (MemoryStream mem = new MemoryStream(data)) | ||||
|             { | ||||
|                 using (BinaryReader binReader = new BinaryReader(mem)) | ||||
|                 { | ||||
|                     try{ | ||||
|                         purposeId = binReader.ReadUInt32(); | ||||
|                         locationId = binReader.ReadUInt32(); | ||||
|                         subTaskId = binReader.ReadUInt32(); | ||||
|  | ||||
|                         for (int i = 0; i < 4; i++) | ||||
|                         { | ||||
|                             discipleId[i] = binReader.ReadUInt32(); | ||||
|                             classjobId[i] = binReader.ReadUInt32(); | ||||
|                             minLvl[i] = binReader.ReadByte(); | ||||
|                             maxLvl[i] = binReader.ReadByte(); | ||||
|                             num[i] = binReader.ReadByte(); | ||||
|                             binReader.ReadByte(); | ||||
|                         } | ||||
|  | ||||
|                         comment = Encoding.ASCII.GetString(binReader.ReadBytes(0x168)); | ||||
|                     } | ||||
|                     catch (Exception){ | ||||
|                         invalidPacket = true; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,34 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.packets.receive.supportdesk | ||||
| { | ||||
|     class FaqBodyRequestPacket | ||||
|     { | ||||
|         public bool invalidPacket = false; | ||||
|         public uint faqIndex; | ||||
|         public uint langCode; | ||||
|  | ||||
|         public FaqBodyRequestPacket(byte[] data) | ||||
|         { | ||||
|             using (MemoryStream mem = new MemoryStream(data)) | ||||
|             { | ||||
|                 using (BinaryReader binReader = new BinaryReader(mem)) | ||||
|                 { | ||||
|                     try | ||||
|                     { | ||||
|                         faqIndex = binReader.ReadUInt32(); | ||||
|                         langCode = binReader.ReadUInt32(); | ||||
|                     } | ||||
|                     catch (Exception){ | ||||
|                         invalidPacket = true; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,33 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.packets.receive.supportdesk | ||||
| { | ||||
|     class FaqListRequestPacket | ||||
|     { | ||||
|         public bool invalidPacket = false; | ||||
|         public uint langCode; | ||||
|         public uint unknown; | ||||
|  | ||||
|         public FaqListRequestPacket(byte[] data) | ||||
|         { | ||||
|             using (MemoryStream mem = new MemoryStream(data)) | ||||
|             { | ||||
|                 using (BinaryReader binReader = new BinaryReader(mem)) | ||||
|                 { | ||||
|                     try{ | ||||
|                         langCode = binReader.ReadUInt32(); | ||||
|                         unknown = binReader.ReadUInt32(); | ||||
|                     } | ||||
|                     catch (Exception){ | ||||
|                         invalidPacket = true; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,31 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.packets.receive.supportdesk | ||||
| { | ||||
|     class GMTicketIssuesRequestPacket | ||||
|     { | ||||
|         public bool invalidPacket = false; | ||||
|         public uint langCode; | ||||
|  | ||||
|         public GMTicketIssuesRequestPacket(byte[] data) | ||||
|         { | ||||
|             using (MemoryStream mem = new MemoryStream(data)) | ||||
|             { | ||||
|                 using (BinaryReader binReader = new BinaryReader(mem)) | ||||
|                 { | ||||
|                     try{ | ||||
|                         langCode = binReader.ReadUInt32(); | ||||
|                     } | ||||
|                     catch (Exception){ | ||||
|                         invalidPacket = true; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,56 @@ | ||||
| using FFXIVClassic_Lobby_Server.packets; | ||||
| using FFXIVClassic_Map_Server.dataobjects; | ||||
| 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.recruitment | ||||
| { | ||||
|     class CurrentRecruitmentDetailsPacket | ||||
|     { | ||||
|         public const ushort OPCODE = 0x01C8; | ||||
|         public const uint PACKET_SIZE = 0x218; | ||||
|  | ||||
|         public static SubPacket buildPacket(uint playerActorID, RecruitmentDetails details) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|              | ||||
|             using (MemoryStream mem = new MemoryStream(data)) | ||||
|             { | ||||
|                 using (BinaryWriter binWriter = new BinaryWriter(mem)) | ||||
|                 { | ||||
|                     if (details == null) | ||||
|                     { | ||||
|                         return new SubPacket(OPCODE, playerActorID, playerActorID, data); | ||||
|                     } | ||||
|  | ||||
|                     binWriter.Write((UInt32)details.purposeId); | ||||
|                     binWriter.Write((UInt32)details.locationId); | ||||
|                     binWriter.Write((UInt32)details.subTaskId); | ||||
|                     binWriter.Write((UInt32)details.timeSinceStart); | ||||
|  | ||||
|                     for (int i = 0; i < 4; i++) | ||||
|                     { | ||||
|                         binWriter.Write((UInt32)details.discipleId[i]); | ||||
|                         binWriter.Write((UInt32)details.classjobId[i]); | ||||
|                         binWriter.Write((byte)details.minLvl[i]); | ||||
|                         binWriter.Write((byte)details.maxLvl[i]); | ||||
|                         binWriter.Write((byte)details.num[i]); | ||||
|                         binWriter.Write((byte)0); | ||||
|                     } | ||||
|  | ||||
|                     binWriter.Write(Encoding.ASCII.GetBytes(details.comment), 0, Encoding.ASCII.GetByteCount(details.comment) >= 0x168 ? 0x168 : Encoding.ASCII.GetByteCount(details.comment)); | ||||
|                     binWriter.Seek(0x1C0, SeekOrigin.Begin); | ||||
|                     binWriter.Write(Encoding.ASCII.GetBytes(details.recruiterName), 0, Encoding.ASCII.GetByteCount(details.recruiterName) >= 0x20 ? 0x20 : Encoding.ASCII.GetByteCount(details.recruiterName)); | ||||
|                     binWriter.Seek(0x1E0, SeekOrigin.Begin); | ||||
|                     binWriter.Write((byte)1); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, playerActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,24 @@ | ||||
| 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.recruitment | ||||
| { | ||||
|     class StartRecruitingResponse | ||||
|     { | ||||
|         public const ushort OPCODE = 0x01C3; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket buildPacket(uint playerActorID, bool success) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
|             data[0] = (byte)(success ? 0x1 : 0x0); | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, playerActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user