-
Notifications
You must be signed in to change notification settings - Fork 78
Header not parsing correctly #91
Comments
Found some other matches from the same tournament with the same problem, so it's not just an isolated incident. |
But you can play demos in cs go ? |
Yes, i can play the demo in csgo and everything looks normal on demoui. Ticks and time duration is displayed properly. |
And for this demo in particular how much time and ticks? |
For the Dust2 demo: I did notice something else though that might be helpful. Right after selecting the demo there's a splash screen. Other demos seem to display the total ticks and time immediately, but this demo doesn't display them properly until the demo is fully loaded. |
Has anybody made any progress with this problem? I've seen it now myself "in the wild", and it's pretty annoying. |
I did not had time to search about it but if they return 0 for ticks, duration, etc these demos seems to be corrupted. In this case: |
https://github.com/SteamRE/SteamKit/blob/master/Resources/Protobufs/csgo/netmessages.proto#L245 It's open for grabs now, whoever wants to parse the Server-Message is open to do so :) |
The bitstream is still a bit magic to me, but I was under the impression these types of messages don't get parsed? |
@econoraptor We do parse netmessages for several important purposes. We used to use protobuf-net for them, but this turned out to be quite slow - so as of #26 some additional boilerplate code is unfortunately required. I'd recommend using e.g. NETTick (proto - impl) as a template since the general concept is very simple and repetitive. As you can see, bitstream interaction is limited to just |
@econoraptor That being said, there's obviously the alternative of just using the old Whatever you choose, we would be happy about any contribution! |
Ok, I'll take a look and see if I can figure out how to implement it. |
Right at the start when I try to read the key I'm getting a NotSupportedException from this condition in ReadProtobufVarIntStub: if ((count == 9) ? (b != 1) : ((b & 0x7F) != 0x7F)) . The exception is raised on 'var desc = bitstream.ReadProtobufVarInt();' |
Alright, I found two potential issues:
|
Changing "(uint)bitstream.ReadProtobufVarInt();" to "bitstream.ReadInt(32);" as you suggested seems to have gotten things running. In the language guide (https://developers.google.com/protocol-buffers/docs/proto) it shows for c++ that fixed32 maps to uint32, so I figure it's probably the best bet for C#. I don't think I'll be messing around with trying to implement 64 bits, so I'll probably just comment the field out. It doesn't seem all that important anyways. I still need to tie in tick_interval to the parser, but it's bedtime for me, so I'll finish up tomorrow. |
…Time to use ServerInfo.TickInterval
I'm encountering a bug in this GOTV demo http://www.hltv.org/match/2300904-dollarhouse-rize-nordic-masters-season-2-finals
Header.PlaybackFrames, Header.PlaybackTime, Header.PlaybackTicks, Header.SignonLength are all 0. I tried the dust2 and mirage matches and both had this bug. I also tried another matchup from the same tournament, but didn't encounter the problem, so I don't know how widespread it is.
The text was updated successfully, but these errors were encountered: