NPC, которые раздают работу: диалоги с выбором реплик, цепочки заданий, девять типов целей, награды и репутация. Что вы заполняете в панели и что из этого видит игрок.
Мод ставит на карту живых NPC, у которых игрок берёт работу. Подошёл, нажал клавишу действия — открылся разговор: NPC говорит, игрок выбирает ответ. Из разговора берётся задание, оно появляется на экране и на карте, а когда выполнено — игрок возвращается и получает награду.
Задания складываются в цепочки, у каждого NPC копится личное отношение к игроку, а NPC между собой дружат и враждуют. Помог одним — вторые перестанут с тобой разговаривать.
Весь текст, все задания и все настройки правятся в отдельной панели в кабинете. Правки уезжают в игру без перезапуска сервера.
| Папка | Куда |
|---|---|
@C13_Framework | в -mod, первым. Бесплатный кор-мод, через него мод разговаривает с сайтом. Его качают и игроки: на его классы опирается клиентская часть. |
@C13_Quests | в -mod. Окно диалога, список заданий, HUD, иконки на карте — это качают игроки. |
@C13_Quests_Server | только в -serverMod. Тут вся кухня: кто что взял, что засчитано, кому сколько выдать. |
Обе части мода обновляются парой. Если поставить новый клиент со старым сервером (или наоборот), часть настроек до игры не доедет.
$profile:C13\config.json
{
"ApiUrl": "https://c13.su/api",
"ApiKey": "ваш ключ из кабинета"
}
Ключ и готовый конфиг — в кабинете, кнопка «Скопировать конфиг». Файл один на все моды C13, второй раз его заводить не надо.
Квесты, диалоги и репутация игроков живут в вашей собственной базе, а не в общей. Если её ещё нет — создайте в кабинете на странице сервера, блок «База данных MariaDB». Без неё панель квестов просто не откроется.
Порядок здесь важен: задание нельзя повесить на несуществующего NPC, а ответ в диалоге — на несуществующее задание.
Мод и сам замечает правки — он раз в полминуты спрашивает у сайта номер версии и, если тот вырос, забирает новый конфиг. Кнопка просто говорит «готово, забирай сейчас». Жать её после каждой мелкой правки не нужно, а вот после большой переделки контента — стоит.
Слева четыре раздела: Квестодатели, Отношения NPC, Репутация игрока, Настройки. Под ними — дерево всего содержимого с поиском: можно искать по имени NPC, названию линии, названию задания или по номеру через решётку.
Справа рабочая область с вкладками, как в браузере: несколько заданий можно держать открытыми одновременно и переключаться между ними. Вкладка с несохранёнными правками помечается точкой.
В шапке четыре кнопки: 🎙 Озвучить (см. ниже), ⟳ HOTPATCH, ? Мануал и выход. Рядом — номер версии контента и точка связи с базой.
В карточке мода в кабинете настроек всего две, и обе служебные: как часто мод спрашивает сайт о правках и подробный лог в RPT сервера. Всё остальное — здесь, в панели.
Это живой человек в мире, у которого игрок берёт и сдаёт работу. Технически обычный NPC, которого мод спавнит сам при старте сервера.
| Поле | Что вписывать |
|---|---|
| Имя | То, что игрок увидит над репликой. Не класснейм, а просто имя: «Сидорович», «Механик». |
| Фракция | Группировка. Нужна для отношений между NPC. Не пользуетесь отношениями — оставьте пустым. |
| Класс NPC | Модель человека, например SurvivorM_Mirek. Годится любой класс, унаследованный от человека, в том числе из чужих модов. |
| Позиция | Три числа через пробел — X, Y, Z. Оставьте Y нулём, и мод сам поставит NPC на землю; так обычно и делают. |
| Поворот | Градусы, куда он смотрит. 0 — на север. |
| Поза ожидания | В чём он стоит, пока с ним не говорят: курит, опирается, сидит. Выбирается из списка. |
| Одежда | Класснеймы вещей через запятую. Наденутся при спавне, порядок не важен. |
| Голос | Идентификатор голоса fish.audio для озвучки. Пусто — NPC говорит молча, текстом. |
| Цвет меню | Акцент, из которого раскрашивается весь его диалог и список заданий. Пусто — штатный лаймовый. Игрок увидит новый цвет при следующем разговоре. |
| Блуждание | Расписание по игровому времени: с 8 до 20 стоит у ворот, с 22 до 6 — у костра. Интервал может идти через полночь. Вне интервалов NPC возвращается на основную точку. |
| Включён | Выключенный NPC не появляется в мире, но все его задания и диалоги остаются в базе. |
Проще всего встать в игре ровно туда, где должен стоять NPC, и снять свою позицию админкой. Не ставьте его вплотную к стене — игроку нужно место, чтобы навести на него курсор.
Опечатка в класснейме. Мод в этом случае честно пишет в лог сервера строку про неудачный спавн с указанием класса — загляните туда прежде, чем перепроверять всё остальное.
Сделать статичного NPC невидимым для заражённых движок DayZ не позволяет. Урон ему отключён, убить его нельзя, но толпа зомби будет на него бросаться и мешать разговору. Лечится расстановкой: не ставьте лагерь с квестовиками внутри зоны спавна мутантов.
Диалог собирается из реплик и ответов. Реплика — то, что говорит NPC. Ответ — строчка, которую выбирает игрок: она либо ведёт к следующей реплике, либо что-то делает.
реплика 1 «Ты новенький? Работа найдётся.»
├ ответ «Что за работа?» → реплика 2
└ ответ «Не сейчас.» → конец
реплика 2 «Найди мой тайник у моста.»
├ ответ «Берусь.» → взять квест #14
└ ответ «Подумаю.» → конец
Редактор рисует это графом: слева карта реплик, справа карточка выбранной. Колесо мыши — масштаб, фон тянется мышью, реплики двигаются, а связь делается перетаскиванием кружка у ответа на нужную реплику. Кнопка «⊞ выровнять» раскладывает всё по сетке от стартовой реплики. Правки в диалоге сохраняются сами, кнопку жать не надо.
| Действие | Что происходит |
|---|---|
| — (пусто) | Просто ведёт к следующей реплике. Так делаются разговоры «за жизнь». |
| взять квест | Игрок берёт задание, выбранное в этом же ответе. Диалог при этом закрывается. |
| сдать квест | Принимает выполненную работу и выдаёт награду. |
| открыть задания | Закрывает разговор и показывает список того, что этот NPC может предложить. |
| закончить | Просто закрывает разговор. |
Мод помнит, где игрок остановился. Пройденные реплики гаснут, и в следующий раз NPC начинает с того места, до которого дошли, а не с приветствия. Ветку «а, это опять ты» писать не нужно — она получается сама.
Ответ с действием «взять квест» гасит свою реплику навсегда, а его стрелка («→ реплика») задаёт, с чего продолжится история при следующем разговоре. Если вся лента пройдена и новых реплик нет, разговор превращается в список заданий: NPC молча показывает, что у него есть.
Реплика видна в окне целиком, но время её показа считается по длине текста. Стена на десять строк — это разговор, который заметно тормозит, и который игрок пролистывает не читая.
Линия — цепочка заданий одного NPC, идущих по порядку. Задание может быть и само по себе: просто линия из одного.
Внутри линии задания тоже показываются графом. Стрелка от одного к другому означает «сначала сдай то, потом дадут это». Включите галку «Связать узлы», кликните источник, потом цель — стрелка появится. Клик по стрелке её убирает. Связь можно тянуть и к заданию другого NPC: так делаются сюжеты, где работа на одну группировку открывает дверь ко второй.
| Поле | Что вписывать |
|---|---|
| Название | Видно игроку в списке заданий и в HUD. |
| Строка цели для HUD | Одна короткая строка: куда идти и что делать. |
| Текст предложения | Что NPC говорит, предлагая работу. |
| Текст в процессе | Что он говорит, пока работа не сделана. |
| Текст «можно сдать» | Что он говорит, принимая результат. |
| Иконка на карте | Картинка метки. «По типу» — мод сам подберёт по типу первой цели. |
| Цели по порядку | Цели выполняются строго одна за другой. Снять галку — можно в любом. |
| Авто-сдача | Задание закрывается само на последней цели, возвращаться к NPC не нужно. |
| Повторяемый + кулдаун | Можно взять снова, но не раньше чем через указанное число секунд. |
| Требовать предыдущий | Не даётся, пока не сдано предыдущее задание линии. Если вы нарисовали стрелки вручную, галка не нужна — работают они. |
| Лимит времени | Секунды на выполнение. Ноль — без ограничения. |
| Окно сдачи | Часы игрового времени, в которые задание вообще предлагается: ночные вылазки, утренние поставки. −1 в обоих полях — окна нет. |
| Открыть по репутации | NPC не предложит работу, пока игрок не заработает у него столько отношения. |
| Цена взятия | Сколько игрок платит, чтобы взять задание. Деньги списываются настоящими купюрами, повтор платится каждый раз, возврата нет. |
| Репутация за сдачу / штраф за провал | Сколько прибавится и сколько отнимется. Штраф пишется положительным числом. |
| Кому сдавать | По умолчанию — тому, кто выдал. Выберите другого, чтобы отправить игрока с отчётом к нему. Приёмщик должен быть заведён как квестодатель, иначе на нём не появится действие «Поговорить». |
| Реплика сдачи | Номер реплики, с которой пойдёт разговор при сдаче. Ноль — сдача через меню, без разговора. |
В настройках есть «Макс. активных квестов», по умолчанию два. Игрок с полным списком новое задание не возьмёт, и NPC ответит отказом. Если жалуются, что «квест не берётся», проверять начинайте с этого.
Из целей собирается сама работа. Целей может быть сколько угодно.
| Тип | Что требует от игрока |
|---|---|
| Дойти до точки | Оказаться в радиусе от координат и продержаться там сколько-то секунд, чтобы «пробежал мимо» не считалось. |
| Убить | Убить нужное количество по класснеймам: зомби, мутанты, звери, игроки. Классов можно перечислить несколько — засчитается любой из списка. |
| Иметь предметы | Просто иметь их при себе. При сдаче остаются у игрока. |
| Принести предметы | То же самое, но при сдаче предметы забираются. |
| Поговорить | Подойти к указанному NPC и открыть разговор. |
| Выполнить действие | Сделать что-то руками: освежевать тушу, развести костёр, вскрыть замок. Действие выбирается из списка штатных или вписывается своё имя. Засчитывается в момент, когда игрок действие завершил. |
| Зачистка | При взятии задания враги появляются в заданном радиусе — вокруг точки, если она указана, иначе вокруг самого игрока. Убить всех — цель закрыта. Разбредшихся или пропавших мод досыпает, когда игрок подойдёт к точке ближе 200 м. |
| Забрать предмет | В точке лежит предмет, который видит только владелец задания. Он появляется, когда игрок входит в радиус появления, и исчезает, когда тот выходит. Так делаются тайники и находки, которые не растащат посторонние. |
| Посылка | Квестодатель выдаёт груз, игрок несёт его другому NPC и отдаёт по «Поговорить». Потерял груз и не вернул за отведённое время — маршрут провален, остатки изымаются. |
У уже сохранённой цели выпадающий список типа заблокирован: у разных типов разный набор полей, и переключение превратило бы цель в мешанину. Нужен другой тип — удалите цель и заведите заново.
Радиус появления — на каком расстоянии предмет проявится, обычно 25 метров. А «Радиус» и «Удержание» тут работают как зона и время подбора: ставьте 2–3 метра и 2–3 секунды, иначе игрок будет ловить предмет мышью дольше, чем шёл до него.
Награда — это список предметов, которые выдаются при сдаче. Все сразу. Если что-то не влезло в инвентарь, оно падает игроку под ноги, а не пропадает.
Репутация за задание задаётся не тут, а у самого задания: отдельно за сдачу и отдельно за провал.
Валюта задаётся в «Настройки → Экономика»: класснейм купюры и её номинал. Список пуст — платные задания просто не работают. Галка «умножать на стак» нужна для купюр, которые лежат пачкой: тогда стопка из десяти считается десятью, а не одной.
Репутация — это отношение конкретного NPC к конкретному игроку. Копится за сданную работу, падает за провалы. Пороги общие для всех и лежат в «Настройки → Репутация».
| Настройка | Что делает |
|---|---|
| Порог блокировки | Репутация ниже этого числа — NPC отказывается разговаривать и бросает случайную фразу из списка отказов. |
| «Хорошая репутация» | С этого значения враги этого NPC начинают блокировать игрока. Дружба с одними стоит вражды с другими. |
| Доля союзникам, % | Сколько процентов заработанного капает дружественным NPC. Ноль — каждый считает сам за себя. |
| Фразы отказа | Что NPC говорит, когда разговаривать не желает. Одна строка — одна фраза, берётся случайная. |
| Фразы ожидания | Что NPC говорит, когда он не против поговорить, но давать нечего: всё сдано, взято или на кулдауне. Это разные списки, и путать их не надо — иначе дружелюбный квестовик встречает игрока фразой «уйди с глаз». |
Кто кому друг и кто враг — в разделе Отношения NPC. Там кружки со всеми квестовиками, которые можно расставить как удобно. Клик по двум кружкам переключает связь между ними: нет → союз → вражда → нет. Клик по линии делает то же самое. Не забудьте нажать «Сохранить» — этот раздел, в отличие от диалога, сам не сохраняется.
Раздел Репутация игрока — поиск по SteamID64. Видно, сколько у игрока отношения с каждым NPC, и любое число можно поправить руками. Все изменения пишутся в журнал.
Обычная «репутация за сдачу» достаётся тому, кому квест сдан, и по доле — его союзникам. Иногда нужно точнее: работа на бандитов должна ронять отношение у военного склада. Для этого в карточке квеста есть блок «Репутация другим NPC»: строка — это NPC и число со знаком. Плюс поднимает, минус роняет, срабатывает при сдаче задания. Игрок увидит уведомление с именем и дельтой.
Если на сервере стоит и мод C13 Trader, у торговца можно выбрать, на чью репутацию он смотрит, и закрыть часть товаров, категорий и рецептов обмена порогом. Тогда сданное здесь задание буквально открывает и закрывает ассортимент: сделал работу барыге — у него появились новые строки, помог его врагам — часть товара пропала, а при совсем плохом отношении он вообще откажется торговать. Настройки порогов — на стороне торговца, тут только источник числа.
Блок показывается, только когда мод торговцев на сервере есть. Моды при этом независимы: квесты работают без торговцев, торговцы без квестов.
Если один и тот же персонаж и торгует, и раздаёт работу, двойник ему не нужен. Мод сводит их в одного.
Правило простое: если квестодатель и торговец стоят в одной точке и с одинаковым класснеймом, в мире появится один человек. Допуск — три четверти метра, так что координаты достаточно скопировать из одной панели в другую. Кто из двух модов успел заспавнить первым, тот и спавнит, второй подхватывает уже стоящего.
На таком NPC остаётся одно действие — «Поговорить». Отдельного «Торговать» нет, оно бы делало то же самое. Первым окном идёт меню:
«Чего надо?»
├ Торговля → магазин
├ Работа есть? → диалог квестов
└ Расскажи, что тут новенького → реплика новостей
Это меню показывается каждый раз, сколько бы раз игрок ни подходил: оно не гаснет и не «проходится». А пункт про работу уводит в обычную ленту диалога, и она помнит своё место.
Формулировки задаются в двух местах. Общие для всех — в «Настройки → Торговец в одном NPC». Личные, для конкретного персонажа, — в его диалоге, карточка «Меню, когда он же торговец»: что там заполнено, то и перебивает общее. Пункт новостей появляется, только если указана реплика, куда он ведёт.
Меню можно написать целиком самому. Сделайте обычную реплику и добавьте в неё ответ с действием торговли — мод увидит его и покажет вашу реплику вместо штатного меню. Дальше делайте сколько угодно строк: слухи, лор, отдельная ветка для своей группировки.
Одевает NPC тот мод, который заспавнил его первым, а кто это будет — зависит от того, чьи настройки успели приехать с сайта раньше. Чтобы не гадать, заполните список одежды либо у квестодателя, либо у торговца, а во втором оставьте пустым.
Реплики можно озвучить голосом. У каждого квестовика есть поле голоса —
идентификатор с fish.audio; кнопка 🎙 Озвучить в шапке панели прогоняет
через него все реплики этого NPC и собирает файл C13_QuestVoices.pbo.
Он скачается сам, когда сборка закончится.
Дальше положите его в папку @C13_QuestVoices\Addons и добавьте
её в -mod рядом с @C13_Quests. Это клиентский мод,
игроки его качают.
Озвучиваются не только реплики диалогов, но и фразы отказа и ожидания — каждая, для каждого NPC, его собственным голосом. Кнопка рядом с карточкой квестовика озвучивает только его одного: это быстрее, чем гонять весь сервер из-за одной исправленной строки.
Пака нет — ничего не ломается, NPC просто говорят текстом. Реплика, у которой в поле звука вписано своё имя набора, берёт его, а не озвучку.
| Настройка | Что делает |
|---|---|
| Система квестов | Общий рубильник. Выключили — квесты мгновенно исчезли у всех, NPC перестали появляться. Данные остаются на месте. |
| Макс. активных квестов | Сколько заданий игрок держит одновременно. |
| Дальность до NPC | С какого расстояния появляется «Поговорить». Три метра — нормально. Больше не ставьте: начнёт цепляться сквозь стены. |
| Уведомления игрокам | Что всплывает на экране: ничего, только важное (провал, отказ) или всё подряд, включая каждое убийство по цели. |
| HUD квестов | Панель активных целей на экране игрока. |
| Компас в HUD | Лента направления над панелью целей. |
| Случайные жесты NPC | Для реплик без своей анимации подбирается жест. Выключается, если жесты мешают поставленным сценам. |
После правки настроек нажмите «Сохранить настройки», а потом ⟳ HOTPATCH.
Раздел «Настройки → Сброс прогресса игрока». Нужен, когда игрок застрял: взял задание и не может сдать, или сюжет надо отмотать назад.
Впишите SteamID64 и выберите, что делать. Сбросить один квест — задание уйдёт из выполненных, снимется кулдаун, диалог отмотается к тому месту, где его выдают, и взять можно будет заново. Сбросить всё — начисто: активные, выполненные, кулдауны, пройденные реплики и долги по выданному грузу.
Прогресс лежит на игровом сервере, а не на сайте. Кнопка ставит заявку, сервер забирает её ближайшим опросом и применяет. В таблице внизу видно, что уже применено, а что ещё ждёт. Репутация при сбросе не трогается — её правят в соседнем разделе.
По убыванию частоты — с чего начинать разбор.
| Что видно | Куда смотреть |
|---|---|
| NPC не появился | Опечатка в класснейме или NPC выключен. В логе сервера будет прямая строка про неудачный спавн. |
| Правки не доехали | Нажмите ⟳ HOTPATCH. Не помогло — проверьте, что номер версии в шапке панели растёт: мод ориентируется именно на него. |
| Нет «Поговорить» | Стоите далеко (см. дальность в настройках) или NPC заспавнился не там, где вы его ищете. Сверьте координаты. |
| Задание не берётся | Лимит активных заданий, порог репутации, окно сдачи по часам, незакрытое предыдущее задание линии или не хватает денег на платное. |
| Разговор сразу открывает список заданий | Так и задумано: вся лента реплик пройдена и новых нет. Допишите реплики или оставьте как есть. |
| Цель не засчитывается | Проверьте радиус: если он задан, засчитывается только внутри него. И класснеймы — они должны совпадать точно. |
| Меню торговли не появилось | У торговца и квестодателя разошлись координаты или класснейм. Точка сверки — строка в логе про общего NPC. |
| Панель не открывается | У сервера нет базы данных. Создайте её в кабинете, блок «База данных MariaDB». |
| Часть настроек не действует | Клиентская и серверная части мода разных версий. Обновляйте их парой. |