Ошибка десериализации Protocol Buffer (Steamworks, CS:GO)

379
07 февраля 2017, 18:18

Приветствую.

Имеется вот такой код:

[ProtoContract(Name = "CMsgClientMMSLobbyChatMsg")]
public class CMsgClientMMSLobbyChatMsg : IExtensible
{
    public CMsgClientMMSLobbyChatMsg();
    [DefaultValue(0)]
    [ProtoMember(1, IsRequired = false, Name = "app_id", DataFormat = DataFormat.TwosComplement)]
    public uint app_id { get; set; }
    [DefaultValue(null)]
    [ProtoMember(4, IsRequired = false, Name = "lobby_message", DataFormat = DataFormat.Default)]
    public byte[] lobby_message { get; set; }
    [DefaultValue(0)]
    [ProtoMember(2, IsRequired = false, Name = "steam_id_lobby", DataFormat = DataFormat.FixedSize)]
    public ulong steam_id_lobby { get; set; }
    [DefaultValue(0)]
    [ProtoMember(3, IsRequired = false, Name = "steam_id_sender", DataFormat = DataFormat.FixedSize)]
    public ulong steam_id_sender { get; set; }
}

Вот так я пытаюсь получить информацию о сообщении:

private void LobbyChatMessage(LobbyChatMsg_t r)
{
    var pvData = new byte[4096];
    CSteamID sender;
    EChatEntryType eType;
    SteamMatchmaking.GetLobbyChatEntry(
        (CSteamID) r.m_ulSteamIDLobby,
        (int) r.m_iChatID,
        out sender,
        pvData,
        4096,
        out eType);
    CMsgClientMMSLobbyChatMsg msg;
    using (var stream = new MemoryStream(pvData, 0, 4096))
    {
        msg = ProtoBuf.Serializer.Deserialize<CMsgClientMMSLobbyChatMsg>(stream);
    }
    log($"Got lobby message. \nMessage: {msg.lobby_message}\nSender: {msg.steam_id_sender}");
}

Вот такую ошибку получаю каждый раз:

Вызвано исключение: "ProtoBuf.ProtoException" в protobuf-net.dll
Invalid field in source data: 0

Массив pvData не пустой, проверял. Содержит в себе сообщение. Где ошибка?

READ ALSO
Проверка активности

Проверка активности

Пишу программу для учета рабочего времени

357
Имеет ли смысл использовать голый ASP.NET? [требует правки]

Имеет ли смысл использовать голый ASP.NET? [требует правки]

Имеет ли смысл использовать голый ASPNET? Есть ли в этом какая-нибудь необходимость когда-нибудь?

346
Почему при передаче параметра в массиве POST, условие не срабатывает?

Почему при передаче параметра в массиве POST, условие не срабатывает?

Ничего не отображается, я уже облегчал, убрал, то что идёт после && и всё рано не работает, почему у меня постоянно не работают такие простые...

409