Originally Posted by
amadmonk
IIRC the movement packet (and most of the WoW packets, actually) use a binary-coded packed guid representation. It's not too hard to figure out.
Edit: oops, posted that without hitting refresh, so I didn't see what TOM_RUS posted... but yeah, what he said.
yeah well I read an article about how it is compressed but I dont see a reason why I should bother myself with this. I took a look at it and my player guid is compressed to 4 bytes so if I read the structure like
Code:
struct MovementPacket
{
unsigned int opcode; // 4
unsigned int guid; // 8
unsigned int Flags1; // 12
unsigned short Flags2; // 14
unsigned int time; // 18
float x; // 22
float y; // 26
float z; // 30
float orientation; // 34
float optional; // 38
};
I only have a size of 38 as packet but the Datastore m_size value is 41...Thats mainly what I dont get...
This is the bytewise look of a heartbeat packet I received while running in a straight line on ground without a mount.
Code:
Type: Heartbeat
m_size: 41
1 7c
2 17
3 0
4 0
5 cf
6 72
7 88
8 bc
9 2
10 80
11 5
12 1
13 0
14 0
15 0
16 0
17 80
18 c3
19 91
20 8
21 0
22 ef
23 ae
24 fe
25 44
26 90
27 6
28 b9
29 44
30 99
31 eb
32 8b
33 42
34 cf
35 45
36 ef
37 3f
38 0
39 0
40 0
41 0
If I look at it from button to top then 41 -38 should be the optional float whenever pitch is involed (this is zero since I was running on ground in a straight line). 37-34 should be orientation and 33 - 22 position. 21 - 18 should be time 17,16 Flags2, 15 - 12 Flags. 11-8 should be the guid now but that doesnt make sense, right ? the first 4 byte are actually the opcode so the only thing I can think of this is that the guid is actually from 11-5 meaning it would be 7 byte wide ?!
I think I have a serious mistake in there but I am just not sure what I didnt understand