Protocol:Packet 0x60: Difference between revisions
m →Dreamcast: Clarify the subcommand size part. |
→Subcommands: Add subcommands 0x3E, 0x40, 0x42. |
||
Line 34: | Line 34: | ||
===Subcommand 0x2C=== | ===Subcommand 0x2C=== | ||
Subcommand 0x2C is used to tell other clients that someone is talking to an NPC. | Subcommand 0x2C (size 0x05) is used to tell other clients that someone is talking to an NPC. | ||
{| border="1" | {| border="1" | ||
Line 52: | Line 52: | ||
===Subcommand 0x2D=== | ===Subcommand 0x2D=== | ||
Subcommand 0x2D 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 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. | |||
{| border="1" | |||
|- | |||
! 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 0x40=== | |||
Subcommand 0x40 (size 0x04) is used to tell other clients that someone has started moving (or is moving slowly?). | |||
{| border="1" | |||
! 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?). | |||
{| border="1" | |||
! Bytes !! Meaning | |||
|- | |||
| 0x00-0x03 || Location? | |||
|- | |||
| 0x04-0x07 || Location? | |||
|} | |||
===Subcommand 0x52=== | ===Subcommand 0x52=== | ||
Subcommand 0x52 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. | 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. | ||
{| border="1" | {| border="1" | ||
Line 66: | Line 108: | ||
===Subcommand 0x5F=== | ===Subcommand 0x5F=== | ||
Subcommand 0x5F is used to tell clients what item dropped from an opened box. | Subcommand 0x5F (size 0x0B) is used to tell clients what item dropped from an opened box. | ||
{| border="1" | {| border="1" |
Revision as of 04:24, 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).
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 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 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) |