AOS REVIVALJoin Discord
Packet ID0470x2F
Interface // wire record

GenericVoteMessage

Opens, updates, closes, or casts into the native kick/next-map vote overlay.

BothHandled + sentLive-verifiedVariable: 6 + candidates + title + description
Exact field order

Packet 47 wire layout

The first byte is the application packet ID. The rows after it appear in decode order. Sizes exclude ENet headers, the outer wrapper prefix, LZF chunk framing, and compression effects.

Packet 47 GenericVoteMessage fields in byte order
#FieldEncodingBytesPurpose
0packet_idu81Always 47 (0x2F).
1player_idu81Compact player-slot identifier.
2message_typeu81message type value.
3candidate_countu16 LE2candidate count value.
4candidates[].nameNUL-terminated UTF-8 stringN + 1Exact candidate identity shown to and returned by the client.
5candidates[].votesi32 LE4candidates[].votes value.
6titleNUL-terminated UTF-8 stringN + 1repr-form localized-string tuple.
7descriptionNUL-terminated UTF-8 stringN + 1repr-form localized-string tuple.
8vote_flagsu81Bit 0 allow revote; bit 2 can vote.
Protocol convention

How to read this layout

  • LE means least-significant byte first.
  • fixed16 is two-byte sign-magnitude at 1/64 precision.
  • orientation16 uses the measured 1/8192 orientation mapping.
  • NUL strings consume their encoded byte length plus one 00 terminator.
  • Counted arrays repeat immediately in the order shown.