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

CMenuCode (0x39)

Previous: CRefreshUser | Client action index | Next: CMessage

CMenuCode is client-to-server action 0x39 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
0x001menu_typeServer-supplied menu or interaction type copied from the active menu pane.
0x014object_idBig-endian server object identifier copied from the active menu pane.
0x052menu_codeBig-endian selected menu code or control identifier.
0x07variablevariant_dataOptional selection byte, length-prefixed text, or class-specific values. Absent in the eight-byte logical form.

Queue call sites

Queue callContaining IDA functionFunction address
Darkages.exe:0x0047B8CDsub_47B850Darkages.exe:0x0047B850
Darkages.exe:0x0047BBB7sub_47BB00Darkages.exe:0x0047BB00
Darkages.exe:0x0047C175sub_47C100Darkages.exe:0x0047C100
Darkages.exe:0x0047C2CFsub_47C220Darkages.exe:0x0047C220
Darkages.exe:0x0047C60Fsub_47C560Darkages.exe:0x0047C560
Darkages.exe:0x0047C8C8sub_47C7C0Darkages.exe:0x0047C7C0
Darkages.exe:0x0047D3BFsub_47D310Darkages.exe:0x0047D310
Darkages.exe:0x0047D46Dsub_47D3E0Darkages.exe:0x0047D3E0
Darkages.exe:0x0047D7DCsub_47D6E4Darkages.exe:0x0047D6E4

UI flow

All nine traced builders share the seven-byte payload prefix above. They are called by controls owned by the dynamic SScreenMenu interaction. The simplest form submits eight logical bytes including the action. Other variants append a one-byte length and text, a selection byte, or three small class-specific values.

See UI, Input, and Packet Flows.