Merge branch 'proxy_server' into develop

# Conflicts:
#	FFXIVClassic Common Class Lib/packages.config
This commit is contained in:
Filip Maj 2016-12-03 14:03:13 -05:00
commit 3864bf6d85
195 changed files with 5926 additions and 1601 deletions

View file

@ -1,362 +0,0 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using FFXIVClassic.Common;
using NLog;
using NLog.Targets;
namespace FFXIVClassic_Map_Server.packets
{
[StructLayout(LayoutKind.Sequential)]
public struct BasePacketHeader
{
public byte isAuthenticated;
public byte isCompressed;
public ushort connectionType;
public ushort packetSize;
public ushort numSubpackets;
public ulong timestamp; //Miliseconds
}
public class BasePacket
{
public const int TYPE_ZONE = 1;
public const int TYPE_CHAT = 2;
public const int BASEPACKET_SIZE = 0x10;
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
public byte[] data;
public BasePacketHeader header;
//Loads a sniffed packet from a file
public unsafe BasePacket(string path)
{
var bytes = File.ReadAllBytes(path);
if (bytes.Length < BASEPACKET_SIZE)
throw new OverflowException("Packet Error: Packet was too small");
fixed (byte* pdata = &bytes[0])
{
header = (BasePacketHeader) Marshal.PtrToStructure(new IntPtr(pdata), typeof(BasePacketHeader));
}
if (bytes.Length < header.packetSize)
throw new OverflowException("Packet Error: Packet size didn't equal given size");
int packetSize = header.packetSize;
if (packetSize - BASEPACKET_SIZE != 0)
{
data = new byte[packetSize - BASEPACKET_SIZE];
Array.Copy(bytes, BASEPACKET_SIZE, data, 0, packetSize - BASEPACKET_SIZE);
}
else
data = new byte[0];
}
//Loads a sniffed packet from a byte array
public unsafe BasePacket(byte[] bytes)
{
if (bytes.Length < BASEPACKET_SIZE)
throw new OverflowException("Packet Error: Packet was too small");
fixed (byte* pdata = &bytes[0])
{
header = (BasePacketHeader) Marshal.PtrToStructure(new IntPtr(pdata), typeof(BasePacketHeader));
}
if (bytes.Length < header.packetSize)
throw new OverflowException("Packet Error: Packet size didn't equal given size");
int packetSize = header.packetSize;
data = new byte[packetSize - BASEPACKET_SIZE];
Array.Copy(bytes, BASEPACKET_SIZE, data, 0, packetSize - BASEPACKET_SIZE);
}
public unsafe BasePacket(byte[] bytes, ref int offset)
{
if (bytes.Length < offset + BASEPACKET_SIZE)
throw new OverflowException("Packet Error: Packet was too small");
fixed (byte* pdata = &bytes[offset])
{
header = (BasePacketHeader) Marshal.PtrToStructure(new IntPtr(pdata), typeof(BasePacketHeader));
}
int packetSize = header.packetSize;
if (bytes.Length < offset + header.packetSize)
throw new OverflowException("Packet Error: Packet size didn't equal given size");
data = new byte[packetSize - BASEPACKET_SIZE];
Array.Copy(bytes, offset + BASEPACKET_SIZE, data, 0, packetSize - BASEPACKET_SIZE);
offset += packetSize;
}
public BasePacket(BasePacketHeader header, byte[] data)
{
this.header = header;
this.data = data;
}
public List<SubPacket> GetSubpackets()
{
var subpackets = new List<SubPacket>(header.numSubpackets);
var offset = 0;
while (offset < data.Length)
subpackets.Add(new SubPacket(data, ref offset));
return subpackets;
}
public static unsafe BasePacketHeader GetHeader(byte[] bytes)
{
BasePacketHeader header;
if (bytes.Length < BASEPACKET_SIZE)
throw new OverflowException("Packet Error: Packet was too small");
fixed (byte* pdata = &bytes[0])
{
header = (BasePacketHeader) Marshal.PtrToStructure(new IntPtr(pdata), typeof(BasePacketHeader));
}
return header;
}
public byte[] GetHeaderBytes()
{
var size = Marshal.SizeOf(header);
var arr = new byte[size];
var ptr = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(header, ptr, true);
Marshal.Copy(ptr, arr, 0, size);
Marshal.FreeHGlobal(ptr);
return arr;
}
public byte[] GetPacketBytes()
{
var outBytes = new byte[header.packetSize];
Array.Copy(GetHeaderBytes(), 0, outBytes, 0, BASEPACKET_SIZE);
Array.Copy(data, 0, outBytes, BASEPACKET_SIZE, data.Length);
return outBytes;
}
//Replaces all instances of the sniffed actorID with the given one
public void ReplaceActorID(uint actorID)
{
using (var mem = new MemoryStream(data))
{
using (var binWriter = new BinaryWriter(mem))
{
using (var binreader = new BinaryReader(mem))
{
while (binreader.BaseStream.Position + 4 < data.Length)
{
var read = binreader.ReadUInt32();
if (read == 0x029B2941 || read == 0x02977DC7 || read == 0x0297D2C8 || read == 0x0230d573 ||
read == 0x23317df || read == 0x23344a3 || read == 0x1730bdb || read == 0x6c)
//Original ID
{
binWriter.BaseStream.Seek(binreader.BaseStream.Position - 0x4, SeekOrigin.Begin);
binWriter.Write(actorID);
}
}
}
}
}
}
//Replaces all instances of the sniffed actorID with the given one
public void ReplaceActorID(uint fromActorID, uint actorID)
{
using (var mem = new MemoryStream(data))
{
using (var binWriter = new BinaryWriter(mem))
{
using (var binreader = new BinaryReader(mem))
{
while (binreader.BaseStream.Position + 4 < data.Length)
{
var read = binreader.ReadUInt32();
if (read == fromActorID) //Original ID
{
binWriter.BaseStream.Seek(binreader.BaseStream.Position - 0x4, SeekOrigin.Begin);
binWriter.Write(actorID);
}
}
}
}
}
}
public void DebugPrintPacket()
{
#if DEBUG
logger.ColorDebug(
string.Format("IsAuth:{0} IsEncrypted:{1}, Size:0x{2:X}, NumSubpackets:{3}{4}{5}",
header.isAuthenticated, header.isCompressed, header.packetSize, header.numSubpackets,
Environment.NewLine, Utils.ByteArrayToHex(GetHeaderBytes())), ConsoleOutputColor.DarkYellow);
foreach (var sub in GetSubpackets())
{
sub.DebugPrintSubPacket();
}
#endif
}
#region Utility Functions
public static BasePacket CreatePacket(List<SubPacket> subpackets, bool isAuthed, bool isCompressed)
{
//Create Header
var header = new BasePacketHeader();
byte[] data = null;
header.isAuthenticated = isAuthed ? (byte) 1 : (byte) 0;
header.isCompressed = isCompressed ? (byte) 1 : (byte) 0;
header.numSubpackets = (ushort) subpackets.Count;
header.packetSize = BASEPACKET_SIZE;
header.timestamp = Utils.MilisUnixTimeStampUTC();
//Get packet size
foreach (var subpacket in subpackets)
header.packetSize += subpacket.header.subpacketSize;
data = new byte[header.packetSize - 0x10];
//Add Subpackets
var offset = 0;
foreach (var subpacket in subpackets)
{
var subpacketData = subpacket.GetBytes();
Array.Copy(subpacketData, 0, data, offset, subpacketData.Length);
offset += (ushort) subpacketData.Length;
}
Debug.Assert(data != null && offset == data.Length && header.packetSize == 0x10 + offset);
var packet = new BasePacket(header, data);
return packet;
}
public static BasePacket CreatePacket(SubPacket subpacket, bool isAuthed, bool isCompressed)
{
//Create Header
var header = new BasePacketHeader();
byte[] data = null;
header.isAuthenticated = isAuthed ? (byte) 1 : (byte) 0;
header.isCompressed = isCompressed ? (byte) 1 : (byte) 0;
header.numSubpackets = 1;
header.packetSize = BASEPACKET_SIZE;
header.timestamp = Utils.MilisUnixTimeStampUTC();
//Get packet size
header.packetSize += subpacket.header.subpacketSize;
data = new byte[header.packetSize - 0x10];
//Add Subpackets
var subpacketData = subpacket.GetBytes();
Array.Copy(subpacketData, 0, data, 0, subpacketData.Length);
Debug.Assert(data != null);
var packet = new BasePacket(header, data);
return packet;
}
public static BasePacket CreatePacket(byte[] data, bool isAuthed, bool isCompressed)
{
Debug.Assert(data != null);
//Create Header
var header = new BasePacketHeader();
header.isAuthenticated = isAuthed ? (byte) 1 : (byte) 0;
header.isCompressed = isCompressed ? (byte) 1 : (byte) 0;
header.numSubpackets = 1;
header.packetSize = BASEPACKET_SIZE;
header.timestamp = Utils.MilisUnixTimeStampUTC();
//Get packet size
header.packetSize += (ushort) data.Length;
var packet = new BasePacket(header, data);
return packet;
}
public static unsafe void EncryptPacket(Blowfish blowfish, BasePacket packet)
{
var data = packet.data;
int size = packet.header.packetSize;
var offset = 0;
while (offset < data.Length)
{
if (data.Length < offset + SubPacket.SUBPACKET_SIZE)
throw new OverflowException("Packet Error: Subpacket was too small");
SubPacketHeader header;
fixed (byte* pdata = &data[offset])
{
header = (SubPacketHeader) Marshal.PtrToStructure(new IntPtr(pdata), typeof(SubPacketHeader));
}
if (data.Length < offset + header.subpacketSize)
throw new OverflowException("Packet Error: Subpacket size didn't equal subpacket data");
blowfish.Encipher(data, offset + 0x10, header.subpacketSize - 0x10);
offset += header.subpacketSize;
}
}
public static unsafe void DecryptPacket(Blowfish blowfish, ref BasePacket packet)
{
var data = packet.data;
int size = packet.header.packetSize;
var offset = 0;
while (offset < data.Length)
{
if (data.Length < offset + SubPacket.SUBPACKET_SIZE)
throw new OverflowException("Packet Error: Subpacket was too small");
SubPacketHeader header;
fixed (byte* pdata = &data[offset])
{
header = (SubPacketHeader) Marshal.PtrToStructure(new IntPtr(pdata), typeof(SubPacketHeader));
}
if (data.Length < offset + header.subpacketSize)
throw new OverflowException("Packet Error: Subpacket size didn't equal subpacket data");
blowfish.Decipher(data, offset + 0x10, header.subpacketSize - 0x10);
offset += header.subpacketSize;
}
}
#endregion
}
public static class LoggerExtensions
{
public static void ColorDebug(this Logger logger, string message, ConsoleOutputColor color)
{
var logEvent = new LogEventInfo(LogLevel.Debug, logger.Name, message);
logEvent.Properties["color"] = (int) color;
logger.Log(logEvent);
}
}
}

View file

@ -1,163 +0,0 @@
using System;
using System.Runtime.InteropServices;
using FFXIVClassic.Common;
using NLog;
using NLog.Targets;
namespace FFXIVClassic_Map_Server.packets
{
[StructLayout(LayoutKind.Sequential)]
public struct SubPacketHeader
{
public ushort subpacketSize;
public ushort type;
public uint sourceId;
public uint targetId;
public uint unknown1;
}
[StructLayout(LayoutKind.Sequential)]
public struct GameMessageHeader
{
public ushort unknown4; //Always 0x14
public ushort opcode;
public uint unknown5;
public uint timestamp;
public uint unknown6;
}
public class SubPacket
{
public const int SUBPACKET_SIZE = 0x10;
public const int GAMEMESSAGE_SIZE = 0x10;
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
public byte[] data;
public GameMessageHeader gameMessage;
public SubPacketHeader header;
public unsafe SubPacket(byte[] bytes, ref int offset)
{
if (bytes.Length < offset + SUBPACKET_SIZE)
throw new OverflowException("Packet Error: Subpacket was too small");
fixed (byte* pdata = &bytes[offset])
{
header = (SubPacketHeader) Marshal.PtrToStructure(new IntPtr(pdata), typeof(SubPacketHeader));
}
if (header.type == 0x3)
{
fixed (byte* pdata = &bytes[offset + SUBPACKET_SIZE])
{
gameMessage =
(GameMessageHeader) Marshal.PtrToStructure(new IntPtr(pdata), typeof(GameMessageHeader));
}
}
if (bytes.Length < offset + header.subpacketSize)
throw new OverflowException("Packet Error: Subpacket size didn't equal subpacket data");
if (header.type == 0x3)
{
data = new byte[header.subpacketSize - SUBPACKET_SIZE - GAMEMESSAGE_SIZE];
Array.Copy(bytes, offset + SUBPACKET_SIZE + GAMEMESSAGE_SIZE, data, 0, data.Length);
}
else
{
data = new byte[header.subpacketSize - SUBPACKET_SIZE];
Array.Copy(bytes, offset + SUBPACKET_SIZE, data, 0, data.Length);
}
offset += header.subpacketSize;
}
public SubPacket(ushort opcode, uint sourceId, uint targetId, byte[] data)
{
header = new SubPacketHeader();
gameMessage = new GameMessageHeader();
gameMessage.opcode = opcode;
header.sourceId = sourceId;
header.targetId = targetId;
gameMessage.timestamp = Utils.UnixTimeStampUTC();
header.type = 0x03;
header.unknown1 = 0x00;
gameMessage.unknown4 = 0x14;
gameMessage.unknown5 = 0x00;
gameMessage.unknown6 = 0x00;
this.data = data;
header.subpacketSize = (ushort) (SUBPACKET_SIZE + GAMEMESSAGE_SIZE + data.Length);
}
public SubPacket(SubPacket original, uint newTargetId)
{
header = new SubPacketHeader();
gameMessage = original.gameMessage;
header.subpacketSize = original.header.subpacketSize;
header.type = original.header.type;
header.sourceId = original.header.sourceId;
header.targetId = newTargetId;
data = original.data;
}
public byte[] GetHeaderBytes()
{
var size = Marshal.SizeOf(header);
var arr = new byte[size];
var ptr = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(header, ptr, true);
Marshal.Copy(ptr, arr, 0, size);
Marshal.FreeHGlobal(ptr);
return arr;
}
public byte[] GetGameMessageBytes()
{
var size = Marshal.SizeOf(gameMessage);
var arr = new byte[size];
var ptr = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(gameMessage, ptr, true);
Marshal.Copy(ptr, arr, 0, size);
Marshal.FreeHGlobal(ptr);
return arr;
}
public byte[] GetBytes()
{
var outBytes = new byte[header.subpacketSize];
Array.Copy(GetHeaderBytes(), 0, outBytes, 0, SUBPACKET_SIZE);
if (header.type == 0x3)
Array.Copy(GetGameMessageBytes(), 0, outBytes, SUBPACKET_SIZE, GAMEMESSAGE_SIZE);
Array.Copy(data, 0, outBytes, SUBPACKET_SIZE + (header.type == 0x3 ? GAMEMESSAGE_SIZE : 0), data.Length);
return outBytes;
}
public void DebugPrintSubPacket()
{
#if DEBUG
logger.ColorDebug(
string.Format("Size:0x{0:X} Opcode:0x{1:X}{2}{3}", header.subpacketSize, gameMessage.opcode,
Environment.NewLine,
Utils.ByteArrayToHex(GetHeaderBytes())), ConsoleOutputColor.DarkRed);
if (header.type == 0x03)
{
logger.ColorDebug(Utils.ByteArrayToHex(GetGameMessageBytes(), SUBPACKET_SIZE),
ConsoleOutputColor.DarkRed);
logger.ColorDebug(Utils.ByteArrayToHex(data, SUBPACKET_SIZE + GAMEMESSAGE_SIZE),
ConsoleOutputColor.DarkMagenta);
}
#endif
}
}
}

View file

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.packets.WorldPackets.Receive
{
class ErrorPacket
{
public uint errorCode;
public bool invalidPacket = false;
public ErrorPacket(byte[] data)
{
using (MemoryStream mem = new MemoryStream(data))
{
using (BinaryReader binReader = new BinaryReader(mem))
{
try
{
errorCode = binReader.ReadUInt32();
}
catch (Exception)
{
invalidPacket = true;
}
}
}
}
}
}

View file

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.packets.WorldPackets.Receive
{
class SessionBeginPacket
{
public bool invalidPacket = false;
public SessionBeginPacket(byte[] data)
{
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.packets.WorldPackets.Receive
{
class SessionEndPacket
{
public uint destinationZoneId;
public ushort destinationSpawnType;
public float destinationX;
public float destinationY;
public float destinationZ;
public float destinationRot;
public bool invalidPacket = false;
public SessionEndPacket(byte[] data)
{
using (MemoryStream mem = new MemoryStream(data))
{
using (BinaryReader binReader = new BinaryReader(mem))
{
try
{
destinationZoneId = binReader.ReadUInt32();
destinationSpawnType = binReader.ReadUInt16();
destinationX = binReader.ReadSingle();
destinationY = binReader.ReadSingle();
destinationZ = binReader.ReadSingle();
destinationRot = binReader.ReadSingle();
}
catch (Exception)
{
invalidPacket = true;
}
}
}
}
}
}

View file

@ -0,0 +1,27 @@
using FFXIVClassic.Common;
using FFXIVClassic_Map_Server.dataobjects;
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.WorldPackets.Send
{
class SessionBeginConfirmPacket
{
public const ushort OPCODE = 0x1000;
public const uint PACKET_SIZE = 0x28;
public static SubPacket BuildPacket(Session session, ushort errorCode = 0)
{
byte[] data = new byte[PACKET_SIZE - 0x20];
using (MemoryStream mem = new MemoryStream(data))
{
using (BinaryWriter binWriter = new BinaryWriter(mem))
{
binWriter.Write((UInt32)session.id);
binWriter.Write((UInt16)errorCode);
}
}
return new SubPacket(true, OPCODE, 0, session.id, data);
}
}
}

View file

@ -0,0 +1,28 @@
using FFXIVClassic.Common;
using FFXIVClassic_Map_Server.dataobjects;
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.WorldPackets.Send
{
class SessionEndConfirmPacket
{
public const ushort OPCODE = 0x1001;
public const uint PACKET_SIZE = 0x30;
public static SubPacket BuildPacket(Session session, uint destinationZone, ushort errorCode = 0)
{
byte[] data = new byte[PACKET_SIZE - 0x20];
using (MemoryStream mem = new MemoryStream(data))
{
using (BinaryWriter binWriter = new BinaryWriter(mem))
{
binWriter.Write((UInt32)session.id);
binWriter.Write((UInt16)errorCode);
binWriter.Write((UInt32)destinationZone);
}
}
return new SubPacket(true, OPCODE, 0, session.id, data);
}
}
}

View file

@ -0,0 +1,37 @@
using FFXIVClassic.Common;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.packets.WorldPackets.Send
{
class WorldRequestZoneChangePacket
{
public const ushort OPCODE = 0x1002;
public const uint PACKET_SIZE = 0x048;
public static SubPacket BuildPacket(uint sessionId, uint destinationZoneId, byte spawnType, float spawnX, float spawnY, float spawnZ, float spawnRotation)
{
byte[] data = new byte[PACKET_SIZE - 0x20];
using (MemoryStream mem = new MemoryStream(data))
{
using (BinaryWriter binWriter = new BinaryWriter(mem))
{
binWriter.Write((UInt32)sessionId);
binWriter.Write((UInt32)destinationZoneId);
binWriter.Write((UInt16)spawnType);
binWriter.Write((Single)spawnX);
binWriter.Write((Single)spawnY);
binWriter.Write((Single)spawnZ);
binWriter.Write((Single)spawnRotation);
}
}
return new SubPacket(OPCODE, sessionId, sessionId, data);
}
}
}

View file

@ -1,7 +1,9 @@
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class ActorDoEmotePacket
{

View file

@ -4,7 +4,9 @@ using System.Collections.Generic;
using System.IO;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class ActorInstantiatePacket
{

View file

@ -1,7 +1,9 @@
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorQuestGraphicPacket
{

View file

@ -1,4 +1,8 @@
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class AddActorPacket
{

View file

@ -1,6 +1,9 @@
using System.IO;
using FFXIVClassic.Common;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class BattleAction1Packet
{

View file

@ -1,4 +1,8 @@
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class DeleteAllActorsPacket
{

View file

@ -1,7 +1,9 @@
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class MoveActorToPositionPacket
{

View file

@ -1,7 +1,9 @@
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class RemoveActorPacket
{

View file

@ -1,6 +1,8 @@
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorAppearancePacket
{

View file

@ -1,7 +1,9 @@
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorIconPacket
{

View file

@ -1,7 +1,9 @@
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorIdleAnimationPacket
{

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorIsZoningPacket
{

View file

@ -2,7 +2,9 @@
using System.IO;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorNamePacket
{

View file

@ -1,7 +1,9 @@
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorPositionPacket
{
@ -22,7 +24,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor
public const float INNPOS_Z = 165.050003f;
public const float INNPOS_ROT = -1.530000f;
public static SubPacket BuildPacket(uint sourceActorID, uint targetActorID, uint actorId, float x, float y, float z, float rotation, uint spawnType, bool isZoningPlayer)
public static SubPacket BuildPacket(uint sourceActorID, uint targetActorID, uint actorId, float x, float y, float z, float rotation, ushort spawnType, bool isZoningPlayer)
{
byte[] data = new byte[PACKET_SIZE-0x20];

View file

@ -5,7 +5,9 @@ using System.Linq;
using System.Reflection;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorPropetyPacket
{

View file

@ -1,7 +1,8 @@
using System;
using FFXIVClassic.Common;
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorSpeedPacket
{

View file

@ -1,6 +1,9 @@
using System;
using FFXIVClassic.Common;
using System;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorStatePacket
{

View file

@ -1,7 +1,10 @@
using System;
using FFXIVClassic.Common;
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorStatusAllPacket
{

View file

@ -1,7 +1,10 @@
using System;
using FFXIVClassic.Common;
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorStatusPacket
{

View file

@ -1,6 +1,8 @@
using System;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetActorTargetAnimatedPacket
{

View file

@ -1,4 +1,5 @@
using System;
using FFXIVClassic.Common;
using System;
namespace FFXIVClassic_Map_Server.packets.send.actor
{

View file

@ -1,8 +1,10 @@
using System;
using FFXIVClassic.Common;
using System;
using System.IO;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class _0x132Packet
{

View file

@ -1,6 +1,8 @@
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class _0xFPacket
{

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send.actor.battle
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.battle
{
class BattleAction
{

View file

@ -1,7 +1,10 @@
using System;
using FFXIVClassic.Common;
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor.battle
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.battle
{
class BattleActionX00Packet
{

View file

@ -1,7 +1,10 @@
using System;
using FFXIVClassic.Common;
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor.battle
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.battle
{
class BattleActionX01Packet
{

View file

@ -1,7 +1,10 @@
using System;
using FFXIVClassic.Common;
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor.battle
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.battle
{
class BattleActionX10Packet
{

View file

@ -1,7 +1,10 @@
using System;
using FFXIVClassic.Common;
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor.battle
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.battle
{
class BattleActionX18Packet
{

View file

@ -1,9 +1,12 @@
using FFXIVClassic_Map_Server.actors;
using FFXIVClassic.Common;
using FFXIVClassic_Map_Server.actors;
using System;
using System.IO;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
{
class SetEmoteEventCondition
{

View file

@ -2,7 +2,9 @@
using System.IO;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
{
class SetEventStatus
{

View file

@ -3,7 +3,9 @@ using System;
using System.IO;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
{
class SetNoticeEventCondition
{

View file

@ -3,7 +3,9 @@ using System;
using System.IO;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
{
class SetPushEventConditionWithCircle
{

View file

@ -3,7 +3,9 @@ using System;
using System.IO;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
{
class SetPushEventConditionWithFan
{

View file

@ -3,7 +3,9 @@ using System;
using System.IO;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
{
class SetPushEventConditionWithTriggerBox
{

View file

@ -3,7 +3,9 @@ using System;
using System.IO;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.events
{
class SetTalkEventCondition
{

View file

@ -1,7 +1,9 @@
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class EquipmentListX01Packet
{

View file

@ -3,7 +3,9 @@ using System;
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class EquipmentListX08Packet
{

View file

@ -3,7 +3,9 @@ using System;
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class EquipmentListX16Packet
{

View file

@ -3,7 +3,9 @@ using System;
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class EquipmentListX32Packet
{

View file

@ -3,7 +3,9 @@ using System;
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class EquipmentListX64Packet
{

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryBeginChangePacket
{

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryEndChangePacket
{

View file

@ -2,7 +2,9 @@
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryItemEndPacket
{

View file

@ -2,7 +2,9 @@
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryItemPacket
{

View file

@ -1,7 +1,9 @@
using FFXIVClassic_Map_Server.dataobjects;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryListX01Packet
{

View file

@ -3,7 +3,9 @@ using System;
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryListX08Packet
{

View file

@ -2,7 +2,9 @@
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryListX16Packet
{

View file

@ -2,7 +2,9 @@
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryListX32Packet
{

View file

@ -2,7 +2,9 @@
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryListX64Packet
{

View file

@ -1,7 +1,9 @@
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryRemoveX01Packet
{

View file

@ -1,8 +1,11 @@
using System;
using FFXIVClassic.Common;
using System;
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryRemoveX08Packet
{

View file

@ -2,7 +2,9 @@
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryRemoveX16Packet
{

View file

@ -2,7 +2,9 @@
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryRemoveX32Packet
{

View file

@ -2,7 +2,9 @@
using System.Collections.Generic;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventoryRemoveX64Packet
{

View file

@ -1,7 +1,9 @@
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventorySetBeginPacket
{

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
{
class InventorySetEndPacket
{

View file

@ -4,6 +4,8 @@ using System.Collections.Generic;
using System.IO;
using System.Text;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send
{
class GameMessagePacket

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send
{
class LogoutPacket
{

View file

@ -1,4 +1,5 @@
using System;
using FFXIVClassic.Common;
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.receive

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send
{
class QuitPacket
{

View file

@ -2,6 +2,8 @@
using System.IO;
using System.Text;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send
{
class SendMessagePacket

View file

@ -1,5 +1,7 @@
using System.IO;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send
{
class SetMapPacket

View file

@ -1,5 +1,7 @@
using System;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send
{
class SetMusicPacket

View file

@ -1,5 +1,7 @@
using System;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send
{
class SetWeatherPacket

View file

@ -1,6 +1,8 @@
using System;
using System.IO;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send
{
class _0x02Packet

View file

@ -1,6 +1,8 @@
using System;
using System.IO;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send
{
class _0x10Packet

View file

@ -1,5 +1,7 @@
using System;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send
{
class _0xE2Packet

View file

@ -2,6 +2,8 @@
using System.IO;
using System.Text;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.events
{
class EndEventPacket

View file

@ -4,6 +4,8 @@ using System.Collections.Generic;
using System.IO;
using System.Text;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.events
{
class KickEventPacket

View file

@ -4,6 +4,8 @@ using System.Collections.Generic;
using System.IO;
using System.Text;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.events
{
class RunEventFunctionPacket

View file

@ -1,6 +1,8 @@
using System;
using System.IO;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.list
{
class ListBeginPacket

View file

@ -1,6 +1,8 @@
using System;
using System.IO;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.list
{
class ListEndPacket

View file

@ -3,6 +3,8 @@ using System.Collections.Generic;
using System.IO;
using System.Text;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.list
{
class ListEntriesEndPacket

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send.list
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.list
{
class ListEntry
{

View file

@ -2,6 +2,8 @@
using System.IO;
using System.Text;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.list
{
class ListStartPacket

View file

@ -1,5 +1,7 @@
using System.Collections.Generic;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.list
{
class ListUtils

View file

@ -5,7 +5,9 @@ using System.Linq;
using System.Reflection;
using System.Text;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetListPropetyPacket
{

View file

@ -1,5 +1,7 @@
using System.IO;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.login
{
class _0x2Packet

View file

@ -1,6 +1,9 @@
using System;
using FFXIVClassic.Common;
using System;
using System.IO;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.login
{
class Login0x7ResponsePacket

View file

@ -1,5 +1,7 @@
using System;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class AchievementEarnedPacket

View file

@ -2,6 +2,8 @@
using System.Collections.Generic;
using System.IO;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class InfoRequestResponsePacket

View file

@ -1,6 +1,8 @@
using System;
using System.IO;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class SendAchievementRatePacket

View file

@ -1,5 +1,7 @@
using System;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class SetAchievementPointsPacket

View file

@ -1,5 +1,7 @@
using System.Text;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class SetChocoboNamePacket

View file

@ -1,6 +1,8 @@
using FFXIVClassic.Common;
using System.IO;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class SetCompletedAchievementsPacket

View file

@ -1,5 +1,7 @@
using System;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class SetCurrentJobPacket

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send.player
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class SetCurrentMountChocoboPacket
{

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send.player
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class SetCurrentMountGoobbuePacket
{

View file

@ -3,6 +3,8 @@ using System;
using System.IO;
using System.Text;
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class SetCutsceneBookPacket

View file

@ -1,7 +1,9 @@
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.actor
{
class SetGrandCompanyPacket
{

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send.player
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class SetHasChocoboPacket
{

View file

@ -1,4 +1,6 @@
namespace FFXIVClassic_Map_Server.packets.send.player
using FFXIVClassic.Common;
namespace FFXIVClassic_Map_Server.packets.send.player
{
class SetHasGoobbuePacket
{

Some files were not shown because too many files have changed in this diff Show more