Message 0x58
Phantom
Phantoming is when you "listen" into another room that you are not actually logged into. It is possible to phantom into multiple rooms if your account has the rights and the room allows it. You will hear the room you are in as well as whatever rooms you are phantomed in.
| Type | Description | Offset |
| uint32_t | packet type | 0 |
| uint16_t | subtype | 4 |
| uint16_t | error_id | 6 |
| uint16_t | unknown1 | 8 |
| uint16_t | real_user_id | 10 |
| uint16_t | phantom_user_id | 12 |
| uint16_t | channel_id | 14 |
| uint16_t | log_error | 16 |
| uint16_t | unknown2 | 18 |
A phantom has its own unique user ID (phantom_user_id). The channel they're phantomed in is channel_id.
subtype values:
| ID | Description |
| 0 | Phantom adding |
| 1 | Phantom removing |
error_id values:
| Error ID | Error message |
| 0 | No error |
| 1 | "Channel does not allow phantoms" |
| 2 | "Phantoms are restricted to USR file" |
| 3 | "Duplicate" |
| 4 | "Unknown channel" |
| 5 | "Not found" |
| 6 | "Not authenticated for specified channel" |
| 7 | "No slots available" |
| 8 | "Insufficient resources" |
| 9 | "Channel is full" |
| 10 | "Banned from channel" |
| 11 | "Insufficient access rights" |
log_error values:
| ID | Description |
| 0 | Log error |
| 1 | Don't log error |
In add messages:
| Field | Value |
| real_user_id | local user ID |
| phantom_user_id | client->server: 0, server->client: id of newly created phantom |
| channel_id | channel id for phantom |
| log_error | 0 if request is manual, 1 if request is automatic (login) |
In remove messages:
| Field | Value |
| real_user_id | local user ID |
| phantom_user_id | id of removed phantom |
| channel_id | 0 |
