Movement Packet Structure help

does anyone know how this movement packet works?
I mean how would I determine the x,y of a coordinate?

[C->S][7021][9 bytes]
0000000000 01 4F 69 9D 03 50 00 31 05 .Oi…P.1…

[S->C][B021][24 bytes]
0000000000 C7 E6 DE 00 01 4F 69 9D 03 50 00 31 05 01 4F 69 ÇæÞ…Oi…P.1…Oi
0000000016 A4 23 17 00 A0 42 44 34 ¤#… BD4…

Check it out xSROMap and may give you an idea.

1 Like
uint UniqueID
bool HasDestionation
if(HasDestination){
    byte RegionX
    byte RegionY
    short OffsetX
    short OffsetZ
    short OffsetY
    IngameEndX = (RegionX-135)*192+(OffsetX/10)
    IngameEndY = (RegionY-92)*192+(OffsetY/10)
}
else
{
    byte unk
    ushort Angle
}
bool HasSource
If(HasSource)
{
    byte RegionX
    byte RegionY
    short OffsetX
    float OffsetZ
    short OffsetY

    IngameStartX = (RegionX-135)*192+(OffsetX/100)
    IngameStartY = (RegionY-92)*192+(OffsetY/100)
}

Something like this for B021.
7021 should have the same structure like the HasDestination

1 Like

Many Many thanks guys this is very helpful
I have a question for you tho G4ndalf pls

in if HasDestination

the equation for IngameEndY = (RegionX-92)*192+(OffsetY/10)
when I use RegionX in the equation it gives in-game Y coordinate in negative
I tried using RegionY instead and the result was correct

is this correct or am I missing something?

and biiiiiiig thanks really :slight_smile:

Yeah my mistake it should have been RegionY

1 Like