Files
sindoring 5565858e35 Add quest authoring and scoped NPC questgiver migrations
Create and update quest drafts through shared Save, Undo, Export and Play workflows. Guard quest baselines and NPC references before generating content writes. Enable questgiver flags for an entire template or clone a simple template to isolate one selected spawn.

Validated on Windows x64: formatting, workspace Clippy, 53 passing tests, release build and UI capture. MariaDB temporary-table checks cover both scopes, drift rejection and idempotency; persistent table checksums remain unchanged. Manual in-game quest completion remains open.

Co-Authored-By: Codex <noreply@openai.com>
2026-11-04 21:22:56 +04:00

11 KiB

Установка MoonWell Editor

Распакуйте архив в отдельную папку и откройте benilla-editor.exe. Rust, исходники Benilla и исходники редактора для запуска не нужны. Требуются Windows x64, современный видеодрайвер с поддержкой Vulkan, Microsoft Visual C++ Runtime x64 (VCRUNTIME140.dll) и собственная установка WoW 1.12.1.

Первый запуск

  1. Откройте общий репозиторий контента проекта в отдельной папке и выберите его JSON-проект в стартовом окне. Либо создайте новый проект: commit ядра и отдельный диапазон GUID нужно получить у владельца сервера. У разных проектов диапазоны не должны пересекаться.
  2. Выберите папку WoW или её Data. Данные игры используются только для чтения.
  3. Укажите подключение к world-базе в формате mysql://user:password@host:port/mangos. Оно нужно для каталога NPC, отображения существующих спавнов и проверки экспорта. Для просмотра мира без подключения можно открыть проект с уже заданными моделями.
  4. Выберите папку миграций. По умолчанию это migrations рядом с JSON-проектом.
  5. Нажмите «Сохранить настройки», затем «Открыть редактор».

Для Play нужен отдельно установленный совместимый клиент Benilla / MoonWell, подготовленный локальный сервер vMaNGOS, выделенный GM-аккаунт и созданный персонаж. В настройках Play укажите клиент, адрес сервера, Realm ID, аккаунт и персонажа. Скрипт scripts/prepare-play.ps1 предназначен для WSL с deploy/local/compose.sh и apply-content.sh нашего ядра: укажите фактический Linux-путь ядра и порт мира. Для другого окружения используйте собственный скрипт или применяйте миграции и перезапускайте мир вручную до Play.

Выбранный в каталоге NPC остаётся кистью для нескольких размещений. Esc или кнопка «Режим выбора (Esc)» в каталоге отменяет размещение. После этого щёлкните по кольцу у ног NPC, чтобы открыть его в инспекторе; щелчок по свободному месту новых NPC не создаёт. Мир занимает свободную область между панелями и подстраивается под их размер. Обзор ПКМ, колесо скорости и выбор поверхности работают внутри этой области.

Где хранятся данные

  • Папка программы: исполняемые файлы, скрипты и лицензии. Здесь нет проектов и паролей.
  • Репозиторий контента: JSON-проекты, SQL-миграции и прочие общие файлы проекта. Сохраняйте их в Git этого репозитория. Файл camp.json из исходников редактора — локальный пример.
  • Профиль пользователя: settings.json, список последних проектов и состояние Play. Настройки содержат локальные пароли; не добавляйте профиль в Git и не передавайте другим. Точный путь покажет benilla-editor-cli.exe config-path; он также указан в стартовом окне. Логи клиента и подготовки находятся в state/play внутри профиля данных пользователя.

Для отдельного профиля задайте абсолютный EDITOR_HOME: тогда используются <EDITOR_HOME>/config/settings.json, state/ и cache/. Относительные пути в настройках считаются от папки settings.json.

Старый .env можно явно импортировать кнопкой стартового окна либо командой benilla-editor-cli.exe config-import "полный-путь-к-.env". Автоматического чтения .env из папки программы или текущей папки больше нет. Явно заданные переменные окружения WOW_DATA и EDITOR_* имеют приоритет над профилем при запуске.

Создание простого квеста

Откройте «Квесты…» в верхней панели. При первом создании укажите диапазон ID квестов, выделенный владельцем сервера для общего проекта. Нажмите «Новый квест», заполните название, описание, цель в журнале и текст завершения. Выберите уровень и награду (опыт и медь).

Выберите роль «NPC выдачи» или «NPC сдачи», найдите NPC по имени и нажмите его в результатах. Можно использовать выбранного в мире NPC, в том числе обычную лошадь. Ниже формы выберите режим назначения и включите флаг «Квестодатель»:

  • «Все NPC этого типа» добавляет флаг всем спавнам выбранного entry во всех патчах Vanilla, сохраняя остальные флаги.
  • «Только выбранный NPC»: сначала выберите нужный спавн в мире, затем нажмите «Назначить квест только выбранному…» или включите флаг. Редактор создаст отдельный шаблон и переведёт на него только этот спавн. Остальные лошади останутся прежними. Для новых шаблонов владелец проекта один раз задаёт свободный диапазон entry в раскрывающемся блоке.

Переключатель задаёт режим следующего назначения; текущая привязка показана отдельно. Изменения попадут в SQL-миграцию вместе с квестом и применятся при подготовке Play. Отдельная копия сохраняет поля исходного шаблона и его существующие связи с квестами. Пока копирование доступно для простых NPC без специальных ролей, AI/ScriptName и других опубликованных квестов проекта. Для торговцев, тренеров и таких NPC используйте общий режим. Новый шаблон принадлежит проекту: если впоследствии поставить ещё один спавн с его entry, он тоже получит эти квесты. После экспорта флаг и копия сохраняются как опубликованный контент; автоматического удаления копии или отключения опубликованного флага пока нет. Для цели убийства переключите роль поиска, выберите существо и количество (не больше 63). Без целей убийства квест завершается разговором с NPC сдачи.

«Сохранить проект» сохраняет и незаконченные черновики. «Экспорт» в панели «Изменения» проверяет данные и создаёт общую SQL-миграцию NPC и квестов. Play использует обычный цикл применения миграций и перезапуска локального сервера. Проверка боевого прохождения — вручную. При обновлении текста опубликованного квеста учитывайте клиентский кеш; новый процесс Play не равен очистке кеша у всех игроков. Для повторного прохождения используйте другого тестового персонажа: редактор не сбрасывает историю выполненных квестов.

Пока поддержаны собственные новые квесты, разговор и цели убийства, награды опытом и деньгами. Цепочки, предметы и отдельные языковые версии — следующие шаги. Опубликованный квест можно обновлять новой миграцией; удаление доступно только неопубликованному черновику. Проекты с квестами используют формат 2 и требуют новой версии редактора.

Обновление

Закройте редактор и запущенный им клиент Play. Распакуйте новую версию в новую папку и запустите её. Профиль и последние проекты сохранятся. Для Play, использующего скрипт из старой папки программы, выберите скрипт новой версии в настройках. Общий репозиторий контента обновляется отдельно обычным Git-процессом команды.

Автоматическая загрузка обновлений пока не реализована. Артефакты DBC/S3 относятся к релизам игрового контента и не входят в пакет редактора.