ModernUO/docs/packets/outgoing/entity.json

403 lines
No EOL
28 KiB
JSON

{
"category": "Item",
"tags": ["Mobile"],
"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": {
"classic": {
"min": "4.0.0a"
},
"enhanced": {},
"notes": "AOS tooltips feature"
},
"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": "enum",
"size": 1,
"description": "Entity type",
"values": [
{ "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": "enum",
"size": 1,
"description": "Entity type",
"values": [
{ "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": {
"classic": {
"min": "7.0.0.0"
},
"enhanced": {},
"notes": "StygianAbyss expansion feature"
},
"source": {
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
"line": 88
}
}
]
}