Protocol:Packet 0x60: Difference between revisions
→Subcommands: Update 0x2C, 0x2D. Add 0x2A. |
→Subcommands: Add subcommand 0x5D. |
||
Line 386: | Line 386: | ||
|- | |- | ||
| 0x18-0x1B || ??? (Matches with nearby subcommand 0x3F's bytes 0x10-0x13) | | 0x18-0x1B || ??? (Matches with nearby subcommand 0x3F's bytes 0x10-0x13) | ||
|} | |||
===Subcommand 0x5D=== | |||
Subcommand 0x5D (size 0x0A) is used to tell clients that someone has split up a stack of items (for dropping one or more). | |||
{| border="1" | |||
! Bytes !! Meaning | |||
|- | |||
| 0x00-0x03 || Unused? (Always seems to be zero) | |||
|- | |||
| 0x04-0x07 || ??? | |||
|- | |||
| 0x08-0x0B || ??? | |||
|- | |||
| 0x0C-0x0F || Item Data dword 1 | |||
|- | |||
| 0x10-0x13 || Item Data dword 2 | |||
|- | |||
| 0x14-0x17 || Item Data dword 3 | |||
|- | |||
| 0x18-0x1B || New Item ID for split stack | |||
|- | |||
| 0x1C-0x1F || Item Data 2 | |||
|- | |||
| 0x20-0x23 || Always 0x00000002? | |||
|} | |} | ||
Revision as of 21:49, 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 0x05
Subcommand 0x05 (size 0x03) seems to have something to do with when gates unlock (from switches anyway) or something... The client ID field has something strange in it, and the normally unused byte after it seems to be used for something...
Bytes | Meaning |
---|---|
0x00-0x03 | All zeroes? |
0x04-0x07 | ??? |
Subcommand 0x07
Subcommand 0x07 (size 0x11) is used for symbol chat. The client ID field in the header always seems to be zero, which means it must be carried somewhere in the data (I'm guessing its the first byte of the data).
Bytes | Meaning |
---|---|
0x00 | Client ID of initiator? |
0x01-0x03 | Unused? (zeros in my testing) |
0x04-0x3F | Symbol chat data (no idea of the specific format) |
Subcommand 0x0A
Subcommand 0x0A (size 0x03) seems to be used when a hit lands on an enemy. The client ID and normally unused fields in the header are actually used for something here (I think they're the ID of the enemy, maybe).
Bytes | Meaning |
---|---|
0x00-0x07 | ??? |
Subcommand 0x0B
Subcommand 0x0B (size 0x03) seems to be used to make a box explode. The Client ID and unused fields in the header are actually used here for something else... I think they may be the ID of the box that was hit (they match part of the 0x46 subcommand about the attack).
Bytes | Meaning |
---|---|
0x00 | Always 1? |
0x01-0x03 | Always 0? |
0x04 | The same as the Client ID byte in the header? |
0x05-0x07 | Always 0? |
Subcommand 0x1F
Subcommand 0x1F (size 0x02) is used when someone moves to a different map. It matches Subcommand 0x21 exactly from what I've seen...
Bytes | Meaning |
---|---|
0x00 | Area warped to |
0x01-0x03 | Unused? (all zeroes) |
Subcommand 0x21
Subcommand 0x21 (size 0x02) is used when someone moves to a different map. It is followed by a subcommand 0x22, as well as a 0x3F, 0x1F, and 0x23.
Bytes | Meaning |
---|---|
0x00 | Area warped to |
0x01-0x03 | Unused? (all zeroes) |
Subcommand 0x22
Subcommand 0x22 (size 0x01) seems to tell clients that someone has finished moving to another map (I think). It has no data beyond the normal header.
Subcommand 0x23
Subcommand 0x23 (size 0x01) matches Subcommand 0x22 in every way, and comes after an 0x1F. It has no data beyond the normal header.
Subcommand 0x25
Subcommand 0x25 (size 0x03) is used tell clients that an item has been equipped.
Bytes | Meaning |
---|---|
0x00-0x03 | The Item ID (in the user's inventory) of the item being equipped |
0x04 | The type of item being equipped? (1 for mag, 2 for frame, 3 for barrier, 6 for weapon) |
0x05-0x07 | Padding? |
Subcommand 0x26
Subcommand 0x26 (size 0x03) is used to tell clients that an item has been unequipped.
Bytes | Meaning |
---|---|
0x00-0x03 | The Item ID (in the user's inventory) of the item being equipped |
0x04-0x07 | Padding? |
Subcommand 0x2A
Subcommand 0x2A (size 0x06) is used to tell clients that an item has been dropped by a player from their inventory.
Bytes | Meaning |
---|---|
0x00-0x01 | Always seems to be 0x0001 |
0x02-0x03 | Area where the item was dropped |
0x04-0x07 | The Item ID (from the user's inventory) of the item being dropped |
0x08-0x0B | X Position? |
0x0C-0x0F | Y Position? |
0x10-0x13 | Z Position? |
Subcommand 0x2C
Subcommand 0x2C (size 0x05) is used to tell other clients that someone is talking to an NPC. This command also seems to come up while dropping items...
Bytes | Meaning |
---|---|
0x00-0x01 | ??? (Always seems to be 0xFFFF for NPC talk, 0x0384 for dropping items) |
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. This command also shows up while dropping items.
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 0x43
Subcommand 0x43 (size 0x02) is used when the first step of a normal attack is in progress.
Bytes | Meaning |
---|---|
0x00-0x01 | Direction? (Matches bytes 0x02-0x03 in a nearby Subcommand 0x3E) |
0x02 | 0 for normal attack, 1 for heavy attack |
0x03 | Padding? |
Subcommand 0x44
Subcommand 0x44 (size 0x02) is used when the second step of a normal attack is in progress.
Bytes | Meaning |
---|---|
0x00-0x01 | Direction? (Matches bytes 0x02-0x03 in a nearby Subcommand 0x3E) |
0x02 | 0 for normal attack, 1 for heavy attack |
0x03 | Padding? |
Subcommand 0x45
Subcommand 0x45 (size 0x02) is used when the third step of a normal attack is in progress.
Bytes | Meaning |
---|---|
0x00-0x01 | Direction? (Matches bytes 0x02-0x03 in a nearby Subcommand 0x3E) |
0x02 | 0 for normal attack, 1 for heavy attack |
0x03 | Padding? |
Subcommand 0x46
Subcommand 0x46 (size 0x02 or 0x03) is used when a step of an attack is finished.
In its 0x02 sized form:
Bytes | Meaning |
---|---|
0x00-0x03 | Always zero? |
In its 0x03 sized form:
Bytes | Meaning |
---|---|
0x00 | Number of items hit? (I've only seen 1, but I've only hit one thing to see it) |
0x01-0x03 | All zeroes? |
0x04-0x05 | The item it hit? (same as the client ID and normally unused bytes in the header of Subcommand 0x0B) |
0x06-0x07 | All zeroes? |
Subcommand 0x47
Subcommand 0x47 (size 0x02 or 0x03) is used when casting a technique. Its possible that it could be other sizes if multiple things were hit (I haven't tested this theory). It is always followed by a Subcommand 0x48. With healing spells, somehow its not mentioned what it affected... Also, I don't know how to tell what was hit if multiple things were hit...
Bytes | Meaning |
---|---|
0x00 | Technique cast |
0x01 | Always zero? |
0x02 | Level of the spell, minus 1 |
0x03 | 1 if at least one thing was hit |
0x04-0x05 | ID of first item hit? |
0x06-0x07 | All zeroes? |
Subcommand 0x48
Subcommand 0x48 (size 0x02) is used after a technique has been cast.
Bytes | Meaning |
---|---|
0x00 | Technique cast |
0x01 | Always zero? |
0x02 | Level of the spell, minus 1 |
0x03 | Always zero? |
Subcommand 0x4A
Subcommand 0x4A (size 0x01) seems to be related to enemies attacking and the character evading. It carries no data beyond the normal header.
Subcommand 0x4C
Subcommand 0x4C (size 0x04) seems to be related to enemies landing a hit.
Bytes | Meaning |
---|---|
0x00-0x01 | Same as 0x3F after the fact (bytes 0x02-0x03) |
0x02-0x03 | ??? |
0x04-0x0B | ??? |
Subcommand 0x50
Subcommand 0x50 (size 0x02) has something to do with switches (I think?)
Bytes | Meaning |
---|---|
0x00-0x01 | ??? (The same as bytes 0x02-0x03 in a nearby Subcommand 0x3E/0x3F) |
0x02-0x03 | All zeroes? |
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 0x5D
Subcommand 0x5D (size 0x0A) is used to tell clients that someone has split up a stack of items (for dropping one or more).
Bytes | Meaning |
---|---|
0x00-0x03 | Unused? (Always seems to be zero) |
0x04-0x07 | ??? |
0x08-0x0B | ??? |
0x0C-0x0F | Item Data dword 1 |
0x10-0x13 | Item Data dword 2 |
0x14-0x17 | Item Data dword 3 |
0x18-0x1B | New Item ID for split stack |
0x1C-0x1F | Item Data 2 |
0x20-0x23 | Always 0x00000002? |
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 0x67
Subcommand 0x67 (size 0x04), I have no idea about at all. The Client ID and unused fields after it in the header are odd here... I really don't have a clue what this packet is for.
Bytes | Meaning |
---|---|
0x00-0x0B | ??? |
Subcommand 0x74
Subcommand 0x74 (size 0x08) is used for Word Select. Some day, I'll document this further.
Bytes | Meaning |
---|---|
0x00-0x1B | Word Select data |
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. I really have no idea how this packet is used, as I've seen it in a couple of different situations. The first situation I saw it in was NPCs that change their dialog. The second situation I saw it in was in warping down to Ragol...
Bytes | Meaning |
---|---|
0x00-0x03 | ??? |
Subcommand 0x8D
Subcommand 0x8D (size 0x02) seems to be related to starting to cast a technique.
Bytes | Meaning |
---|---|
0x00-0x03 | Always 0? |