84 lines
4.2 KiB
Markdown
84 lines
4.2 KiB
Markdown
# Автоматический импорт mount и pet
|
|
|
|
Список современных моделей находится в `custom-creatures.json`. В нём есть две независимые
|
|
секции:
|
|
|
|
```json
|
|
{
|
|
"mounts": [
|
|
"assets/creatures/my_mount"
|
|
],
|
|
"pets": [
|
|
"assets/creatures/my_pet"
|
|
]
|
|
}
|
|
```
|
|
|
|
Папка должна быть результатом **Raw M2 export** из wow.export и содержать:
|
|
|
|
- один основной `.m2`;
|
|
- `*.manifest.json`;
|
|
- все упомянутые в manifest текстуры, skin, skeleton, bone и animation-файлы.
|
|
|
|
Разрешены абсолютные пути, например `C:/Users/sindo/wow.export/creature/catslime`, но для
|
|
воспроизводимой сборки папку лучше скопировать внутрь репозитория и указать относительный путь.
|
|
|
|
## Что делает сборщик
|
|
|
|
При обычном запуске `tool.exe`, `run.ps1` или `deploy.ps1` сборщик:
|
|
|
|
1. читает manifest каждой модели и размещает retail M2 со всеми зависимостями в loose-каталоге
|
|
`Data/Patch-WXL.MPQ`, создавая рядом `.mdx`-алиас для загрузчика WoW 3.3.5, чтобы WarcraftXL всегда
|
|
преобразовывал MD21 до загрузки клиентом;
|
|
2. генерирует `WXLFileData.csv` для WarcraftXL;
|
|
3. дописывает модели в `CreatureModelData.dbc` и `CreatureDisplayInfo.dbc`;
|
|
4. сохраняет стабильные ID в `custom-creatures.lock.json`;
|
|
5. для `pets` создаёт companion summon spell и строку skill line `778`;
|
|
6. кладёт серверные DBC, SQL и таблицу ID в `build/server-dbc`.
|
|
|
|
Полный `Spell.dbc` в патч не копируется. WarcraftXL читает компактный
|
|
`WXLSpellOverrides.tsv` и при открытии DBC добавляет новые spell-записи к штатному файлу клиента.
|
|
|
|
Перестановка моделей в списке не меняет уже выданные ID. Lock-файл необходимо хранить в Git.
|
|
|
|
## Дополнительные параметры
|
|
|
|
Если значений по умолчанию недостаточно, вместо строки используется объект:
|
|
|
|
```json
|
|
{
|
|
"folder": "assets/creatures/my_mount",
|
|
"key": "my_mount",
|
|
"name": "My Mount",
|
|
"name_ru": "Мой транспорт",
|
|
"archive": "Creature/MyMount",
|
|
"model_file": "my_mount.m2",
|
|
"template_display_id": 2404,
|
|
"display_scale": 1.0,
|
|
"model_scale": 1.0,
|
|
"collision_width": 0.6111,
|
|
"collision_height": 2.031,
|
|
"mount_height": 1.8657,
|
|
"flags": 0
|
|
}
|
|
```
|
|
|
|
Для `mounts` по умолчанию клонируется верховая лошадь с display ID `2404`, для `pets` —
|
|
компаньон-кот с display ID `5448`. Шаблон задаёт физические размеры, звук и прочие поля DBC;
|
|
параметры объекта позволяют их переопределить.
|
|
|
|
## Установка на сервер
|
|
|
|
Для каждого элемента `pets` сборщик автоматически выдаёт `creatureEntry`, `summonSpellID` и
|
|
`skillLineAbilityID`. Значения находятся в `build/server-dbc/custom-creatures.csv`.
|
|
|
|
1. Скопировать `CreatureModelData.dbc` и `CreatureDisplayInfo.dbc` из `build/server-dbc` в
|
|
серверный каталог `data/dbc`.
|
|
2. Применить `build/server-dbc/custom-creatures.sql` к `acore_world`.
|
|
3. Перезапустить worldserver: DBC и таблицы `spell_dbc` загружаются только при старте.
|
|
4. Для проверки изучить выданный spell командой `.learn <summonSpellID>`.
|
|
|
|
SQL создаёт `creature_template`, `creature_model_info`, `creature_template_model`, companion spell и строку skill line.
|
|
Генерация полноценного mount spell для секции `mounts` остаётся отдельным этапом: mount требует
|
|
другой spell-шаблон с аурами скорости и `SPELL_AURA_MOUNTED`.
|