NPC-торговцы с меню, деньгами-купюрами, скупкой, обменом, хранилищем, гаражом, почтой между торговцами и странствующим барыгой. Что где настраивается и почему правки не всегда доезжают.
Мод ставит на карту торговцев — живых NPC, к которым игрок подходит и жмёт клавишу действия. Открывается меню: слева категории, в середине товар, справа предмет с 3D-моделью, которую можно покрутить. Там же продают своё, обменивают вещь на вещь, покупают готовые комплекты снаряжения и держат машины в гараже.
Деньги в моде — настоящие предметы, а не циферка в профиле. Вы сами задаёте, какие купюры ходят на сервере и сколько каждая стоит. Сдачу торговец выдаёт от крупных к мелким.
Весь каталог правится в отдельной панели в кабинете, и правки уезжают в игру без перезапуска сервера.
| Папка | Куда |
|---|---|
@C13_Framework | в -mod, первым. Бесплатный кор-мод, через него мод разговаривает с сайтом. Его качают и игроки: на его классы опирается клиентская часть. |
@C13_Trader | в -mod. Тут меню, модели и купюры — это качают игроки. |
@C13_Trader_Server | только в -serverMod. Тут сделки, цены и всё остальное, что игроку видеть незачем. |
$profile:C13\config.json
{
"ApiUrl": "https://c13.su/api",
"ApiKey": "ваш ключ из кабинета"
}
Ключ и готовый конфиг — в кабинете, кнопка «Скопировать конфиг».
Торговцы, товары и сделки живут в вашей собственной базе, а не в общей. Если её ещё нет — создайте в кабинете на странице сервера, блок «База данных MariaDB». Без неё панель торговцев не откроется.
⟳ ПРИМЕНИТЬ В ИГРЕ — сказать моду, что правки готовы. Он заберёт их
при ближайшей проверке, перезапуск не нужен.
⇩ Что уедет в мод — показывает тот самый файл, который скачает игровой
сервер. Удобно, когда кажется, что настройка не доехала.
✓ Самопроверка — проверяет, что база на месте и запись в неё
проходит.
Раздел Валюта. Строка — это класснейм предмета и его номинал. Например, купюра в 100 и купюра в 1000. Покупка съедает купюры из инвентаря и выдаёт сдачу, начиная с крупных.
Купюры могут быть любые: из нашего мода, из чужого, хоть консервная банка. Мод смотрит только на класснейм.
Карточка торговца делится на несколько блоков.
Класснейм NPC (кого спавнить), имя и титул, которые игрок увидит в меню, и координаты. Координаты можно вставить строкой прямо из админки игры. Есть тумблер «Торговец включён»: выключенный NPC не спавнится, но все его настройки остаются на месте.
Четыре выключателя. Выключенной вкладки в игровом меню нет вовсе, и сервер такие сделки не примет.
| Раздел | Что это |
|---|---|
| Покупка | Игрок покупает то, что перечислено в «Наполнении». Выключите — торговец будет только скупать. |
| Скупка | Торговец забирает вещи у игрока за деньги. Вкладка сама прячется, если ни у одного товара не задана цена скупки. |
| Пресеты | Игрок сохраняет свой комплект снаряжения и потом покупает его одной кнопкой. Слотов пять. |
| Обмен | Вещь на вещь, без денег. Вкладка сама прячется, если рецептов нет. |
Хранилище, гараж и почта — это отдельные разделы со своими выключателями, они лежат в подвкладках под карточкой.
Если в общих настройках включён тумблер «Конечная касса на скупку», у каждого торговца свой запас денег. Кончились — скупка встала до перезапуска сервера. Хорошая штука против бесконечного слива лута.
Меню трейдера красится в один акцентный цвет. Он задаётся общий на сервер в разделе «Настройки», но отдельному торговцу можно поставить свой — например, чтобы бандитский барыга отличался от военного склада.
Товар это класснейм, цена покупки и цена скупки. Ещё у него бывают:
Характеристики вещи в карточке включаются одним тумблером в «Настройках»: у оружия показываются урон патрона и кучность, у одежды — защита, тепло и карманы, у остального остаются вес, габарит и тип.
Оружие покупается собранным: в меню есть слоты под модули, и цена пересчитывается по мере того, как игрок навешивает обвесы.
Один товар в каталоге, несколько класснеймов одной вещи: у палатки, куртки
или машины бывают цвета отдельными классами. Впишите их в колонку
расцветки у товара — через запятую, после знака = название,
которое увидит игрок:
NBC_Yellow=Жёлтый, NBC_Green=Зелёный, NBC_Grey=Серый
Без = в меню покажется сам класснейм. В игре над полкой модулей
появляется переключатель < название >: стрелки листают расцветки,
первая позиция — сам товар из строки «класснейм». Витрина, описание, вес и
габарит показывают выбранный вариант, цена, лимит за рестарт и скупка остаются
товарные — то есть общие на все цвета.
Расцветка уходит на сервер вместе с покупкой, и сервер выдаёт её, только если этот класснейм записан у товара в панели: подставить чужой класс со стороны клиента нельзя. В корзине разные цвета лежат отдельными строками. Модули и дополнения пересобираются под выбранный вариант — если у цветной версии слоты другие, полка это учтёт.
Общая настройка, одна на сервер. Включена — покупка складывается в корзину, а платит игрок одной кнопкой за всё сразу. Кнопка в разделе покупки при этом меняется на «В КОРЗИНУ» и не требует удержания, а восьмая вкладка показывает список: превью, название, поставленные модули, цена за штуку, количество и сумма по строке. Справа итог — позиций, предметов, сколько при себе, сколько всего, и «КУПИТЬ ВСЁ».
Платёж один: сервер сперва пересчитывает всю корзину (товар ещё в ассортименте, лимиты за рестарт не выбраны, потолок штук за покупку соблюдён), и только потом снимает деньги и выдаёт. Если что-то не сошлось — не снимается ничего, игрок видит, из-за какой позиции. Что не влезло в рюкзак, ложится под ноги, как и при обычной покупке.
Оружие уезжает в корзину вместе с выбранными модулями. Транспорт и товары за баллы в корзину не кладутся — они покупаются сразу, отдельной кнопкой. Выключите настройку — всё работает как раньше, без корзины.
Если у товара есть слоты, под витриной появляется полка: игрок собирает покупку прямо в меню, цена пересчитывается на лету. У оружия это «МОДУЛИ» (прицел, цевьё, приклад, глушитель, магазин), у брони, разгрузок и рюкзаков — «ДОПОЛНЕНИЯ» (подсумки и всё, что игра разрешает вешать на эту вещь). В списке слота только то, что вы сами продаёте у этого торговца: нет модуля в ассортименте — нет и слота.
Выбранный модуль может открыть свои слоты: поставил рельсовое цевьё — появился слот фонаря. При включённой строгой проверке слот фонаря и ЛЦУ у ствола с цевьём не показывается, пока цевьё не выбрано: иначе игрок покупает фонарь, которому не на чем висеть. Выключите проверку в общих настройках, если у вас есть стволы, где такие модули вешаются напрямую.
Репутацию в проекте ведут задания, а торговец на неё только смотрит. Пока на сервере нет мода C13 Quests, раздела «Репутация» в панели нет вовсе, и торговля работает как обычно. Ставить оба мода необязательно: каждый работает сам по себе.
Репутация принадлежит человеку, а не моду: это отношение конкретного NPC к конкретному игроку. Поэтому торговец не заводит своё число, а указывает, на чью репутацию смотрит — вкладка Репутация в карточке торговца, поле «Смотрит на репутацию у». Если торговец и квестодатель слиты в одного NPC (одинаковый класснейм и одна точка), выбирайте его же: задания, сданные ему, поднимают его собственное отношение.
В «Настройках» есть лестница уровней — одна на сервер: название, с какой репутации начинается, цвет. Например: Враг −100, Чужак 0, Знакомый 50, Свой 150, Легенда 400. Дальше везде вы выбираете уровень из списка, а не вспоминаете числа; пункт «своё число» никуда не делся, если лестницы мало.
| Где | Что даёт |
|---|---|
| Торговец → «Ниже этого — не торгует вовсе» | Меню откроется, но вместо товаров игрок увидит вашу фразу отказа. Скупка и обмен тоже закрыты. |
| Категория → «Открыта с уровня» | Закрыта целиком, вместе со всем, что внутри. |
| Товар → колонка «уровень» | Одна позиция. Работает вместе с порогом категории: считается тот, что выше. |
| Обмен → «Рецепт открыт с уровня» | Тот самый случай: сделал задания этого барыги — открылась новая строка обмена. |
Общая настройка «Закрытое видно под замком» решает, как выглядит недоступное. Включено — позиция висит в списке серой, вместо цены написано «ЗАКРЫТО», а вместо остатка «НУЖЕН УРОВЕНЬ: СВОЙ»: игроку понятно, к чему расти. Выключено — закрытого в списке просто нет, ассортимент у каждого свой.
В шапке меню игрок видит своё отношение к этому торговцу: «ОТНОШЕНИЕ: СВОЙ (165)». Число обновляется при каждом открытии меню, так что сданный минуту назад квест виден сразу, без перезахода.
1. Заведите лестницу уровней в «Настройках».
2. На вкладке «Репутация» у торговца выберите квестодателя и, если нужно, порог
полного отказа с фразой.
3. Поставьте порог паре товаров и рецептов обмена.
4. В моде квестов у задания укажите награду репутацией (или штраф) — она и будет
открывать и закрывать эти позиции.
Проверка идёт на сервере, а не в интерфейсе: подменённый клиент не купит закрытое — сделку отклонят с той же формулировкой.
Подвкладка «Обмен» у торговца. Рецепт это «игрок отдаёт то-то — получает то-то». Денег не участвует вообще. У рецепта бывают лимиты: сколько раз может взять один игрок и сколько раз всего.
Поле «Вместо предмета — места в хранилище» превращает рецепт в расширение ячейки: игрок отдаёт вещи и получает столько мест в своём хранилище у этого торговца. Выдаваемый предмет при этом не выдаётся, в меню обмен так и подписан — «+N мест в хранилище». Ноль в поле — обычный обмен на предмет.
Подвкладка «Странник». Включённый режим означает, что торговец не стоит на одном месте, а появляется на разных точках по расписанию. Вне визитов его на карте просто нет.
Тогда торговец не появится нигде. Панель об этом предупреждает красной строкой прямо в карточке.
Личная ячейка игрока у конкретного торговца. Что положил здесь — здесь и заберёшь: у каждого торговца сетка своя. Общий размер задаётся у торговца, а в разделе «Ячейки игроков» можно выдать исключение конкретному человеку. Слоты, которые игрок докупил за деньги, идут сверх этого числа.
Игрок подгоняет машину на площадку транспорта этого торговца, открывает вкладку «Гараж» и жмёт «Поставить авто». Машина исчезает с карты и ложится записью в гараж. «Выдать» ставит её обратно на ту же площадку.
Сохраняется почти всё: класс машины, общее здоровье и здоровье каждой части, топливо, масло, охлаждающая и тормозная жидкости, все вложения — колёса, двери, аккумулятор, канистры, — и весь груз вглубь на три уровня, с состоянием, количеством и патронами в магазинах. Не сохраняется только раскладка в сетке груза: при выдаче вещи разложатся заново.
Гараж не примет разбитую машину и машину, в которой кто-то сидит. И не выдаст, пока на площадке стоит другой транспорт.
Площадка считается занятой и тогда, когда на ней стоит человек — иначе машина выдавалась бы игроку под ноги. Та же проверка работает при покупке транспорта, и делается она до списания денег.
Машина, брошенная на площадке без водителя, через пять минут реального времени сама уезжает в гараж хозяина — того, кто вёл её последним. Если мест в гараже нет, ему выдаётся временное место сверх потолка; оно исчезает, когда он заберёт машину. Так площадка не зарастает чужими тачками.
| Настройка | Что делает |
|---|---|
| Гараж у этого торговца | Выключено — вкладки «Гараж» в меню нет. |
| Общий гараж | Включено — одна полка на всех игроков этого торговца. Выключено — у каждого своя. |
| Мест сразу | Сколько машин влезает без покупки. |
| Цена места | 0 — докупать бесплатно, −1 — докупать нельзя. |
| Потолок мест | 0 — без потолка. |
| Ремонт и заправка | Функции нет / бесплатно / за деньги. |
| Цена постановки и выдачи | Берётся, когда машину убирают в гараж и когда выгоняют обратно. |
Это та же точка, куда торговец выдаёт купленные машины. Не задали — гараж не примет и не выдаст ничего. Панель предупреждает об этом в карточке.
Хранилище привязано к одному торговцу: что положил у Сидоровича, у Бармена не достанешь. Почта закрывает этот разрыв. Игрок открывает вкладку «Почта», выбирает получателя из списка торговцев, набивает посылку вещами из своих карманов, платит за доставку — и вещи исчезают. Через заданное время они лежат у выбранного торговца, откуда их и забирают кнопкой «Забрать».
«Забрать» кладёт содержимое в хранилище этого торговца, а не в рюкзак: посылка приходит в ту же ячейку, из которой её удобно разбирать. Если свободных мест меньше, чем предметов, влезшее ляжет в ячейку, а остальное упадёт под ноги игроку — с предупреждением, сколько именно. Так же поступит мод, если у получателя хранилище выключено или игрок не купил там ячейку: ничего не пропадёт, всё окажется на земле рядом.
Время реальное и идёт по часам игрового сервера: посылка доезжает, пока игрок спит, вышел из игры или сервер перезагрузился. Пришедшая посылка ждёт сколько угодно, сама не портится и не пропадает. Пока посылка в пути, её видно в списке «Посылки» у любого торговца с почтой — с отсчётом и адресом выдачи.
Сохраняется то же, что и в хранилище: класснейм, состояние, количество, вложения и патроны в магазинах. Деньги посылкой не отправляются. Вещь с чем-то внутри (рюкзак с барахлом, разгрузка с магазинами) сначала надо опустошить.
Цена и срок задаются у получателя — это «доставка к нему», и она одинакова, откуда бы посылку ни отправили. Если для какой-то пары «от кого → кому» нужны свои цифры, добавьте строку в «Особые маршруты» на странице отправителя: она перекрывает общие. Экспресс — второй способ отправки той же посылки: дороже, но быстрее; включается тоже у получателя.
| Настройка | Что делает |
|---|---|
| Почта между торговцами (общие настройки) | Главный рубильник. Выключено — вкладки «Почта» нет ни у кого. |
| Почта у этого торговца | Выключено — ему нельзя отправить и от него нельзя отправить. |
| Цена доставки и время в пути | Сколько платит и сколько ждёт тот, кто шлёт посылку СЮДА. 0 минут — приходит сразу. |
| Мест в посылке | Сколько предметов кладут в одну посылку, отправляя ОТ него. |
| Посылок на выдаче | Сколько посылок одного игрока могут ждать здесь. 0 — без потолка. |
| Экспресс | Быстрая доставка сюда за отдельную цену. Выключено — в меню только обычная. |
| Особые маршруты | Своя цена и срок для конкретной пары «этот торговец → такой-то». |
Пока почта включена только у одного торговца, список получателей пуст и вкладка бесполезна. Включите её хотя бы у двоих.
Способ закрыть торговца от кого попало. Пока в общих настройках тумблер «Лицензии на торговцев» выключен, торговец с лицензией работает как обычный. Включили — без пропуска игрок видит только условия, но торговать не может.
Лицензию можно продать в игре (цена и список предметов, которые надо сдать) или выписать рукой из панели конкретному SteamID. Цена 0 и пустой список предметов означают, что лицензия выдаётся только руками.
Баллы принадлежат торговцу, а не игроку. Это общий котёл группировки: всё, что заработали, лежит в одном месте, и оттуда тратится.
Товар можно продавать не за деньги, а за баллы. Баллы выдаются и списываются из панели: отрицательное число — списание, в минус котёл не уходит. Если у торговца стоит доступ «только по списку», тратить котёл могут лишь вписанные SteamID. Последние сто операций видны там же.
Штука, чтобы витрина не была одинаковой каждый день. Правило работает так: у категории есть пул предметов, окно времени и шанс. Когда приходит срок, бросается шанс — выпал, значит меняется от «минимума» до «максимума» товаров, и новые берутся из пула.
У каждого предмета в пуле есть вес: это относительный шанс попасть в витрину. Вес 200 вдвое вероятнее, чем 100. Про смену ассортимента можно ещё слать сообщение в Discord — ссылка вебхука задаётся в самом правиле.
| Настройка | Что делает |
|---|---|
| Трейдеры включены | Главный рубильник. Выключите — NPC исчезнут у всех, меню не откроется. |
| Дистанция действия | Насколько близко надо подойти к NPC, чтобы появилось действие. |
| Максимум штук за покупку | Верхний предел количества в одной сделке. |
| Лимиты закупки за рестарт | Включает лимиты, заданные у товаров. |
| Конечная касса на скупку | Включает запас денег у торговцев. |
| NPC неуязвим | Торговца нельзя убить или ранить. |
| Лицензии на торговцев | Включает механику пропусков. |
| Продажа транспорта | Разрешает товары с галкой «транспорт». |
| Корзина | Покупки складываются в список и оплачиваются одной кнопкой. Выключено — покупка сразу. |
| Модули: строгая проверка | Слот, которому нужна планка на цевье (фонарь, ЛЦУ), не показывается, пока цевьё не выбрано. |
| Почта между торговцами | Главный рубильник почты. |
| Цвет интерфейса | Общий акцент меню на всех торговцев сервера. |
Два разных, не путайте. Журнал сделок — что покупали и продавали игроки. Правки панели — кто и что менял в самой панели: полезно, когда сервером занимается не один человек.
Проверьте: включён ли главный тумблер «Трейдеры включены», включён ли сам торговец, заданы ли координаты, и нажали ли вы ⟳ ПРИМЕНИТЬ В ИГРЕ. Если торговец в режиме странника — посмотрите расписание и точки: вне визита его на карте нет.
Скорее всего, деньги «не те». Мод считает только те класснеймы, которые вписаны в разделе «Валюта». Ещё вариант — упёрлись в лимит за рестарт или в максимум штук за одну покупку.
Либо у товаров не задана цена скупки (тогда вкладка вообще прячется), либо включена конечная касса и деньги у торговца кончились, либо раздел «Скупка» выключен у этого торговца.
Нажмите ⟳ ПРИМЕНИТЬ В ИГРЕ и подождите. Мод спрашивает сайт раз в полминуты. Если через минуту ничего — жмите ⇩ Что уедет в мод и посмотрите, есть ли ваша правка в этом файле. Нет в файле — значит не сохранилась в панели, а не потерялась по дороге.
Почти всегда — нет базы данных сервера. Создайте её в кабинете на странице сервера и попробуйте снова.