{ "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 } } ] }