1211 lines
No EOL
72 KiB
JSON
1211 lines
No EOL
72 KiB
JSON
{
|
|
"category": "Player",
|
|
"packets": [
|
|
{
|
|
"id": "0x23",
|
|
"name": "Drag Effect",
|
|
"description": "Displays a drag/drop visual effect between two points.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 26,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x23",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Item ID",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Item graphic ID"
|
|
},
|
|
{
|
|
"name": "Unknown",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x00",
|
|
"description": "Unknown"
|
|
},
|
|
{
|
|
"name": "Hue",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Item hue"
|
|
},
|
|
{
|
|
"name": "Amount",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Item amount"
|
|
},
|
|
{
|
|
"name": "Src Serial",
|
|
"type": "uint",
|
|
"size": 4,
|
|
"description": "Source entity serial"
|
|
},
|
|
{
|
|
"name": "Src X",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Source X coordinate"
|
|
},
|
|
{
|
|
"name": "Src Y",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Source Y coordinate"
|
|
},
|
|
{
|
|
"name": "Src Z",
|
|
"type": "sbyte",
|
|
"size": 1,
|
|
"description": "Source Z coordinate"
|
|
},
|
|
{
|
|
"name": "Dst Serial",
|
|
"type": "uint",
|
|
"size": 4,
|
|
"description": "Destination entity serial"
|
|
},
|
|
{
|
|
"name": "Dst X",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Destination X coordinate"
|
|
},
|
|
{
|
|
"name": "Dst Y",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Destination Y coordinate"
|
|
},
|
|
{
|
|
"name": "Dst Z",
|
|
"type": "sbyte",
|
|
"size": 1,
|
|
"description": "Destination Z coordinate"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 198
|
|
}
|
|
},
|
|
{
|
|
"id": "0x27",
|
|
"name": "Lift Reject",
|
|
"description": "Server rejects a lift/pick up request.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 2,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x27",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Reason",
|
|
"type": "enum",
|
|
"enumType": "sequential",
|
|
"size": 1,
|
|
"description": "Rejection reason",
|
|
"values": [
|
|
{
|
|
"value": 0,
|
|
"name": "Cannot Lift",
|
|
"description": "You cannot pick that up"
|
|
},
|
|
{
|
|
"value": 1,
|
|
"name": "Out Of Range",
|
|
"description": "That is out of range"
|
|
},
|
|
{
|
|
"value": 2,
|
|
"name": "Out Of Sight",
|
|
"description": "That is out of sight"
|
|
},
|
|
{
|
|
"value": 3,
|
|
"name": "Try To Steal",
|
|
"description": "That does not belong to you"
|
|
},
|
|
{
|
|
"value": 4,
|
|
"name": "Are Holding",
|
|
"description": "You are already holding an item"
|
|
},
|
|
{
|
|
"value": 5,
|
|
"name": "Inspecific",
|
|
"description": "You cannot pick that up"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"related": [
|
|
{
|
|
"id": "0x07",
|
|
"relationship": "request",
|
|
"note": "Lift Request that was rejected"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 90
|
|
}
|
|
},
|
|
{
|
|
"id": "0x2C",
|
|
"name": "Death Status",
|
|
"description": "Notifies client of death/resurrection state.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 2,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x2C",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Dead",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x02",
|
|
"description": "Always 2 (dead)"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 63
|
|
}
|
|
},
|
|
{
|
|
"id": "0x38",
|
|
"name": "Pathfind Message",
|
|
"description": "Instructs client to pathfind to a location.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 7,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x38",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "X",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Target X coordinate"
|
|
},
|
|
{
|
|
"name": "Y",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Target Y coordinate"
|
|
},
|
|
{
|
|
"name": "Z",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Target Z coordinate"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 319
|
|
}
|
|
},
|
|
{
|
|
"id": "0x3A",
|
|
"name": "Skills Update",
|
|
"description": "Sends full skills list or single skill update to client.",
|
|
"direction": "outgoing",
|
|
"isDynamic": true,
|
|
"size": "var",
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x3A",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Length",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"description": "Packet length"
|
|
},
|
|
{
|
|
"name": "Type",
|
|
"type": "enum",
|
|
"enumType": "sequential",
|
|
"size": 1,
|
|
"description": "Update type",
|
|
"values": [
|
|
{
|
|
"value": "0x00",
|
|
"name": "Full No Caps",
|
|
"description": "Full list without caps"
|
|
},
|
|
{
|
|
"value": "0x02",
|
|
"name": "Full With Caps",
|
|
"description": "Full list with skill caps"
|
|
},
|
|
{
|
|
"value": "0xDF",
|
|
"name": "Single With Caps",
|
|
"description": "Single skill update with cap"
|
|
},
|
|
{
|
|
"value": "0xFF",
|
|
"name": "Single No Caps",
|
|
"description": "Single skill update"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Skills",
|
|
"type": "loop",
|
|
"loop": {
|
|
"until": "skillId == 0",
|
|
"fields": [
|
|
{
|
|
"name": "Skill ID",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"description": "Skill ID + 1 (0 terminates)"
|
|
},
|
|
{
|
|
"name": "Value",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"description": "Current skill value * 10"
|
|
},
|
|
{
|
|
"name": "Base",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"description": "Base skill value * 10"
|
|
},
|
|
{
|
|
"name": "Lock",
|
|
"type": "enum",
|
|
"enumType": "sequential",
|
|
"size": 1,
|
|
"description": "Skill lock state",
|
|
"values": [
|
|
{
|
|
"value": 0,
|
|
"name": "Up",
|
|
"description": "Skill gains enabled"
|
|
},
|
|
{
|
|
"value": 1,
|
|
"name": "Down",
|
|
"description": "Skill decreases enabled"
|
|
},
|
|
{
|
|
"value": 2,
|
|
"name": "Locked",
|
|
"description": "Skill locked"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Cap",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"description": "Skill cap * 10 (if type includes caps)"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"related": [
|
|
{
|
|
"id": "0x34",
|
|
"direction": "incoming",
|
|
"relationship": "request",
|
|
"note": "Mobile Query (skills) triggers this response"
|
|
},
|
|
{
|
|
"id": "0x3A",
|
|
"direction": "incoming",
|
|
"relationship": "related",
|
|
"note": "Change Skill Lock may trigger update"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 121
|
|
}
|
|
},
|
|
{
|
|
"id": "0x5B",
|
|
"name": "Current Time",
|
|
"description": "Sends current server time to client.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 4,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x5B",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Hour",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Hour (0-23)"
|
|
},
|
|
{
|
|
"name": "Minute",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Minute (0-59)"
|
|
},
|
|
{
|
|
"name": "Second",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Second (0-59)"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 316
|
|
}
|
|
},
|
|
{
|
|
"id": "0x65",
|
|
"name": "Weather",
|
|
"description": "Sets weather conditions for client.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 4,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x65",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Type",
|
|
"type": "enum",
|
|
"enumType": "sequential",
|
|
"size": 1,
|
|
"description": "Weather type",
|
|
"values": [
|
|
{
|
|
"value": 0,
|
|
"name": "Rain",
|
|
"description": "Raining"
|
|
},
|
|
{
|
|
"value": 1,
|
|
"name": "Storm Brewing",
|
|
"description": "Storm brewing"
|
|
},
|
|
{
|
|
"value": 2,
|
|
"name": "Snow",
|
|
"description": "Snowing"
|
|
},
|
|
{
|
|
"value": 3,
|
|
"name": "Storm",
|
|
"description": "Storm in progress"
|
|
},
|
|
{
|
|
"value": 254,
|
|
"name": "None",
|
|
"description": "No weather"
|
|
},
|
|
{
|
|
"value": 255,
|
|
"name": "Clear",
|
|
"description": "Clear weather (stops current)"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Intensity",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Weather intensity (0-255)"
|
|
},
|
|
{
|
|
"name": "Temperature",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Temperature value"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 97
|
|
}
|
|
},
|
|
{
|
|
"id": "0x6D",
|
|
"name": "Play Music",
|
|
"description": "Plays background music on client.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 3,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x6D",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Music ID",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Music track ID (0x1FFF = stop)"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 275
|
|
}
|
|
},
|
|
{
|
|
"id": "0x73",
|
|
"name": "Ping Ack",
|
|
"description": "Server acknowledges ping request.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 2,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x73",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Sequence",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Ping sequence (echoed from request)"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 336
|
|
}
|
|
},
|
|
{
|
|
"id": "0x76",
|
|
"name": "Server Change",
|
|
"description": "Notifies client of server/map transition.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 16,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x76",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "X",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "New X coordinate"
|
|
},
|
|
{
|
|
"name": "Y",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "New Y coordinate"
|
|
},
|
|
{
|
|
"name": "Z",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "New Z coordinate"
|
|
},
|
|
{
|
|
"name": "Unknown",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x00",
|
|
"description": "Unknown"
|
|
},
|
|
{
|
|
"name": "Unknown2",
|
|
"type": "short",
|
|
"size": 2,
|
|
"value": "0x0000",
|
|
"description": "Unknown"
|
|
},
|
|
{
|
|
"name": "Unknown3",
|
|
"type": "short",
|
|
"size": 2,
|
|
"value": "0x0000",
|
|
"description": "Unknown"
|
|
},
|
|
{
|
|
"name": "Map Width",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Map width"
|
|
},
|
|
{
|
|
"name": "Map Height",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Map height"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 100
|
|
}
|
|
},
|
|
{
|
|
"id": "0x7B",
|
|
"name": "Sequence",
|
|
"description": "Sends sequence number to client for synchronization.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 2,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x7B",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Sequence",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Sequence number"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 154
|
|
}
|
|
},
|
|
{
|
|
"id": "0x88",
|
|
"name": "Display Paperdoll",
|
|
"description": "Opens paperdoll window for a mobile.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 66,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x88",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Serial",
|
|
"type": "uint",
|
|
"size": 4,
|
|
"description": "Serial of mobile"
|
|
},
|
|
{
|
|
"name": "Title",
|
|
"type": "ascii",
|
|
"size": 60,
|
|
"description": "Title/name displayed"
|
|
},
|
|
{
|
|
"name": "Flags",
|
|
"type": "bitfield",
|
|
"size": 1,
|
|
"description": "Paperdoll flags",
|
|
"flags": [
|
|
{
|
|
"bit": "0",
|
|
"name": "Warmode",
|
|
"description": "Mobile is in war mode"
|
|
},
|
|
{
|
|
"bit": "1",
|
|
"name": "Can Lift",
|
|
"description": "Viewer can lift equipment"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 247
|
|
}
|
|
},
|
|
{
|
|
"id": "0x95",
|
|
"name": "Display Hue Picker",
|
|
"description": "Opens hue picker dialog on client.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 9,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x95",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Serial",
|
|
"type": "uint",
|
|
"size": 4,
|
|
"description": "Hue picker serial"
|
|
},
|
|
{
|
|
"name": "Unknown",
|
|
"type": "short",
|
|
"size": 2,
|
|
"value": "0x0000",
|
|
"description": "Unknown"
|
|
},
|
|
{
|
|
"name": "Item ID",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Item graphic to preview hue on"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 338
|
|
}
|
|
},
|
|
{
|
|
"id": "0xA5",
|
|
"name": "Launch Browser",
|
|
"description": "Opens a URL in client\u0027s web browser.",
|
|
"direction": "outgoing",
|
|
"isDynamic": true,
|
|
"size": "var",
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0xA5",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Length",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"description": "Packet length"
|
|
},
|
|
{
|
|
"name": "URL",
|
|
"type": "ascii-t",
|
|
"description": "URL to open"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 180
|
|
}
|
|
},
|
|
{
|
|
"id": "0xA6",
|
|
"name": "Scroll Message",
|
|
"description": "Displays a scrollable tips/message window.",
|
|
"direction": "outgoing",
|
|
"isDynamic": true,
|
|
"size": "var",
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0xA6",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Length",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"description": "Packet length"
|
|
},
|
|
{
|
|
"name": "Type",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Scroll type"
|
|
},
|
|
{
|
|
"name": "Tip Number",
|
|
"type": "int",
|
|
"size": 4,
|
|
"description": "Tip/message number"
|
|
},
|
|
{
|
|
"name": "Text Length",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"description": "Length of text"
|
|
},
|
|
{
|
|
"name": "Text",
|
|
"type": "ascii",
|
|
"description": "Message text"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 291
|
|
}
|
|
},
|
|
{
|
|
"id": "0xB8",
|
|
"name": "Display Profile",
|
|
"description": "Displays a mobile\u0027s profile.",
|
|
"direction": "outgoing",
|
|
"isDynamic": true,
|
|
"size": "var",
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0xB8",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Length",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"description": "Packet length"
|
|
},
|
|
{
|
|
"name": "Serial",
|
|
"type": "uint",
|
|
"size": 4,
|
|
"description": "Serial of mobile"
|
|
},
|
|
{
|
|
"name": "Header",
|
|
"type": "ascii-t",
|
|
"description": "Profile header"
|
|
},
|
|
{
|
|
"name": "Footer",
|
|
"type": "utf16be-t",
|
|
"description": "Profile footer"
|
|
},
|
|
{
|
|
"name": "Body",
|
|
"type": "utf16be-t",
|
|
"description": "Profile body text"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 66
|
|
}
|
|
},
|
|
{
|
|
"id": "0xBC",
|
|
"name": "Season Change",
|
|
"description": "Changes the visual season on client.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 3,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0xBC",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Season",
|
|
"type": "enum",
|
|
"enumType": "sequential",
|
|
"size": 1,
|
|
"description": "Season value",
|
|
"values": [
|
|
{
|
|
"value": 0,
|
|
"name": "Spring",
|
|
"description": "Spring season"
|
|
},
|
|
{
|
|
"value": 1,
|
|
"name": "Summer",
|
|
"description": "Summer season"
|
|
},
|
|
{
|
|
"value": 2,
|
|
"name": "Fall",
|
|
"description": "Fall/Autumn season"
|
|
},
|
|
{
|
|
"value": 3,
|
|
"name": "Winter",
|
|
"description": "Winter season"
|
|
},
|
|
{
|
|
"value": 4,
|
|
"name": "Desolation",
|
|
"description": "Desolation (dead trees)"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Play Sound",
|
|
"type": "bool",
|
|
"size": 1,
|
|
"description": "Play season change sound"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 244
|
|
}
|
|
},
|
|
{
|
|
"id": "0xBF/0x19",
|
|
"name": "Extended Status",
|
|
"description": "Multi-purpose status packet. The Type byte determines the payload: Type 0 for pet bonded status, Type 2/5 for player stat locks.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": "Varies",
|
|
"fields": [],
|
|
"variants": [
|
|
{
|
|
"name": "Bonded Status (Type 0)",
|
|
"condition": "Type = 0: Pet bonding status",
|
|
"size": 11,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0xBF",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Length",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"value": "11",
|
|
"description": "Packet length"
|
|
},
|
|
{
|
|
"name": "Sub-Command",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"value": "0x0019",
|
|
"description": "Extended Status subcommand"
|
|
},
|
|
{
|
|
"name": "Type",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x00",
|
|
"description": "Type 0 = Bonded Status"
|
|
},
|
|
{
|
|
"name": "Serial",
|
|
"type": "uint",
|
|
"size": 4,
|
|
"description": "Pet mobile serial"
|
|
},
|
|
{
|
|
"name": "Bonded",
|
|
"type": "bool",
|
|
"size": 1,
|
|
"description": "True if pet is bonded to owner"
|
|
}
|
|
],
|
|
"notes": "Sent when a pet's bonded status changes or when pet info is requested."
|
|
},
|
|
{
|
|
"name": "Stat Lock Info - Classic (Type 2)",
|
|
"condition": "Type = 2: Classic Client stat locks",
|
|
"size": 12,
|
|
"clientVersion": {
|
|
"classic": {}
|
|
},
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0xBF",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Length",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"value": "12",
|
|
"description": "Packet length"
|
|
},
|
|
{
|
|
"name": "Sub-Command",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"value": "0x0019",
|
|
"description": "Extended Status subcommand"
|
|
},
|
|
{
|
|
"name": "Type",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x02",
|
|
"description": "Type 2 = Stat Lock Info (Classic Client)"
|
|
},
|
|
{
|
|
"name": "Serial",
|
|
"type": "uint",
|
|
"size": 4,
|
|
"description": "Player mobile serial"
|
|
},
|
|
{
|
|
"name": "Unknown",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x00",
|
|
"description": "Unknown (always 0)"
|
|
},
|
|
{
|
|
"name": "Lock Bits",
|
|
"type": "bitfield",
|
|
"size": 1,
|
|
"description": "Packed stat lock states (00SSDDII)",
|
|
"flags": [
|
|
{
|
|
"bit": "5-4",
|
|
"name": "Str Lock",
|
|
"description": "Strength lock (value << 4)"
|
|
},
|
|
{
|
|
"bit": "3-2",
|
|
"name": "Dex Lock",
|
|
"description": "Dexterity lock (value << 2)"
|
|
},
|
|
{
|
|
"bit": "1-0",
|
|
"name": "Int Lock",
|
|
"description": "Intelligence lock (value << 0)"
|
|
}
|
|
],
|
|
"values": [
|
|
{
|
|
"value": 0,
|
|
"name": "Up",
|
|
"description": "Stat gains enabled"
|
|
},
|
|
{
|
|
"value": 1,
|
|
"name": "Down",
|
|
"description": "Stat decreases enabled"
|
|
},
|
|
{
|
|
"value": 2,
|
|
"name": "Locked",
|
|
"description": "Stat locked"
|
|
}
|
|
],
|
|
"notes": "Formula: (StrLock << 4) | (DexLock << 2) | IntLock"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Stat Lock Info - Enhanced (Type 5)",
|
|
"condition": "Type = 5: Enhanced Client stat locks",
|
|
"size": 12,
|
|
"clientVersion": {
|
|
"enhanced": {}
|
|
},
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0xBF",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Length",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"value": "12",
|
|
"description": "Packet length"
|
|
},
|
|
{
|
|
"name": "Sub-Command",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"value": "0x0019",
|
|
"description": "Extended Status subcommand"
|
|
},
|
|
{
|
|
"name": "Type",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x05",
|
|
"description": "Type 5 = Stat Lock Info (Enhanced Client)"
|
|
},
|
|
{
|
|
"name": "Serial",
|
|
"type": "uint",
|
|
"size": 4,
|
|
"description": "Player mobile serial"
|
|
},
|
|
{
|
|
"name": "Unknown",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x00",
|
|
"description": "Unknown (always 0)"
|
|
},
|
|
{
|
|
"name": "Lock Bits",
|
|
"type": "bitfield",
|
|
"size": 1,
|
|
"description": "Packed stat lock states (00SSDDII)",
|
|
"flags": [
|
|
{
|
|
"bit": "5-4",
|
|
"name": "Str Lock",
|
|
"description": "Strength lock (value << 4)"
|
|
},
|
|
{
|
|
"bit": "3-2",
|
|
"name": "Dex Lock",
|
|
"description": "Dexterity lock (value << 2)"
|
|
},
|
|
{
|
|
"bit": "1-0",
|
|
"name": "Int Lock",
|
|
"description": "Intelligence lock (value << 0)"
|
|
}
|
|
],
|
|
"values": [
|
|
{
|
|
"value": 0,
|
|
"name": "Up",
|
|
"description": "Stat gains enabled"
|
|
},
|
|
{
|
|
"value": 1,
|
|
"name": "Down",
|
|
"description": "Stat decreases enabled"
|
|
},
|
|
{
|
|
"value": 2,
|
|
"name": "Locked",
|
|
"description": "Stat locked"
|
|
}
|
|
],
|
|
"notes": "Formula: (StrLock << 4) | (DexLock << 2) | IntLock"
|
|
}
|
|
],
|
|
"notes": "Enhanced Client uses Type 5 instead of Type 2"
|
|
}
|
|
],
|
|
"tags": ["Player", "Mobile"],
|
|
"notes": "The Type byte after the sub-command determines the packet structure. Type 0 is for pet bonding, Types 2/5 are for player stat locks (Classic/Enhanced Client respectively).",
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 36
|
|
}
|
|
},
|
|
{
|
|
"id": "0xC8",
|
|
"name": "Change Update Range",
|
|
"description": "Sets the client\u0027s update range.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 2,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0xC8",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Range",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Update range (typically 18)"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 59
|
|
}
|
|
},
|
|
{
|
|
"id": "0xD1",
|
|
"name": "Logout Ack",
|
|
"description": "Server acknowledges logout request.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 2,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0xD1",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Ack",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x01",
|
|
"description": "Acknowledgment (1 = OK)"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingPlayerPackets.cs",
|
|
"line": 94
|
|
}
|
|
}
|
|
]
|
|
} |