mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-07-25 03:48:23 +02:00
Added receiving packets for GM stuff. Started implementing the recruitment packets.
This commit is contained in:
parent
de353c9909
commit
4eda13501c
11 changed files with 396 additions and 9 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue