feat: Expand packet documentation with enums, bitfields, and detailed formats
- Add 42 new packet JSON definitions (assistant, book, chat, gump, house, etc.) - Convert inline enum/bitflag descriptions to structured enum arrays - Add planeFormat section for 0xD8 house customization packet - Add Plane Format rendering in HTML template - Standardize field descriptions and remove inline value lists - Add comprehensive gump layout command documentation - Document boat, mahjong, party, secure trade, and weapon ability packets 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
f0b65fecb7
commit
0d3dc75330
51 changed files with 18827 additions and 3924 deletions
File diff suppressed because it is too large
Load diff
39
Distribution/Data/packets/incoming/assistant.json
Normal file
39
Distribution/Data/packets/incoming/assistant.json
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"category": "Assistant",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xBE",
|
||||
"name": "Assistant Version",
|
||||
"description": "Client sends assistant version information. Razor CE sends version as ASCII string.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "3+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBE",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Version String",
|
||||
"type": "ascii",
|
||||
"size": "var",
|
||||
"description": "Assistant version string (Razor CE sends \u0027version\u0027 or \u0027ProductName version\u0027)"
|
||||
}
|
||||
],
|
||||
"notes": "Razor Community Edition sends version as ASCII. Legacy UOAssist would send int32 + ASCII client version.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Assistants/AssistantHandler.cs",
|
||||
"line": 69
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
216
Distribution/Data/packets/incoming/book.json
Normal file
216
Distribution/Data/packets/incoming/book.json
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
{
|
||||
"category": "Book",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x66",
|
||||
"name": "Book Content Change",
|
||||
"description": "Client sends updated book page content when player edits a writable book.",
|
||||
"direction": "incoming",
|
||||
"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 being edited"
|
||||
},
|
||||
{
|
||||
"name": "Page Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of pages being updated"
|
||||
},
|
||||
{
|
||||
"name": "Pages",
|
||||
"type": "loop",
|
||||
"description": "Page contents being updated",
|
||||
"loop": {
|
||||
"countField": "pageCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Page Index",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Page number (1-indexed)"
|
||||
},
|
||||
{
|
||||
"name": "Line Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of lines on page (max 8)"
|
||||
},
|
||||
{
|
||||
"name": "Lines",
|
||||
"type": "loop",
|
||||
"description": "Lines on the page",
|
||||
"loop": {
|
||||
"countField": "lineCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf8-t",
|
||||
"description": "Line text (max 80 characters)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Books/BookPackets.cs",
|
||||
"line": 87
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD4",
|
||||
"name": "Book Header Change",
|
||||
"description": "Client sends updated book title and author when player edits a writable book\u0027s cover.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "13+",
|
||||
"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 being edited"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Book flags (ignored by server)"
|
||||
},
|
||||
{
|
||||
"name": "Page Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of pages (ignored by server)"
|
||||
},
|
||||
{
|
||||
"name": "Title Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of title string including null terminator (max 61)"
|
||||
},
|
||||
{
|
||||
"name": "Title",
|
||||
"type": "utf8-t",
|
||||
"description": "Book title (max 60 characters)"
|
||||
},
|
||||
{
|
||||
"name": "Author Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of author string including null terminator (max 31)"
|
||||
},
|
||||
{
|
||||
"name": "Author",
|
||||
"type": "utf8-t",
|
||||
"description": "Book author (max 30 characters)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x93",
|
||||
"direction": "incoming",
|
||||
"relationship": "variant",
|
||||
"note": "Old Header Change format for older clients"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Books/BookPackets.cs",
|
||||
"line": 51
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x93",
|
||||
"name": "Old Book Header Change",
|
||||
"description": "Legacy format for book header changes. Uses fixed-size ASCII strings.",
|
||||
"direction": "incoming",
|
||||
"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 being edited"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Book flags (ignored by server)"
|
||||
},
|
||||
{
|
||||
"name": "Page Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of pages (ignored by server)"
|
||||
},
|
||||
{
|
||||
"name": "Title",
|
||||
"type": "ascii",
|
||||
"size": 60,
|
||||
"description": "Book title (fixed 60 bytes, null-padded)"
|
||||
},
|
||||
{
|
||||
"name": "Author",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Book author (fixed 30 bytes, null-padded)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xD4",
|
||||
"direction": "incoming",
|
||||
"relationship": "variant",
|
||||
"note": "New Header Change format for newer clients"
|
||||
}
|
||||
],
|
||||
"notes": "Old format used by older clients. Title and author are fixed-size ASCII.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Books/BookPackets.cs",
|
||||
"line": 32
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
93
Distribution/Data/packets/incoming/chat.json
Normal file
93
Distribution/Data/packets/incoming/chat.json
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
{
|
||||
"category": "Chat",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xB5",
|
||||
"name": "Open Chat Window Request",
|
||||
"description": "Client requests to open the chat window. Newer clients don\u0027t send chat username.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 64,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB5",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Reserved",
|
||||
"type": "byte[]",
|
||||
"size": 63,
|
||||
"description": "Reserved/unused (newer clients don\u0027t send chat username)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xB2",
|
||||
"direction": "outgoing",
|
||||
"relationship": "response",
|
||||
"note": "Server responds with Chat Message (OpenChatWindow command)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Engines/Chat/ChatPackets.cs",
|
||||
"line": 30
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xB3",
|
||||
"name": "Chat Action",
|
||||
"description": "Client sends chat action commands like sending messages, joining channels, etc.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "8+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB3",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 4,
|
||||
"description": "Language code (e.g., \u0027enu\u0027 for English)"
|
||||
},
|
||||
{
|
||||
"name": "Action ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Chat action ID"
|
||||
},
|
||||
{
|
||||
"name": "Parameter",
|
||||
"type": "utf16be",
|
||||
"size": "var",
|
||||
"description": "Action parameter (Big Endian Unicode)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xB2",
|
||||
"direction": "outgoing",
|
||||
"relationship": "response",
|
||||
"note": "Server responds with Chat Message"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Engines/Chat/ChatPackets.cs",
|
||||
"line": 51
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
801
Distribution/Data/packets/incoming/encoded.json
Normal file
801
Distribution/Data/packets/incoming/encoded.json
Normal file
|
|
@ -0,0 +1,801 @@
|
|||
{
|
||||
"category": "Encoded Commands (0xD7)",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xD7/0x02",
|
||||
"subId": "0x02",
|
||||
"name": "House Design: Backup",
|
||||
"description": "Client requests to backup current house design state.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x02",
|
||||
"description": "Backup subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1024
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x03",
|
||||
"subId": "0x03",
|
||||
"name": "House Design: Restore",
|
||||
"description": "Client requests to restore house design from backup.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x03",
|
||||
"description": "Restore subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1025
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x04",
|
||||
"subId": "0x04",
|
||||
"name": "House Design: Commit",
|
||||
"description": "Client commits the current house design changes.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x04",
|
||||
"description": "Commit subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1026
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x05",
|
||||
"subId": "0x05",
|
||||
"name": "House Design: Delete Component",
|
||||
"description": "Client requests to delete a component from house design.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x05",
|
||||
"description": "Delete subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Tile ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Tile graphic ID to delete"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "X offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Y offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Z offset from foundation"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1027
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x06",
|
||||
"subId": "0x06",
|
||||
"name": "House Design: Build Component",
|
||||
"description": "Client requests to place a component in house design.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x06",
|
||||
"description": "Build subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Tile ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Tile graphic ID to place"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "X offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Y offset from foundation"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1028
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x0C",
|
||||
"subId": "0x0C",
|
||||
"name": "House Design: Close Tool",
|
||||
"description": "Client closes the house design tool.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0C",
|
||||
"description": "Close subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1029
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x0D",
|
||||
"subId": "0x0D",
|
||||
"name": "House Design: Add Stairs",
|
||||
"description": "Client requests to add stairs to house design.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0D",
|
||||
"description": "Stairs subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Tile ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Stair tile graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "X offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Y offset from foundation"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1030
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x0E",
|
||||
"subId": "0x0E",
|
||||
"name": "House Design: Sync Request",
|
||||
"description": "Client requests to synchronize house design state.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0E",
|
||||
"description": "Sync subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1031
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x10",
|
||||
"subId": "0x10",
|
||||
"name": "House Design: Clear Floor",
|
||||
"description": "Client requests to clear a floor in house design.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x10",
|
||||
"description": "Clear subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1032
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x12",
|
||||
"subId": "0x12",
|
||||
"name": "House Design: Change Floor Level",
|
||||
"description": "Client changes the visible floor level in house design.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x12",
|
||||
"description": "Level subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Floor",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Floor level (1-4)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1033
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x13",
|
||||
"subId": "0x13",
|
||||
"name": "House Design: Add Roof",
|
||||
"description": "Client requests to add a roof tile (Samurai Empire+).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x13",
|
||||
"description": "Roof subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Tile ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Roof tile graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "X offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Y offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Z offset for roof placement"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "Samurai Empire",
|
||||
"notes": "Added with Samurai Empire expansion"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1035
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x14",
|
||||
"subId": "0x14",
|
||||
"name": "House Design: Delete Roof",
|
||||
"description": "Client requests to delete a roof tile (Samurai Empire+).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x14",
|
||||
"description": "Roof Delete subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Tile ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Roof tile graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "X offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Y offset from foundation"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Z offset of roof to delete"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "Samurai Empire",
|
||||
"notes": "Added with Samurai Empire expansion"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1036
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x19",
|
||||
"subId": "0x19",
|
||||
"name": "Set Weapon Ability",
|
||||
"description": "Client selects a weapon special ability.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Player serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x19",
|
||||
"description": "Set Ability subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Ability Index",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Ability index (0 = clear, 1+ = ability index)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x21",
|
||||
"relationship": "response",
|
||||
"note": "Clear Weapon Ability"
|
||||
},
|
||||
{
|
||||
"id": "0xBF/0x25",
|
||||
"relationship": "response",
|
||||
"note": "Toggle Special Ability"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Weapons/Abilities/WeaponAbilityPackets.cs",
|
||||
"line": 11
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x1A",
|
||||
"subId": "0x1A",
|
||||
"name": "House Design: Revert",
|
||||
"description": "Client requests to revert house design to original state.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "House foundation serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x1A",
|
||||
"description": "Revert subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs",
|
||||
"line": 1038
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x28",
|
||||
"subId": "0x28",
|
||||
"name": "Guild Gump Request",
|
||||
"description": "Client requests to open the guild gump.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Player serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x28",
|
||||
"description": "Guild Gump subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 54
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD7/0x32",
|
||||
"subId": "0x32",
|
||||
"name": "Quest Gump Request",
|
||||
"description": "Client requests to open the quest/MLB gump.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Player serial"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x32",
|
||||
"description": "Quest Gump subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingPlayerPackets.cs",
|
||||
"line": 55
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,82 +1,141 @@
|
|||
{
|
||||
"category": "Entity",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x06",
|
||||
"name": "Use Request (Double-Click)",
|
||||
"description": "Sent when the player double-clicks an item or mobile. Can also trigger paperdoll if high bit is set.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x06", "description": "Packet identifier" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of the target. If high bit (0x80000000) is set, opens player's paperdoll instead." }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 61
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x09",
|
||||
"name": "Look Request (Single-Click)",
|
||||
"description": "Sent when the player single-clicks an item or mobile to see its name/properties.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x09", "description": "Packet identifier" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of the target entity" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 105
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xB6",
|
||||
"name": "Object Help Request",
|
||||
"description": "Sent when the player requests help/info about an object (Shift+Click or context menu).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xB6", "description": "Packet identifier" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of the target entity" },
|
||||
{ "name": "unknown", "type": "byte", "size": 1, "description": "Unknown" },
|
||||
{ "name": "language", "type": "ascii", "size": 3, "description": "Language code (e.g., 'ENU')" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 32
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD6",
|
||||
"name": "Batch Query Properties",
|
||||
"description": "Sent by the client to request Object Property Lists (tooltips) for multiple entities at once.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "3 + (4 * entityCount)",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xD6", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{
|
||||
"name": "serials",
|
||||
"type": "array",
|
||||
"description": "List of entity serials to query",
|
||||
"loop": {
|
||||
"countField": "(length-3)/4",
|
||||
"fields": [
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Entity serial" }
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 154
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"category": "Entity",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x06",
|
||||
"name": "Use Request (Double-Click)",
|
||||
"description": "Sent when the player double-clicks an item or mobile. Can also trigger paperdoll if high bit is set.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x06",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target. If high bit (0x80000000) is set, opens player\u0027s paperdoll instead."
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 61
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x09",
|
||||
"name": "Look Request (Single-Click)",
|
||||
"description": "Sent when the player single-clicks an item or mobile to see its name/properties.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x09",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target entity"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 105
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xB6",
|
||||
"name": "Object Help Request",
|
||||
"description": "Sent when the player requests help/info about an object (Shift+Click or context menu).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB6",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target entity"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 3,
|
||||
"description": "Language code (e.g., \u0027ENU\u0027)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 32
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xD6",
|
||||
"name": "Batch Query Properties",
|
||||
"description": "Sent by the client to request Object Property Lists (tooltips) for multiple entities at once.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "3 + (4 x entityCount)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD6",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serials",
|
||||
"type": "array",
|
||||
"description": "List of entity serials to query",
|
||||
"loop": {
|
||||
"countField": "(length-3)/4",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingEntityPackets.cs",
|
||||
"line": 154
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,142 +1,292 @@
|
|||
{
|
||||
"category": "Items",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x07",
|
||||
"name": "Lift Request",
|
||||
"description": "Client requests to pick up an item from the world or a container.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x07", "description": "Packet identifier" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of the item to lift" },
|
||||
{ "name": "amount", "type": "ushort", "size": 2, "description": "Amount to pick up" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x27", "relationship": "rej", "note": "Sent if lift is rejected" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x08",
|
||||
"name": "Drop Request",
|
||||
"description": "Client requests to drop an item at a location or into a container. Size varies by client version.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": "14 (pre-6017) or 15 (6017+)",
|
||||
"variants": [
|
||||
{
|
||||
"version": "pre-6017",
|
||||
"name": "Classic",
|
||||
"size": 14,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x08", "description": "Packet identifier" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of item being dropped (ignored)" },
|
||||
{ "name": "x", "type": "short", "size": 2, "description": "Target X coordinate" },
|
||||
{ "name": "y", "type": "short", "size": 2, "description": "Target Y coordinate" },
|
||||
{ "name": "z", "type": "sbyte", "size": 1, "description": "Target Z coordinate" },
|
||||
{ "name": "dest", "type": "uint", "size": 4, "description": "Target container/mobile serial, or 0xFFFFFFFF for world" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "6017+",
|
||||
"name": "Container Grid Lines",
|
||||
"condition": "Client version >= 6.0.1.7 (ContainerGridLines)",
|
||||
"size": 15,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x08", "description": "Packet identifier" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of item being dropped (ignored)" },
|
||||
{ "name": "x", "type": "short", "size": 2, "description": "Target X coordinate" },
|
||||
{ "name": "y", "type": "short", "size": 2, "description": "Target Y coordinate" },
|
||||
{ "name": "z", "type": "sbyte", "size": 1, "description": "Target Z coordinate" },
|
||||
{ "name": "gridLocation", "type": "byte", "size": 1, "description": "Grid slot position in container" },
|
||||
{ "name": "dest", "type": "uint", "size": 4, "description": "Target container/mobile serial, or 0xFFFFFFFF for world" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "ContainerGridLines adds gridLocation byte"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x13",
|
||||
"name": "Equip Request",
|
||||
"description": "Client requests to equip a held item on a mobile.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x13", "description": "Packet identifier" },
|
||||
{ "name": "itemSerial", "type": "uint", "size": 4, "description": "Serial of item to equip" },
|
||||
{ "name": "layer", "type": "byte", "size": 1, "description": "Equipment layer" },
|
||||
{ "name": "mobileSerial", "type": "uint", "size": 4, "description": "Serial of target mobile" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 44
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xEC",
|
||||
"name": "Equip Macro",
|
||||
"description": "Client requests to equip multiple items from a saved macro.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xEC", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{ "name": "count", "type": "byte", "size": 1, "description": "Number of items to equip" },
|
||||
{
|
||||
"name": "items",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"countField": "count",
|
||||
"fields": [
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of item to equip" }
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 112
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xED",
|
||||
"name": "Unequip Macro",
|
||||
"description": "Client requests to unequip items from specific layers via macro.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xED", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{ "name": "count", "type": "byte", "size": 1, "description": "Number of layers to unequip" },
|
||||
{
|
||||
"name": "layers",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"countField": "count",
|
||||
"fields": [
|
||||
{ "name": "layer", "type": "ushort", "size": 2, "description": "Layer to unequip from" }
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 125
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"category": "Items",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x07",
|
||||
"name": "Lift Request",
|
||||
"description": "Client requests to pick up an item from the world or a container.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x07",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item to lift"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Amount to pick up"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x27",
|
||||
"relationship": "rej",
|
||||
"note": "Sent if lift is rejected"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x08",
|
||||
"name": "Drop Request",
|
||||
"description": "Client requests to drop an item at a location or into a container. Size varies by client version.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"version": "pre-6017",
|
||||
"name": "Classic",
|
||||
"size": 14,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x08",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item being dropped (ignored)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Target Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dest",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Target container/mobile serial, or 0xFFFFFFFF for world"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "6017+",
|
||||
"name": "Container Grid Lines",
|
||||
"condition": "Client version \u003e= 6.0.1.7 (ContainerGridLines)",
|
||||
"size": 15,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x08",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item being dropped (ignored)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Target Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Grid Location",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Grid slot position in container"
|
||||
},
|
||||
{
|
||||
"name": "Dest",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Target container/mobile serial, or 0xFFFFFFFF for world"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "ContainerGridLines adds gridLocation byte"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x13",
|
||||
"name": "Equip Request",
|
||||
"description": "Client requests to equip a held item on a mobile.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x13",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item to equip"
|
||||
},
|
||||
{
|
||||
"name": "Layer",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Equipment layer"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of target mobile"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 44
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xEC",
|
||||
"name": "Equip Macro",
|
||||
"description": "Client requests to equip multiple items from a saved macro.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xEC",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of items to equip"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"countField": "count",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item to equip"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 112
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xED",
|
||||
"name": "Unequip Macro",
|
||||
"description": "Client requests to unequip items from specific layers via macro.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xED",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of layers to unequip"
|
||||
},
|
||||
{
|
||||
"name": "Layers",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"countField": "count",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Layer",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Layer to unequip from"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs",
|
||||
"line": 125
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
56
Distribution/Data/packets/incoming/mahjong.json
Normal file
56
Distribution/Data/packets/incoming/mahjong.json
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
"category": "Mahjong",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xDA",
|
||||
"name": "Mahjong Command",
|
||||
"description": "Client sends Mahjong game commands. Various subcommands control game actions like moving tiles, rolling dice, and managing players.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "7+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown byte"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Subcommand: 0x06=Exit, 0x0A=GivePoints, 0x0B=RollDice, 0x0C=BuildWalls, 0x0D=ResetScores, 0x0F=AssignDealer, 0x10=OpenSeat, 0x11=ChangeOption, 0x15=MoveWallBreak, 0x16=TogglePublicHand, 0x17=MoveTile, 0x18=MoveDealerIndicator"
|
||||
},
|
||||
{
|
||||
"name": "Data",
|
||||
"type": "byte[]",
|
||||
"size": "var",
|
||||
"description": "Command-specific data (varies by subcommand)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 64
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
64
Distribution/Data/packets/incoming/map.json
Normal file
64
Distribution/Data/packets/incoming/map.json
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"category": "Map",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x56",
|
||||
"name": "Map Command",
|
||||
"description": "Client sends map pin commands for editable map items. Commands include adding, inserting, changing, and removing pins.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 11,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x56",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Map Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the map item"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Map pin command type",
|
||||
"enum": [
|
||||
{ "value": "1", "name": "AddPin", "description": "Add a new pin" },
|
||||
{ "value": "2", "name": "InsertPin", "description": "Insert pin at position" },
|
||||
{ "value": "3", "name": "ChangePin", "description": "Change existing pin" },
|
||||
{ "value": "4", "name": "RemovePin", "description": "Remove a pin" },
|
||||
{ "value": "5", "name": "ClearPins", "description": "Clear all pins" },
|
||||
{ "value": "6", "name": "ToggleEditable", "description": "Toggle edit mode" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Pin number (for insert, change, remove commands)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X coordinate of pin"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y coordinate of pin"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Maps/MapItemPackets.cs",
|
||||
"line": 28
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,97 +1,225 @@
|
|||
{
|
||||
"category": "Message",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x03",
|
||||
"name": "ASCII Speech",
|
||||
"description": "Client sends ASCII-encoded speech message.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x03", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{
|
||||
"name": "type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Message type",
|
||||
"values": [
|
||||
{ "value": 0, "name": "Regular", "description": "Normal speech" },
|
||||
{ "value": 1, "name": "System", "description": "System message" },
|
||||
{ "value": 2, "name": "Emote", "description": "Emote (*action*)" },
|
||||
{ "value": 6, "name": "Label", "description": "Object label" },
|
||||
{ "value": 7, "name": "Focus", "description": "Focused message" },
|
||||
{ "value": 8, "name": "Whisper", "description": "Whisper" },
|
||||
{ "value": 9, "name": "Yell", "description": "Yell" },
|
||||
{ "value": 10, "name": "Spell", "description": "Spell words" },
|
||||
{ "value": 13, "name": "Guild", "description": "Guild chat" },
|
||||
{ "value": 14, "name": "Alliance", "description": "Alliance chat" },
|
||||
{ "value": 15, "name": "Command", "description": "Command" }
|
||||
]
|
||||
},
|
||||
{ "name": "hue", "type": "short", "size": 2, "description": "Text color hue" },
|
||||
{ "name": "font", "type": "short", "size": 2, "description": "Font ID" },
|
||||
{ "name": "text", "type": "ascii-null", "description": "Speech text (max 128 chars)" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x1C", "relationship": "response", "note": "ASCII Message sent to other clients" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMessagePackets.cs",
|
||||
"line": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xAD",
|
||||
"name": "Unicode Speech",
|
||||
"description": "Client sends Unicode-encoded speech message with optional keywords.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xAD", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{
|
||||
"name": "type",
|
||||
"type": "bitfield",
|
||||
"size": 1,
|
||||
"description": "Message type with possible Encoded flag",
|
||||
"flags": [
|
||||
{ "bit": "0x0F", "name": "MessageType", "description": "Base message type (see 0x03)" },
|
||||
{ "bit": "0xC0", "name": "Encoded", "description": "If set, packet contains encoded keywords" }
|
||||
]
|
||||
},
|
||||
{ "name": "hue", "type": "short", "size": 2, "description": "Text color hue" },
|
||||
{ "name": "font", "type": "short", "size": 2, "description": "Font ID" },
|
||||
{ "name": "language", "type": "ascii", "size": 4, "description": "Language code (e.g., 'ENU')" },
|
||||
{
|
||||
"name": "encodedKeywords",
|
||||
"type": "conditional",
|
||||
"condition": "type & 0xC0 != 0",
|
||||
"fields": [
|
||||
{ "name": "keywordValue", "type": "short", "size": 2, "description": "Keyword count (upper 12 bits) and first hold value (lower 4 bits)" },
|
||||
{ "name": "keywords", "type": "byte[]", "description": "Packed keyword IDs" },
|
||||
{ "name": "text", "type": "utf8-null", "description": "Speech text (UTF-8 when encoded)" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "unicodeText",
|
||||
"type": "conditional",
|
||||
"condition": "type & 0xC0 == 0",
|
||||
"fields": [
|
||||
{ "name": "text", "type": "unicode-be-null", "description": "Speech text (Big Endian Unicode)" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0xAE", "relationship": "response", "note": "Unicode Message sent to other clients" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMessagePackets.cs",
|
||||
"line": 58
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"category": "Message",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x03",
|
||||
"name": "ASCII Speech",
|
||||
"description": "Client sends ASCII-encoded speech message.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x03",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Message type",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Regular",
|
||||
"description": "Normal speech"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "System",
|
||||
"description": "System message"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Emote",
|
||||
"description": "Emote (*action*)"
|
||||
},
|
||||
{
|
||||
"value": 6,
|
||||
"name": "Label",
|
||||
"description": "Object label"
|
||||
},
|
||||
{
|
||||
"value": 7,
|
||||
"name": "Focus",
|
||||
"description": "Focused message"
|
||||
},
|
||||
{
|
||||
"value": 8,
|
||||
"name": "Whisper",
|
||||
"description": "Whisper"
|
||||
},
|
||||
{
|
||||
"value": 9,
|
||||
"name": "Yell",
|
||||
"description": "Yell"
|
||||
},
|
||||
{
|
||||
"value": 10,
|
||||
"name": "Spell",
|
||||
"description": "Spell words"
|
||||
},
|
||||
{
|
||||
"value": 13,
|
||||
"name": "Guild",
|
||||
"description": "Guild chat"
|
||||
},
|
||||
{
|
||||
"value": 14,
|
||||
"name": "Alliance",
|
||||
"description": "Alliance chat"
|
||||
},
|
||||
{
|
||||
"value": 15,
|
||||
"name": "Command",
|
||||
"description": "Command"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "ascii-t",
|
||||
"description": "Speech text (max 128 chars)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x1C",
|
||||
"relationship": "response",
|
||||
"note": "ASCII Message sent to other clients"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMessagePackets.cs",
|
||||
"line": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xAD",
|
||||
"name": "Unicode Speech",
|
||||
"description": "Client sends Unicode-encoded speech message with optional keywords.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xAD",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "bitfield",
|
||||
"size": 1,
|
||||
"description": "Message type with possible Encoded flag",
|
||||
"flags": [
|
||||
{
|
||||
"bit": "3-0",
|
||||
"name": "Message Type",
|
||||
"description": "Base message type (see 0x03)"
|
||||
},
|
||||
{
|
||||
"bit": "7-6",
|
||||
"name": "Encoded",
|
||||
"description": "If set, packet contains encoded keywords"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 4,
|
||||
"description": "Language code (e.g., \u0027ENU\u0027)"
|
||||
},
|
||||
{
|
||||
"name": "Encoded Keywords",
|
||||
"type": "conditional",
|
||||
"condition": "type \u0026 0xC0 != 0",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Keyword Value",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Keyword count (upper 12 bits) and first hold value (lower 4 bits)"
|
||||
},
|
||||
{
|
||||
"name": "Keywords",
|
||||
"type": "byte[]",
|
||||
"description": "Packed keyword IDs"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf8-t",
|
||||
"description": "Speech text (UTF-8 when encoded)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Unicode Text",
|
||||
"type": "conditional",
|
||||
"condition": "type \u0026 0xC0 == 0",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be-t",
|
||||
"description": "Speech text (Big Endian Unicode)"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xAE",
|
||||
"relationship": "response",
|
||||
"note": "Unicode Message sent to other clients"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMessagePackets.cs",
|
||||
"line": 58
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,132 +1,236 @@
|
|||
{
|
||||
"category": "Mobile",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x6F",
|
||||
"name": "Secure Trade",
|
||||
"description": "Client interacts with a secure trade window.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x6F", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{
|
||||
"name": "action",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Trade action type",
|
||||
"values": [
|
||||
{ "value": 1, "name": "Cancel", "description": "Cancel the trade" },
|
||||
{ "value": 2, "name": "Check", "description": "Toggle accept checkbox" },
|
||||
{ "value": 3, "name": "UpdateGold", "description": "Update virtual gold/platinum amounts" }
|
||||
]
|
||||
},
|
||||
{ "name": "containerSerial", "type": "uint", "size": 4, "description": "Serial of the trade container" },
|
||||
{
|
||||
"name": "checkData",
|
||||
"type": "conditional",
|
||||
"condition": "action == 2",
|
||||
"fields": [
|
||||
{ "name": "accepted", "type": "int", "size": 4, "description": "Non-zero if accepting trade" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "goldData",
|
||||
"type": "conditional",
|
||||
"condition": "action == 3",
|
||||
"fields": [
|
||||
{ "name": "gold", "type": "int", "size": 4, "description": "Gold amount to trade" },
|
||||
{ "name": "platinum", "type": "int", "size": 4, "description": "Platinum amount to trade" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x6F", "relationship": "response", "note": "Server sends Secure Trade packet updates" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 93
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x75",
|
||||
"name": "Rename Request",
|
||||
"description": "Client requests to rename a mobile (pet).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 35,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x75", "description": "Packet identifier" },
|
||||
{ "name": "targetSerial", "type": "uint", "size": 4, "description": "Serial of mobile to rename" },
|
||||
{ "name": "newName", "type": "ascii", "size": 30, "description": "New name for the mobile" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 32
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x98",
|
||||
"name": "Mobile Name Request",
|
||||
"description": "Client requests the name of a mobile.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x98", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{ "name": "mobileSerial", "type": "uint", "size": 4, "description": "Serial of mobile to query" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x98", "relationship": "response", "note": "Server sends Mobile Name response" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 43
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xB8",
|
||||
"name": "Profile Request",
|
||||
"description": "Client requests to view or edit a mobile's profile.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xB8", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{
|
||||
"name": "mode",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Request mode",
|
||||
"values": [
|
||||
{ "value": 0, "name": "Display", "description": "Request to view profile" },
|
||||
{ "value": 1, "name": "Edit", "description": "Request to edit profile" }
|
||||
]
|
||||
},
|
||||
{ "name": "mobileSerial", "type": "uint", "size": 4, "description": "Serial of target mobile" },
|
||||
{
|
||||
"name": "editData",
|
||||
"type": "conditional",
|
||||
"condition": "mode == 1",
|
||||
"fields": [
|
||||
{ "name": "padding", "type": "short", "size": 2, "description": "Unused padding" },
|
||||
{ "name": "textLength", "type": "ushort", "size": 2, "description": "Length of text in characters" },
|
||||
{ "name": "text", "type": "unicode-be", "description": "New profile text" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0xB8", "relationship": "response", "note": "Display Profile packet" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 53
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"category": "Mobile",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x6F",
|
||||
"name": "Secure Trade",
|
||||
"description": "Client interacts with a secure trade window.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Action",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Trade action type",
|
||||
"values": [
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Cancel",
|
||||
"description": "Cancel the trade"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Check",
|
||||
"description": "Toggle accept checkbox"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Update Gold",
|
||||
"description": "Update virtual gold/platinum amounts"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the trade container"
|
||||
},
|
||||
{
|
||||
"name": "Check Data",
|
||||
"type": "conditional",
|
||||
"condition": "action == 2",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Accepted",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Non-zero if accepting trade"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Gold Data",
|
||||
"type": "conditional",
|
||||
"condition": "action == 3",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Gold",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Gold amount to trade"
|
||||
},
|
||||
{
|
||||
"name": "Platinum",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Platinum amount to trade"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 93
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x75",
|
||||
"name": "Rename Request",
|
||||
"description": "Client requests to rename a mobile (pet).",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 35,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x75",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of mobile to rename"
|
||||
},
|
||||
{
|
||||
"name": "New Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "New name for the mobile"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 32
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x98",
|
||||
"name": "Mobile Name Request",
|
||||
"description": "Client requests the name of a mobile.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x98",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of mobile to query"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 43
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xB8",
|
||||
"name": "Profile Request",
|
||||
"description": "Client requests to view or edit a mobile\u0027s profile.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB8",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Mode",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Request mode",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Display",
|
||||
"description": "Request to view profile"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Edit",
|
||||
"description": "Request to edit profile"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of target mobile"
|
||||
},
|
||||
{
|
||||
"name": "Edit Data",
|
||||
"type": "conditional",
|
||||
"condition": "mode == 1",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Unused padding"
|
||||
},
|
||||
{
|
||||
"name": "Text Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of text in characters"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be",
|
||||
"description": "New profile text"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMobilePackets.cs",
|
||||
"line": 53
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,27 +1,56 @@
|
|||
{
|
||||
"category": "Movement",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x02",
|
||||
"name": "Movement Request",
|
||||
"description": "Sent by the client when the player attempts to move in a direction. The server responds with either MovementAck (0x22) if successful or MovementRej (0x21) if blocked.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x02", "description": "Packet identifier" },
|
||||
{ "name": "direction", "type": "byte", "size": 1, "description": "Movement direction (0-7). Bit 0x80 indicates running." },
|
||||
{ "name": "sequence", "type": "byte", "size": 1, "description": "Movement sequence number (1-255, wraps). Used for ack/rej matching." },
|
||||
{ "name": "fastwalkKey", "type": "uint", "size": 4, "description": "Anti-speedhack prevention key. Set to 0 if fastwalk prevention is disabled." }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x21", "relationship": "rej", "note": "Sent if movement is blocked" },
|
||||
{ "id": "0x22", "relationship": "ack", "note": "Sent if movement is successful" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMovementPackets.cs",
|
||||
"line": 83
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"category": "Movement",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x02",
|
||||
"name": "Movement Request",
|
||||
"description": "Sent by the client when the player attempts to move in a direction. The server responds with either MovementAck (0x22) if successful or MovementRej (0x21) if blocked.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x02",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Movement direction (0-7). Bit 0x80 indicates running."
|
||||
},
|
||||
{
|
||||
"name": "Sequence",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Movement sequence number (1-255, wraps). Used for ack/rej matching."
|
||||
},
|
||||
{
|
||||
"name": "Fastwalk Key",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Anti-speedhack prevention key. Set to 0 if fastwalk prevention is disabled."
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x21",
|
||||
"relationship": "rej",
|
||||
"note": "Sent if movement is blocked"
|
||||
},
|
||||
{
|
||||
"id": "0x22",
|
||||
"relationship": "ack",
|
||||
"note": "Sent if movement is successful"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingMovementPackets.cs",
|
||||
"line": 83
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,55 +1,117 @@
|
|||
{
|
||||
"category": "Targeting",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x6C",
|
||||
"name": "Target Response",
|
||||
"description": "Client responds to a target cursor request.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 19,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x6C", "description": "Packet identifier" },
|
||||
{
|
||||
"name": "type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Target type",
|
||||
"values": [
|
||||
{ "value": 0, "name": "Object", "description": "Targeting a specific object (mobile/item)" },
|
||||
{ "value": 1, "name": "Location", "description": "Targeting a location/tile" }
|
||||
]
|
||||
},
|
||||
{ "name": "targetId", "type": "int", "size": 4, "description": "Target cursor ID to match request" },
|
||||
{
|
||||
"name": "flags",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Target flags",
|
||||
"values": [
|
||||
{ "value": 0, "name": "Neutral", "description": "Neutral targeting" },
|
||||
{ "value": 1, "name": "Harmful", "description": "Harmful action" },
|
||||
{ "value": 2, "name": "Beneficial", "description": "Beneficial action" },
|
||||
{ "value": 3, "name": "Cancel", "description": "Targeting canceled" }
|
||||
]
|
||||
},
|
||||
{ "name": "targetSerial", "type": "uint", "size": 4, "description": "Serial of targeted object (0 for ground)" },
|
||||
{ "name": "x", "type": "short", "size": 2, "description": "Target X coordinate (-1 if canceled)" },
|
||||
{ "name": "y", "type": "short", "size": 2, "description": "Target Y coordinate (-1 if canceled)" },
|
||||
{ "name": "unknown", "type": "byte", "size": 1, "description": "Unknown (typically 0)" },
|
||||
{ "name": "z", "type": "sbyte", "size": 1, "description": "Target Z coordinate" },
|
||||
{ "name": "graphic", "type": "ushort", "size": 2, "description": "Graphic ID of targeted tile (0 for land)" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x6C", "relationship": "request", "note": "Target Request packet that initiated this" }
|
||||
],
|
||||
"notes": "If x == -1 && y == -1 && serial is invalid, user pressed Escape to cancel targeting.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingTargetingPackets.cs",
|
||||
"line": 28
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"category": "Targeting",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x6C",
|
||||
"name": "Target Response",
|
||||
"description": "Client responds to a target cursor request.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": false,
|
||||
"size": 19,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Target type",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Object",
|
||||
"description": "Targeting a specific object (mobile/item)"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Location",
|
||||
"description": "Targeting a location/tile"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Target ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Target cursor ID to match request"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Target flags",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Neutral",
|
||||
"description": "Neutral targeting"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Harmful",
|
||||
"description": "Harmful action"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Beneficial",
|
||||
"description": "Beneficial action"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Cancel",
|
||||
"description": "Targeting canceled"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of targeted object (0 for ground)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target X coordinate (-1 if canceled)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target Y coordinate (-1 if canceled)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Unknown (typically 0)"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Target Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Graphic ID of targeted tile (0 for land)"
|
||||
}
|
||||
],
|
||||
"notes": "If x == -1 \u0026\u0026 y == -1 \u0026\u0026 serial is invalid, user pressed Escape to cancel targeting.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingTargetingPackets.cs",
|
||||
"line": 28
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,70 +1,145 @@
|
|||
{
|
||||
"category": "Vendor",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x3B",
|
||||
"name": "Vendor Buy Reply",
|
||||
"description": "Client confirms items to purchase from a vendor.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x3B", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{ "name": "vendorSerial", "type": "uint", "size": 4, "description": "Serial of the vendor" },
|
||||
{ "name": "flag", "type": "byte", "size": 1, "description": "0x00 = buy, 0x02 = cancel" },
|
||||
{
|
||||
"name": "items",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"untilEnd": true,
|
||||
"fields": [
|
||||
{ "name": "layer", "type": "byte", "size": 1, "description": "Layer/container index" },
|
||||
{ "name": "itemSerial", "type": "uint", "size": 4, "description": "Serial of item to buy" },
|
||||
{ "name": "amount", "type": "short", "size": 2, "description": "Amount to purchase" }
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x74", "relationship": "request", "note": "Vendor Buy List packet that initiated this" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingVendorPackets.cs",
|
||||
"line": 25
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x9F",
|
||||
"name": "Vendor Sell Reply",
|
||||
"description": "Client confirms items to sell to a vendor.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x9F", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{ "name": "vendorSerial", "type": "uint", "size": 4, "description": "Serial of the vendor" },
|
||||
{ "name": "itemCount", "type": "ushort", "size": 2, "description": "Number of items to sell" },
|
||||
{
|
||||
"name": "items",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"fields": [
|
||||
{ "name": "itemSerial", "type": "uint", "size": 4, "description": "Serial of item to sell" },
|
||||
{ "name": "amount", "type": "short", "size": 2, "description": "Amount to sell" }
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x9E", "relationship": "request", "note": "Vendor Sell List packet that initiated this" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingVendorPackets.cs",
|
||||
"line": 26
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"category": "Vendor",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x3B",
|
||||
"name": "Vendor Buy Reply",
|
||||
"description": "Client confirms items to purchase from a vendor.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x3B",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Vendor Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the vendor"
|
||||
},
|
||||
{
|
||||
"name": "Flag",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "0x00 = buy, 0x02 = cancel"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"untilEnd": true,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Layer",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Layer/container index"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item to buy"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Amount to purchase"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x74",
|
||||
"relationship": "request",
|
||||
"note": "Vendor Buy List packet that initiated this"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingVendorPackets.cs",
|
||||
"line": 25
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x9F",
|
||||
"name": "Vendor Sell Reply",
|
||||
"description": "Client confirms items to sell to a vendor.",
|
||||
"direction": "incoming",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x9F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Vendor Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the vendor"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of items to sell"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of item to sell"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Amount to sell"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x9E",
|
||||
"relationship": "request",
|
||||
"note": "Vendor Sell List packet that initiated this"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Network/Packets/IncomingVendorPackets.cs",
|
||||
"line": 26
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
138
Distribution/Data/packets/outgoing/arrow.json
Normal file
138
Distribution/Data/packets/outgoing/arrow.json
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
{
|
||||
"category": "Quest Arrow",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xBA",
|
||||
"name": "Quest Arrow",
|
||||
"description": "Sets or cancels the quest tracking arrow on the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Pre-High Seas Set Arrow",
|
||||
"version": "pre-HS",
|
||||
"condition": "command == 1 (Set), pre-HighSeas client",
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Set arrow command"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target Y coordinate"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Pre-High Seas Cancel Arrow",
|
||||
"version": "pre-HS",
|
||||
"condition": "command == 0 (Cancel), pre-HighSeas client",
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Cancel arrow command"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "-1",
|
||||
"description": "X coordinate (-1)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "-1",
|
||||
"description": "Y coordinate (-1)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "High Seas",
|
||||
"version": "HS+",
|
||||
"condition": "HighSeas client (7.0.9.0+)",
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Command (0 = cancel, 1 = set)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Target Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of tracked target"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x07",
|
||||
"relationship": "request",
|
||||
"note": "Quest Arrow Click from client"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "HighSeas (7.0.9.0+) adds target serial"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Skills/Tracking/OutgoingArrowPackets.cs",
|
||||
"line": 29
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
75
Distribution/Data/packets/outgoing/assistant.json
Normal file
75
Distribution/Data/packets/outgoing/assistant.json
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
{
|
||||
"category": "Assistant",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xF0",
|
||||
"name": "Assistant Handshake",
|
||||
"description": "Server sends handshake to negotiate assistant features with Razor-style clients. Contains disallowed feature flags.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 12,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF0",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x000C",
|
||||
"description": "Packet length (12)"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xFE",
|
||||
"description": "Handshake command"
|
||||
},
|
||||
{
|
||||
"name": "Disallowed Features",
|
||||
"type": "ulong",
|
||||
"size": 8,
|
||||
"description": "Bitmask of disallowed assistant features"
|
||||
}
|
||||
],
|
||||
"notes": "Used for assistant negotiation with Razor Community Edition and similar clients. If negotiation fails within 30 seconds, the server may kick the player.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Assistants/AssistantHandler.cs",
|
||||
"line": 132
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBE",
|
||||
"name": "Assistant Version Request",
|
||||
"description": "Server requests assistant version information from the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 3,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBE",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0003",
|
||||
"description": "Packet length (3)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Assistants/AssistantHandler.cs",
|
||||
"line": 122
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
182
Distribution/Data/packets/outgoing/boat.json
Normal file
182
Distribution/Data/packets/outgoing/boat.json
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
{
|
||||
"category": "Boat",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xF6",
|
||||
"name": "Boat Move (High Seas)",
|
||||
"description": "Sent when a boat moves, containing the boat\u0027s new position and all entities on board with their updated positions.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "18 + (entityCount x 10)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF6",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Boat Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the boat"
|
||||
},
|
||||
{
|
||||
"name": "Speed",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Boat movement speed"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Movement direction (0-7)"
|
||||
},
|
||||
{
|
||||
"name": "Facing",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Boat facing direction"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Boat X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Boat Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Boat Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Entity Count",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Number of entities on boat (max 65535)"
|
||||
},
|
||||
{
|
||||
"name": "Entities",
|
||||
"type": "array",
|
||||
"description": "Entities on the boat with their positions",
|
||||
"loop": {
|
||||
"countField": "entityCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entity X coordinate (boat offset applied)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entity Y coordinate (boat offset applied)"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entity Z coordinate"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "HighSeas"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Boats/BoatPackets.cs",
|
||||
"line": 27
|
||||
},
|
||||
"notes": "High Seas expansion only. Entities include mobiles and items on the boat. Coordinates include the boat\u0027s movement offset."
|
||||
},
|
||||
{
|
||||
"id": "0xF7",
|
||||
"name": "Packet Container",
|
||||
"description": "Container packet for batching multiple entity packets. Used for efficient display of boats and other groups of entities.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "5+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Total packet length"
|
||||
},
|
||||
{
|
||||
"name": "Packet Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of embedded packets"
|
||||
},
|
||||
{
|
||||
"name": "Packets",
|
||||
"type": "array",
|
||||
"description": "Embedded packets (typically 0xF3 World Entity packets)",
|
||||
"loop": {
|
||||
"countField": "packetCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Embedded Packet",
|
||||
"type": "packet",
|
||||
"description": "Complete embedded packet (0xF3 World Entity or similar)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xF3",
|
||||
"relationship": "contains",
|
||||
"note": "Typically contains World Entity packets"
|
||||
},
|
||||
{
|
||||
"id": "0xF6",
|
||||
"relationship": "variant",
|
||||
"note": "Used alongside Move Boat HS for boat display"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "HighSeas"
|
||||
},
|
||||
"notes": "Uses PacketContainerBuilder for dynamic growth when embedding many packets. Minimum packet length is 5 bytes (header only).",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/PacketContainerBuilder.cs",
|
||||
"line": 23
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
217
Distribution/Data/packets/outgoing/book.json
Normal file
217
Distribution/Data/packets/outgoing/book.json
Normal file
|
|
@ -0,0 +1,217 @@
|
|||
{
|
||||
"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."
|
||||
}
|
||||
]
|
||||
}
|
||||
304
Distribution/Data/packets/outgoing/bufficon.json
Normal file
304
Distribution/Data/packets/outgoing/bufficon.json
Normal file
|
|
@ -0,0 +1,304 @@
|
|||
{
|
||||
"category": "Buff Icon",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xDF",
|
||||
"name": "Buff/Debuff System",
|
||||
"description": "Manages buff and debuff icons displayed on the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Remove Buff",
|
||||
"condition": "command == 0 (Remove)",
|
||||
"size": 15,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "15",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the mobile"
|
||||
},
|
||||
{
|
||||
"name": "Icon ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Buff icon ID"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Remove command"
|
||||
},
|
||||
{
|
||||
"name": "Unused",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Add Buff (No Args)",
|
||||
"condition": "command == 1 (Add), no arguments",
|
||||
"size": 46,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "46",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the mobile"
|
||||
},
|
||||
{
|
||||
"name": "Icon ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Buff icon ID"
|
||||
},
|
||||
{
|
||||
"name": "Command1",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Add command"
|
||||
},
|
||||
{
|
||||
"name": "Unused1",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Icon Id2",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Buff icon ID (repeated)"
|
||||
},
|
||||
{
|
||||
"name": "Command2",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Add command (repeated)"
|
||||
},
|
||||
{
|
||||
"name": "Unused2",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Duration",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Duration in seconds"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 3,
|
||||
"description": "Padding (zeros)"
|
||||
},
|
||||
{
|
||||
"name": "Title Cliloc",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Title cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Secondary Cliloc",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Secondary cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Empty Args",
|
||||
"type": "byte[]",
|
||||
"size": 10,
|
||||
"description": "Empty arguments (zeros)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Add Buff (With Args)",
|
||||
"condition": "command == 1 (Add), with arguments",
|
||||
"size": "52 + (args.Length x 2)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the mobile"
|
||||
},
|
||||
{
|
||||
"name": "Icon ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Buff icon ID"
|
||||
},
|
||||
{
|
||||
"name": "Command1",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Add command"
|
||||
},
|
||||
{
|
||||
"name": "Unused1",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Icon Id2",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Buff icon ID (repeated)"
|
||||
},
|
||||
{
|
||||
"name": "Command2",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Add command (repeated)"
|
||||
},
|
||||
{
|
||||
"name": "Unused2",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Duration",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Duration in seconds"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 3,
|
||||
"description": "Padding (zeros)"
|
||||
},
|
||||
{
|
||||
"name": "Title Cliloc",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Title cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Secondary Cliloc",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Secondary cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Unused3",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Has Args",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Has arguments flag"
|
||||
},
|
||||
{
|
||||
"name": "Unused4",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Tab Prefix",
|
||||
"type": "utf16le",
|
||||
"size": 2,
|
||||
"value": "\\t",
|
||||
"description": "Tab character prefix"
|
||||
},
|
||||
{
|
||||
"name": "Arguments",
|
||||
"type": "utf16le-t",
|
||||
"description": "Cliloc arguments"
|
||||
},
|
||||
{
|
||||
"name": "Has Args2",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Has arguments flag (repeated)"
|
||||
},
|
||||
{
|
||||
"name": "Unused5",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "5.0.2b",
|
||||
"feature": "BuffIcon"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Engines/BuffIcons/BuffIconPackets.cs",
|
||||
"line": 8
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
279
Distribution/Data/packets/outgoing/bulletinboard.json
Normal file
279
Distribution/Data/packets/outgoing/bulletinboard.json
Normal file
|
|
@ -0,0 +1,279 @@
|
|||
{
|
||||
"category": "Bulletin Board",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x71",
|
||||
"name": "Bulletin Board",
|
||||
"description": "Bulletin board display and message packets.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Display Board",
|
||||
"version": "0x00",
|
||||
"condition": "command == 0x00",
|
||||
"size": 38,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x71",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "38",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Display board command"
|
||||
},
|
||||
{
|
||||
"name": "Board Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the bulletin board"
|
||||
},
|
||||
{
|
||||
"name": "Board Name",
|
||||
"type": "utf8",
|
||||
"size": 30,
|
||||
"description": "Board name (null-padded to 30 bytes)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Message Header",
|
||||
"version": "0x01",
|
||||
"condition": "command == 0x01",
|
||||
"size": "22+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x71",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Message header command"
|
||||
},
|
||||
{
|
||||
"name": "Board Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the bulletin board"
|
||||
},
|
||||
{
|
||||
"name": "Message Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the message"
|
||||
},
|
||||
{
|
||||
"name": "Thread Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of parent thread (0 if root)"
|
||||
},
|
||||
{
|
||||
"name": "Poster Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of poster name"
|
||||
},
|
||||
{
|
||||
"name": "Poster",
|
||||
"type": "utf8-t",
|
||||
"description": "Poster name"
|
||||
},
|
||||
{
|
||||
"name": "Subject Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of subject"
|
||||
},
|
||||
{
|
||||
"name": "Subject",
|
||||
"type": "utf8-t",
|
||||
"description": "Message subject"
|
||||
},
|
||||
{
|
||||
"name": "Time Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of time string"
|
||||
},
|
||||
{
|
||||
"name": "Time",
|
||||
"type": "utf8-t",
|
||||
"description": "Posted time string"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Message Content",
|
||||
"version": "0x02",
|
||||
"condition": "command == 0x02",
|
||||
"size": "22+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x71",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x02",
|
||||
"description": "Message content command"
|
||||
},
|
||||
{
|
||||
"name": "Board Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the bulletin board"
|
||||
},
|
||||
{
|
||||
"name": "Message Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the message"
|
||||
},
|
||||
{
|
||||
"name": "Poster Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of poster name"
|
||||
},
|
||||
{
|
||||
"name": "Poster",
|
||||
"type": "utf8-t",
|
||||
"description": "Poster name"
|
||||
},
|
||||
{
|
||||
"name": "Subject Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of subject"
|
||||
},
|
||||
{
|
||||
"name": "Subject",
|
||||
"type": "utf8-t",
|
||||
"description": "Message subject"
|
||||
},
|
||||
{
|
||||
"name": "Time Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of time string"
|
||||
},
|
||||
{
|
||||
"name": "Time",
|
||||
"type": "utf8-t",
|
||||
"description": "Posted time string"
|
||||
},
|
||||
{
|
||||
"name": "Poster Body",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Poster body graphic"
|
||||
},
|
||||
{
|
||||
"name": "Poster Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Poster body hue"
|
||||
},
|
||||
{
|
||||
"name": "Equip Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of equipment items"
|
||||
},
|
||||
{
|
||||
"name": "Equipment",
|
||||
"type": "loop",
|
||||
"description": "Poster\u0027s equipment",
|
||||
"loop": {
|
||||
"countField": "equipCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Equipment item graphic"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Equipment hue"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Line Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of text lines"
|
||||
},
|
||||
{
|
||||
"name": "Lines",
|
||||
"type": "loop",
|
||||
"description": "Message lines",
|
||||
"loop": {
|
||||
"countField": "lineCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Line Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Line length"
|
||||
},
|
||||
{
|
||||
"name": "Line",
|
||||
"type": "utf8",
|
||||
"description": "Line text with 2-byte terminator (old client bug)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Bulletin Boards/BulletinBoardPackets.cs",
|
||||
"line": 168
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
69
Distribution/Data/packets/outgoing/chat.json
Normal file
69
Distribution/Data/packets/outgoing/chat.json
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
"category": "Chat",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xB2",
|
||||
"name": "Chat Message",
|
||||
"description": "Server sends chat system messages and commands to the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "13+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB2",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Chat command number (original number minus 20)"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 4,
|
||||
"description": "Language code (e.g., \u0027enu\u0027 for English)"
|
||||
},
|
||||
{
|
||||
"name": "Param 1",
|
||||
"type": "utf16be-t",
|
||||
"description": "First parameter (Big Endian Unicode, null-terminated)"
|
||||
},
|
||||
{
|
||||
"name": "Param 2",
|
||||
"type": "utf16be-t",
|
||||
"description": "Second parameter (Big Endian Unicode, null-terminated)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xB3",
|
||||
"direction": "incoming",
|
||||
"relationship": "request",
|
||||
"note": "Client sends Chat Action"
|
||||
},
|
||||
{
|
||||
"id": "0xB5",
|
||||
"direction": "incoming",
|
||||
"relationship": "request",
|
||||
"note": "Client sends Open Chat Window Request"
|
||||
}
|
||||
],
|
||||
"notes": "Part of the in-game chat system. Command numbers are offset by -20 from original values.",
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Engines/Chat/ChatPackets.cs",
|
||||
"line": 104
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,61 +1,120 @@
|
|||
{
|
||||
"category": "Combat",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x2F",
|
||||
"name": "Swing",
|
||||
"description": "Notifies client of a melee swing between two mobiles.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x2F", "description": "Packet identifier" },
|
||||
{ "name": "unknown", "type": "byte", "size": 1, "value": "0x00", "description": "Unknown" },
|
||||
{ "name": "attackerSerial", "type": "uint", "size": 4, "description": "Serial of attacker" },
|
||||
{ "name": "defenderSerial", "type": "uint", "size": 4, "description": "Serial of defender" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingCombatPackets.cs",
|
||||
"line": 23
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x72",
|
||||
"name": "Set War Mode",
|
||||
"description": "Sets the client's war/peace mode state.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x72", "description": "Packet identifier" },
|
||||
{ "name": "warmode", "type": "bool", "size": 1, "description": "True = war mode, False = peace mode" },
|
||||
{ "name": "unknown1", "type": "byte", "size": 1, "value": "0x00", "description": "Unknown" },
|
||||
{ "name": "unknown2", "type": "byte", "size": 1, "value": "0x32", "description": "Unknown (50)" },
|
||||
{ "name": "unknown3", "type": "byte", "size": 1, "value": "0x00", "description": "Unknown" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x72", "relationship": "request", "note": "Set War Mode from client" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingCombatPackets.cs",
|
||||
"line": 40
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xAA",
|
||||
"name": "Change Combatant",
|
||||
"description": "Notifies client of current combat target.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xAA", "description": "Packet identifier" },
|
||||
{ "name": "combatantSerial", "type": "uint", "size": 4, "description": "Serial of current combatant (0 = none)" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingCombatPackets.cs",
|
||||
"line": 43
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"category": "Combat",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x2F",
|
||||
"name": "Swing",
|
||||
"description": "Notifies client of a melee swing between two mobiles.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x2F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Attacker Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of attacker"
|
||||
},
|
||||
{
|
||||
"name": "Defender Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of defender"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingCombatPackets.cs",
|
||||
"line": 23
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x72",
|
||||
"name": "Set War Mode",
|
||||
"description": "Sets the client\u0027s war/peace mode state.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x72",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Warmode",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True = war mode, False = peace mode"
|
||||
},
|
||||
{
|
||||
"name": "Unknown1",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x32",
|
||||
"description": "Unknown (50)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown3",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingCombatPackets.cs",
|
||||
"line": 40
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xAA",
|
||||
"name": "Change Combatant",
|
||||
"description": "Notifies client of current combat target.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xAA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Combatant Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of current combatant (0 = none)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingCombatPackets.cs",
|
||||
"line": 43
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,161 +1,574 @@
|
|||
{
|
||||
"category": "Container",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x24",
|
||||
"name": "Display Container",
|
||||
"description": "Opens a container gump on the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "7 (pre-HS) or 9 (HS+)",
|
||||
"variants": [
|
||||
{
|
||||
"version": "pre-HighSeas",
|
||||
"name": "Classic",
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x24", "description": "Packet identifier" },
|
||||
{ "name": "containerSerial", "type": "uint", "size": 4, "description": "Serial of the container" },
|
||||
{ "name": "gumpId", "type": "ushort", "size": 2, "description": "Gump graphic ID" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "HighSeas+",
|
||||
"name": "High Seas Extended",
|
||||
"condition": "Client version >= 7.0.9.0 (HighSeas)",
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x24", "description": "Packet identifier" },
|
||||
{ "name": "containerSerial", "type": "uint", "size": 4, "description": "Serial of the container" },
|
||||
{ "name": "gumpId", "type": "ushort", "size": 2, "description": "Gump graphic ID" },
|
||||
{ "name": "containerType", "type": "short", "size": 2, "value": "0x007D", "description": "Container type (125)" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "HighSeas adds containerType field"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 108
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x25",
|
||||
"name": "Container Content Update",
|
||||
"description": "Updates a single item in a container.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "20 (pre-6017) or 21 (6017+)",
|
||||
"variants": [
|
||||
{
|
||||
"version": "pre-6017",
|
||||
"name": "Classic",
|
||||
"size": 20,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x25", "description": "Packet identifier" },
|
||||
{ "name": "itemSerial", "type": "uint", "size": 4, "description": "Serial of the item" },
|
||||
{ "name": "itemId", "type": "ushort", "size": 2, "description": "Item graphic ID" },
|
||||
{ "name": "itemIdOffset", "type": "byte", "size": 1, "value": "0x00", "description": "Item ID offset (signed)" },
|
||||
{ "name": "amount", "type": "ushort", "size": 2, "description": "Stack amount" },
|
||||
{ "name": "x", "type": "short", "size": 2, "description": "X position in container" },
|
||||
{ "name": "y", "type": "short", "size": 2, "description": "Y position in container" },
|
||||
{ "name": "containerSerial", "type": "uint", "size": 4, "description": "Serial of parent container" },
|
||||
{ "name": "hue", "type": "ushort", "size": 2, "description": "Item hue" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "6017+",
|
||||
"name": "Container Grid Lines",
|
||||
"condition": "Client version >= 6.0.1.7 (ContainerGridLines)",
|
||||
"size": 21,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x25", "description": "Packet identifier" },
|
||||
{ "name": "itemSerial", "type": "uint", "size": 4, "description": "Serial of the item" },
|
||||
{ "name": "itemId", "type": "ushort", "size": 2, "description": "Item graphic ID" },
|
||||
{ "name": "itemIdOffset", "type": "byte", "size": 1, "value": "0x00", "description": "Item ID offset (signed)" },
|
||||
{ "name": "amount", "type": "ushort", "size": 2, "description": "Stack amount" },
|
||||
{ "name": "x", "type": "short", "size": 2, "description": "X position in container" },
|
||||
{ "name": "y", "type": "short", "size": 2, "description": "Y position in container" },
|
||||
{ "name": "gridLocation", "type": "byte", "size": 1, "description": "Grid slot position" },
|
||||
{ "name": "containerSerial", "type": "uint", "size": 4, "description": "Serial of parent container" },
|
||||
{ "name": "hue", "type": "ushort", "size": 2, "description": "Item hue" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "ContainerGridLines adds gridLocation byte"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 127
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x3C",
|
||||
"name": "Container Content",
|
||||
"description": "Sends full contents of a container.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x3C", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{ "name": "itemCount", "type": "ushort", "size": 2, "description": "Number of items" },
|
||||
{
|
||||
"name": "items",
|
||||
"type": "loop",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"itemSize": "19 (pre-6017) or 20 (6017+)",
|
||||
"fields": [
|
||||
{ "name": "itemSerial", "type": "uint", "size": 4, "description": "Serial of the item" },
|
||||
{ "name": "itemId", "type": "ushort", "size": 2, "description": "Item graphic ID" },
|
||||
{ "name": "itemIdOffset", "type": "byte", "size": 1, "description": "Item ID offset (signed)" },
|
||||
{ "name": "amount", "type": "ushort", "size": 2, "description": "Stack amount" },
|
||||
{ "name": "x", "type": "short", "size": 2, "description": "X position in container" },
|
||||
{ "name": "y", "type": "short", "size": 2, "description": "Y position in container" },
|
||||
{ "name": "gridLocation", "type": "byte", "size": 1, "description": "Grid slot (6017+ only)", "condition": "ContainerGridLines" },
|
||||
{ "name": "containerSerial", "type": "uint", "size": 4, "description": "Serial of parent container" },
|
||||
{ "name": "hue", "type": "ushort", "size": 2, "description": "Item hue" }
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "ContainerGridLines adds gridLocation byte per item"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 169
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF/0x1B",
|
||||
"name": "New Spellbook Content",
|
||||
"description": "Sends spellbook contents using AOS format.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 23,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "value": "23", "description": "Packet length" },
|
||||
{ "name": "subCommand", "type": "short", "size": 2, "value": "0x1B", "description": "Subcommand (New Spellbook Content)" },
|
||||
{ "name": "command", "type": "short", "size": 2, "value": "0x01", "description": "Command (always 1)" },
|
||||
{ "name": "bookSerial", "type": "uint", "size": 4, "description": "Serial of the spellbook" },
|
||||
{ "name": "graphic", "type": "short", "size": 2, "description": "Spellbook graphic ID" },
|
||||
{ "name": "offset", "type": "short", "size": 2, "description": "Spell offset (circle/school start)" },
|
||||
{ "name": "spellBits", "type": "ulong", "size": 8, "description": "64-bit mask of known spells (Little Endian)" }
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "5.0.0a",
|
||||
"feature": "NewSpellbook"
|
||||
},
|
||||
"notes": "Used when Core.AOS && ns.NewSpellbook. Otherwise, old 0x3C format is used.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 46
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"category": "Container",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x24",
|
||||
"name": "Display Container",
|
||||
"description": "Opens a container gump on the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"version": "pre-HighSeas",
|
||||
"name": "Classic",
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x24",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the container"
|
||||
},
|
||||
{
|
||||
"name": "Gump ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Gump graphic ID"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "HighSeas+",
|
||||
"name": "High Seas Extended",
|
||||
"condition": "Client version \u003e= 7.0.9.0 (HighSeas)",
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x24",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the container"
|
||||
},
|
||||
{
|
||||
"name": "Gump ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Gump graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Container Type",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x007D",
|
||||
"description": "Container type (125)"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "HighSeas adds containerType field"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 108
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x25",
|
||||
"name": "Container Content Update",
|
||||
"description": "Updates a single item in a container.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"version": "pre-6017",
|
||||
"name": "Classic",
|
||||
"size": 20,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x25",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Item ID Offset",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Item ID offset (signed)"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Stack amount"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X position in container"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y position in container"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of parent container"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "6017+",
|
||||
"name": "Container Grid Lines",
|
||||
"condition": "Client version \u003e= 6.0.1.7 (ContainerGridLines)",
|
||||
"size": 21,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x25",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Item ID Offset",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Item ID offset (signed)"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Stack amount"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X position in container"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y position in container"
|
||||
},
|
||||
{
|
||||
"name": "Grid Location",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Grid slot position"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of parent container"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "ContainerGridLines adds gridLocation byte"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 127
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x3C",
|
||||
"name": "Container \u0026 Old Spellbook Content",
|
||||
"description": "Sends full contents of a container. Also used for old-style spellbook content (pre-AOS clients without NewSpellbook support). For AOS+ clients with NewSpellbook, use 0xBF/0x1B instead for spellbooks.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"version": "pre-6017",
|
||||
"name": "Classic Format",
|
||||
"condition": "Client version \u003c 6.0.1.7",
|
||||
"size": "5 + (itemCount x 19)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x3C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of items"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"description": "Item entries (19 bytes each)",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"itemSize": 19,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Item ID Offset",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Item ID offset (signed)"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Stack amount"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X position in container"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y position in container"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of parent container"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "6017+ (ContainerGridLines)",
|
||||
"name": "Grid Location Format",
|
||||
"condition": "Client version \u003e= 6.0.1.7 (ContainerGridLines)",
|
||||
"size": "5 + (itemCount x 20)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x3C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of items"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"description": "Item entries (20 bytes each)",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"itemSize": 20,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Item ID Offset",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Item ID offset (signed)"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Stack amount"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X position in container"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y position in container"
|
||||
},
|
||||
{
|
||||
"name": "Grid Location",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Grid slot position in container"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of parent container"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x1B",
|
||||
"relationship": "variant",
|
||||
"note": "New Spellbook Content for AOS+ clients"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "ContainerGridLines (6.0.1.7+) adds gridLocation byte per item"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 169
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x1B",
|
||||
"name": "New Spellbook Content",
|
||||
"description": "Sends spellbook contents using AOS format with a 64-bit bitmask of known spells.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 23,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0017",
|
||||
"description": "Packet length (23)"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x001B",
|
||||
"description": "Subcommand (New Spellbook Content)"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Command (always 1)"
|
||||
},
|
||||
{
|
||||
"name": "Book Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the spellbook"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Spellbook graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Offset",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Spell offset (circle/school start)"
|
||||
},
|
||||
{
|
||||
"name": "Spell Bits",
|
||||
"type": "ulong",
|
||||
"size": 8,
|
||||
"description": "64-bit mask of known spells (written byte-by-byte, Little Endian)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x3C",
|
||||
"relationship": "variant",
|
||||
"note": "Old Spellbook Content for pre-AOS clients"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "5.0.0a",
|
||||
"feature": "NewSpellbook (Core.AOS \u0026\u0026 ns.NewSpellbook)"
|
||||
},
|
||||
"notes": "Used when Core.AOS \u0026\u0026 ns.NewSpellbook. Otherwise, old 0x3C format is used with spells as pseudo-items.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs",
|
||||
"line": 46
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF7",
|
||||
"name": "Packet Container",
|
||||
"description": "Container packet for batching multiple entity packets. Used for sending groups of related entities efficiently, such as all items and mobiles visible on a boat.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "5+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Total packet length"
|
||||
},
|
||||
{
|
||||
"name": "Packet Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of embedded packets"
|
||||
},
|
||||
{
|
||||
"name": "Packets",
|
||||
"type": "array",
|
||||
"description": "Embedded packets (typically 0xF3 World Entity packets)",
|
||||
"loop": {
|
||||
"countField": "packetCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Embedded Packet",
|
||||
"type": "bytes",
|
||||
"size": "var",
|
||||
"description": "Complete embedded packet (typically 24-26 byte 0xF3 World Entity)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xF3",
|
||||
"relationship": "contains",
|
||||
"note": "Typically contains World Entity packets"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "7.0.0.0",
|
||||
"feature": "StygianAbyss"
|
||||
},
|
||||
"notes": "Uses PacketContainerBuilder for efficient dynamic growth. Commonly used by boat system to batch all visible entities on deck.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/PacketContainerBuilder.cs",
|
||||
"line": 9
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
212
Distribution/Data/packets/outgoing/contextmenu.json
Normal file
212
Distribution/Data/packets/outgoing/contextmenu.json
Normal file
|
|
@ -0,0 +1,212 @@
|
|||
{
|
||||
"category": "Context Menu",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x14",
|
||||
"name": "Display Context Menu",
|
||||
"description": "Displays a context menu for an entity.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Old Format",
|
||||
"version": "0x01",
|
||||
"condition": "command == 0x01 (pre-NewHaven)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0014",
|
||||
"description": "Context Menu subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Old format command"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target entity"
|
||||
},
|
||||
{
|
||||
"name": "Entry Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of menu entries"
|
||||
},
|
||||
{
|
||||
"name": "Entries",
|
||||
"type": "loop",
|
||||
"description": "Menu entries",
|
||||
"loop": {
|
||||
"countField": "entryCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Index",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entry index"
|
||||
},
|
||||
{
|
||||
"name": "Cliloc Offset",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Cliloc number - 3000000"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "bitfield",
|
||||
"size": 2,
|
||||
"description": "Entry flags",
|
||||
"flags": [
|
||||
{
|
||||
"bit": "0",
|
||||
"name": "Disabled",
|
||||
"description": "Entry is disabled"
|
||||
},
|
||||
{
|
||||
"bit": "1",
|
||||
"name": "Arrow",
|
||||
"description": "Show arrow"
|
||||
},
|
||||
{
|
||||
"bit": "2",
|
||||
"name": "Highlighted",
|
||||
"description": "Entry is highlighted"
|
||||
},
|
||||
{
|
||||
"bit": "5",
|
||||
"name": "Colored",
|
||||
"description": "Entry uses custom color"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text hue (if Colored flag set)",
|
||||
"condition": "flags \u0026 0x20"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "New Format",
|
||||
"version": "0x02",
|
||||
"condition": "command == 0x02 (NewHaven+)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0014",
|
||||
"description": "Context Menu subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0002",
|
||||
"description": "New format command"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target entity"
|
||||
},
|
||||
{
|
||||
"name": "Entry Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of menu entries"
|
||||
},
|
||||
{
|
||||
"name": "Entries",
|
||||
"type": "loop",
|
||||
"description": "Menu entries",
|
||||
"loop": {
|
||||
"countField": "entryCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Cliloc Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Full cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Index",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entry index"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Entry flags (see Old Format)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x13",
|
||||
"relationship": "request",
|
||||
"note": "Context Menu Request from client"
|
||||
},
|
||||
{
|
||||
"id": "0xBF/0x15",
|
||||
"relationship": "response",
|
||||
"note": "Context Menu Response from client"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "NewHaven clients (6.0.0.0+) use command 0x02"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Context Menus/ContextMenuSystem.cs",
|
||||
"line": 142
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,52 +1,102 @@
|
|||
{
|
||||
"category": "Damage",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x0B",
|
||||
"name": "Damage",
|
||||
"description": "Shows damage dealt to a mobile (client 5.0.0a+).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x0B", "description": "Packet identifier" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of damaged mobile" },
|
||||
{ "name": "damage", "type": "ushort", "size": 2, "description": "Damage amount (clamped 0-65535)" }
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "5.0.0a",
|
||||
"feature": "DamagePacket"
|
||||
},
|
||||
"notes": "For pre-5.0.0a clients, use 0xBF/0x22 instead.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingDamagePackets.cs",
|
||||
"line": 34
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF/0x22",
|
||||
"name": "Damage (Old)",
|
||||
"description": "Shows damage dealt to a mobile (pre-5.0.0a clients).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 11,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "value": "11", "description": "Packet length" },
|
||||
{ "name": "subCommand", "type": "ushort", "size": 2, "value": "0x22", "description": "Subcommand (Damage)" },
|
||||
{ "name": "unknown", "type": "byte", "size": 1, "value": "0x01", "description": "Unknown (always 1)" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of damaged mobile" },
|
||||
{ "name": "damage", "type": "byte", "size": 1, "description": "Damage amount (clamped 0-255)" }
|
||||
],
|
||||
"clientVersion": {
|
||||
"max": "5.0.0a",
|
||||
"notes": "For clients before DamagePacket feature"
|
||||
},
|
||||
"notes": "Damage is capped at 255 for old clients.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingDamagePackets.cs",
|
||||
"line": 40
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"category": "Damage",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x0B",
|
||||
"name": "Damage",
|
||||
"description": "Shows damage dealt to a mobile (client 5.0.0a+).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 7,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x0B",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of damaged mobile"
|
||||
},
|
||||
{
|
||||
"name": "Damage",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Damage amount (clamped 0-65535)"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "5.0.0a",
|
||||
"feature": "DamagePacket"
|
||||
},
|
||||
"notes": "For pre-5.0.0a clients, use 0xBF/0x22 instead.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingDamagePackets.cs",
|
||||
"line": 34
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF/0x22",
|
||||
"name": "Damage (Old)",
|
||||
"description": "Shows damage dealt to a mobile (pre-5.0.0a clients).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 11,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "11",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x22",
|
||||
"description": "Subcommand (Damage)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Unknown (always 1)"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of damaged mobile"
|
||||
},
|
||||
{
|
||||
"name": "Damage",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Damage amount (clamped 0-255)"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"max": "5.0.0a",
|
||||
"notes": "For clients before DamagePacket feature"
|
||||
},
|
||||
"notes": "Damage is capped at 255 for old clients.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingDamagePackets.cs",
|
||||
"line": 40
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,142 +1,459 @@
|
|||
{
|
||||
"category": "Effects",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x54",
|
||||
"name": "Sound Effect",
|
||||
"description": "Plays a sound effect at a location.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 12,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x54", "description": "Packet identifier" },
|
||||
{ "name": "flags", "type": "byte", "size": 1, "value": "0x01", "description": "Sound flags" },
|
||||
{ "name": "soundId", "type": "short", "size": 2, "description": "Sound effect ID" },
|
||||
{ "name": "volume", "type": "short", "size": 2, "value": "0x0000", "description": "Volume (unused)" },
|
||||
{ "name": "x", "type": "short", "size": 2, "description": "X coordinate" },
|
||||
{ "name": "y", "type": "short", "size": 2, "description": "Y coordinate" },
|
||||
{ "name": "z", "type": "short", "size": 2, "description": "Z coordinate" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 41
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x70",
|
||||
"name": "Screen Effect",
|
||||
"description": "Triggers a screen-wide visual effect (fade in/out).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 28,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x70", "description": "Packet identifier" },
|
||||
{ "name": "effectType", "type": "byte", "size": 1, "value": "0x04", "description": "Effect type (4)" },
|
||||
{ "name": "padding1", "type": "byte[]", "size": 8, "description": "Padding (zeros)" },
|
||||
{
|
||||
"name": "type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 2,
|
||||
"description": "Screen effect type",
|
||||
"values": [
|
||||
{ "value": 0, "name": "FadeOut", "description": "Fade screen to black" },
|
||||
{ "value": 1, "name": "FadeIn", "description": "Fade screen from black" },
|
||||
{ "value": 2, "name": "LightFlash", "description": "Light flash effect" },
|
||||
{ "value": 3, "name": "FadeInOut", "description": "Fade out then in" },
|
||||
{ "value": 4, "name": "DarkenScreen", "description": "Darken screen" }
|
||||
]
|
||||
},
|
||||
{ "name": "padding2", "type": "byte[]", "size": 16, "description": "Padding (zeros)" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 322
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC0",
|
||||
"name": "Hued Effect",
|
||||
"description": "Displays a graphical effect with hue and render mode.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 36,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xC0", "description": "Packet identifier" },
|
||||
{
|
||||
"name": "effectType",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Effect type",
|
||||
"values": [
|
||||
{ "value": 0, "name": "Moving", "description": "Effect moves between two points" },
|
||||
{ "value": 1, "name": "Lightning", "description": "Lightning bolt effect" },
|
||||
{ "value": 2, "name": "FixedXYZ", "description": "Effect at fixed location" },
|
||||
{ "value": 3, "name": "FixedFrom", "description": "Effect attached to source" }
|
||||
]
|
||||
},
|
||||
{ "name": "sourceSerial", "type": "uint", "size": 4, "description": "Serial of source entity" },
|
||||
{ "name": "targetSerial", "type": "uint", "size": 4, "description": "Serial of target entity" },
|
||||
{ "name": "itemId", "type": "short", "size": 2, "description": "Effect graphic ID" },
|
||||
{ "name": "srcX", "type": "short", "size": 2, "description": "Source X coordinate" },
|
||||
{ "name": "srcY", "type": "short", "size": 2, "description": "Source Y coordinate" },
|
||||
{ "name": "srcZ", "type": "sbyte", "size": 1, "description": "Source Z coordinate" },
|
||||
{ "name": "dstX", "type": "short", "size": 2, "description": "Destination X coordinate" },
|
||||
{ "name": "dstY", "type": "short", "size": 2, "description": "Destination Y coordinate" },
|
||||
{ "name": "dstZ", "type": "sbyte", "size": 1, "description": "Destination Z coordinate" },
|
||||
{ "name": "speed", "type": "byte", "size": 1, "description": "Effect speed" },
|
||||
{ "name": "duration", "type": "byte", "size": 1, "description": "Effect duration" },
|
||||
{ "name": "unknown1", "type": "byte", "size": 1, "value": "0x00", "description": "Unknown" },
|
||||
{ "name": "unknown2", "type": "byte", "size": 1, "value": "0x00", "description": "Unknown" },
|
||||
{ "name": "fixedDirection", "type": "bool", "size": 1, "description": "Fixed direction" },
|
||||
{ "name": "explode", "type": "bool", "size": 1, "description": "Explode on impact" },
|
||||
{ "name": "hue", "type": "int", "size": 4, "description": "Effect hue" },
|
||||
{ "name": "renderMode", "type": "int", "size": 4, "description": "Render mode" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 175
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC7",
|
||||
"name": "Particle Effect",
|
||||
"description": "Displays an advanced particle effect with extended parameters.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 49,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xC7", "description": "Packet identifier" },
|
||||
{ "name": "effectType", "type": "byte", "size": 1, "description": "Effect type (see 0xC0)" },
|
||||
{ "name": "sourceSerial", "type": "uint", "size": 4, "description": "Serial of source entity" },
|
||||
{ "name": "targetSerial", "type": "uint", "size": 4, "description": "Serial of target entity" },
|
||||
{ "name": "itemId", "type": "short", "size": 2, "description": "Effect graphic ID" },
|
||||
{ "name": "srcX", "type": "short", "size": 2, "description": "Source X coordinate" },
|
||||
{ "name": "srcY", "type": "short", "size": 2, "description": "Source Y coordinate" },
|
||||
{ "name": "srcZ", "type": "sbyte", "size": 1, "description": "Source Z coordinate" },
|
||||
{ "name": "dstX", "type": "short", "size": 2, "description": "Destination X coordinate" },
|
||||
{ "name": "dstY", "type": "short", "size": 2, "description": "Destination Y coordinate" },
|
||||
{ "name": "dstZ", "type": "sbyte", "size": 1, "description": "Destination Z coordinate" },
|
||||
{ "name": "speed", "type": "byte", "size": 1, "description": "Effect speed" },
|
||||
{ "name": "duration", "type": "byte", "size": 1, "description": "Effect duration" },
|
||||
{ "name": "unknown1", "type": "byte", "size": 1, "value": "0x00", "description": "Unknown" },
|
||||
{ "name": "unknown2", "type": "byte", "size": 1, "value": "0x00", "description": "Unknown" },
|
||||
{ "name": "fixedDirection", "type": "bool", "size": 1, "description": "Fixed direction" },
|
||||
{ "name": "explode", "type": "bool", "size": 1, "description": "Explode on impact" },
|
||||
{ "name": "hue", "type": "int", "size": 4, "description": "Effect hue" },
|
||||
{ "name": "renderMode", "type": "int", "size": 4, "description": "Render mode" },
|
||||
{ "name": "effect", "type": "short", "size": 2, "description": "Particle effect ID" },
|
||||
{ "name": "explodeEffect", "type": "short", "size": 2, "description": "Explosion effect ID" },
|
||||
{ "name": "explodeSound", "type": "short", "size": 2, "description": "Explosion sound ID" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Associated entity serial" },
|
||||
{ "name": "layer", "type": "byte", "size": 1, "description": "Effect layer" },
|
||||
{ "name": "unknown3", "type": "short", "size": 2, "description": "Unknown" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 58
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"category": "Effects",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x54",
|
||||
"name": "Sound Effect",
|
||||
"description": "Plays a sound effect at a location.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 12,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x54",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Sound flags"
|
||||
},
|
||||
{
|
||||
"name": "Sound ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Sound effect ID"
|
||||
},
|
||||
{
|
||||
"name": "Volume",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Volume (unused)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Z coordinate"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 41
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x70",
|
||||
"name": "Screen Effect",
|
||||
"description": "Triggers a screen-wide visual effect (fade in/out).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 28,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x70",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Effect Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x04",
|
||||
"description": "Effect type (4)"
|
||||
},
|
||||
{
|
||||
"name": "Padding1",
|
||||
"type": "byte[]",
|
||||
"size": 8,
|
||||
"description": "Padding (zeros)"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 2,
|
||||
"description": "Screen effect type",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Fade Out",
|
||||
"description": "Fade screen to black"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Fade In",
|
||||
"description": "Fade screen from black"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Light Flash",
|
||||
"description": "Light flash effect"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Fade In Out",
|
||||
"description": "Fade out then in"
|
||||
},
|
||||
{
|
||||
"value": 4,
|
||||
"name": "Darken Screen",
|
||||
"description": "Darken screen"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Padding2",
|
||||
"type": "byte[]",
|
||||
"size": 16,
|
||||
"description": "Padding (zeros)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 322
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC0",
|
||||
"name": "Hued Effect",
|
||||
"description": "Displays a graphical effect with hue and render mode.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 36,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC0",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Effect Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Effect type",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Moving",
|
||||
"description": "Effect moves between two points"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Lightning",
|
||||
"description": "Lightning bolt effect"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Fixed XYZ",
|
||||
"description": "Effect at fixed location"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Fixed From",
|
||||
"description": "Effect attached to source"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Source Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of source entity"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of target entity"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Effect graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Src X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Source X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Src Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Source Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Src Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Source Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Destination X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Destination Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Destination Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Speed",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect speed"
|
||||
},
|
||||
{
|
||||
"name": "Duration",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect duration"
|
||||
},
|
||||
{
|
||||
"name": "Unknown1",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Fixed Direction",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Fixed direction"
|
||||
},
|
||||
{
|
||||
"name": "Explode",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Explode on impact"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Effect hue"
|
||||
},
|
||||
{
|
||||
"name": "Render Mode",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Render mode"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 175
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC7",
|
||||
"name": "Particle Effect",
|
||||
"description": "Displays an advanced particle effect with extended parameters.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 49,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Effect Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect type (see 0xC0)"
|
||||
},
|
||||
{
|
||||
"name": "Source Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of source entity"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of target entity"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Effect graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Src X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Source X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Src Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Source Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Src Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Source Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Destination X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Destination Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Dst Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Destination Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Speed",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect speed"
|
||||
},
|
||||
{
|
||||
"name": "Duration",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect duration"
|
||||
},
|
||||
{
|
||||
"name": "Unknown1",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Unknown2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown"
|
||||
},
|
||||
{
|
||||
"name": "Fixed Direction",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Fixed direction"
|
||||
},
|
||||
{
|
||||
"name": "Explode",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Explode on impact"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Effect hue"
|
||||
},
|
||||
{
|
||||
"name": "Render Mode",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Render mode"
|
||||
},
|
||||
{
|
||||
"name": "Effect",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Particle effect ID"
|
||||
},
|
||||
{
|
||||
"name": "Explode Effect",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Explosion effect ID"
|
||||
},
|
||||
{
|
||||
"name": "Explode Sound",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Explosion sound ID"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Associated entity serial"
|
||||
},
|
||||
{
|
||||
"name": "Layer",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Effect layer"
|
||||
},
|
||||
{
|
||||
"name": "Unknown3",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Unknown"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEffectPackets.cs",
|
||||
"line": 58
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,71 +1,396 @@
|
|||
{
|
||||
"category": "Entity",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x1D",
|
||||
"name": "Remove Entity",
|
||||
"description": "Removes an entity (item, mobile, or multi) from the client's view.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x1D", "description": "Packet identifier" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of entity to remove" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
|
||||
"line": 75
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDC",
|
||||
"name": "OPL Info (Object Property List)",
|
||||
"description": "Notifies the client of an entity's Object Property List hash. Client compares hash to cached version and requests full OPL if different.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xDC", "description": "Packet identifier" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Entity serial" },
|
||||
{ "name": "hash", "type": "int", "size": 4, "description": "Hash of the Object Property List" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
|
||||
"line": 33
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF3",
|
||||
"name": "World Entity (SA+)",
|
||||
"description": "Unified entity packet for items, mobiles, and multis. Replaces older item/mobile-specific packets for Stygian Abyss+ clients.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "24 (pre-HS) or 26 (HS+)",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xF3", "description": "Packet identifier" },
|
||||
{ "name": "command", "type": "short", "size": 2, "value": "0x0001", "description": "Command (always 1)" },
|
||||
{ "name": "entityType", "type": "byte", "size": 1, "description": "Entity type: 0=Item, 1=Mobile, 2=Multi" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Entity serial" },
|
||||
{ "name": "graphicId", "type": "ushort", "size": 2, "description": "Graphic/Body ID" },
|
||||
{ "name": "direction", "type": "byte", "size": 1, "description": "Direction (mobiles) or 0" },
|
||||
{ "name": "amountMin", "type": "short", "size": 2, "description": "Minimum amount (items) or 1" },
|
||||
{ "name": "amountMax", "type": "short", "size": 2, "description": "Maximum amount (items) or 1" },
|
||||
{ "name": "x", "type": "short", "size": 2, "description": "X coordinate (masked with 0x7FFF)" },
|
||||
{ "name": "y", "type": "short", "size": 2, "description": "Y coordinate (masked with 0x3FFF)" },
|
||||
{ "name": "z", "type": "sbyte", "size": 1, "description": "Z coordinate" },
|
||||
{ "name": "light", "type": "byte", "size": 1, "description": "Light level (items)" },
|
||||
{ "name": "hue", "type": "short", "size": 2, "description": "Hue/color" },
|
||||
{ "name": "flags", "type": "byte", "size": 1, "description": "Packet flags (hidden, blessed, etc.)" },
|
||||
{ "name": "unknown", "type": "short", "size": 2, "description": "Unknown (HS+ only)", "condition": "HighSeas" }
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "7.0.9.0",
|
||||
"feature": "StygianAbyss"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
|
||||
"line": 88
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"category": "Entity",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xD6",
|
||||
"name": "Object Property List",
|
||||
"description": "Sends the full Object Property List (tooltip) for an entity. Contains a hash for client caching and a list of localized property entries.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "15+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD6",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Unknown1",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Unknown (always 1)"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
},
|
||||
{
|
||||
"name": "Unknown2",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Unknown (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Hash",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "XOR hash of all properties (computed with 26-bit mask)"
|
||||
},
|
||||
{
|
||||
"name": "Properties",
|
||||
"type": "array",
|
||||
"description": "Property entries, terminated by number=0",
|
||||
"loop": {
|
||||
"terminator": "number == 0",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Cliloc number (0 = end of list)"
|
||||
},
|
||||
{
|
||||
"name": "String Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of arguments in bytes (0 if no arguments)"
|
||||
},
|
||||
{
|
||||
"name": "Arguments",
|
||||
"type": "utf16le",
|
||||
"size": "var",
|
||||
"description": "Unicode LE string with tab-separated cliloc arguments. Length = String Length field"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xDC",
|
||||
"relationship": "notification",
|
||||
"note": "OPL Info notifies client of hash change, triggering 0xD6 request"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "4.0.0a",
|
||||
"feature": "AOS tooltips"
|
||||
},
|
||||
"notes": "Hash is calculated by XORing each property\u0027s cliloc number with ((hash \u003e\u003e 31) \u0026 1) ^ (hash \u003c\u003c 1). Properties are cliloc entries with optional Unicode LE arguments separated by tabs.",
|
||||
"source": {
|
||||
"file": "Projects/Server/PropertyList/ObjectPropertyList.cs",
|
||||
"line": 19
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x1D",
|
||||
"name": "Remove Entity",
|
||||
"description": "Removes an entity (item, mobile, or multi) from the client\u0027s view.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x1D",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of entity to remove"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
|
||||
"line": 75
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDC",
|
||||
"name": "OPL Info (Object Property List)",
|
||||
"description": "Notifies the client of an entity\u0027s Object Property List hash. Client compares hash to cached version and requests full OPL if different.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDC",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
},
|
||||
{
|
||||
"name": "Hash",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Hash of the Object Property List"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xD6",
|
||||
"direction": "outgoing",
|
||||
"relationship": "data",
|
||||
"note": "Full Object Property List packet"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
|
||||
"line": 33
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF3",
|
||||
"name": "World Entity (SA+)",
|
||||
"description": "Unified entity packet for items, mobiles, and multis. Replaces older 0x1A World Item packet for Stygian Abyss+ clients. High Seas clients add 2 extra bytes.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"version": "Stygian Abyss",
|
||||
"name": "SA Format",
|
||||
"condition": "Client version 7.0.0.0 - 7.0.8.x (StygianAbyss, pre-HighSeas)",
|
||||
"size": 24,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF3",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Command (always 1)"
|
||||
},
|
||||
{
|
||||
"name": "Entity Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Entity type",
|
||||
"enum": [
|
||||
{ "value": "0", "name": "Item", "description": "World item" },
|
||||
{ "value": "1", "name": "Mobile", "description": "Mobile/creature" },
|
||||
{ "value": "2", "name": "Multi", "description": "Multi/structure" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
},
|
||||
{
|
||||
"name": "Graphic ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Graphic/Body ID (masked with 0x7FFF)"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Direction (mobiles) or 0"
|
||||
},
|
||||
{
|
||||
"name": "Amount Min",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Minimum amount (items) or 1"
|
||||
},
|
||||
{
|
||||
"name": "Amount Max",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Maximum amount (items) or 1"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X coordinate (masked with 0x7FFF)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y coordinate (masked with 0x3FFF)"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Light",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Light level (items)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Hue/color"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Packet flags (hidden, blessed, etc.)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "High Seas+",
|
||||
"name": "HS Format",
|
||||
"condition": "Client version \u003e= 7.0.9.0 (HighSeas)",
|
||||
"size": 26,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF3",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0001",
|
||||
"description": "Command (always 1)"
|
||||
},
|
||||
{
|
||||
"name": "Entity Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Entity type",
|
||||
"enum": [
|
||||
{ "value": "0", "name": "Item", "description": "World item" },
|
||||
{ "value": "1", "name": "Mobile", "description": "Mobile/creature" },
|
||||
{ "value": "2", "name": "Multi", "description": "Multi/structure" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Entity serial"
|
||||
},
|
||||
{
|
||||
"name": "Graphic ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Graphic/Body ID (masked with 0xFFFF, supports higher IDs)"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Direction (mobiles) or 0"
|
||||
},
|
||||
{
|
||||
"name": "Amount Min",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Minimum amount (items) or 1"
|
||||
},
|
||||
{
|
||||
"name": "Amount Max",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Maximum amount (items) or 1"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X coordinate (masked with 0x7FFF)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y coordinate (masked with 0x3FFF)"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Light",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Light level (items)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Hue/color"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Packet flags (hidden, blessed, etc.)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Unknown (always 0)"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x1A",
|
||||
"relationship": "variant",
|
||||
"note": "Legacy World Item packet for pre-SA clients"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "7.0.0.0",
|
||||
"feature": "StygianAbyss"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
|
||||
"line": 88
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
173
Distribution/Data/packets/outgoing/equipment.json
Normal file
173
Distribution/Data/packets/outgoing/equipment.json
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
{
|
||||
"category": "Equipment",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x2E",
|
||||
"name": "Equip Update",
|
||||
"description": "Notifies client that an item has been equipped on a mobile.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 15,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x2E",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the equipped item"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Layer",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Equipment layer"
|
||||
},
|
||||
{
|
||||
"name": "Mobile Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the mobile wearing the item"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Item hue (may be overridden by SolidHueOverride)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEquipmentPackets.cs",
|
||||
"line": 86
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x10",
|
||||
"name": "Display Equipment Info",
|
||||
"description": "Displays detailed equipment information including crafter name and magical properties.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "17+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0010",
|
||||
"description": "Display Equipment Info subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the item"
|
||||
},
|
||||
{
|
||||
"name": "Cliloc Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Base cliloc number for item name"
|
||||
},
|
||||
{
|
||||
"name": "Crafter Info",
|
||||
"type": "conditional",
|
||||
"description": "Crafter information (if present)",
|
||||
"condition": "crafterName.Length \u003e 0",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Crafted By",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "-3",
|
||||
"description": "Crafter marker"
|
||||
},
|
||||
{
|
||||
"name": "Crafter Name Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of crafter name"
|
||||
},
|
||||
{
|
||||
"name": "Crafter Name",
|
||||
"type": "ascii",
|
||||
"description": "Crafter name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Unidentified",
|
||||
"type": "conditional",
|
||||
"description": "Unidentified marker",
|
||||
"condition": "unidentified",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Unidentified Marker",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "-4",
|
||||
"description": "Unidentified marker"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Attributes",
|
||||
"type": "loop",
|
||||
"description": "Equipment attributes",
|
||||
"loop": {
|
||||
"countField": "variable",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Attribute Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Attribute cliloc number"
|
||||
},
|
||||
{
|
||||
"name": "Charges",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Charges (-1 if not applicable)"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Terminator",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "-1",
|
||||
"description": "End of attributes marker"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEquipmentPackets.cs",
|
||||
"line": 37
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
1043
Distribution/Data/packets/outgoing/gump.json
Normal file
1043
Distribution/Data/packets/outgoing/gump.json
Normal file
File diff suppressed because it is too large
Load diff
303
Distribution/Data/packets/outgoing/house.json
Normal file
303
Distribution/Data/packets/outgoing/house.json
Normal file
|
|
@ -0,0 +1,303 @@
|
|||
{
|
||||
"category": "House",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xD8",
|
||||
"name": "House Design State Detailed",
|
||||
"description": "Sends detailed house customization design data. Contains compressed plane data organized by floor level and component type. Tiles are encoded using grid-based or coordinate-based formats depending on their Z-height.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "18+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xD8",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Compression Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x03",
|
||||
"description": "Compression type (always 3 = compressed)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x00",
|
||||
"description": "Unknown (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "House Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the house foundation"
|
||||
},
|
||||
{
|
||||
"name": "Revision",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Design revision number"
|
||||
},
|
||||
{
|
||||
"name": "Tile Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Total number of tiles in the design"
|
||||
},
|
||||
{
|
||||
"name": "Buffer Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Length of remaining data (plane count + all plane sections)"
|
||||
},
|
||||
{
|
||||
"name": "Plane Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of plane/buffer sections that follow"
|
||||
},
|
||||
{
|
||||
"name": "Plane Sections",
|
||||
"type": "array",
|
||||
"description": "Each section has a 4-byte header followed by compressed tile data",
|
||||
"loop": {
|
||||
"countField": "Plane Count",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Section Header",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Packed header: bits 28-31=mode, bits 24-27=planeZ, bits 16-23+(bits 4-7<<8)=decompLen, bits 8-15+(bits 0-3<<8)=compLen"
|
||||
},
|
||||
{
|
||||
"name": "Compressed Data",
|
||||
"type": "bytes",
|
||||
"size": "var",
|
||||
"description": "DEFLATE compressed tile data (length from header)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"planeFormat": {
|
||||
"description": "Tiles are organized into planes based on Z-height. Planes 0-8 use grid encoding; planes 9+ use explicit coordinates for overflow items.",
|
||||
"headerDecoding": {
|
||||
"mode": "(header >> 28) & 0x0F",
|
||||
"planeZ": "(header >> 24) & 0x0F",
|
||||
"decompLen": "((header & 0xFF0000) >> 16) | ((header & 0xF0) << 4)",
|
||||
"compLen": "((header & 0xFF00) >> 8) | ((header & 0x0F) << 8)"
|
||||
},
|
||||
"planeZMapping": [
|
||||
{ "plane": 0, "z": 0, "description": "Ground floor" },
|
||||
{ "plane": 1, "z": 7, "description": "1st storey (floor items)" },
|
||||
{ "plane": 2, "z": 27, "description": "2nd storey (floor items)" },
|
||||
{ "plane": 3, "z": 47, "description": "3rd storey (floor items)" },
|
||||
{ "plane": 4, "z": 67, "description": "4th storey (floor items)" },
|
||||
{ "plane": "5-8", "z": "7/27/47/67", "description": "Non-floor items per storey" },
|
||||
{ "plane": "9+", "z": "varies", "description": "Overflow/stair buffers (explicit coords)" }
|
||||
],
|
||||
"encodingModes": [
|
||||
{
|
||||
"mode": 0,
|
||||
"name": "Full Coordinates",
|
||||
"bytesPerTile": 5,
|
||||
"format": "ushort itemId, sbyte x, sbyte y, sbyte z",
|
||||
"description": "Used for overflow buffers with non-standard Z heights"
|
||||
},
|
||||
{
|
||||
"mode": 1,
|
||||
"name": "XY Coordinates",
|
||||
"bytesPerTile": 4,
|
||||
"format": "ushort itemId, sbyte x, sbyte y",
|
||||
"description": "Z calculated: ((planeZ - 1) % 4) * 20 + 7"
|
||||
},
|
||||
{
|
||||
"mode": 2,
|
||||
"name": "Grid-Based",
|
||||
"bytesPerTile": 2,
|
||||
"format": "ushort itemId (0x0000 = empty)",
|
||||
"description": "X,Y from grid index: x = i / gridHeight, y = i % gridHeight"
|
||||
}
|
||||
],
|
||||
"gridSizes": [
|
||||
{ "plane": 0, "width": "width", "height": "height", "notes": "Full foundation footprint" },
|
||||
{ "plane": "1-4", "width": "width - 1", "height": "height - 2", "notes": "Interior (floor items), offset by (1,1)" },
|
||||
{ "plane": "5-8", "width": "width", "height": "height - 1", "notes": "Interior (non-floor items)" }
|
||||
]
|
||||
},
|
||||
"compression": {
|
||||
"algorithm": "DEFLATE",
|
||||
"notes": "Raw DEFLATE compression (no zlib header/footer). Each plane buffer compressed independently. Max 750 items per overflow buffer (splits into multiple buffers if exceeded)."
|
||||
},
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x1D",
|
||||
"relationship": "related",
|
||||
"note": "Design State General provides revision info only"
|
||||
},
|
||||
{
|
||||
"id": "0xBF/0x20",
|
||||
"relationship": "related",
|
||||
"note": "Begin/End House Customization commands"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "4.0.0a",
|
||||
"feature": "AOS House Customization"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HousePackets.cs",
|
||||
"line": 93
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x1D",
|
||||
"name": "Design State General",
|
||||
"description": "Sends house design revision information. Client requests full details if revision differs.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 13,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x000D",
|
||||
"description": "Packet length (13)"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x001D",
|
||||
"description": "Design State General subcommand"
|
||||
},
|
||||
{
|
||||
"name": "House Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the house"
|
||||
},
|
||||
{
|
||||
"name": "Revision",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Design revision number"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xD8",
|
||||
"relationship": "related",
|
||||
"note": "Full design details requested if revision differs"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HousePackets.cs",
|
||||
"line": 72
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x20",
|
||||
"name": "Begin House Customization",
|
||||
"description": "Notifies client to enter house customization mode.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 17,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0011",
|
||||
"description": "Packet length (17)"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0020",
|
||||
"description": "House Customization subcommand"
|
||||
},
|
||||
{
|
||||
"name": "House Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the house"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x04",
|
||||
"description": "Begin customization command"
|
||||
},
|
||||
{
|
||||
"name": "Unknown 1",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Unknown (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown 2",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0xFFFF",
|
||||
"description": "Unknown (always 0xFFFF)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown 3",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0xFFFF",
|
||||
"description": "Unknown (always 0xFFFF)"
|
||||
},
|
||||
{
|
||||
"name": "Unknown 4",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xFF",
|
||||
"description": "Unknown (always 0xFF)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x20",
|
||||
"relationship": "variant",
|
||||
"note": "End House Customization uses command 0x05"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Multis/Houses/HousePackets.cs",
|
||||
"line": 30
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,35 +1,102 @@
|
|||
{
|
||||
"category": "Items",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x1A",
|
||||
"name": "World Item",
|
||||
"description": "Displays an item in the world (pre-Stygian Abyss clients).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic (14-20 bytes)",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x1A", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length (14-20)" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Item serial (bit 31 set if amount present)" },
|
||||
{ "name": "itemId", "type": "ushort", "size": 2, "description": "Item graphic ID (bit 14 set for multi)" },
|
||||
{ "name": "amount", "type": "ushort", "size": 2, "description": "Stack amount (if serial bit 31 set)", "condition": "serial & 0x80000000" },
|
||||
{ "name": "x", "type": "ushort", "size": 2, "description": "X coordinate (bit 15 set if direction present)" },
|
||||
{ "name": "y", "type": "ushort", "size": 2, "description": "Y coordinate (bit 15=hue, bit 14=flags)" },
|
||||
{ "name": "direction", "type": "byte", "size": 1, "description": "Direction (if x bit 15 set)", "condition": "x & 0x8000" },
|
||||
{ "name": "z", "type": "sbyte", "size": 1, "description": "Z coordinate" },
|
||||
{ "name": "hue", "type": "ushort", "size": 2, "description": "Item hue (if y bit 15 set)", "condition": "y & 0x8000" },
|
||||
{ "name": "flags", "type": "byte", "size": 1, "description": "Packet flags (if y bit 14 set)", "condition": "y & 0x4000" }
|
||||
],
|
||||
"notes": "For Stygian Abyss+ clients, use 0xF3 World Entity instead.",
|
||||
"clientVersion": {
|
||||
"max": "6.0.14.2",
|
||||
"notes": "Replaced by 0xF3 for SA+ clients"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingItemPackets.cs",
|
||||
"line": 24
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"category": "Items",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x1A",
|
||||
"name": "World Item",
|
||||
"description": "Displays an item in the world (pre-Stygian Abyss clients).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "14+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x1A",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length (14-20)"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Item serial (bit 31 set if amount present)"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID (bit 14 set for multi)"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Stack amount (if serial bit 31 set)",
|
||||
"condition": "serial \u0026 0x80000000"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "X coordinate (bit 15 set if direction present)"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Y coordinate (bit 15=hue, bit 14=flags)"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Direction (if x bit 15 set)",
|
||||
"condition": "x \u0026 0x8000"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Z coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue (if y bit 15 set)",
|
||||
"condition": "y \u0026 0x8000"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Packet flags (if y bit 14 set)",
|
||||
"condition": "y \u0026 0x4000"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xF3",
|
||||
"relationship": "variant",
|
||||
"note": "World Entity packet for SA+ clients"
|
||||
}
|
||||
],
|
||||
"notes": "For Stygian Abyss+ clients, use 0xF3 World Entity instead.",
|
||||
"clientVersion": {
|
||||
"max": "6.0.14.2",
|
||||
"notes": "Replaced by 0xF3 for SA+ clients"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingItemPackets.cs",
|
||||
"line": 24
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,38 +1,65 @@
|
|||
{
|
||||
"category": "Light",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x4E",
|
||||
"name": "Personal Light Level",
|
||||
"description": "Sets the light level for a specific entity.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x4E", "description": "Packet identifier" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of entity" },
|
||||
{ "name": "level", "type": "byte", "size": 1, "description": "Light level (0=brightest, 25-30=typical night)" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingLightPackets.cs",
|
||||
"line": 23
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x4F",
|
||||
"name": "Global Light Level",
|
||||
"description": "Sets the global ambient light level for the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 2,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x4F", "description": "Packet identifier" },
|
||||
{ "name": "level", "type": "byte", "size": 1, "description": "Light level (0=brightest, 25-30=typical night)" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingLightPackets.cs",
|
||||
"line": 39
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"category": "Light",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x4E",
|
||||
"name": "Personal Light Level",
|
||||
"description": "Sets the light level for a specific entity.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x4E",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of entity"
|
||||
},
|
||||
{
|
||||
"name": "Level",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Light level (0=brightest, 25-30=typical night)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingLightPackets.cs",
|
||||
"line": 23
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x4F",
|
||||
"name": "Global Light Level",
|
||||
"description": "Sets the global ambient light level for the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 2,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x4F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Level",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Light level (0=brightest, 25-30=typical night)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingLightPackets.cs",
|
||||
"line": 39
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
318
Distribution/Data/packets/outgoing/mahjong.json
Normal file
318
Distribution/Data/packets/outgoing/mahjong.json
Normal file
|
|
@ -0,0 +1,318 @@
|
|||
{
|
||||
"category": "Mahjong",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x19",
|
||||
"name": "Mahjong Join Game",
|
||||
"description": "Notifies client to open the Mahjong game interface.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0009",
|
||||
"description": "Packet length (9)"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0019",
|
||||
"description": "Join Game command"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 288
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x02",
|
||||
"name": "Mahjong Players Info",
|
||||
"description": "Sends information about all players in the Mahjong game.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "11+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0002",
|
||||
"description": "Players Info command"
|
||||
},
|
||||
{
|
||||
"name": "Seat Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of seats with data"
|
||||
},
|
||||
{
|
||||
"name": "Players",
|
||||
"type": "loop",
|
||||
"description": "Player data for each seat",
|
||||
"loop": {
|
||||
"countField": "Seat Count",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Player Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of player (0 if empty)"
|
||||
},
|
||||
{
|
||||
"name": "Dealer Flag",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "1=Dealer, 2=Not dealer"
|
||||
},
|
||||
{
|
||||
"name": "Position",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Seat position index"
|
||||
},
|
||||
{
|
||||
"name": "Score",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Player\u0027s current score"
|
||||
},
|
||||
{
|
||||
"name": "Reserved",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0",
|
||||
"description": "Reserved (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Reserved 2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0",
|
||||
"description": "Reserved (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Public Hand",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True if hand is visible to others"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Player name"
|
||||
},
|
||||
{
|
||||
"name": "Empty Seat",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True if seat is empty or not in game"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 304
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x05",
|
||||
"name": "Mahjong General Info",
|
||||
"description": "Sends general game state including dice values, dealer indicator, and wall break position.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 25,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0019",
|
||||
"description": "Packet length (25)"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0005",
|
||||
"description": "General Info command"
|
||||
},
|
||||
{
|
||||
"name": "Reserved",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0",
|
||||
"description": "Reserved"
|
||||
},
|
||||
{
|
||||
"name": "Reserved 2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0",
|
||||
"description": "Reserved"
|
||||
},
|
||||
{
|
||||
"name": "Options",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Bit 0: Show Scores, Bit 1: Spectator Vision"
|
||||
},
|
||||
{
|
||||
"name": "Dice 1",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "First dice value"
|
||||
},
|
||||
{
|
||||
"name": "Dice 2",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Second dice value"
|
||||
},
|
||||
{
|
||||
"name": "Dealer Wind",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Dealer indicator wind direction",
|
||||
"enum": [
|
||||
{ "value": "0", "name": "North", "description": "North wind" },
|
||||
{ "value": "1", "name": "East", "description": "East wind" },
|
||||
{ "value": "2", "name": "South", "description": "South wind" },
|
||||
{ "value": "3", "name": "West", "description": "West wind" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dealer Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Dealer indicator Y position"
|
||||
},
|
||||
{
|
||||
"name": "Dealer X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Dealer indicator X position"
|
||||
},
|
||||
{
|
||||
"name": "Dealer Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Dealer indicator direction"
|
||||
},
|
||||
{
|
||||
"name": "Wall Break Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Wall break indicator Y position"
|
||||
},
|
||||
{
|
||||
"name": "Wall Break X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Wall break indicator X position"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 461
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xDA",
|
||||
"subId": "0x1A",
|
||||
"name": "Mahjong Relieve",
|
||||
"description": "Notifies client to close the Mahjong game interface.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xDA",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0009",
|
||||
"description": "Packet length (9)"
|
||||
},
|
||||
{
|
||||
"name": "Game Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the Mahjong game"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x001A",
|
||||
"description": "Relieve command"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Games/Mahjong/MahjongPackets.cs",
|
||||
"line": 504
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
401
Distribution/Data/packets/outgoing/map.json
Normal file
401
Distribution/Data/packets/outgoing/map.json
Normal file
|
|
@ -0,0 +1,401 @@
|
|||
{
|
||||
"category": "Map",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xC6",
|
||||
"name": "Invalid Map",
|
||||
"description": "Notifies client that the current map is invalid.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 1,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC6",
|
||||
"description": "Packet identifier"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMapPackets.cs",
|
||||
"line": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x08",
|
||||
"name": "Map Change",
|
||||
"description": "Notifies client of a facet/map change.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Packet length (6)"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0008",
|
||||
"description": "Map Change subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Map ID",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Map/Facet ID",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Felucca",
|
||||
"description": "Felucca facet"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Trammel",
|
||||
"description": "Trammel facet"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Ilshenar",
|
||||
"description": "Ilshenar facet"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Malas",
|
||||
"description": "Malas facet"
|
||||
},
|
||||
{
|
||||
"value": 4,
|
||||
"name": "Tokuno",
|
||||
"description": "Tokuno Islands facet"
|
||||
},
|
||||
{
|
||||
"value": 5,
|
||||
"name": "Ter Mur",
|
||||
"description": "Ter Mur facet"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMapPackets.cs",
|
||||
"line": 55
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x18",
|
||||
"name": "Map Patches",
|
||||
"description": "Sends map patch information for static and land blocks.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 41,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0029",
|
||||
"description": "Packet length (41)"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0018",
|
||||
"description": "Map Patches subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Map Count",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "4",
|
||||
"description": "Number of maps (always 4)"
|
||||
},
|
||||
{
|
||||
"name": "Patches",
|
||||
"type": "loop",
|
||||
"description": "Patch counts for each map (Felucca, Trammel, Ilshenar, Malas)",
|
||||
"loop": {
|
||||
"countField": "4",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Static Blocks",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Number of patched static blocks"
|
||||
},
|
||||
{
|
||||
"name": "Land Blocks",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Number of patched land blocks"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMapPackets.cs",
|
||||
"line": 25
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x56",
|
||||
"name": "Map Command",
|
||||
"description": "Server sends map pin commands to update the client\u0027s map display.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 11,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x56",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Map Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the map item"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Map command type",
|
||||
"enum": [
|
||||
{ "value": "1", "name": "AddPin", "description": "Add a pin to the map" },
|
||||
{ "value": "5", "name": "DisplayMap", "description": "Display the map to client" },
|
||||
{ "value": "7", "name": "SetEditable", "description": "Set map editable state" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Editable",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True if map is editable (for command 7)"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X coordinate of pin"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y coordinate of pin"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x90",
|
||||
"relationship": "related",
|
||||
"note": "Map Details packet"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Maps/MapItemPackets.cs",
|
||||
"line": 106
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x90",
|
||||
"name": "Map Details",
|
||||
"description": "Sends map details including bounds, dimensions, and graphic ID. Pre-NewCharacterList clients.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 19,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x90",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Map Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the map item"
|
||||
},
|
||||
{
|
||||
"name": "Graphic ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x139D",
|
||||
"description": "Map gump graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Start X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds start X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Start Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds start Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "End X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds end X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "End Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds end Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Width",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map width in pixels"
|
||||
},
|
||||
{
|
||||
"name": "Height",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map height in pixels"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xF5",
|
||||
"relationship": "variant",
|
||||
"note": "New Map Details for NewCharacterList clients"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Maps/MapItemPackets.cs",
|
||||
"line": 78
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF5",
|
||||
"name": "Map Details (New)",
|
||||
"description": "Sends map details for NewCharacterList clients. Includes facet ID.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 21,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF5",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Map Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the map item"
|
||||
},
|
||||
{
|
||||
"name": "Graphic ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"value": "0x139D",
|
||||
"description": "Map gump graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Start X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds start X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Start Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds start Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "End X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds end X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "End Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map bounds end Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Width",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map width in pixels"
|
||||
},
|
||||
{
|
||||
"name": "Height",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map height in pixels"
|
||||
},
|
||||
{
|
||||
"name": "Facet ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Map facet/world identifier",
|
||||
"enum": [
|
||||
{ "value": "0", "name": "Felucca", "description": "Felucca facet" },
|
||||
{ "value": "1", "name": "Trammel", "description": "Trammel facet" },
|
||||
{ "value": "2", "name": "Ilshenar", "description": "Ilshenar facet" },
|
||||
{ "value": "3", "name": "Malas", "description": "Malas facet" },
|
||||
{ "value": "4", "name": "Tokuno", "description": "Tokuno Islands" },
|
||||
{ "value": "5", "name": "TerMur", "description": "Ter Mur facet" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x90",
|
||||
"relationship": "variant",
|
||||
"note": "Old Map Details for pre-NewCharacterList clients"
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "7.0.13.0",
|
||||
"feature": "NewCharacterList"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Maps/MapItemPackets.cs",
|
||||
"line": 78
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
185
Distribution/Data/packets/outgoing/menu.json
Normal file
185
Distribution/Data/packets/outgoing/menu.json
Normal file
|
|
@ -0,0 +1,185 @@
|
|||
{
|
||||
"category": "Menu",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x7C",
|
||||
"name": "Display Menu",
|
||||
"description": "Displays an item list menu or question menu to the client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Item List Menu",
|
||||
"condition": "Menu is ItemListMenu",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x7C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Menu Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Menu serial"
|
||||
},
|
||||
{
|
||||
"name": "Menu ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Menu ID (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Question Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of question text"
|
||||
},
|
||||
{
|
||||
"name": "Question",
|
||||
"type": "ascii",
|
||||
"description": "Question text"
|
||||
},
|
||||
{
|
||||
"name": "Entry Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of menu entries"
|
||||
},
|
||||
{
|
||||
"name": "Entries",
|
||||
"type": "loop",
|
||||
"description": "Menu entries",
|
||||
"loop": {
|
||||
"countField": "entryCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
},
|
||||
{
|
||||
"name": "Name Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of entry name"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"description": "Entry name"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Question Menu",
|
||||
"condition": "Menu is QuestionMenu",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x7C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Menu Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Menu serial"
|
||||
},
|
||||
{
|
||||
"name": "Menu ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0000",
|
||||
"description": "Menu ID (always 0)"
|
||||
},
|
||||
{
|
||||
"name": "Question Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of question text"
|
||||
},
|
||||
{
|
||||
"name": "Question",
|
||||
"type": "ascii",
|
||||
"description": "Question text"
|
||||
},
|
||||
{
|
||||
"name": "Answer Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of answers"
|
||||
},
|
||||
{
|
||||
"name": "Answers",
|
||||
"type": "loop",
|
||||
"description": "Answer options",
|
||||
"loop": {
|
||||
"countField": "answerCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused padding"
|
||||
},
|
||||
{
|
||||
"name": "Answer Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Length of answer text"
|
||||
},
|
||||
{
|
||||
"name": "Answer",
|
||||
"type": "ascii",
|
||||
"description": "Answer text"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x7D",
|
||||
"relationship": "response",
|
||||
"note": "Menu Response from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMenuPackets.cs",
|
||||
"line": 36
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,198 +1,526 @@
|
|||
{
|
||||
"category": "Message",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x15",
|
||||
"name": "Follow Message",
|
||||
"description": "Instructs client to follow one entity with another.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x15", "description": "Packet identifier" },
|
||||
{ "name": "followerSerial", "type": "uint", "size": 4, "description": "Serial of the follower" },
|
||||
{ "name": "targetSerial", "type": "uint", "size": 4, "description": "Serial of the target to follow" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 231
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x1C",
|
||||
"name": "ASCII Message",
|
||||
"description": "Server sends ASCII-encoded message to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x1C", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of speaker (0xFFFFFFFF for system)" },
|
||||
{ "name": "graphic", "type": "short", "size": 2, "description": "Body graphic of speaker" },
|
||||
{
|
||||
"name": "type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Message type",
|
||||
"values": [
|
||||
{ "value": 0, "name": "Regular", "description": "Normal speech" },
|
||||
{ "value": 1, "name": "System", "description": "System message" },
|
||||
{ "value": 2, "name": "Emote", "description": "Emote (*action*)" },
|
||||
{ "value": 6, "name": "Label", "description": "Object label" },
|
||||
{ "value": 7, "name": "Focus", "description": "Focused message" },
|
||||
{ "value": 8, "name": "Whisper", "description": "Whisper" },
|
||||
{ "value": 9, "name": "Yell", "description": "Yell" },
|
||||
{ "value": 10, "name": "Spell", "description": "Spell words" },
|
||||
{ "value": 13, "name": "Guild", "description": "Guild chat" },
|
||||
{ "value": 14, "name": "Alliance", "description": "Alliance chat" },
|
||||
{ "value": 15, "name": "Command", "description": "Command" }
|
||||
]
|
||||
},
|
||||
{ "name": "hue", "type": "short", "size": 2, "description": "Text color hue" },
|
||||
{ "name": "font", "type": "short", "size": 2, "description": "Font ID" },
|
||||
{ "name": "name", "type": "ascii", "size": 30, "description": "Speaker name" },
|
||||
{ "name": "text", "type": "ascii-null", "description": "Message text" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x03", "relationship": "request", "note": "ASCII Speech from client" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 180
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xAE",
|
||||
"name": "Unicode Message",
|
||||
"description": "Server sends Unicode-encoded message to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xAE", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of speaker (0xFFFFFFFF for system)" },
|
||||
{ "name": "graphic", "type": "short", "size": 2, "description": "Body graphic of speaker" },
|
||||
{ "name": "type", "type": "byte", "size": 1, "description": "Message type (see 0x1C)" },
|
||||
{ "name": "hue", "type": "short", "size": 2, "description": "Text color hue" },
|
||||
{ "name": "font", "type": "short", "size": 2, "description": "Font ID" },
|
||||
{ "name": "language", "type": "ascii", "size": 4, "description": "Language code (e.g., 'ENU')" },
|
||||
{ "name": "name", "type": "ascii", "size": 30, "description": "Speaker name" },
|
||||
{ "name": "text", "type": "unicode-be-null", "description": "Message text (Big Endian Unicode)" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0xAD", "relationship": "request", "note": "Unicode Speech from client" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 180
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xB7",
|
||||
"name": "Help Response",
|
||||
"description": "Server sends help text response to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xB7", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of entity" },
|
||||
{ "name": "text", "type": "unicode-be-null", "description": "Help text" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0xB6", "relationship": "request", "note": "Object Help Request from client" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 263
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC1",
|
||||
"name": "Localized Message",
|
||||
"description": "Server sends a localized (cliloc) message to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xC1", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of speaker" },
|
||||
{ "name": "graphic", "type": "short", "size": 2, "description": "Body graphic of speaker" },
|
||||
{ "name": "type", "type": "byte", "size": 1, "description": "Message type (see 0x1C)" },
|
||||
{ "name": "hue", "type": "short", "size": 2, "description": "Text color hue" },
|
||||
{ "name": "font", "type": "short", "size": 2, "description": "Font ID" },
|
||||
{ "name": "clilocNumber", "type": "int", "size": 4, "description": "Cliloc entry number" },
|
||||
{ "name": "name", "type": "ascii", "size": 30, "description": "Speaker name" },
|
||||
{ "name": "arguments", "type": "unicode-le-null", "description": "Tab-separated arguments for cliloc" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 55
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC2",
|
||||
"name": "Prompt",
|
||||
"description": "Server requests text input from client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 21,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xC2", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "value": "21", "description": "Packet length" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Prompt serial" },
|
||||
{ "name": "promptId", "type": "uint", "size": 4, "description": "Prompt ID (same as serial)" },
|
||||
{ "name": "padding", "type": "byte[]", "size": 10, "description": "Unused padding (zeros)" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x9A", "relationship": "response", "note": "ASCII Prompt Response" },
|
||||
{ "id": "0xC2", "relationship": "response", "note": "Unicode Prompt Response" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 246
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xCC",
|
||||
"name": "Localized Message Affix",
|
||||
"description": "Server sends a localized message with text prefix/suffix.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Dynamic",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xCC", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Serial of speaker" },
|
||||
{ "name": "graphic", "type": "short", "size": 2, "description": "Body graphic of speaker" },
|
||||
{ "name": "type", "type": "byte", "size": 1, "description": "Message type (see 0x1C)" },
|
||||
{ "name": "hue", "type": "short", "size": 2, "description": "Text color hue" },
|
||||
{ "name": "font", "type": "short", "size": 2, "description": "Font ID" },
|
||||
{ "name": "clilocNumber", "type": "int", "size": 4, "description": "Cliloc entry number" },
|
||||
{
|
||||
"name": "affixType",
|
||||
"type": "bitfield",
|
||||
"size": 1,
|
||||
"description": "How to apply the affix",
|
||||
"flags": [
|
||||
{ "bit": "0x00", "name": "Append", "description": "Append affix to end" },
|
||||
{ "bit": "0x01", "name": "Prepend", "description": "Prepend affix to start" },
|
||||
{ "bit": "0x02", "name": "System", "description": "System message style" }
|
||||
]
|
||||
},
|
||||
{ "name": "name", "type": "ascii", "size": 30, "description": "Speaker name" },
|
||||
{ "name": "affix", "type": "ascii-null", "description": "Text to prepend/append" },
|
||||
{ "name": "arguments", "type": "unicode-be-null", "description": "Tab-separated arguments for cliloc" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 112
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"category": "Message",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x15",
|
||||
"name": "Follow Message",
|
||||
"description": "Instructs client to follow one entity with another.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x15",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Follower Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the follower"
|
||||
},
|
||||
{
|
||||
"name": "Target Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the target to follow"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 231
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x1C",
|
||||
"name": "ASCII Message",
|
||||
"description": "Server sends ASCII-encoded message to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x1C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of speaker (0xFFFFFFFF for system)"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Body graphic of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Message type",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Regular",
|
||||
"description": "Normal speech"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "System",
|
||||
"description": "System message"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Emote",
|
||||
"description": "Emote (*action*)"
|
||||
},
|
||||
{
|
||||
"value": 6,
|
||||
"name": "Label",
|
||||
"description": "Object label"
|
||||
},
|
||||
{
|
||||
"value": 7,
|
||||
"name": "Focus",
|
||||
"description": "Focused message"
|
||||
},
|
||||
{
|
||||
"value": 8,
|
||||
"name": "Whisper",
|
||||
"description": "Whisper"
|
||||
},
|
||||
{
|
||||
"value": 9,
|
||||
"name": "Yell",
|
||||
"description": "Yell"
|
||||
},
|
||||
{
|
||||
"value": 10,
|
||||
"name": "Spell",
|
||||
"description": "Spell words"
|
||||
},
|
||||
{
|
||||
"value": 13,
|
||||
"name": "Guild",
|
||||
"description": "Guild chat"
|
||||
},
|
||||
{
|
||||
"value": 14,
|
||||
"name": "Alliance",
|
||||
"description": "Alliance chat"
|
||||
},
|
||||
{
|
||||
"value": 15,
|
||||
"name": "Command",
|
||||
"description": "Command"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Speaker name"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "ascii-t",
|
||||
"description": "Message text"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x03",
|
||||
"relationship": "request",
|
||||
"note": "ASCII Speech from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 180
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xAE",
|
||||
"name": "Unicode Message",
|
||||
"description": "Server sends Unicode-encoded message to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xAE",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of speaker (0xFFFFFFFF for system)"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Body graphic of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Message type (see 0x1C)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Language",
|
||||
"type": "ascii",
|
||||
"size": 4,
|
||||
"description": "Language code (e.g., \u0027ENU\u0027)"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Speaker name"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be-t",
|
||||
"description": "Message text (Big Endian Unicode)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xAD",
|
||||
"relationship": "request",
|
||||
"note": "Unicode Speech from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 180
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xB7",
|
||||
"name": "Help Response",
|
||||
"description": "Server sends help text response to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xB7",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of entity"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be-t",
|
||||
"description": "Help text"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xB6",
|
||||
"relationship": "request",
|
||||
"note": "Object Help Request from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 263
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC1",
|
||||
"name": "Localized Message",
|
||||
"description": "Server sends a localized (cliloc) message to client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC1",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Body graphic of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Message type (see 0x1C)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Cliloc Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Cliloc entry number"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Speaker name"
|
||||
},
|
||||
{
|
||||
"name": "Arguments",
|
||||
"type": "utf16le-t",
|
||||
"description": "Tab-separated arguments for cliloc"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 55
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xC2",
|
||||
"name": "Prompt",
|
||||
"description": "Server requests text input from client.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 21,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xC2",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "21",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Prompt serial"
|
||||
},
|
||||
{
|
||||
"name": "Prompt ID",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Prompt ID (same as serial)"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 10,
|
||||
"description": "Unused padding (zeros)"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x9A",
|
||||
"relationship": "response",
|
||||
"note": "ASCII Prompt Response"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 246
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xCC",
|
||||
"name": "Localized Message Affix",
|
||||
"description": "Server sends a localized message with text prefix/suffix.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "var",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xCC",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Graphic",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Body graphic of speaker"
|
||||
},
|
||||
{
|
||||
"name": "Type",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Message type (see 0x1C)"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Text color hue"
|
||||
},
|
||||
{
|
||||
"name": "Font",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Font ID"
|
||||
},
|
||||
{
|
||||
"name": "Cliloc Number",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Cliloc entry number"
|
||||
},
|
||||
{
|
||||
"name": "Affix Type",
|
||||
"type": "enum",
|
||||
"size": 1,
|
||||
"description": "How to apply the affix",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Append",
|
||||
"description": "Append affix to end"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Prepend",
|
||||
"description": "Prepend affix to start"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "System",
|
||||
"description": "System message style"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Speaker name"
|
||||
},
|
||||
{
|
||||
"name": "Affix",
|
||||
"type": "ascii-t",
|
||||
"description": "Text to prepend/append"
|
||||
},
|
||||
{
|
||||
"name": "Arguments",
|
||||
"type": "utf16be-t",
|
||||
"description": "Tab-separated arguments for cliloc"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMessagePackets.cs",
|
||||
"line": 112
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,101 +1,256 @@
|
|||
{
|
||||
"category": "Movement",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x21",
|
||||
"name": "Movement Rejection",
|
||||
"description": "Sent by the server when player movement is blocked (collision, teleport area, etc). Contains the corrected position the client should snap back to.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 8,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x21", "description": "Packet identifier" },
|
||||
{ "name": "sequence", "type": "byte", "size": 1, "description": "Sequence number of the rejected movement request" },
|
||||
{ "name": "x", "type": "short", "size": 2, "description": "Correct X coordinate" },
|
||||
{ "name": "y", "type": "short", "size": 2, "description": "Correct Y coordinate" },
|
||||
{ "name": "direction", "type": "byte", "size": 1, "description": "Correct facing direction (0-7)" },
|
||||
{ "name": "z", "type": "sbyte", "size": 1, "description": "Correct Z coordinate" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x02", "relationship": "request", "note": "The movement request that was rejected" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 45
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x22",
|
||||
"name": "Movement Acknowledgment",
|
||||
"description": "Sent by the server to confirm successful player movement. Includes the player's current notoriety for display purposes.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 3,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x22", "description": "Packet identifier" },
|
||||
{ "name": "sequence", "type": "byte", "size": 1, "description": "Sequence number of the accepted movement request" },
|
||||
{ "name": "notoriety", "type": "byte", "size": 1, "description": "Player's current notoriety flag (0=Innocent, 1=Friend, 2=Gray/Attackable, 3=Criminal, 4=Enemy, 5=Murderer, 6=Invulnerable)" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x02", "relationship": "request", "note": "The movement request that was accepted" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x97",
|
||||
"name": "Move Player",
|
||||
"description": "Server-initiated player movement. Forces the client to move in a direction (used for pushback effects, conveyors, etc).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 2,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x97", "description": "Packet identifier" },
|
||||
{ "name": "direction", "type": "byte", "size": 1, "description": "Direction to move (0-7). Bit 0x80 indicates running." }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x0026",
|
||||
"name": "Speed Control",
|
||||
"description": "Controls the player's movement speed. Used for mount speed changes, walk/run restrictions, etc.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" },
|
||||
{ "name": "length", "type": "ushort", "size": 2, "value": "0x0006", "description": "Packet length" },
|
||||
{ "name": "subCommand", "type": "ushort", "size": 2, "value": "0x0026", "description": "Sub-command for speed control" },
|
||||
{ "name": "speedSetting", "type": "byte", "size": 1, "description": "Speed setting: 0=Disable (normal), 1=Mount speed, 2=Walk only" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF2",
|
||||
"name": "Time Sync Response",
|
||||
"description": "Server response to client time synchronization request. Contains tick counts for latency calculation.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 25,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xF2", "description": "Packet identifier" },
|
||||
{ "name": "tickCount1", "type": "long", "size": 8, "description": "Server tick count" },
|
||||
{ "name": "tickCount2", "type": "long", "size": 8, "description": "Server tick count" },
|
||||
{ "name": "tickCount3", "type": "long", "size": 8, "description": "Server tick count" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 63
|
||||
}
|
||||
}
|
||||
]
|
||||
{
|
||||
"category": "Movement",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x21",
|
||||
"name": "Movement Rejection",
|
||||
"description": "Sent by the server when player movement is blocked (collision, teleport area, etc). Contains the corrected position the client should snap back to.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 8,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x21",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Sequence",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Sequence number of the rejected movement request"
|
||||
},
|
||||
{
|
||||
"name": "X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Correct X coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Correct Y coordinate"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Correct facing direction (0-7)"
|
||||
},
|
||||
{
|
||||
"name": "Z",
|
||||
"type": "sbyte",
|
||||
"size": 1,
|
||||
"description": "Correct Z coordinate"
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x02",
|
||||
"relationship": "request",
|
||||
"note": "The movement request that was rejected"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 45
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x22",
|
||||
"name": "Movement Acknowledgment",
|
||||
"description": "Sent by the server to confirm successful player movement. Includes the player\u0027s current notoriety for display purposes.",
|
||||
"direction": "outgoing",
|
||||
"noMerge": true,
|
||||
"isDynamic": false,
|
||||
"size": 3,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x22",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Sequence",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Sequence number of the accepted movement request"
|
||||
},
|
||||
{
|
||||
"name": "Notoriety",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Player\u0027s current notoriety flag",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Innocent",
|
||||
"description": "Blue - innocent player"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Friend",
|
||||
"description": "Green - ally/friend"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Attackable",
|
||||
"description": "Gray - can be attacked"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Criminal",
|
||||
"description": "Gray - criminal flag"
|
||||
},
|
||||
{
|
||||
"value": 4,
|
||||
"name": "Enemy",
|
||||
"description": "Orange - enemy"
|
||||
},
|
||||
{
|
||||
"value": 5,
|
||||
"name": "Murderer",
|
||||
"description": "Red - murderer"
|
||||
},
|
||||
{
|
||||
"value": 6,
|
||||
"name": "Invulnerable",
|
||||
"description": "Yellow - invulnerable"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x02",
|
||||
"relationship": "request",
|
||||
"note": "The movement request that was accepted"
|
||||
}
|
||||
],
|
||||
"notes": "Not related to incoming 0x22 (Resynchronize) despite sharing the same packet ID.",
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x97",
|
||||
"name": "Move Player",
|
||||
"description": "Server-initiated player movement. Forces the client to move in a direction (used for pushback effects, conveyors, etc).",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 2,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x97",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Direction",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Direction to move (0-7). Bit 0x80 indicates running."
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x26",
|
||||
"name": "Speed Control",
|
||||
"description": "Controls the player\u0027s movement speed. Used for mount speed changes, walk/run restrictions, etc.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 6,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0026",
|
||||
"description": "Sub-command for speed control"
|
||||
},
|
||||
{
|
||||
"name": "Speed Setting",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Movement speed mode",
|
||||
"enum": [
|
||||
{ "value": "0", "name": "Disable", "description": "Normal speed (remove override)" },
|
||||
{ "value": "1", "name": "MountSpeed", "description": "Force mounted movement speed" },
|
||||
{ "value": "2", "name": "WalkOnly", "description": "Force walk speed only" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xF2",
|
||||
"name": "Time Sync Response",
|
||||
"description": "Server response to client time synchronization request. Contains tick counts for latency calculation.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 25,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xF2",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Tick Count1",
|
||||
"type": "long",
|
||||
"size": 8,
|
||||
"description": "Server tick count"
|
||||
},
|
||||
{
|
||||
"name": "Tick Count2",
|
||||
"type": "long",
|
||||
"size": 8,
|
||||
"description": "Server tick count"
|
||||
},
|
||||
{
|
||||
"name": "Tick Count3",
|
||||
"type": "long",
|
||||
"size": 8,
|
||||
"description": "Server tick count"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
||||
"line": 63
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
281
Distribution/Data/packets/outgoing/party.json
Normal file
281
Distribution/Data/packets/outgoing/party.json
Normal file
|
|
@ -0,0 +1,281 @@
|
|||
{
|
||||
"category": "Party",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x06",
|
||||
"name": "Party Message",
|
||||
"description": "Party system messages with various subcommands.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Member List",
|
||||
"version": "0x01",
|
||||
"condition": "command == 0x01",
|
||||
"size": "7 + (memberCount x 4)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Party subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x01",
|
||||
"description": "Member list command"
|
||||
},
|
||||
{
|
||||
"name": "Member Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of party members"
|
||||
},
|
||||
{
|
||||
"name": "Members",
|
||||
"type": "loop",
|
||||
"description": "Party members",
|
||||
"loop": {
|
||||
"countField": "memberCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Member\u0027s serial"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Remove Member",
|
||||
"version": "0x02",
|
||||
"condition": "command == 0x02",
|
||||
"size": "11 + (memberCount x 4)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Party subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x02",
|
||||
"description": "Remove member command"
|
||||
},
|
||||
{
|
||||
"name": "Member Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of remaining members"
|
||||
},
|
||||
{
|
||||
"name": "Removed Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of removed member"
|
||||
},
|
||||
{
|
||||
"name": "Members",
|
||||
"type": "loop",
|
||||
"description": "Remaining party members",
|
||||
"loop": {
|
||||
"countField": "memberCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Member\u0027s serial"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Private Message",
|
||||
"version": "0x03",
|
||||
"condition": "command == 0x03",
|
||||
"size": "12 + (text.Length x 2)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Party subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x03",
|
||||
"description": "Private message command"
|
||||
},
|
||||
{
|
||||
"name": "Sender Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of message sender"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be-t",
|
||||
"description": "Message text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Public Message",
|
||||
"version": "0x04",
|
||||
"condition": "command == 0x04",
|
||||
"size": "12 + (text.Length x 2)",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Party subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x04",
|
||||
"description": "Public message command"
|
||||
},
|
||||
{
|
||||
"name": "Sender Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of message sender"
|
||||
},
|
||||
{
|
||||
"name": "Text",
|
||||
"type": "utf16be-t",
|
||||
"description": "Message text"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Party Invitation",
|
||||
"version": "0x07",
|
||||
"condition": "command == 0x07",
|
||||
"size": 10,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "10",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0006",
|
||||
"description": "Party subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Command",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x07",
|
||||
"description": "Invitation command"
|
||||
},
|
||||
{
|
||||
"name": "Leader Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of party leader"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0xBF/0x06",
|
||||
"relationship": "request",
|
||||
"note": "Party Message from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Engines/Party/PartyPackets.cs",
|
||||
"line": 28
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
267
Distribution/Data/packets/outgoing/securetrade.json
Normal file
267
Distribution/Data/packets/outgoing/securetrade.json
Normal file
|
|
@ -0,0 +1,267 @@
|
|||
{
|
||||
"category": "Secure Trade",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x6F",
|
||||
"name": "Secure Trade",
|
||||
"description": "Manages secure trade windows between players.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"name": "Display Trade Window",
|
||||
"condition": "flag == Display (0)",
|
||||
"size": 47,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "47",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Flag",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"value": "0",
|
||||
"description": "Trade action flag",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Display",
|
||||
"description": "Open trade window"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Close",
|
||||
"description": "Close trade window"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Update",
|
||||
"description": "Update accept status"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Update Gold",
|
||||
"description": "Update gold amounts"
|
||||
},
|
||||
{
|
||||
"value": 4,
|
||||
"name": "Update Ledger",
|
||||
"description": "Update ledger"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Partner Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of trading partner"
|
||||
},
|
||||
{
|
||||
"name": "First Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of your trade container"
|
||||
},
|
||||
{
|
||||
"name": "Second Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of partner\u0027s trade container"
|
||||
},
|
||||
{
|
||||
"name": "Has Name",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"value": "true",
|
||||
"description": "Name field follows"
|
||||
},
|
||||
{
|
||||
"name": "Partner Name",
|
||||
"type": "ascii",
|
||||
"size": 30,
|
||||
"description": "Trading partner\u0027s name"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Close Trade Window",
|
||||
"condition": "flag == Close (1)",
|
||||
"size": 17,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "17",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Flag",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "1",
|
||||
"description": "Close flag"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Trade container serial"
|
||||
},
|
||||
{
|
||||
"name": "Unused1",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Unused2",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"value": "0",
|
||||
"description": "Unused"
|
||||
},
|
||||
{
|
||||
"name": "Has Name",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"value": "false",
|
||||
"description": "No name follows"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Update Accept Status",
|
||||
"condition": "flag == Update (2)",
|
||||
"size": 17,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "17",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Flag",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "2",
|
||||
"description": "Update flag"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Trade container serial"
|
||||
},
|
||||
{
|
||||
"name": "Your Accept",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Your accept status (0 or 1)"
|
||||
},
|
||||
{
|
||||
"name": "Partner Accept",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Partner\u0027s accept status (0 or 1)"
|
||||
},
|
||||
{
|
||||
"name": "Has Name",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"value": "false",
|
||||
"description": "No name follows"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Update Gold/Platinum",
|
||||
"condition": "flag == UpdateGold (3)",
|
||||
"size": 17,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6F",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "17",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Flag",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "3",
|
||||
"description": "UpdateGold flag"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Trade container serial"
|
||||
},
|
||||
{
|
||||
"name": "Gold",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Gold amount"
|
||||
},
|
||||
{
|
||||
"name": "Platinum",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Platinum amount"
|
||||
},
|
||||
{
|
||||
"name": "Has Name",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"value": "false",
|
||||
"description": "No name follows"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingSecureTradePackets.cs",
|
||||
"line": 32
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,90 +1,221 @@
|
|||
{
|
||||
"category": "Targeting",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x6C",
|
||||
"name": "Target Request",
|
||||
"description": "Requests the client to select a target.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 19,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x6C", "description": "Packet identifier" },
|
||||
{ "name": "allowGround", "type": "bool", "size": 1, "description": "True = allow ground targeting" },
|
||||
{ "name": "targetId", "type": "int", "size": 4, "description": "Target cursor ID for matching response" },
|
||||
{
|
||||
"name": "flags",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Target cursor flags",
|
||||
"values": [
|
||||
{ "value": 0, "name": "Neutral", "description": "Neutral targeting (gray cursor)" },
|
||||
{ "value": 1, "name": "Harmful", "description": "Harmful action (red cursor)" },
|
||||
{ "value": 2, "name": "Beneficial", "description": "Beneficial action (green cursor)" },
|
||||
{ "value": 3, "name": "Cancel", "description": "Cancel targeting" }
|
||||
]
|
||||
},
|
||||
{ "name": "padding", "type": "byte[]", "size": 12, "description": "Padding (zeros)" }
|
||||
],
|
||||
"related": [
|
||||
{ "id": "0x6C", "relationship": "response", "note": "Target Response from client" }
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingTargetPackets.cs",
|
||||
"line": 57
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x99",
|
||||
"name": "Multi Target Request",
|
||||
"description": "Requests the client to place a multi (house/boat) structure.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "26 (pre-HS) or 30 (HS+)",
|
||||
"variants": [
|
||||
{
|
||||
"version": "pre-HighSeas",
|
||||
"name": "Classic",
|
||||
"size": 26,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x99", "description": "Packet identifier" },
|
||||
{ "name": "allowGround", "type": "bool", "size": 1, "description": "Allow ground targeting" },
|
||||
{ "name": "targetId", "type": "int", "size": 4, "description": "Target cursor ID" },
|
||||
{ "name": "flags", "type": "byte", "size": 1, "description": "Target cursor flags" },
|
||||
{ "name": "padding", "type": "byte[]", "size": 11, "description": "Padding (zeros)" },
|
||||
{ "name": "multiId", "type": "short", "size": 2, "description": "Multi graphic ID" },
|
||||
{ "name": "offsetX", "type": "short", "size": 2, "description": "X offset for placement" },
|
||||
{ "name": "offsetY", "type": "short", "size": 2, "description": "Y offset for placement" },
|
||||
{ "name": "offsetZ", "type": "short", "size": 2, "description": "Z offset for placement" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "HighSeas+",
|
||||
"name": "High Seas Extended",
|
||||
"condition": "Client version >= 7.0.9.0 (HighSeas)",
|
||||
"size": 30,
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x99", "description": "Packet identifier" },
|
||||
{ "name": "allowGround", "type": "bool", "size": 1, "description": "Allow ground targeting" },
|
||||
{ "name": "targetId", "type": "int", "size": 4, "description": "Target cursor ID" },
|
||||
{ "name": "flags", "type": "byte", "size": 1, "description": "Target cursor flags" },
|
||||
{ "name": "padding", "type": "byte[]", "size": 11, "description": "Padding (zeros)" },
|
||||
{ "name": "multiId", "type": "short", "size": 2, "description": "Multi graphic ID" },
|
||||
{ "name": "offsetX", "type": "short", "size": 2, "description": "X offset for placement" },
|
||||
{ "name": "offsetY", "type": "short", "size": 2, "description": "Y offset for placement" },
|
||||
{ "name": "offsetZ", "type": "short", "size": 2, "description": "Z offset for placement" },
|
||||
{ "name": "unknown", "type": "int", "size": 4, "description": "Unknown (HighSeas extension)" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "HighSeas adds 4 bytes"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingTargetPackets.cs",
|
||||
"line": 23
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"category": "Targeting",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x6C",
|
||||
"name": "Target Request",
|
||||
"description": "Requests the client to select a target.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 19,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x6C",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Allow Ground",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True = allow ground targeting"
|
||||
},
|
||||
{
|
||||
"name": "Target ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Target cursor ID for matching response"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "enum",
|
||||
"enumType": "sequential",
|
||||
"size": 1,
|
||||
"description": "Target cursor flags",
|
||||
"values": [
|
||||
{
|
||||
"value": 0,
|
||||
"name": "Neutral",
|
||||
"description": "Neutral targeting (gray cursor)"
|
||||
},
|
||||
{
|
||||
"value": 1,
|
||||
"name": "Harmful",
|
||||
"description": "Harmful action (red cursor)"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"name": "Beneficial",
|
||||
"description": "Beneficial action (green cursor)"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"name": "Cancel",
|
||||
"description": "Cancel targeting"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 12,
|
||||
"description": "Padding (zeros)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingTargetPackets.cs",
|
||||
"line": 57
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x99",
|
||||
"name": "Multi Target Request",
|
||||
"description": "Requests the client to place a multi (house/boat) structure.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "Varies",
|
||||
"variants": [
|
||||
{
|
||||
"version": "pre-HighSeas",
|
||||
"name": "Classic",
|
||||
"size": 26,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x99",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Allow Ground",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Allow ground targeting"
|
||||
},
|
||||
{
|
||||
"name": "Target ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Target cursor ID"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Target cursor flags"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 11,
|
||||
"description": "Padding (zeros)"
|
||||
},
|
||||
{
|
||||
"name": "Multi ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Multi graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Offset X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X offset for placement"
|
||||
},
|
||||
{
|
||||
"name": "Offset Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y offset for placement"
|
||||
},
|
||||
{
|
||||
"name": "Offset Z",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Z offset for placement"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"version": "HighSeas+",
|
||||
"name": "High Seas Extended",
|
||||
"condition": "Client version \u003e= 7.0.9.0 (HighSeas)",
|
||||
"size": 30,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x99",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Allow Ground",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "Allow ground targeting"
|
||||
},
|
||||
{
|
||||
"name": "Target ID",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Target cursor ID"
|
||||
},
|
||||
{
|
||||
"name": "Flags",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Target cursor flags"
|
||||
},
|
||||
{
|
||||
"name": "Padding",
|
||||
"type": "byte[]",
|
||||
"size": 11,
|
||||
"description": "Padding (zeros)"
|
||||
},
|
||||
{
|
||||
"name": "Multi ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Multi graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Offset X",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "X offset for placement"
|
||||
},
|
||||
{
|
||||
"name": "Offset Y",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Y offset for placement"
|
||||
},
|
||||
{
|
||||
"name": "Offset Z",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Z offset for placement"
|
||||
},
|
||||
{
|
||||
"name": "Unknown",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Unknown (HighSeas extension)"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientVersion": {
|
||||
"feature": "HighSeas adds 4 bytes"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingTargetPackets.cs",
|
||||
"line": 23
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
216
Distribution/Data/packets/outgoing/vendor.json
Normal file
216
Distribution/Data/packets/outgoing/vendor.json
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
{
|
||||
"category": "Vendor",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x3B",
|
||||
"name": "End Vendor Transaction",
|
||||
"description": "Ends a vendor buy or sell transaction.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 8,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x3B",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "8",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Vendor Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the vendor"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0",
|
||||
"description": "Item count (0 = end transaction)"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingVendorBuyPackets.cs",
|
||||
"line": 111
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x74",
|
||||
"name": "Vendor Buy List",
|
||||
"description": "Sends the list of items available for purchase from a vendor with prices.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "8+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x74",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Container Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of vendor\u0027s buy container"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Number of items"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"description": "Buy items with prices",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Price",
|
||||
"type": "int",
|
||||
"size": 4,
|
||||
"description": "Item price"
|
||||
},
|
||||
{
|
||||
"name": "Desc Length",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"description": "Description length + 1"
|
||||
},
|
||||
{
|
||||
"name": "Description",
|
||||
"type": "ascii-t",
|
||||
"description": "Item description"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x3C",
|
||||
"relationship": "request",
|
||||
"note": "Container Content with items"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingVendorBuyPackets.cs",
|
||||
"line": 77
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0x9E",
|
||||
"name": "Vendor Sell List",
|
||||
"description": "Sends the list of items the vendor will buy from the player.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": true,
|
||||
"size": "9+",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0x9E",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Vendor Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Serial of the vendor"
|
||||
},
|
||||
{
|
||||
"name": "Item Count",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Number of items"
|
||||
},
|
||||
{
|
||||
"name": "Items",
|
||||
"type": "loop",
|
||||
"description": "Sell items with prices",
|
||||
"loop": {
|
||||
"countField": "itemCount",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Item Serial",
|
||||
"type": "uint",
|
||||
"size": 4,
|
||||
"description": "Item serial"
|
||||
},
|
||||
{
|
||||
"name": "Item ID",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item graphic ID"
|
||||
},
|
||||
{
|
||||
"name": "Hue",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item hue"
|
||||
},
|
||||
{
|
||||
"name": "Amount",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Item amount"
|
||||
},
|
||||
{
|
||||
"name": "Price",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Price per unit"
|
||||
},
|
||||
{
|
||||
"name": "Name Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"description": "Name length"
|
||||
},
|
||||
{
|
||||
"name": "Name",
|
||||
"type": "ascii",
|
||||
"description": "Item name"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"related": [
|
||||
{
|
||||
"id": "0x9F",
|
||||
"relationship": "response",
|
||||
"note": "Vendor Sell Reply from client"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingVendorSellPackets.cs",
|
||||
"line": 25
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
89
Distribution/Data/packets/outgoing/weaponability.json
Normal file
89
Distribution/Data/packets/outgoing/weaponability.json
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
{
|
||||
"category": "Weapon Ability",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x21",
|
||||
"name": "Clear Weapon Ability",
|
||||
"description": "Clears the currently selected weapon ability.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "5",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0021",
|
||||
"description": "Clear Weapon Ability subcommand"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Weapons/Abilities/WeaponAbilityPackets.cs",
|
||||
"line": 37
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0xBF",
|
||||
"subId": "0x25",
|
||||
"name": "Toggle Special Ability",
|
||||
"description": "Toggles a special weapon ability on or off.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 8,
|
||||
"fields": [
|
||||
{
|
||||
"name": "Packet ID",
|
||||
"type": "byte",
|
||||
"size": 1,
|
||||
"value": "0xBF",
|
||||
"description": "Packet identifier"
|
||||
},
|
||||
{
|
||||
"name": "Length",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "8",
|
||||
"description": "Packet length"
|
||||
},
|
||||
{
|
||||
"name": "Sub-Command",
|
||||
"type": "ushort",
|
||||
"size": 2,
|
||||
"value": "0x0025",
|
||||
"description": "Toggle Special Ability subcommand"
|
||||
},
|
||||
{
|
||||
"name": "Ability ID",
|
||||
"type": "short",
|
||||
"size": 2,
|
||||
"description": "Ability ID"
|
||||
},
|
||||
{
|
||||
"name": "Active",
|
||||
"type": "bool",
|
||||
"size": 1,
|
||||
"description": "True if ability is active"
|
||||
}
|
||||
],
|
||||
"source": {
|
||||
"file": "Projects/UOContent/Items/Weapons/Abilities/WeaponAbilityPackets.cs",
|
||||
"line": 40
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue