ModernUO/Distribution/Data/packets/incoming/account.json
Kamron Batman f0b65fecb7
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>
2026-01-01 11:47:31 -08:00

262 lines
14 KiB
JSON

{
"category": "Account",
"packets": [
{
"id": "0x80",
"name": "Account Login",
"description": "Initial login request sent to the login server. Contains account credentials for authentication.",
"direction": "incoming",
"isDynamic": false,
"size": 62,
"fields": [
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x80", "description": "Packet identifier" },
{ "name": "username", "type": "ascii", "size": 30, "description": "Account username (null-terminated)" },
{ "name": "password", "type": "ascii", "size": 30, "description": "Account password (null-terminated)" },
{ "name": "nextLoginKey", "type": "byte", "size": 1, "description": "Next login key" }
],
"related": [
{ "id": "0x82", "relationship": "rej", "note": "Sent if login fails" },
{ "id": "0xA8", "relationship": "ack", "note": "Sent if login succeeds (server list)" }
],
"source": {
"file": "Projects/UOContent/Network/Packets/IncomingAccountPackets.cs",
"line": 439
}
},
{
"id": "0x91",
"name": "Game Login",
"description": "Login request sent to the game server after selecting a shard from the server list.",
"direction": "incoming",
"isDynamic": false,
"size": 65,
"fields": [
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x91", "description": "Packet identifier" },
{ "name": "authId", "type": "int", "size": 4, "description": "Authentication ID from PlayServerAck (0x8C)" },
{ "name": "username", "type": "ascii", "size": 30, "description": "Account username" },
{ "name": "password", "type": "ascii", "size": 30, "description": "Account password" }
],
"related": [
{ "id": "0xA9", "relationship": "response", "note": "Character list sent on success" }
],
"source": {
"file": "Projects/UOContent/Network/Packets/IncomingAccountPackets.cs",
"line": 345
}
},
{
"id": "0x5D",
"name": "Play Character",
"description": "Request to enter the world with a selected character from the character list.",
"direction": "incoming",
"isDynamic": false,
"size": 73,
"fields": [
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x5D", "description": "Packet identifier" },
{ "name": "pattern", "type": "uint", "size": 4, "value": "0xEDEDEDED", "description": "Fixed pattern" },
{ "name": "name", "type": "ascii", "size": 30, "description": "Character name (unused)" },
{ "name": "unknown", "type": "byte[2]", "size": 2, "description": "Unknown" },
{ "name": "flags", "type": "int", "size": 4, "description": "Client flags" },
{ "name": "unknown2", "type": "byte[24]", "size": 24, "description": "Unknown" },
{ "name": "charSlot", "type": "int", "size": 4, "description": "Character slot index (0-based)" },
{ "name": "clientIP", "type": "int", "size": 4, "description": "Client IP address" }
],
"related": [
{ "id": "0x1B", "relationship": "response", "note": "Login confirmation sent on success" }
],
"source": {
"file": "Projects/UOContent/Network/Packets/IncomingAccountPackets.cs",
"line": 210
}
},
{
"id": "0xA0",
"name": "Play Server",
"description": "Request to connect to a specific game server from the server list.",
"direction": "incoming",
"isDynamic": false,
"size": 3,
"fields": [
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xA0", "description": "Packet identifier" },
{ "name": "serverIndex", "type": "short", "size": 2, "description": "Index of selected server in the list" }
],
"related": [
{ "id": "0x8C", "relationship": "response", "note": "Server connection details" }
],
"source": {
"file": "Projects/UOContent/Network/Packets/IncomingAccountPackets.cs",
"line": 398
}
},
{
"id": "0x83",
"name": "Delete Character",
"description": "Request to delete a character from the account.",
"direction": "incoming",
"isDynamic": false,
"size": 39,
"fields": [
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x83", "description": "Packet identifier" },
{ "name": "password", "type": "ascii", "size": 30, "description": "Account password for verification" },
{ "name": "charIndex", "type": "int", "size": 4, "description": "Character slot index to delete" },
{ "name": "clientIP", "type": "int", "size": 4, "description": "Client IP address" }
],
"related": [
{ "id": "0x85", "relationship": "response", "note": "Delete result" }
],
"source": {
"file": "Projects/UOContent/Network/Packets/IncomingAccountPackets.cs",
"line": 185
}
},
{
"id": "0xEF",
"name": "Login Server Seed",
"description": "Initial connection packet sent before account login. Contains seed and client version information.",
"direction": "incoming",
"isDynamic": false,
"size": 21,
"fields": [
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xEF", "description": "Packet identifier" },
{ "name": "seed", "type": "int", "size": 4, "description": "Random seed for encryption" },
{ "name": "clientMajor", "type": "int", "size": 4, "description": "Client major version" },
{ "name": "clientMinor", "type": "int", "size": 4, "description": "Client minor version" },
{ "name": "clientRevision", "type": "int", "size": 4, "description": "Client revision" },
{ "name": "clientPatch", "type": "int", "size": 4, "description": "Client patch level" }
],
"source": {
"file": "Projects/UOContent/Network/Packets/IncomingAccountPackets.cs",
"line": 419
}
},
{
"id": "0xBD",
"name": "Client Version",
"description": "Response to server's version request (0xBD). Contains the client version string.",
"direction": "incoming",
"isDynamic": true,
"size": "3 + version string length",
"fields": [
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xBD", "description": "Packet identifier" },
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
{ "name": "version", "type": "ascii", "description": "Client version string (e.g., '7.0.95.0')" }
],
"source": {
"file": "Projects/UOContent/Network/Packets/IncomingAccountPackets.cs",
"line": 193
}
},
{
"id": "0xE1",
"name": "Client Type",
"description": "Sent by the client to identify the client type and version.",
"direction": "incoming",
"isDynamic": true,
"size": "variable",
"fields": [
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xE1", "description": "Packet identifier" },
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length" },
{ "name": "unknown", "type": "ushort", "size": 2, "description": "Unknown" },
{ "name": "clientType", "type": "ushort", "size": 2, "description": "Client type identifier" },
{ "name": "version", "type": "ascii", "description": "Client version string" }
],
"source": {
"file": "Projects/UOContent/Network/Packets/IncomingAccountPackets.cs",
"line": 200
}
},
{
"id": "0x00",
"name": "Create Character (Old)",
"description": "Request to create a new character. This is the older 104-byte version.",
"direction": "incoming",
"isDynamic": false,
"size": 104,
"fields": [
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x00", "description": "Packet identifier" },
{ "name": "unknown1", "type": "int", "size": 4, "description": "Unknown" },
{ "name": "unknown2", "type": "int", "size": 4, "description": "Unknown" },
{ "name": "unknown3", "type": "byte", "size": 1, "description": "Unknown" },
{ "name": "name", "type": "ascii", "size": 30, "description": "Character name" },
{ "name": "unknown4", "type": "byte[2]", "size": 2, "description": "Unknown" },
{ "name": "flags", "type": "int", "size": 4, "description": "Client flags" },
{ "name": "unknown5", "type": "byte[8]", "size": 8, "description": "Unknown" },
{ "name": "profession", "type": "byte", "size": 1, "description": "Starting profession" },
{ "name": "unknown6", "type": "byte[15]", "size": 15, "description": "Unknown" },
{ "name": "genderRace", "type": "byte", "size": 1, "description": "Gender and race combined value" },
{ "name": "strength", "type": "byte", "size": 1, "description": "Starting strength" },
{ "name": "dexterity", "type": "byte", "size": 1, "description": "Starting dexterity" },
{ "name": "intelligence", "type": "byte", "size": 1, "description": "Starting intelligence" },
{ "name": "skill1Id", "type": "byte", "size": 1, "description": "First skill ID" },
{ "name": "skill1Value", "type": "byte", "size": 1, "description": "First skill value" },
{ "name": "skill2Id", "type": "byte", "size": 1, "description": "Second skill ID" },
{ "name": "skill2Value", "type": "byte", "size": 1, "description": "Second skill value" },
{ "name": "skill3Id", "type": "byte", "size": 1, "description": "Third skill ID" },
{ "name": "skill3Value", "type": "byte", "size": 1, "description": "Third skill value" },
{ "name": "skinHue", "type": "ushort", "size": 2, "description": "Skin color hue" },
{ "name": "hairStyle", "type": "short", "size": 2, "description": "Hair style ID" },
{ "name": "hairHue", "type": "short", "size": 2, "description": "Hair color hue" },
{ "name": "facialHairStyle", "type": "short", "size": 2, "description": "Facial hair style ID" },
{ "name": "facialHairHue", "type": "short", "size": 2, "description": "Facial hair color hue" },
{ "name": "unknown7", "type": "byte", "size": 1, "description": "Unknown" },
{ "name": "cityIndex", "type": "byte", "size": 1, "description": "Starting city index" },
{ "name": "charSlot", "type": "int", "size": 4, "description": "Character slot" },
{ "name": "clientIP", "type": "int", "size": 4, "description": "Client IP" },
{ "name": "shirtHue", "type": "short", "size": 2, "description": "Starting shirt hue" },
{ "name": "pantsHue", "type": "short", "size": 2, "description": "Starting pants hue" }
],
"source": {
"file": "Projects/UOContent/Network/Packets/IncomingAccountPackets.cs",
"line": 58
}
},
{
"id": "0xF8",
"name": "Create Character (New)",
"description": "Request to create a new character. This is the newer 106-byte version with support for 4 skills.",
"direction": "incoming",
"isDynamic": false,
"size": 106,
"fields": [
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xF8", "description": "Packet identifier" },
{ "name": "unknown1", "type": "int", "size": 4, "description": "Unknown" },
{ "name": "unknown2", "type": "int", "size": 4, "description": "Unknown" },
{ "name": "unknown3", "type": "byte", "size": 1, "description": "Unknown" },
{ "name": "name", "type": "ascii", "size": 30, "description": "Character name" },
{ "name": "unknown4", "type": "byte[2]", "size": 2, "description": "Unknown" },
{ "name": "flags", "type": "int", "size": 4, "description": "Client flags" },
{ "name": "unknown5", "type": "byte[8]", "size": 8, "description": "Unknown" },
{ "name": "profession", "type": "byte", "size": 1, "description": "Starting profession" },
{ "name": "unknown6", "type": "byte[15]", "size": 15, "description": "Unknown" },
{ "name": "genderRace", "type": "byte", "size": 1, "description": "Gender and race combined value" },
{ "name": "strength", "type": "byte", "size": 1, "description": "Starting strength" },
{ "name": "dexterity", "type": "byte", "size": 1, "description": "Starting dexterity" },
{ "name": "intelligence", "type": "byte", "size": 1, "description": "Starting intelligence" },
{ "name": "skill1Id", "type": "byte", "size": 1, "description": "First skill ID" },
{ "name": "skill1Value", "type": "byte", "size": 1, "description": "First skill value" },
{ "name": "skill2Id", "type": "byte", "size": 1, "description": "Second skill ID" },
{ "name": "skill2Value", "type": "byte", "size": 1, "description": "Second skill value" },
{ "name": "skill3Id", "type": "byte", "size": 1, "description": "Third skill ID" },
{ "name": "skill3Value", "type": "byte", "size": 1, "description": "Third skill value" },
{ "name": "skill4Id", "type": "byte", "size": 1, "description": "Fourth skill ID (newer clients)" },
{ "name": "skill4Value", "type": "byte", "size": 1, "description": "Fourth skill value (newer clients)" },
{ "name": "skinHue", "type": "ushort", "size": 2, "description": "Skin color hue" },
{ "name": "hairStyle", "type": "short", "size": 2, "description": "Hair style ID" },
{ "name": "hairHue", "type": "short", "size": 2, "description": "Hair color hue" },
{ "name": "facialHairStyle", "type": "short", "size": 2, "description": "Facial hair style ID" },
{ "name": "facialHairHue", "type": "short", "size": 2, "description": "Facial hair color hue" },
{ "name": "unknown7", "type": "byte", "size": 1, "description": "Unknown" },
{ "name": "cityIndex", "type": "byte", "size": 1, "description": "Starting city index" },
{ "name": "charSlot", "type": "int", "size": 4, "description": "Character slot" },
{ "name": "clientIP", "type": "int", "size": 4, "description": "Client IP" },
{ "name": "shirtHue", "type": "short", "size": 2, "description": "Starting shirt hue" },
{ "name": "pantsHue", "type": "short", "size": 2, "description": "Starting pants hue" }
],
"source": {
"file": "Projects/UOContent/Network/Packets/IncomingAccountPackets.cs",
"line": 58
},
"notes": "Uses the same handler as 0x00 but with 2 additional bytes for the 4th skill."
}
]
}