AOS REVIVALJoin Discord
Packet ID0060x06
Combat // wire record

ShootPacket

A client firearm request. The server validates cadence, origin, orientation, weapon state, and penetration before resolving authoritative hits.

C→SHandledLive-verified40 bytes
Exact field order

Packet 6 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 6 ShootPacket fields in byte order
#FieldEncodingBytesPurpose
0packet_idu81Always 6 (0x06).
1loop_counti32 LE4Simulation-loop stamp used for ordering, prediction, or reconciliation.
2shooter_idu81Player slot that initiated the action.
3shot_on_world_updatei32 LE4WorldUpdate reference used to associate the predicted shot.
4origin3 × IEEE-754 f32 LE12X, Y, and Z floating-point components.
5orientation3 × IEEE-754 f32 LE12X, Y, and Z floating-point components.
6damagei16 LE2Client-reported weapon damage; never trusted without server validation.
7penetrationi16 LE2Client-reported penetration value.
8shot_flagsu81Bit 0 affect_shooter; bit 1 secondary fire.
9seedu81Deterministic random seed used to reproduce client effects.
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.