5.6 KiB
Автоматический импорт mount и pet
Список современных моделей находится в custom-creatures.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 сборщик:
- читает manifest каждой модели и размещает retail M2 со всеми зависимостями в loose-каталоге
Data/Patch-WXL.MPQ, создавая рядом.mdx-алиас для загрузчика WoW 3.3.5, чтобы WarcraftXL всегда преобразовывал MD21 до загрузки клиентом; - генерирует
WXLFileData.csvдля WarcraftXL; - дописывает модели в
CreatureModelData.dbcиCreatureDisplayInfo.dbc; - сохраняет стабильные ID в
custom-creatures.lock.json; - для
petsсоздаёт companion summon spell и строку skill line778; - кладёт серверные DBC, SQL и таблицу ID в
build/server-dbc.
Полный Spell.dbc в патч не копируется. WarcraftXL читает компактный
WXLSpellOverrides.tsv и при открытии DBC добавляет новые spell-записи к штатному файлу клиента.
Перестановка моделей в списке не меняет уже выданные ID. Lock-файл необходимо хранить в Git.
Дополнительные параметры
Если значений по умолчанию недостаточно, вместо строки используется объект:
{
"folder": "assets/creatures/my_mount",
"key": "my_mount",
"name": "My Mount",
"name_ru": "Мой транспорт",
"race_mask": 1101,
"icon": "my_icon.jpg",
"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 поле race_mask ограничивает строку коллекции набором рас (1101 — Альянс,
690 — Орда, 0 или отсутствие поля — все расы). Поле icon указывает JPG, PNG или TGA рядом
с моделью либо путь от корня проекта. Сборщик конвертирует изображение в BLP2, выдаёт стабильный
spellIconID, добавляет запись в SpellIcon.dbc через MoonWell provider и назначает её summon-spell.
Конвертация иконок
Встроенная команда CLI преобразует JPG, PNG или TGA в совместимый с клиентом BLP2:
tool.exe icon "путь/к/icon.jpg" ["путь/к/icon.blp"]
Если выходной путь не указан, .blp создаётся рядом с исходным файлом. Конвертер автоматически
приводит изображение к ближайшему квадратному размеру степени двойки (не более 512×512), кодирует
его в DXT1 и создаёт mipmap-уровни. Например, иконка 56×56 будет преобразована в 64×64.
Установка на сервер
Для каждого элемента pets сборщик автоматически выдаёт creatureEntry, summonSpellID и
skillLineAbilityID. Значения находятся в build/server-dbc/custom-creatures.csv.
- Скопировать
CreatureModelData.dbcиCreatureDisplayInfo.dbcизbuild/server-dbcв серверный каталогdata/dbc. - Применить
build/server-dbc/custom-creatures.sqlкacore_world. - Перезапустить worldserver: DBC и таблицы
spell_dbcзагружаются только при старте. - Для проверки изучить выданный spell командой
.learn <summonSpellID>.
SQL создаёт creature_template, creature_model_info, creature_template_model, companion spell и строку skill line.
Генерация полноценного mount spell для секции mounts остаётся отдельным этапом: mount требует
другой spell-шаблон с аурами скорости и SPELL_AURA_MOUNTED.