Files
moonwell-client/CUSTOM_CREATURES.md

4.2 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 сборщик:

  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.

Дополнительные параметры

Если значений по умолчанию недостаточно, вместо строки используется объект:

{
  "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.