public async Task WritePacketAsync(GameNetworkOperationCode opCode, [NotNull] IUnknownPayloadType payload, PacketType packetType)
        {
            if (payload == null)
            {
                throw new ArgumentNullException(nameof(payload));
            }

            byte[] opCodeBytes = ((short)opCode).Reinterpret();

            //We have special support for 0x60 and 0x62
            string fileName = opCode == GameNetworkOperationCode.GAME_COMMAND0_TYPE ? $"0x{((int)opCode):X}_0x{(int)(payload.UnknownBytes[4]):X2}_{Guid.NewGuid()}.packet" : $"0x{((int)opCode):X}_{Guid.NewGuid()}.packet";

            using (FileStream fs = File.Open(Path.Combine(RootPath, packetType == PacketType.Client ? "Client" : "Server", fileName), FileMode.CreateNew))
            {
                await fs.WriteAsync(opCodeBytes, 0, opCodeBytes.Length)
                .ConfigureAwait(false);

                await fs.WriteAsync(payload.UnknownBytes, 0, payload.UnknownBytes.Length)
                .ConfigureAwait(false);
            }
        }
 public GameServerPacketPayloadAttribute(GameNetworkOperationCode opCode)
     : base((int)opCode)
 {
 }
Example #3
0
 /// <summary>
 /// Creates a new unknown payload with the provided <see cref="operationCode"/>.
 /// and the binary buffer <see cref="bytes"/>
 /// </summary>
 /// <param name="operationCode"></param>
 /// <param name="bytes"></param>
 public UnknownClientGamePayload(GameNetworkOperationCode operationCode, byte[] bytes)
     : base(operationCode)
 {
     UnknownBytes = bytes;
 }
 public GameClientPacketPayloadAttribute(GameNetworkOperationCode opCode)
     : base((int)opCode, typeof(PSOBBGamePacketPayloadClient))
 {
 }