Day[Z] Titan Launcher
Основы XML в DayZ: как связаны файлы экономики
Моддинг сервера DayZ
Моддинг сервера DayZ

Основы XML в DayZ: как связаны файлы экономики

Если вы когда-нибудь открывали конфиг сервера DayZ и видели, как в Discord без объяснений сыплют словами tags, entries, types, events и protos, этот гайд для вас. Мы пройдём по основным XML-файлам экономики по очереди, кратко и понятно, чтобы вы увидели, как они связаны и где менять, когда хотите «забустить» лут или зомби. Это намеренно обзор для новичков - ровно столько, чтобы общая картина сложилась.

Рассмотрено файлов7 ключевых XML УровеньНачинающий ЦельНастройка лута и зомби
Моддинг сервера DayZ

XML-файлы шаг за шагом

11

Идите по ним по порядку. Каждый файл делает одно дело, и весь фокус в том, чтобы увидеть, как имя в одном файле совпадает с именем в другом - именно это совпадение и заставляет лут и события появляться в мире.

  1. Сначала разберитесь со словарём

    • Файл Все
    • Управляет Модель в голове

    Прежде чем что-либо трогать, проясните слова: tags, entries, types, events и protos. Эти пять терминов встречаются постоянно и именно из-за них файлы кажутся запутанными поначалу. Каждый живёт в конкретном файле и обозначает конкретную вещь; как только вы можете их назвать, вы следите за любым туториалом или веткой Discord, не теряясь.

    Модель, от которой всё остальное встаёт на места, такова: Central Economy в DayZ - это огромная игра в «пятнашки». Имя, заданное в одном файле, упоминается именем в другом, и когда имена совпадают, что-то спавнится. Держите эту мысль в голове, читая каждый файл ниже - вы в основном просто узнаёте, где рождается имя и где оно используется.

  2. types.xml - экономические значения каждого предмета

    types.xml - экономические значения каждого предмета

    • Файл types.xml
    • Управляет Количество, время жизни, наполнение

    Каждая запись в types.xml вызывает class name. Это называется class name, потому что скрипты игры создают предмет по классу - запись лишь сообщает экономике, что этот класс существует и как он должен себя вести. Этот файл большинство открывает первым, когда хочет изменить, сколько чего-то спавнится.

    Два значения, с которыми экономика работает больше всего, - это nominal и min: nominal - целевое количество, которое экономика стремится держать в мире, а min - нижний порог, запускающий новый спавн. lifetime - сколько секунд предмет существует до очистки. quantmin и quantmax задают, насколько полон предмет при спавне - для фляги, например, от нуля до ста процентов.

    Чтобы «забустить» предмет, обычно поднимают его nominal и min. Уже одно это говорит экономике держать больше его в мире, не трогая другие файлы.

  3. cfglimitsdefinition.xml - где рождаются tags, usage и категории

    cfglimitsdefinition.xml - где рождаются tags, usage и категории

    • Файл cfglimitsdefinition.xml
    • Управляет Tags / usage / категории

    Все ваши tags, флаги usage и категории «рождаются» в cfglimitsdefinition.xml. Это их файл определений: как только имя существует здесь, игра распознаёт его во всех остальных файлах. Затем вы ставите эти имена на запись types, чтобы указать, где и как предмет может появляться.

    Значения usage - это вещи вроде Military, Medic, Police, Firefighter, Industrial, Farm, Coast, Town, Village, Hunting, Office, School, Prison и Lunapark. Категории и флаги тира (tier один - tier четыре, area flags и так далее) тоже живут здесь. Игре совершенно всё равно, как вы их назовёте - можно назвать usage «hostess snack cake», и это сработает, пока точное имя правильно проставлено на записи предмета дальше по цепочке.

  4. mapgroupproto.xml - proto именует предмет с координатами

    mapgroupproto.xml - proto именует предмет с координатами

    • Файл mapgroupproto.xml
    • Управляет Контейнер лута + tags

    Так куда же попадают записи types в мире? Ответ - proto. Proto именует предмет - скажем, garbage pile - и вы помечаете этот предмет именами usage и категорий, заданными в вашем файле limits. Proto также несёт координаты отдельных точек лута, размеченных вокруг центральной точки предмета.

    Имя proto может быть любым. Важен следующий шаг: это имя должно совпасть с именем позиции в другом месте - это мы и рассмотрим дальше. Сам по себе proto - лишь определение, говорящее «этот объект держит лут, помеченный так-то».

  5. mapgrouppos.xml - сопоставление имён proto и позиций

    mapgrouppos.xml - сопоставление имён proto и позиций

    • Файл mapgrouppos.xml
    • Управляет Где стоят контейнеры лута

    mapgrouppos.xml хранит позиции. Пока имя proto (маппинг) совпадает с именем pos (позицией), этот proto стоит в этой позиции и держит лут, помеченный для его совпадающих usage. Это «пятнашки» в действии: proto - тот, кто ловит, а pos - место, где он стоит.

    Проще говоря, proto говорит «я garbage pile, который держит лут town и village», а совпадающий pos говорит «поставь этот garbage pile здесь». Если оба имени идентичны, лут появляется в этой точке; ошибётесь в одном - ничего не спавнится. Дальше всё, что используется в событиях, следует той же логике совпадения.

  6. events.xml + cfgeventspawns.xml - события и их точки спавна

    events.xml + cfgeventspawns.xml - события и их точки спавна

    • Файл events.xml + cfgeventspawns.xml
    • Управляет Динамические спавны

    events.xml и cfgeventspawns.xml идут вместе точно как proto и pos. У события есть имя, и это имя несёт префикс: Item, Static или Vehicle. Совпадающее имя event-spawn перечисляет позиции на карте, где это именованное событие может существовать.

    Внутри события вы задаёте вывод minimum, maximum и nominal, плюс радиус, в котором заспавненные объекты (или зомби) могут перемещаться, и children - сами вещи, которые событие выдаёт. Три дополнительных поля управляют поведением: safe radius - насколько близко к игроку событие может заспавниться, distance - как далеко оно должно быть от другого события, и cleanup - как далеко надо отойти, прежде чем оно деактивируется.

    Когда сам child является лимитом, вывод контролируется между собственными minimum и maximum каждого child вместе с общим nominal - отдельный minimum или maximum на уровне события не нужен.

  7. События транспорта и угол направления

    События транспорта и угол направления

    • Файл events.xml (префикс Vehicle)
    • Управляет Машины, микс, направление

    Событие с префиксом Vehicle работает так же - имя события совпадает с именем event-spawn, поэтому событие идёт в эти позиции. Новое - значение «a=», направление, в которое смотрит транспорт. Капот смотрит по этому углу: 0 или 360 - север, 180 - юг, и немного устного счёта даёт любое направление по кругу.

    События транспорта обычно используют лимит «mixed». Вместо того чтобы принуждать каждый перечисленный child в каждой точной позиции (что свалило бы машины в кучу), вы говорите экономике держать общее число в пределах min и max вокруг nominal - например, всего 11–15 машин, цель около 13, и не более одного-трёх каждого типа child в миксе.

    Остальное ведёт себя как любое событие: lifetime задаёт, сколько живёт транспорт, и действуют те же правила safe radius, distance и cleanup. Когда транспорт разрушен, событие убирает его и выдаёт новый при следующей ротации.

  8. События заражённых обращаются к файлу territory

    События заражённых обращаются к файлу territory

    • Файл events.xml + territory
    • Управляет Распределение и число зомби

    Событие заражённых (зомби) общается с файлом окружения, известным как territory, который задаёт, куда относится эта группа заражённых. Сторона territory - более глубокая тема, достойная отдельного туториала, но основ хватает, чтобы вносить изменения.

    Чтобы просто забустить зомби, поднимите вывод minimum и nominal события заражённых - maximum для этого трогать обычно не нужно. Можно также подмешивать разных children заражённых в другие события, чтобы рассредоточить их по карте там, где их хочется больше.

  9. cfgrandompresets.xml - пулы лута cargo и attachment

    cfgrandompresets.xml - пулы лута cargo и attachment

    • Файл cfgrandompresets.xml
    • Управляет Что спавнится в/на предметах

    Random presets - посредник между types.xml и spawnable types. Пресет создаёт именованный пул лута cargo или attachment: список types или классов, у каждого свой hit chance. Когда этот шанс срабатывает, выбирается один из children пула.

    Так вы получаете разнообразие внутри или на объекте - например, пресет cargo, наполняющий контейнер, или пресет attachment, надевающий на зомби шапку или рюкзак. Пресет лишь задаёт пул; именно spawnable type, далее, говорит предмету фактически его использовать.

  10. cfgspawnabletypes.xml - выдача предметам их снаряжения

    cfgspawnabletypes.xml - выдача предметам их снаряжения

    • Файл cfgspawnabletypes.xml
    • Управляет Attachment и cargo при спавне

    cfgspawnabletypes.xml - это то, что говорит type иметь другие types прикреплёнными к нему или внутри него. Это потребитель только что заданных random presets: spawnable type ссылается по имени на пресет cargo или attachment, и hit chances пресета затем решают, что фактически появится.

    Коротко: types.xml говорит, что предмет существует, random preset задаёт пул возможных дополнений, а spawnable type связывает их, чтобы свежезаспавненный предмет прибыл с нужным cargo и attachments.

  11. globals.xml - переключатели уровня сервера

    globals.xml - переключатели уровня сервера

    • Файл globals.xml
    • Управляет Лимит зомби, idle, объём лута

    globals.xml хранит переключатели уровня сервера, и он мощнее, чем кажется. В самом низу - общий счётчик заражённых: поднимите или опустите его, чтобы задать максимально допустимый ИИ. Vanilla где-то 1000–1200; в исходной сборке его понизили до 850. Рядом найдёте animal count и то, как быстро убирается труп.

    Ключевая пара значений - настройки idle. Поставьте оба значения idle в ноль, и ваша экономика крутится даже когда никого нет онлайн, так что лут и события остаются свежими на сервере 24/7. Другие переключатели здесь управляют тем, сколько предметов лута спавнится изначально, и позволяют включать или выключать системы вроде wet, world и tents.

    Это лишь обзор для новичков - есть больше файлов и куда более глубокие видео по каждому. Но знание того, как эти ключевые файлы ссылаются друг на друга, достаточно, чтобы начать безопасно настраивать лут и зомби своего сервера.

FAQ

FAQ по основам XML в DayZ

FAQ
Какой файл редактировать для большего лута?

Начните в types.xml и поднимите nominal и min нужного предмета. nominal - целевое количество, которое экономика держит в мире, а min - порог, запускающий новый спавн.

Как добавить больше зомби?

Для общего лимита поднимите счётчик заражённых в globals.xml. Чтобы оживить конкретную область, поднимите minimum и nominal нужного события заражённых в events.xml - maximum обычно трогать не нужно.

Почему ничего не спавнится после моей правки?

Почти всегда несовпадение имён. Имя proto должно точно совпадать с именем pos, а имя события - точно с именем event-spawn. Проверьте написание и регистр с обеих сторон.

В чём разница между random preset и spawnable type?

Random preset (cfgrandompresets.xml) задаёт именованный пул возможного cargo или attachments с hit chances. Spawnable type (cfgspawnabletypes.xml) говорит реальному предмету использовать этот пул - так что пресет является посредником между types.xml и тем, что предмет несёт при спавне.

Как держать экономику крутящейся без игроков онлайн?

В globals.xml поставьте оба значения idle в ноль. Тогда экономика крутится круглосуточно, и сервер 24/7 остаётся наполнен свежим лутом и событиями.