# 39dll Wire Protocol — extracted/server-5-4/

Auto-generated by `tools/protocol-doc`. Do not hand-edit. Re-run with `pnpm protocol-doc:catalog`.

Input manifest preview: `# extract-gmd MANIFEST`

## Summary

| Direction | Opcode count |
|-----------|--------------|
| Client → Server (c2s) | 0 |
| Server → Client (s2c) | 22 |
| **Total** | **22** |

## Client → Server Opcodes

<!-- AUTOGEN:opcodes-c2s:start -->
| Byte | Name | MVP | Layout | Origins |
|------|------|-----|--------|---------|
<!-- AUTOGEN:opcodes-c2s:end -->

## Server → Client Opcodes

<!-- AUTOGEN:opcodes-s2c:start -->
| Byte | Name | MVP | Layout | Origins |
|------|------|-----|--------|---------|
| 0 | broadcast-login | no | flat(3 fields) | 1 |
| 1 | broadcast-room | no | flat(2 fields) | 1 |
| 2 | broadcast-sprite | no | flat(3 fields) | 1 |
| 3 | movement | yes | flat(6 fields) | 1 |
| 4 | chat | yes | flat(3 fields) | 2 |
| 5 | broadcast-logoff | no | flat(1 fields) | 3 |
| 6 | pid-assign | no | flat(1 fields) | 2 |
| 7 | udp-port-assign | no | flat(1 fields) | 2 |
| 8 | login-response | yes | union(3 variants) | 1 |
| 9 | online-list | no | flat(8 fields) | 2 |
| 11 | room-occupants | no | flat(9 fields) | 1 |
| 12 | mod-execute | no | flat(1 fields) | 8 |
| 13 | mb-board-list-response | no | flat(7 fields) | 1 |
| 14 | mb-replies-response | no | flat(3 fields) | 1 |
| 15 | duo-request-relay | no | flat(2 fields) | 1 |
| 16 | area-broadcast | no | flat(2 fields) | 1 |
| 18 | mb-summary-response | no | flat(3 fields) | 1 |
| 19 | mb-newmsg-flags | no | flat(1 fields) | 4 |
| 22 | duo-state-broadcast | no | flat(4 fields) | 1 |
| 23 | duo-confirm-relay | no | flat(1 fields) | 1 |
| 24 | opcode-24-s2c | no | flat(0 fields) | 1 |
| 26 | opcode-26-s2c | no | flat(0 fields) | 1 |
<!-- AUTOGEN:opcodes-s2c:end -->

## CLI-08 MVP Opcodes

<!-- AUTOGEN:mvp-opcodes:start -->
| Byte | Name | MVP | Layout | Origins |
|------|------|-----|--------|---------|
| 3 | movement | yes | flat(6 fields) | 1 |
| 4 | chat | yes | flat(3 fields) | 2 |
| 8 | login-response | yes | union(3 variants) | 1 |
<!-- AUTOGEN:mvp-opcodes:end -->

## Opcode Details

### 0 (s2c) — broadcast-login

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| pid | byte | number | 1 |
| p_uid | byte | number | 1 |
| p_name | string | string | -1 |

Sample bytes: `00 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:523`

### 1 (s2c) — broadcast-room

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| pid | byte | number | 1 |
| p_room | int | number | 4 |

Sample bytes: `01 00 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:533`

### 2 (s2c) — broadcast-sprite

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| cpid | byte | number | 1 |
| p_spr | int | number | 4 |
| p_spr | string | string | -1 |

Sample bytes: `02 00 00 00 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:575`

### 3 (s2c) — movement

**MVP (CLI-08 slice).**

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| cpid | byte | number | 1 |
| p_x | int | number | 4 |
| p_y | int | number | 4 |
| p_fps | byte | number | 1 |
| p_xdif | float | number | 4 |
| p_ydif | float | number | 4 |

Sample bytes: `03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:588`

### 4 (s2c) — chat

**MVP (CLI-08 slice).**

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| pid | byte | number | 1 |
| field1 | byte | number | 1 |
| strtemp | string | string | -1 |

Sample bytes: `04 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:164`
- `extracted/server-5-4/scripts/0359-server_receive.gml:603`

### 5 (s2c) — broadcast-logoff

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| allupdate | byte | number | 1 |

Sample bytes: `05 00`

GML origins:
- `extracted/server-5-4/objects/0349-operations/events/Step.gml:38`
- `extracted/server-5-4/objects/0363-ucontrol/events/KeyPress-85.gml:14`
- `extracted/server-5-4/scripts/0359-server_receive.gml:541`

### 6 (s2c) — pid-assign

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| argument0 | byte | number | 1 |

Sample bytes: `06 00`

GML origins:
- `extracted/server-5-4/scripts/0360-init_user.gml:36`
- `extracted/server-5-4/scripts/0363-reinit_userr.gml:19`

### 7 (s2c) — udp-port-assign

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| mainudpport | int | number | 4 |

Sample bytes: `07 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0360-init_user.gml:42`
- `extracted/server-5-4/scripts/0363-reinit_userr.gml:25`

### 8 (s2c) — login-response

**MVP (CLI-08 slice).**

**Discriminated union** — discriminator field: `first_int`

| Discriminator value | Variant |
|---------------------|---------|
| `-1` | bad-auth |
| `-2` | maintenance |
| `>=0` | success |

#### Variant: `bad-auth`

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| first_int | int | number | 4 |

#### Variant: `maintenance`

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| first_int | int | number | 4 |

#### Variant: `success`

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| playerudpport | int | number | 4 |
| dabypass | byte | number | 1 |
| latestclient | int | number | 4 |
| servermsg | string | string | -1 |
| iv_totalcats | byte | number | 1 |
| uinv_get | int | number | 4 |
| uinv_get | string | string | -1 |
| hxbridge | int | number | 4 |
| hxbridge | string | string | -1 |
| field9 | int | number | 4 |
| field10 | int | number | 4 |

Sample bytes: `08 ff ff ff ff`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:199`

### 9 (s2c) — online-list

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| pnum | byte | number | 1 |
| op | byte | number | 1 |
| p_uid | byte | number | 1 |
| p_name | string | string | -1 |
| p_room | int | number | 4 |
| p_canduo | byte | number | 1 |
| p_induo | byte | number | 1 |
| p_watchable | byte | number | 1 |

Sample bytes: `09 00 00 00 00 00 00 00 00 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0360-init_user.gml:52`
- `extracted/server-5-4/scripts/0363-reinit_userr.gml:35`

### 11 (s2c) — room-occupants

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| rplayers | byte | number | 1 |
| rpid | byte | number | 1 |
| p_x | int | number | 4 |
| p_y | int | number | 4 |
| p_spr | int | number | 4 |
| p_spr | string | string | -1 |
| p_canduo | byte | number | 1 |
| p_induo | byte | number | 1 |
| p_watchable | byte | number | 1 |

Sample bytes: `0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:80`

### 12 (s2c) — mod-execute

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| field0 | string | string | -1 |

Sample bytes: `0c 00 00`

GML origins:
- `extracted/server-5-4/objects/0000-server/events/KeyPress-79.gml:11`
- `extracted/server-5-4/objects/0042-player/events/Mouse-5.gml:10`
- `extracted/server-5-4/objects/0223-chatob/events/KeyRelease-13.gml:9`
- `extracted/server-5-4/objects/0363-ucontrol/events/KeyPress-79.gml:6`
- `extracted/server-5-4/scripts/0008-ChtCmdRec.gml:15`
- `extracted/server-5-4/scripts/0359-server_receive.gml:436`
- `extracted/server-5-4/scripts/0359-server_receive.gml:449`
- `extracted/server-5-4/scripts/0359-server_receive.gml:464`

### 13 (s2c) — mb-board-list-response

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| mb_total | int | number | 4 |
| tempint | int | number | 4 |
| tempint2 | int | number | 4 |
| ru | int | number | 4 |
| mb_topic | string | string | -1 |
| mb_topic | int | number | 4 |
| mb_topic | int | number | 4 |

Sample bytes: `0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:308`

### 14 (s2c) — mb-replies-response

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| tempint | int | number | 4 |
| mb_topic | int | number | 4 |
| mb_reply | string | string | -1 |

Sample bytes: `0e 00 00 00 00 00 00 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:350`

### 15 (s2c) — duo-request-relay

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| pid | byte | number | 1 |
| tempbyte | byte | number | 1 |

Sample bytes: `0f 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:374`

### 16 (s2c) — area-broadcast

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| pid | byte | number | 1 |
| p_area | string | string | -1 |

Sample bytes: `10 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:392`

### 18 (s2c) — mb-summary-response

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| mb_total | int | number | 4 |
| mb_total | int | number | 4 |
| mb_board | string | string | -1 |

Sample bytes: `12 00 00 00 00 00 00 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:400`

### 19 (s2c) — mb-newmsg-flags

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| u_mb_newmsg | byte | number | 1 |

Sample bytes: `13 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:114`
- `extracted/server-5-4/scripts/0359-server_receive.gml:338`
- `extracted/server-5-4/scripts/0359-server_receive.gml:362`
- `extracted/server-5-4/scripts/0359-server_receive.gml:548`

### 22 (s2c) — duo-state-broadcast

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| pid | byte | number | 1 |
| bytetemp | byte | number | 1 |
| bytetemp2 | byte | number | 1 |
| bytetemp3 | byte | number | 1 |

Sample bytes: `16 00 00 00 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:558`

### 23 (s2c) — duo-confirm-relay

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|
| pid | byte | number | 1 |

Sample bytes: `17 00`

GML origins:
- `extracted/server-5-4/scripts/0359-server_receive.gml:495`

### 24 (s2c) — opcode-24-s2c

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|

Sample bytes: `18`

GML origins:
- `extracted/server-5-4/objects/0349-operations/events/Step.gml:46`

### 26 (s2c) — opcode-26-s2c

| Field | GML type | TS type | Bytes |
|-------|----------|---------|-------|

Sample bytes: `1a`

GML origins:
- `extracted/server-5-4/objects/0349-operations/events/Step.gml:24`
