Closed imkindaprogrammermyself closed 2 years ago
Thats interesting, it is not the one argument being compressed, but the whole method payload compressed if I got the right.
The issue is somewhere in exposed index generation.
This is the last methods with right index:
78 11 receiveAcousticTargetID ([unknown:
Next methods are shifted by 1:
86 17 receive_updateMinimapSquadron ([unknown:
(should be)
87 17 receive_updateMinimapSquadron ([unknown:
Still looking into the code to find what is wrong...
On the other hand, these are methods for Avatar with largest exposed index.. and they are still shifted by 1, so it seems like parser just missed some method in def file...
150 65537 receiveSignedCommand ([unknown:
I'm wrong in last message... this one has right ID:
151 65537 onGameRoomStateChanged ([unknown:
So the problem is somewhere in between 80 and 151 exposed method :(
I used ollydbg and dumped some indexes from wows client memory and got following results.
Either updateInvisibleWavedPoint or receive_squadronDamage index is calculated wrong, still looking into details.
Found the reason.
WG dev's added new method updateInvisibleWavedPoint
with USER_TYPE argument of base type VECTOR3. Earlier a thought that USER_TYPE argument size is calculated as base type size, but it seems like client just assigns it size=+INF (exposed indexes of methods are calculated in the next way: list all methods from .def file, calculate their arguments size, sort using stable sorting by size; by assigning updateInvisibleWavedPoint size of VECTOR3 parser gave it index=81 while the real one is 149).
Try updated code from master branch and I guess we can close the issue.
So it wasn't the BLOB? It's weird that I got some zlib data from it, maybe it's somewhere else but thank you!
It seems they added something new again.
pickle.loads(playersStates)
throwing UnicodeDecodeError
in onArenaStateReceived
.
Probably the data is shifted again just like the last time?
Hi, is problem resolved? I had no time to check it myself unfortunately.
It seems some BLOBs are compressed via zlib
This works on 0.10.7 but
onArenaStateReceived
'splayersStates
will now be empty.