Перейти к основному содержимому

Dungeon

Расширение Dungeon предоставляет полноценный фреймворк для создания и управления инстанс-подземельями с определением комнат на основе полигонов, глобальными/групповыми меню, сундуками добычи и синхронизацией группы.

Возможности

  • Инстанс-миры — Выделенные миры, создаваемые для каждого прохождения подземелья, с генерацией на основе шаблона.
    • Комнаты и триггеры — Комнаты на основе полигонов с триггерами onEnter/onLeave, приоритетом и критериями.
    • Система меню — Глобальный обозреватель подземелий + групповое лобби с полной настройкой раскладки интерфейса.
    • Сундуки добычи — Случайные сундуки с якорями NPC, ручными триггерами и виртуальными блоками на стороне клиента.
    • Система группы — Встроенное лобби с состояниями готов/не готов. Опциональные адаптеры для MMOCore, Parties.
    • Редактор комнат — Визуальный внутриигровой редактор комнат с рёбрами из частиц, манипуляцией узлами и панелью инструментов.

Права

PermissionОписание
typewriter.dungeon.adminАдминистрировать подземелья и редактор комнат.

Зависимости

ExtensionОбязательноНазначение
GUI ExtensionОбязательноВсе меню используют систему раскладки GUI (layoutPool, mainLayoutId). Без неё ни одно меню не откроется.
QuestExtensionОбязательноЗависимость времени выполнения для интеграции квестов (Ref<QuestEntry>).
PartyExtensionОпциональноВнешний плагин групп (Parties, MMOCore). У Dungeon есть встроенное лобби, работающее автономно.
PlaceholderAPIОпциональноДля разрешения плейсхолдеров @Placeholder в сообщениях.

Архитектура

Записи

  • ОпределенияDungeon Instance: правила, стоимость и конфигурация группы. Category: группирует подземелья в меню. Room: полигональный контур с триггерами входа/выхода. Room Config: набор комнат + точка появления. Loot Chest: контейнеры случайных наград.
    • ДействияGlobal Menu: просмотр всех подземелий. Party Menu: координация лобби. Enter: логика входа игрока. Leave: логика выхода игрока. Close: завершить инстанс. Loot Chest Trigger: ручная активация сундука.
    • ФактыInDungeon Fact: проверить, находится ли игрок в подземелье. InDungeonInstance Fact: проверить конкретное подземелье.

Руководство по быстрому старту

Шаг 1 — Определите комнату

Используйте /dungeon room my_room edit, чтобы войти в визуальный редактор комнат. Расставьте узлы, чтобы задать полигональную границу. Сохраните лаймовым красителем.

dungeon_room:
id: "boss_room"
name: "Boss Arena"
nodes:
- {x: 10, y: 64, z: 10}
- {x: 20, y: 64, z: 10}
- {x: 20, y: 64, z: 20}
- {x: 10, y: 64, z: 20}
priority: 1
onEnter:
- "boss_spawn_trigger"

Шаг 2 — Сгруппируйте комнаты в конфигурацию

dungeon_room_config:
id: "dungeon_layout"
name: "Default Layout"
rooms:
- "boss_room"
- "entrance_room"
spawnPoint:
x: 15
y: 65
z: 15
world: "dungeon_template"

Шаг 3 — Определите инстанс подземелья

dungeon_instance:
id: "ancient_temple"
name: "Ancient Temple"
templateWorld: "dungeon_template"
roomConfigurations:
- "dungeon_layout"
minPartySize: 1
maxPartySize: 4
cooldownSeconds: 300

Шаг 4 — Создайте категорию и меню

dungeon_category:
id: "main_dungeons"
name: "Main Dungeons"
instances:
- dungeonInstance: "ancient_temple"
unlockedItem: STONE_BRICKS
unlockedName: "<gold>Ancient Temple</gold>"
unlockedLore:
- "<gray>Players: {players}/{max}"

dungeon_global_menu:
id: "dungeon_hub"
category: "main_dungeons"
inventoryTitle: "<bold><gold>⚔ Dungeons</gold></bold>"
layoutPool:
- id: "main"
type: simple
items: []

Шаг 5 — Откройте меню

Из любого действия, команды, диалога NPC или триггера входа:

action:
type: dungeon_global_menu
id: "open_dungeons"
globalMenu: "dungeon_hub"

Или через команду: /dungeon global-menu main_dungeons

Команды

КомандаОписание
/dungeon global-menu <category>Открыть глобальный обозреватель подземелий
/dungeon party-menu <instance>Открыть групповое лобби для конкретного инстанса
/dungeon room <room> editВойти в визуальный редактор комнат
/dungeon room <room> addvertexДобавить узел на целевой блок
/dungeon room <room> removevertexat <index>Удалить узел по индексу
/dungeon room <room> saveСохранить комнату и выйти из редактора
/dungeon room <room> cancelОтменить редактирование

Плейсхолдеры

Все плейсхолдеры используют префикс %typewriter_dungeon_%.

ПлейсхолдерОписание
%typewriter_dungeon_players%Количество игроков в текущем подземелье.
%typewriter_dungeon_attempts%Всего попыток в этом подземелье (артефакт по игроку).
%typewriter_dungeon_completions%Количество прохождений (артефакт по игроку).
%typewriter_dungeon_best_time%Лучшее время прохождения в отформатированном виде (артефакт по игроку).