{ "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": "Stat Lock Info", "description": "Sends stat lock states (STR/DEX/INT) to client.", "direction": "outgoing", "isDynamic": false, "size": 12, "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": "short", "size": 2, "value": "0x19", "description": "Subcommand (Stat Lock Info)" }, { "name": "Type", "type": "byte", "size": 1, "value": "0x02", "description": "Type (2 = stat locks)" }, { "name": "Serial", "type": "uint", "size": 4, "description": "Mobile serial" }, { "name": "Unknown", "type": "byte", "size": 1, "value": "0x00", "description": "Unknown" }, { "name": "Lock Bits", "type": "bitfield", "size": 1, "description": "Packed stat lock states. Bit layout: 00SSDDII where SS=Str, DD=Dex, II=Int", "flags": [ { "bit": "5-4", "name": "Str Lock", "description": "Strength lock (value \u003c\u003c 4)" }, { "bit": "3-2", "name": "Dex Lock", "description": "Dexterity lock (value \u003c\u003c 2)" }, { "bit": "1-0", "name": "Int Lock", "description": "Intelligence lock (value \u003c\u003c 0)" } ], "values": [ { "value": 0, "name": "Up", "description": "Stat will increase when gains are available" }, { "value": 1, "name": "Down", "description": "Stat will decrease to allow other stats to increase" }, { "value": 2, "name": "Locked", "description": "Stat will not change" } ], "notes": "Formula: (StrLock \u003c\u003c 4) | (DexLock \u003c\u003c 2) | IntLock. Example: Str=Locked(2), Dex=Up(0), Int=Down(1) = 0b00100001 = 0x21" } ], "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 } } ] }