{ "category": "Book", "packets": [ { "id": "0x66", "name": "Book Content", "description": "Sends full book content including all pages and lines.", "direction": "outgoing", "isDynamic": true, "size": "9+", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0x66", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Book Serial", "type": "uint", "size": 4, "description": "Serial of the book" }, { "name": "Page Count", "type": "ushort", "size": 2, "description": "Number of pages" }, { "name": "Pages", "type": "loop", "description": "Page contents", "loop": { "countField": "pageCount", "fields": [ { "name": "Page Number", "type": "ushort", "size": 2, "description": "Page number (1-indexed)" }, { "name": "Line Count", "type": "ushort", "size": 2, "description": "Number of lines on page" }, { "name": "Lines", "type": "loop", "description": "Lines on the page", "loop": { "countField": "lineCount", "fields": [ { "name": "Text", "type": "utf8-t", "description": "Line text" } ] } } ] } } ], "source": { "file": "Projects/UOContent/Items/Books/BookPackets.cs", "line": 136 } }, { "id": "0xD4", "name": "Book Header", "description": "Sends book cover information (title, author, writable status).", "direction": "outgoing", "isDynamic": true, "size": "17+", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xD4", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Book Serial", "type": "uint", "size": 4, "description": "Serial of the book" }, { "name": "Flag On", "type": "byte", "size": 1, "value": "0x01", "description": "Flag on (always 1)" }, { "name": "Writable", "type": "bool", "size": 1, "description": "True if book is writable and in range" }, { "name": "Page Count", "type": "ushort", "size": 2, "description": "Number of pages" }, { "name": "Title Length", "type": "ushort", "size": 2, "description": "Length of title + 1 (for null)" }, { "name": "Title", "type": "utf8-t", "description": "Book title" }, { "name": "Author Length", "type": "ushort", "size": 2, "description": "Length of author + 1 (for null)" }, { "name": "Author", "type": "utf8-t", "description": "Book author" } ], "related": [ { "id": "0x93", "relationship": "variant", "note": "Old Book Header format (outgoing)" } ], "source": { "file": "Projects/UOContent/Items/Books/BookPackets.cs", "line": 184 } }, { "id": "0x93", "name": "Old Book Header", "description": "Old format for book cover (fixed-size ASCII strings).", "direction": "outgoing", "isDynamic": false, "size": 99, "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0x93", "description": "Packet identifier" }, { "name": "Book Serial", "type": "uint", "size": 4, "description": "Serial of the book" }, { "name": "Flags", "type": "byte", "size": 1, "description": "Book flags" }, { "name": "Page Count", "type": "ushort", "size": 2, "description": "Number of pages" }, { "name": "Title", "type": "ascii", "size": 60, "description": "Book title (fixed 60 bytes)" }, { "name": "Author", "type": "ascii", "size": 30, "description": "Book author (fixed 30 bytes)" } ], "related": [ { "id": "0xD4", "relationship": "variant", "note": "New Book Header format (outgoing)" } ], "notes": "Old format used by older clients. Title and author are fixed-size ASCII." } ] }