Protocol:Packet 0x60: Difference between revisions
→Subcommands: Add subcommands 0x3F and 0x55 |
→Subcommands: Add subcommand 0x75. |
||
Line 175: | Line 175: | ||
|- | |- | ||
| 0x24-0x27 || Unknown (0x00000002) | | 0x24-0x27 || Unknown (0x00000002) | ||
|} | |||
===Subcommand 0x75=== | |||
Subcommand 0x75 (size 0x02) kinda baffles me a bit... The field used normally for the client ID that triggered the event isn't used that way here (at least it doesn't look like it -- all the times I saw it while I was doing some testing, the client ID part was 0x4D). The only thing I can guess is that its used to set some sort of global flags in the game (since it seems to be used when the NPCs change their dialog when you talk to them). | |||
{| border="1" | |||
! Bytes !! Meaning | |||
|- | |||
| 0x00-0x03 || ??? (Flags maybe?) | |||
|} | |} | ||
[[Category:PSO Server Protocol]] | [[Category:PSO Server Protocol]] |
Revision as of 04:47, 14 November 2010
Clients send Packet 0x60 to the server to forward a "game command" to all clients in the lobby. This is used for various things in game, including telling clients what items are dropped when a box is opened (clients "ask" the party leader what should be dropped with a form of Packet 0x62 and the party leader replies with a Subcommand 0x5F).
PSO v3 (GameCube, Xbox, Blue Burst) sometimes uses packet 0x6C, which has exactly the same format and function as 0x60.
PSO Episode 3 sometimes uses packets 0xC9 and 0xCB in games, which also behave exactly like 0x60. Sending an 0xC9 or 0xCB to a non-Episode 3 client would cause that client to disconnect.
Main Packet Format
Dreamcast
Bytes | Meaning |
---|---|
0x00 | Packet Type (0x60 or 0x6C) |
0x01 | Flags |
0x02-0x03 | Packet Size (Variable) |
0x04 | Subcommand Type |
0x05 | Subcommand Size (in 32-bit increments, not including the main packet header, but including everything Subcommand type and later) |
0x06 | Client ID of initiating client |
0x07 | Unused? |
0x08... | Subcommand Data |
Subcommands
Various subcommands are sent with this packet, and this is not necessarily meant to be an exhaustive list of them (although, I'd love it if it were eventually). Note that many of these, I don't know exactly how they work or how to fill them in...
Subcommand 0x2C
Subcommand 0x2C (size 0x05) is used to tell other clients that someone is talking to an NPC.
Bytes | Meaning |
---|---|
0x00-0x01 | ??? (Always seems to be 0xFFFF) |
0x02-0x03 | ??? (Always seems to be 0) |
0x04-0x07 | Location ? (Matches up with stuff from packets nearby) |
0x08-0x0B | Location ? (Once again, matches up nicely) |
0x0C-0x0F | Padding? (Always seems to be 0) |
Subcommand 0x2D
Subcommand 0x2D (size 0x01) is used to tell other clients that someone has finished talking to an NPC. It contains no data of its own, beyond the normal header.
Subcommand 0x3E
Subcommand 0x3E (size 0x06) is used to tell other clients that someone has stopped moving.
Bytes | Meaning |
---|---|
0x00-0x01 | ??? (Always seems to be 0) |
0x02-0x03 | ??? |
0x04-0x07 | Always seems to be 0 |
0x08-0x0B | Location? |
0x0C-0x0F | Always seems to be 0 |
0x10-0x13 | Location? |
Subcommand 0x3F
Subcommand 0x3F (size 0x06) seems to be used to tell other clients that someone is not moving after warping, or something like that (triggered when going into the principal warp or after talking to the medical center, for instance). Seems to be used a lot of the time nearby a bunch of subcommand 0x55 packets.
Bytes | Meaning |
---|---|
0x00-0x01 | Always seems to be 0? |
0x02-0x03 | ??? (when near a subcommand 0x55, matches with bytes 0x00-0x01 in that?) |
0x04-0x07 | Always seems to be 0 |
0x08-0x0B | ??? (when near a subcommand 0x55, matches with bytes 0x10-0x13 in that?) |
0x0C-0x0F | ??? |
0x10-0x13 | ??? (when near a subcommand 0x55, matches with bytes 0x18-0x1B in that?) |
Subcommand 0x40
Subcommand 0x40 (size 0x04) is used to tell other clients that someone has started moving (or is moving slowly?).
Bytes | Meaning |
---|---|
0x00-0x07 | ??? (Maybe location and heading?) |
0x08-0x0B | Padding? (Always seems to be 0) |
Subcommand 0x42
Subcommand 0x42 (size 0x03) is used to tell other clients that someone is moving (quickly?).
Bytes | Meaning |
---|---|
0x00-0x03 | Location? |
0x04-0x07 | Location? |
Subcommand 0x52
Subcommand 0x52 (size 0x03) is used to tell other clients that someone is talking to a person at a desk of some sort or has just finished talking to the desk.
Bytes | Meaning |
---|---|
0x00-0x03 | ??? (Always seems to be 0x000000A0) |
0x04-0x07 | Location? (Matches fairly well with bytes from packets nearby) |
Subcommand 0x55
Subcommand 0x55 (size 0x08) is used to tell clients that someone has warped (maybe?). Several of these seem to be sent at a time (at least when going into and out of the principal's warp).
Bytes | Meaning |
---|---|
0x00-0x01 | ??? (Matches with nearby subcommand 0x3F's bytes 0x02-0x03) |
0x02-0x03 | Always seems to be 0? |
0x04-0x07 | ??? |
0x08-0x0B | ??? |
0x0C-0x0F | ??? |
0x10-0x13 | ??? (Matches with nearby subcommand 0x3F's bytes 0x08-0x0B) |
0x14-0x17 | Seems to be 0 |
0x18-0x1B | ??? (Matches with nearby subcommand 0x3F's bytes 0x10-0x13) |
Subcommand 0x5F
Subcommand 0x5F (size 0x0B) is used to tell clients what item dropped from an opened box.
Bytes | Meaning |
---|---|
0x00 | Area of the Drop |
0x01 | What kind of thing are we asking about? |
0x02-0x03 | Request ID (might only be one byte) |
0x04-0x07 | X Coordinate |
0x08-0x0B | Y Coordinate |
0x0C-0x0F | Unknown (0x00000010 works) |
0x10-0x1B | Item Code (first 3 32-bit values) |
0x1C-0x1F | Unknown -- (request_id | 0x06010100) seems to work |
0x20-0x23 | Item Code (last 32-bit value) |
0x24-0x27 | Unknown (0x00000002) |
Subcommand 0x75
Subcommand 0x75 (size 0x02) kinda baffles me a bit... The field used normally for the client ID that triggered the event isn't used that way here (at least it doesn't look like it -- all the times I saw it while I was doing some testing, the client ID part was 0x4D). The only thing I can guess is that its used to set some sort of global flags in the game (since it seems to be used when the NPCs change their dialog when you talk to them).
Bytes | Meaning |
---|---|
0x00-0x03 | ??? (Flags maybe?) |