-
Notifications
You must be signed in to change notification settings - Fork 494
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Help] key_ready_up field for Dota 2 Ready Up status #297
Comments
It's probably a |
Not quite. I created 2 lobbies and readied up for both of them in quick succession and results are the following: Interestingly if we divide ready up key with lobby ID it yields 695 with little difference in fractions for both cases. However If i checked some older logs then division yielded something in 700 range so there does not seem to be huge correlation with lobby ID. Has anyone managed to achieve it for their project? Don't think Dota devs are going to tell me how to calculate it. |
Well then you'll have to RE how that key is generated. |
This isn't really a s SteamKit issue, but specific to the Dota client. Regardless, the formula is |
I was searching this formula for too long and you give it. But its not working. Can you test it ? Because I tested it and it gives me wrong ready_up_key. I have used netanalyzer.
ready_up key from netanalyzer 17725191030481842186, but formula outputs -793610637265637366. What is wrong ? |
You're doing it wrong.
…Sent from my iPhone
On Feb 18, 2017, at 5:07 PM, elpaxdota ***@***.***> wrote:
I was searching this formula for too long and you give it. But its not working. Can you test it ? Because I tested it and it gives me wrong ready_up_key. I have used netanalyzer.
var lobby = 24929512591156764;
var steam = 76561198134061545;
var ready = lobby ^ ~(steam | (steam << 32));
Console.WriteLine(ready);
ready_up key from netanalyzer 17725191030481842186, but formula outputs -793610637265637366. What is wrong ?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub, or mute the thread.
|
@elpaxdota you need to use ulong data types explicitly and not var keyword, otherwise compiler will infer some variables to be signed longs and not to unsigned longs such as lobbyId. @psychonic proposed formula seems to be correct but I cant get it working in C#. There seems to be always 1 bit that is flipped in my results. Examples: 1110101010011011010000101010011110010110000101111010000111111010 <- Computed result |
It's possible that the formula could have changed, but it's really odd that it would be off by one seemingly-random bit. |
@psychonic May I ask how did you come by the formula in the first place? Could it be rechecked? And the bit is not that random either, in my example, first it is the 8th bit and in the second example 32th bit. I guess if I did more checks the bit that would be flipped would always be the last bit in the byte. This is the code I'm testing with.
|
You are doing something wrong. Just re-checked it and its still the same. |
@rossengeorgiev do happen to see an error in my code? I even tried in C++ to rule out the possibility of data type differences. Result is very dependent on the actual data types being used, but I have tried all kinds of combinations between ulong, long and int. This is the C++ code that yields the same result:
|
It looks like your userId there is a CSteamID, not an AccountId (which would be just the lower 32 bits of it). |
@psychonic Thank you! This was it. |
Does anyone know what "key_ready_up" (fixed64 type) field in k_EMsgGCReadyUp request is supposed to represent? It is the request to ready up for the Dota 2 game once the lobby is full but it seems that unless you get it right the GC won't accept your request.
Here are few samples:
18140159124970866610
18140159126220110694
They seem to change but not when someone declines a ready up call and you have to press ready up later again, then it remains the same.
The text was updated successfully, but these errors were encountered: