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) { }
/// <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)) { }