256 lines
15 KiB
JSON
256 lines
15 KiB
JSON
{
|
|
"category": "Movement",
|
|
"packets": [
|
|
{
|
|
"id": "0x21",
|
|
"name": "Movement Rejection",
|
|
"description": "Sent by the server when player movement is blocked (collision, teleport area, etc). Contains the corrected position the client should snap back to.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 8,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x21",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Sequence",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Sequence number of the rejected movement request"
|
|
},
|
|
{
|
|
"name": "X",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Correct X coordinate"
|
|
},
|
|
{
|
|
"name": "Y",
|
|
"type": "short",
|
|
"size": 2,
|
|
"description": "Correct Y coordinate"
|
|
},
|
|
{
|
|
"name": "Direction",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Correct facing direction (0-7)"
|
|
},
|
|
{
|
|
"name": "Z",
|
|
"type": "sbyte",
|
|
"size": 1,
|
|
"description": "Correct Z coordinate"
|
|
}
|
|
],
|
|
"related": [
|
|
{
|
|
"id": "0x02",
|
|
"relationship": "request",
|
|
"note": "The movement request that was rejected"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
|
"line": 45
|
|
}
|
|
},
|
|
{
|
|
"id": "0x22",
|
|
"name": "Movement Acknowledgment",
|
|
"description": "Sent by the server to confirm successful player movement. Includes the player\u0027s current notoriety for display purposes.",
|
|
"direction": "outgoing",
|
|
"noMerge": true,
|
|
"isDynamic": false,
|
|
"size": 3,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x22",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Sequence",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Sequence number of the accepted movement request"
|
|
},
|
|
{
|
|
"name": "Notoriety",
|
|
"type": "enum",
|
|
"enumType": "sequential",
|
|
"size": 1,
|
|
"description": "Player\u0027s current notoriety flag",
|
|
"values": [
|
|
{
|
|
"value": 0,
|
|
"name": "Innocent",
|
|
"description": "Blue - innocent player"
|
|
},
|
|
{
|
|
"value": 1,
|
|
"name": "Friend",
|
|
"description": "Green - ally/friend"
|
|
},
|
|
{
|
|
"value": 2,
|
|
"name": "Attackable",
|
|
"description": "Gray - can be attacked"
|
|
},
|
|
{
|
|
"value": 3,
|
|
"name": "Criminal",
|
|
"description": "Gray - criminal flag"
|
|
},
|
|
{
|
|
"value": 4,
|
|
"name": "Enemy",
|
|
"description": "Orange - enemy"
|
|
},
|
|
{
|
|
"value": 5,
|
|
"name": "Murderer",
|
|
"description": "Red - murderer"
|
|
},
|
|
{
|
|
"value": 6,
|
|
"name": "Invulnerable",
|
|
"description": "Yellow - invulnerable"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"related": [
|
|
{
|
|
"id": "0x02",
|
|
"relationship": "request",
|
|
"note": "The movement request that was accepted"
|
|
}
|
|
],
|
|
"notes": "Not related to incoming 0x22 (Resynchronize) despite sharing the same packet ID.",
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
|
"line": 42
|
|
}
|
|
},
|
|
{
|
|
"id": "0x97",
|
|
"name": "Move Player",
|
|
"description": "Server-initiated player movement. Forces the client to move in a direction (used for pushback effects, conveyors, etc).",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 2,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x97",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Direction",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Direction to move (0-7). Bit 0x80 indicates running."
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
|
"line": 35
|
|
}
|
|
},
|
|
{
|
|
"id": "0xBF",
|
|
"subId": "0x26",
|
|
"name": "Speed Control",
|
|
"description": "Controls the player\u0027s movement speed. Used for mount speed changes, walk/run restrictions, etc.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 6,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0xBF",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Length",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"value": "0x0006",
|
|
"description": "Packet length"
|
|
},
|
|
{
|
|
"name": "Sub-Command",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"value": "0x0026",
|
|
"description": "Sub-command for speed control"
|
|
},
|
|
{
|
|
"name": "Speed Setting",
|
|
"type": "enum",
|
|
"size": 1,
|
|
"description": "Movement speed mode",
|
|
"values": [
|
|
{ "value": "0", "name": "Disable", "description": "Normal speed (remove override)" },
|
|
{ "value": "1", "name": "MountSpeed", "description": "Force mounted movement speed" },
|
|
{ "value": "2", "name": "WalkOnly", "description": "Force walk speed only" }
|
|
]
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
|
"line": 31
|
|
}
|
|
},
|
|
{
|
|
"id": "0xF2",
|
|
"name": "Time Sync Response",
|
|
"description": "Server response to client time synchronization request. Contains tick counts for latency calculation.",
|
|
"direction": "outgoing",
|
|
"isDynamic": false,
|
|
"size": 25,
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0xF2",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Tick Count1",
|
|
"type": "long",
|
|
"size": 8,
|
|
"description": "Server tick count"
|
|
},
|
|
{
|
|
"name": "Tick Count2",
|
|
"type": "long",
|
|
"size": 8,
|
|
"description": "Server tick count"
|
|
},
|
|
{
|
|
"name": "Tick Count3",
|
|
"type": "long",
|
|
"size": 8,
|
|
"description": "Server tick count"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/Server/Network/Packets/OutgoingMovementPackets.cs",
|
|
"line": 63
|
|
}
|
|
}
|
|
]
|
|
}
|