397 lines
No EOL
27 KiB
JSON
397 lines
No EOL
27 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": {
|
|
"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": "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": {
|
|
"min": "7.0.0.0",
|
|
"feature": "StygianAbyss"
|
|
},
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
|
|
"line": 88
|
|
}
|
|
}
|
|
]
|
|
} |