Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

CMove (0x06)

Previous: CMapRequest | Client action index | Next: CGet

CMove is client-to-server action 0x06 in the 4.21 protocol.

Direction: client to server

Encrypted: Yes. See Sequence and XOR Transformation.

Payload offsets begin with the first byte after the action. The frame marker, frame length, action, sequence, and trailing zero are excluded.

Payload format

OffsetWidthFieldEstablished meaning
0x001directionDirection byte supplied by the local-user movement path.
0x011move_sequenceClient movement sequence. The sender increments local user +0x6F28 before writing it.

Queue call sites

Queue callContaining IDA functionFunction address
Darkages.exe:0x0048853Anet_c_send_moveDarkages.exe:0x004884E4

Sender notes

net_c_send_move creates the complete three-byte logical packet: action 0x06, direction, and move_sequence. It submits length 3 to net_c_queue_send; the queue adds the trailing zero separately.

The sender also records timeGetTime at local user +0x6F2C. A later SMove uses this value for the lag indicator. Only one timestamp is retained, so a subsequent move replaces the timestamp even if an earlier server response remains outstanding.

Schema status

The complete payload and queue length are established directly from the 4.21 builder. Direction validation occurs in its callers and movement state code, not in this two-field serializer.