docs(client): document worldserver DBC sync for Paragon character create
Explains why Character Creation Failed occurs when the client has patch-enUS-4 but Docker/native data/dbc is still vanilla: ChrClasses row 12 only exists in the patched DBC set. Adds Docker volume copy steps, native install path, and log verification. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -52,6 +52,90 @@ worldserver image is older than commit `4d2a80d` (the
|
||||
`character_paragon_panel_spell_revoked` migration). Pull both ends to
|
||||
the same release tag and rebuild the worldserver image.
|
||||
|
||||
If the **client** shows the Paragon class on the create screen but the
|
||||
server replies **Character Creation Failed** when you pick it: the
|
||||
worldserver's on-disk DBC set still does not define class **12**
|
||||
(`ChrClasses.dbc`). SQL migrations alone cannot fix that when
|
||||
`chrclasses_dbc` in MySQL is empty (normal for stock AC — AzerothCore
|
||||
loads `.dbc` files from `data/dbc/` and only *merges* optional DB rows
|
||||
on top). See **Worldserver DBC sync** below.
|
||||
|
||||
---
|
||||
|
||||
## Worldserver DBC sync (required for Paragon character create)
|
||||
|
||||
The Fractured **client** learns about Paragon from `patch-enUS-4.MPQ`
|
||||
(DBC + GlueXML). The **worldserver** never reads your MPQs — it reads
|
||||
plain `.dbc` files under its `DataDir` (`.../data/dbc/` by default).
|
||||
|
||||
Stock Docker installs populate `data/dbc/` from a vanilla 3.3.5a
|
||||
extract (`ac-client-data-init` in `docker-compose.yml`). That tree has
|
||||
no `ChrClasses` row for id **12**, so `CharacterHandler` rejects the
|
||||
create with `CHAR_CREATE_FAILED` and logs:
|
||||
|
||||
`Class (12) not found in DBC while creating new char ... wrong DBC files or cheater?`
|
||||
|
||||
**Fix:** merge every `.dbc` that ships inside `patch-enUS-4.MPQ` under
|
||||
`DBFilesClient/` (or the archive's `dbc/` root — same layout depending
|
||||
on tool) into the server's `data/dbc/` directory, then restart
|
||||
**only** `ac-worldserver`. Copy the **whole** set from the MPQ, not
|
||||
just `ChrClasses.dbc`, so dependent stores (`CharBaseInfo`,
|
||||
`SkillRaceClassInfo`, `TalentTab`, `PowerDisplay`, etc.) stay consistent
|
||||
with the client patch.
|
||||
|
||||
### Extract from the MPQ (any OS)
|
||||
|
||||
Use Ladik's MPQ Editor, `mpqcli`, or any StormLib tool. You want every
|
||||
`*.dbc` that Fractured added or changed in that patch, staged into a
|
||||
host folder (example: `./paragon-dbc-extract/`).
|
||||
|
||||
### Docker: write into the named volume
|
||||
|
||||
Compose uses `${DOCKER_VOL_DATA:-ac-client-data}` (see
|
||||
`docker-compose.yml`). Discover the real volume name:
|
||||
|
||||
```bash
|
||||
docker volume ls | grep -i client-data
|
||||
```
|
||||
|
||||
Copy extracted `.dbc` files into the volume's `dbc/` subdirectory.
|
||||
Example (Linux / macOS — adjust volume name and host path):
|
||||
|
||||
```bash
|
||||
docker run --rm \
|
||||
-v ac-client-data:/data \
|
||||
-v "$PWD/paragon-dbc-extract:/patch:ro" \
|
||||
alpine sh -c 'cp -f /patch/*.dbc /data/dbc/'
|
||||
docker compose restart ac-worldserver
|
||||
```
|
||||
|
||||
Windows PowerShell (same idea; escape backticks if you wrap lines):
|
||||
|
||||
```powershell
|
||||
docker run --rm `
|
||||
-v ac-client-data:/data `
|
||||
-v ${PWD}\paragon-dbc-extract:/patch:ro `
|
||||
alpine sh -c "cp -f /patch/*.dbc /data/dbc/"
|
||||
docker compose restart ac-worldserver
|
||||
```
|
||||
|
||||
If your compose **project** name prefixes the volume (e.g.
|
||||
`fractured_ac-client-data`), use that full name from `docker volume ls`.
|
||||
|
||||
### Native install (no Docker)
|
||||
|
||||
Copy the same extracted `.dbc` files into:
|
||||
|
||||
`<CMAKE_INSTALL_PREFIX>/data/dbc/`
|
||||
|
||||
then restart `worldserver`.
|
||||
|
||||
### Verify
|
||||
|
||||
After restart, search startup logs for errors mentioning `ChrClasses` or
|
||||
`dbc`. On failure you would still see the `Class (12) not found` line at
|
||||
create time — if that disappears, the DBC merge worked.
|
||||
|
||||
---
|
||||
|
||||
## Building the patches yourself
|
||||
|
||||
Reference in New Issue
Block a user