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
| Offset | Width | Field | Established meaning |
|---|---|---|---|
0x00 | 1 | direction | Direction byte supplied by the local-user movement path. |
0x01 | 1 | move_sequence | Client movement sequence. The sender increments local user +0x6F28 before writing it. |
Queue call sites
| Queue call | Containing IDA function | Function address |
|---|---|---|
Darkages.exe:0x0048853A | net_c_send_move | Darkages.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.