# Установка 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`: тогда используются `/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 относятся к релизам игрового контента и не входят в пакет редактора.