Почти две тысячи записей, устроенных одинаково, и ни одной строки о том, что означают цифры. Здесь по каждому значению: что оно делает, в чём измеряется и что произойдёт, если его изменить.
Все числа взяты из официального ванильного types.xml Bohemia для Черноруси и его 1970 записей — посчитаны, а не прикинуты.
Коротко
- nominal — сколько экземпляров экономика хочет видеть в мире одновременно
- min — когда количество падает до этого значения, идёт добор до
nominal - restock — задержка в секундах перед пополнением
- lifetime — секунды до исчезновения нетронутого предмета
- quantmin / quantmax — наполнение при появлении, в процентах (
-1= по умолчанию) - cost — приоритет появления, по умолчанию 100, трогать практически никогда не нужно
- flags — какие места учитываются в счёт
nominal - category — грубая товарная группа
- usage — в каких типах мест предмет появляется
- value — в каких тир-зонах карты
- tag — какого рода точка лута внутри здания
Чтобы просто сделать предмет более или менее частым, нужны ровно три: nominal, min и restock.
Где лежит файл
mpmissions/dayzOffline.chernarusplus/db/types.xml
Это складская ведомость Central Economy: сколько экземпляров предмета может существовать и как долго они лежат. Файл не решает, на какой полке окажется вещь — какие здания имеют какие точки лута, задаётся в mapgroupproto.xml, а какая зона к какому тиру относится, это уже карта.
Как выглядит запись
<type name="AK101">
<nominal>4</nominal>
<lifetime>28800</lifetime>
<restock>3600</restock>
<min>2</min>
<quantmin>30</quantmin>
<quantmax>80</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="weapons"/>
<usage name="Military"/>
<value name="Tier3"/>
<value name="Tier4"/>
</type>Порядок — тот же, что у Bohemia: nominal, lifetime, restock, min, quantmin, quantmax, cost, flags, category, tag, usage, value. Придерживайтесь его, и сравнение двух версий файла останется читаемым.
Значения по одному
name
Класснейм предмета ровно в том виде, в каком его знает игра.
То есть AK101, а не «AK-101». Впишете несуществующее имя — предмет никогда не появится, запись не делает ничего.
nominal — целевое количество
Сколько экземпляров экономика хочет видеть в мире одновременно.
Это потолок, а не обещание. Будет ли количество достигнуто, зависит от того, хватает ли подходящих точек лута — см. usage и value.
nominal = 0означает, что экономика никогда не создаёт этот предмет сама.
В ванильном файле
873 из 1970 записей стоят на nominal = 0: цветные варианты, появляющиеся только после покраски игроком, мясо, получаемое при разделке, и предметы, попадающие в мир исключительно через события.
min — порог пополнения
Когда количество в игре опускается до этого значения, экономика добирает до nominal.
Поэтому min всегда стоит ниже nominal. Разрыв между ними задаёт ритм: nominal 4 / min 2 позволяет запасу колебаться между двумя и четырьмя и пополняет партиями, nominal 4 / min 3 держит его плотнее и запускает пополнение чаще.
Почему у части ванильных записей min больше nominal
Так бывает 172 раза — и у всех 172 стоит nominal = 0. Это не ошибка, а просто ничего не значащая настройка: без целевого количества нет и пополнения, которое порог мог бы запустить.
restock — задержка перед пополнением
Секунды, которые проходят до появления новых экземпляров.
1800 — это 30 минут, 3600 — час. Ноль означает не «мгновенно», а «на следующем проходе экономики»: сервер работает циклами, а не посекундно.
restock— рычаг, который делает лут субъективно более редким, не уменьшая общего количества: зачищенная военная база какое-то время остаётся пустой.
lifetime — сколько предмет лежит
Секунды до того, как нетронутый предмет исчезнет.
Любое взаимодействие игрока сбрасывает таймер. Очень короткий lifetime косвенно снижает количество в игре, потому что предметы исчезают раньше, чем их кто-то найдёт.
Обычные значения и что означает 0
14400(4 часа) — 1079 записей28800(8 часов) — 415 записей1800(30 минут) — 220 записей3888000(45 суток) — палатки, бочки, морские сундуки, вышки: срок персистентности построек
lifetime = 0 встречается 66 раз и исключительно у статичных объектов мира вроде контейнеров и обломков (Land_…, StaticObj_…). Для обычного лута ноль — ошибка конфигурации.
quantmin и quantmax — насколько заполненным появляется предмет
Уровень наполнения в процентах — для всего, у чего есть содержимое: патроны, вода, топливо, консервы.
При появлении сервер выбирает случайное значение между этими двумя. -1 означает «неприменимо», предмет появляется со своим значением по умолчанию.
Пример AK101 с quantmin 30 и quantmax 80: оружие появляется с магазином, заполненным на 30–80 процентов.
Откуда известно, что это проценты
Во всём ванильном файле нет ни одного значения выше 100. Значит, речь идёт именно о процентах, а не о штуках.
cost — приоритет появления
Вес, определяющий, какой предмет займёт свободную точку лута, если подходят несколько. По умолчанию 100.
Честный совет: не трогайте. На 1970 записей Bohemia отходит от 100 ровно один раз —
Mag_SVD_10Rndстоит на 1000. Для частоты используйтеnominal,minиrestock.
flags — что учитывается
Эти шесть переключателей решают, какие места учитываются в счёт nominal.
Именно здесь настройка лута чаще всего идёт не так.
count_in_map— то, что лежит открыто в мире (в ванили включено у 1902 из 1970)count_in_cargo— то, что лежит в машинах и контейнерах (включено 47 раз)count_in_hoarder— то, что лежит в палатках, бочках и закопанных ящиках (включено 31 раз)count_in_player— то, что игроки носят на себе (включено 55 раз)crafted— предмет создаётся игроками, а не экономикой (включено 313 раз)deloot— предмет приходит из динамических событий, а не из зданий (включено 47 раз)
Если переключатель стоит на 0, предмет в этом месте для экономики невидим.
Почему сервер продолжает спавнить при забитых лагерях
Потому что в ванили count_in_hoarder почти везде равен 0: то, что лежит в палатке, попросту не считается. Если вы хотите, чтобы редкое оставалось редким, трогать нужно именно эти переключатели — с побочным эффектом: накопленные запасы начнут тормозить снабжение для всех.
crafted и nominal = 0 идут вместе: все 313 записей с crafted="1" имеют и nominal = 0.
Типичные предметы с deloot: AK74, FAMAS, M79 и GasMask — классическая находка у разбившегося вертолёта.
category — грубая товарная группа
Одна из восьми: weapons, clothes, tools, food, containers, explosives, books, lootdispatch.
Особый случай lootdispatch
174 ванильные записи, по сути автозапчасти вроде дверей. Тронете без причины — детали машин пропадут. У 348 записей категории нет вовсе: заражённым и статичным объектам она не нужна.
usage — в каких местах предмет появляется
Типы мест, где предмет может появиться. Можно указать несколько, они работают как «или».
Черноруссия знает семнадцать: Military, Police, Medic, Firefighter, Industrial, Farm, Coast, Town, Village, Hunting, Office, School, Prison, Lunapark, SeasonalEvent, ContaminatedArea и Historical.
Без
usageпредмет не появляется нигде в обычном цикле лута — и для крафтовых и событийных предметов это как раз правильно.
Другие карты — другие значения
У Ливонии и Сахала есть Special и Underground, но нет Historical. Какие значения знает ваша карта, написано не в types.xml, а в cfglimitsdefinition.xml в папке миссии. Чего там нет, то на этой карте недопустимо.
value — тир-зона карты
Насколько далеко вглубь материка предмет может встречаться.
Tier 1 — побережье, где стартуют новые персонажи; более высокие тиры лежат дальше от берега и ближе к военным объектам. Без value предмет не разрешён ни в одной зоне — тот же эффект, что и при отсутствующем usage.
Какие тиры есть на каждой карте
- Черноруссия: Tier1–Tier4 плюс
Unique - Сахал: Tier1–Tier4 плюс
Unique - Ливония: только Tier1–Tier3 плюс
Unique
Tier4 в файле для Ливонии там просто недопустим.
tag — место внутри здания
floor, shelves или ground сужают тип используемой точки лута.
Этим пользуются лишь 281 из 1970 ванильных записей; без указания разрешены все точки. То есть tag только сужает и никогда не расширяет.
Что обычно идёт не так
Вы поднимаете число, и ничего не меняется. nominal — всего лишь потолок. Если на карте не хватает точек лута с подходящими usage и value, цель никогда не будет достигнута. nominal 500 для чисто военного предмета не даст больше, чем вмещают военные объекты.
Вы меняете всё сразу. Если одновременно тронуть nominal, min, restock и lifetime, потом уже не понять, что именно сработало. По одному значению за подход, затем перезапуск и наблюдение.
Вы ждёте мгновенного эффекта. Экономика не убирает и не создаёт предметы рядом с игроками — LootSpawnAvoidance и CleanupAvoidance в globals.xml стоят на 100 — и работает циклами. После перезапуска пройдёт время, прежде чем изменения станут заметны.
Вы не проверяете свой файл. Достаточно одной пропущенной >, чтобы сервер запустился без экономики. Результат — не «немного больше лута», а его полное отсутствие.
Инструменты для этого
Оба бесплатны и без регистрации:
- Редактор types — открывает ваш файл в браузере, показывает иконку и название каждого предмета, объясняет каждое значение прямо на месте и умеет массовое редактирование по группам фильтров.
- XML-валидатор — находит синтаксические ошибки с номером строки раньше, чем их найдёт ваш сервер.
Вопросы по отдельным значениям пишите ответом в эту тему — тогда ответ останется доступным для всех.
· изменено