# Packet Definition Parser Fast XML-like parser for binary packet structures with versioning and conditional fields. ## Basic Syntax ```xml ``` ## Field Types | Type | Size | Description | |------|------|-------------| | `u8`, `u16`, `u32`, `u64` | 1-8 bytes | Unsigned integers | | `i8`, `i16`, `i32`, `i64` | 1-8 bytes | Signed integers | | `f32`, `f64`, `double` | 4-8 bytes | Floating point | | `str8`, `str16`, `str32` | Variable | Length-prefixed strings | | `char` | Fixed | Fixed-size byte array | | `color` | 3 bytes | RGB color (r,g,b) | | `equip` | 8 bytes | Equipment item | | `array` | Variable | Array of substructures | ## Multiple Field Names ```xml ``` ## Conditional Fields ```xml ``` ### Condition Types **Flag Conditions:** - `flag:name` - Flag is set - `!flag:name` - Flag not set **Variable Conditions:** - `var:name` - Variable exists and is non-zero - `!var:name` - Variable doesn't exist or is zero **Version Conditions:** - `version>=562` - Version comparisons - `version<1200` - Supports `>=`, `<=`, `>`, `<` **Value Comparisons:** - `field>=value` - Numeric comparisons - `field!=0` - Supports `>=`, `<=`, `>`, `<`, `==`, `!=` **String Length:** - `name!>5` - String longer than 5 chars - `name!<=100` - String 100 chars or less - Supports `!>`, `!<`, `!>=`, `!<=`, `!=` **Bitwise Operations:** - `field&0x01` - Bitwise AND with hex value **Complex Logic:** - `cond1,cond2` - OR logic (comma-separated) - `cond1&cond2` - AND logic (ampersand) - `version>=562&level>10` - Multiple conditions **Array Context:** - `item_type_%i!=0` - `%i` substitutes current array index ## Groups Organize related fields with automatic prefixing: ```xml ``` ## Templates Define reusable field groups that can be injected into packets: ```xml