{ "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": "Packet ID", "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": "Next Login Key", "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": "Packet ID", "type": "byte", "size": 1, "value": "0x91", "description": "Packet identifier" }, { "name": "Auth ID", "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": "Packet ID", "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": "Char Slot", "type": "int", "size": 4, "description": "Character slot index (0-based)" }, { "name": "Client IP", "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": "Packet ID", "type": "byte", "size": 1, "value": "0xA0", "description": "Packet identifier" }, { "name": "Server Index", "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": "Packet ID", "type": "byte", "size": 1, "value": "0x83", "description": "Packet identifier" }, { "name": "Password", "type": "ascii", "size": 30, "description": "Account password for verification" }, { "name": "Char Index", "type": "int", "size": 4, "description": "Character slot index to delete" }, { "name": "Client IP", "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": "Packet ID", "type": "byte", "size": 1, "value": "0xEF", "description": "Packet identifier" }, { "name": "Seed", "type": "int", "size": 4, "description": "Random seed for encryption" }, { "name": "Client Major", "type": "int", "size": 4, "description": "Client major version" }, { "name": "Client Minor", "type": "int", "size": 4, "description": "Client minor version" }, { "name": "Client Revision", "type": "int", "size": 4, "description": "Client revision" }, { "name": "Client Patch", "type": "int", "size": 4, "description": "Client patch level" } ], "clientVersion": { "classic": { "min": "6.0.5.0" }, "enhanced": {}, "notes": "Replaces the legacy 4-byte seed for clients 6.0.5.0+. Pre-6.0.5.0 clients send only a 4-byte seed without version info." }, "source": { "file": "Projects/UOContent/Network/Packets/IncomingAccountPackets.cs", "line": 419 } }, { "id": "0xBD", "name": "Client Version", "description": "Response to server\u0027s version request (0xBD). Contains the client version string.", "direction": "incoming", "isDynamic": true, "size": "3 + version string length", "fields": [ { "name": "Packet ID", "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., \u00277.0.95.0\u0027)" } ], "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. Added during Kingdom Reborn/Stygian Abyss expansion.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xE1", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Unknown", "type": "ushort", "size": 2, "value": "0x0001", "description": "Unknown (always 0x0001)" }, { "name": "Client Type", "type": "enum", "enumType": "sequential", "size": 2, "description": "Client type identifier", "values": [ { "value": "0x00", "name": "Classic", "description": "Classic 2D Client" }, { "value": "0x02", "name": "KR", "description": "Kingdom Reborn Client" }, { "value": "0x03", "name": "EC", "description": "Enhanced Client (Stygian Abyss)" } ] }, { "name": "Version", "type": "ascii", "description": "Client version string" } ], "related": [ { "id": "0xBF/0x0F", "relationship": "related", "note": "Client Info - similar client type information sent at login" } ], "clientVersion": { "classic": { "min": "6.0.14.3" }, "enhanced": {}, "notes": "Added during Kingdom Reborn/Stygian Abyss expansion" }, "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 with 3 starting skills. Replaced by 0xF8 in client 7.0.16.0+.", "direction": "incoming", "isDynamic": false, "size": 104, "fields": [ { "name": "Packet ID", "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": "Gender Race", "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": "Skin Hue", "type": "ushort", "size": 2, "description": "Skin color hue" }, { "name": "Hair Style", "type": "short", "size": 2, "description": "Hair style ID" }, { "name": "Hair Hue", "type": "short", "size": 2, "description": "Hair color hue" }, { "name": "Facial Hair Style", "type": "short", "size": 2, "description": "Facial hair style ID" }, { "name": "Facial Hair Hue", "type": "short", "size": 2, "description": "Facial hair color hue" }, { "name": "Unknown7", "type": "byte", "size": 1, "description": "Unknown" }, { "name": "City Index", "type": "byte", "size": 1, "description": "Starting city index" }, { "name": "Char Slot", "type": "int", "size": 4, "description": "Character slot" }, { "name": "Client IP", "type": "int", "size": 4, "description": "Client IP" }, { "name": "Shirt Hue", "type": "short", "size": 2, "description": "Starting shirt hue" }, { "name": "Pants Hue", "type": "short", "size": 2, "description": "Starting pants hue" } ], "related": [ { "id": "0xF8", "relationship": "variant", "note": "Create Character (New) for Classic 7.0.16.0+ with 4th skill" }, { "id": "0x8D", "relationship": "variant", "note": "Create Character (EC) for Enhanced Client" } ], "clientVersion": { "classic": { "max": "7.0.15.x" }, "notes": "Replaced by 0xF8 in Classic Client 7.0.16.0+. EC uses 0x8D instead." }, "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": "Packet ID", "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": "Gender Race", "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": "Skin Hue", "type": "ushort", "size": 2, "description": "Skin color hue" }, { "name": "Hair Style", "type": "short", "size": 2, "description": "Hair style ID" }, { "name": "Hair Hue", "type": "short", "size": 2, "description": "Hair color hue" }, { "name": "Facial Hair Style", "type": "short", "size": 2, "description": "Facial hair style ID" }, { "name": "Facial Hair Hue", "type": "short", "size": 2, "description": "Facial hair color hue" }, { "name": "Unknown7", "type": "byte", "size": 1, "description": "Unknown" }, { "name": "City Index", "type": "byte", "size": 1, "description": "Starting city index" }, { "name": "Char Slot", "type": "int", "size": 4, "description": "Character slot" }, { "name": "Client IP", "type": "int", "size": 4, "description": "Client IP" }, { "name": "Shirt Hue", "type": "short", "size": 2, "description": "Starting shirt hue" }, { "name": "Pants Hue", "type": "short", "size": 2, "description": "Starting pants hue" } ], "related": [ { "id": "0x00", "relationship": "variant", "note": "Create Character (Old) for Classic pre-7.0.16.0 with 3 skills" }, { "id": "0x8D", "relationship": "variant", "note": "Create Character (EC) for Enhanced Client" } ], "clientVersion": { "classic": { "min": "7.0.16.0" }, "notes": "Classic Client only. Replaces 0x00, adds 4th starting skill. EC uses 0x8D instead." }, "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." }, { "id": "0x8D", "name": "Create Character", "description": "Request to create a new character from Enhanced Client (KR/SA 3D clients). Variable length packet with different field layout than Classic client versions.", "direction": "incoming", "isDynamic": true, "size": "var", "implemented": false, "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0x8D", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Pattern1", "type": "uint", "size": 4, "value": "0xEDEDEDED", "description": "Fixed pattern" }, { "name": "Character Index", "type": "uint", "size": 4, "description": "Character slot index" }, { "name": "Name", "type": "ascii", "size": 30, "description": "Character name" }, { "name": "Unknown", "type": "byte[30]", "size": 30, "description": "Unknown (possibly password field)" }, { "name": "Profession", "type": "byte", "size": 1, "description": "Starting profession" }, { "name": "Client Flags", "type": "byte", "size": 1, "description": "Client flags (0x41 or 0x3F)" }, { "name": "Gender", "type": "byte", "size": 1, "description": "0=male, 1=female" }, { "name": "Race", "type": "byte", "size": 1, "description": "0=human, 1=elf, 2=gargoyle" }, { "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": "Skin Color", "type": "ushort", "size": 2, "description": "Character skin hue" }, { "name": "Unknown2", "type": "byte[8]", "size": 8, "description": "Unknown padding" }, { "name": "Skill 1 ID", "type": "byte", "size": 1, "description": "First skill ID" }, { "name": "Skill 1 Value", "type": "byte", "size": 1, "description": "First skill starting value" }, { "name": "Skill 2 ID", "type": "byte", "size": 1, "description": "Second skill ID" }, { "name": "Skill 2 Value", "type": "byte", "size": 1, "description": "Second skill starting value" }, { "name": "Skill 3 ID", "type": "byte", "size": 1, "description": "Third skill ID" }, { "name": "Skill 3 Value", "type": "byte", "size": 1, "description": "Third skill starting value" }, { "name": "Skill 4 ID", "type": "byte", "size": 1, "description": "Fourth skill ID" }, { "name": "Skill 4 Value", "type": "byte", "size": 1, "description": "Fourth skill starting value" }, { "name": "Unknown3", "type": "byte[26]", "size": 26, "description": "Unknown padding and appearance fields" }, { "name": "Hair Color", "type": "ushort", "size": 2, "description": "Hair hue" }, { "name": "Hair Style", "type": "ushort", "size": 2, "description": "Hair graphic ID" }, { "name": "Shirt Color", "type": "ushort", "size": 2, "description": "Shirt hue" }, { "name": "Shirt Style", "type": "ushort", "size": 2, "description": "Shirt graphic ID" }, { "name": "Face Color", "type": "ushort", "size": 2, "description": "Face hue" }, { "name": "Face Style", "type": "ushort", "size": 2, "description": "Face graphic ID" }, { "name": "Beard Color", "type": "ushort", "size": 2, "description": "Facial hair hue" }, { "name": "Beard Style", "type": "ushort", "size": 2, "description": "Facial hair graphic ID" } ], "related": [ { "id": "0x00", "relationship": "variant", "note": "Create Character (Old) for Classic Client pre-7.0.16.0" }, { "id": "0xF8", "relationship": "variant", "note": "Create Character (New) for Classic Client 7.0.16.0+" } ], "clientVersion": { "enhanced": {}, "notes": "Enhanced Client only. Uses different field layout with separate gender/race bytes." }, "notes": "EC clients use this packet instead of 0x00/0xF8. The field layout differs significantly from Classic client versions, with separate gender and race bytes instead of combined genderRace field." } ] }