feat: Add interactive packet documentation system
- Create JSON-based packet documentation for 145 packets (66 incoming, 79 outgoing) - Add HTML template with search, filtering, and navigation - Support enum/bitfield field display with values and descriptions - Support packet variants for version-specific structures - Include 0xBF extended command subpackets documentation - Add PowerShell build script to generate final HTML 🤖 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
ec287d7691
commit
f0b65fecb7
28 changed files with 6011 additions and 0 deletions
132
Distribution/Data/packets/incoming/mobile.json
Normal file
132
Distribution/Data/packets/incoming/mobile.json
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue