Установка и настройка модификации YMCA C4

Инструкция по установке и настройке модификации YMCA C4 из workshop’a.

Установка

Модификация YMCA_C4 устанавливается как обычный клиентский mod для DayZ. Гайд по установке можно прочитать тут. Дополнительных действий производить не нужно.

Настройка

Файл со всеми настройками модификации расположен в папке [profiles]/YMCA_C4 (где [profiles]-папка profiles вашего сервера) и называется config.json.

{
    "AvailiableTargets": [
        {
            "Type": "Fence",
            "MaxHP": 1,
            "RequiredAttachments": []
        },
    ],
    "WeekTimetable": [
        {
            "Day":"Sunday",
            "StartH":0,
            "StartM":0,
            "EndH":24,
            "EndM":0
        },
    ],
    "State": 1,
    "C4InitTime": 120,
    "C4DisarmTime": 30.0,
    "C4Distance": 1.0
}

Рассмотрим какие параметры он позволяет настраивать:

Описание параметров “AvailiableTargets” и “WeekTimetable” будет дано после остальных.

“State” – позволяет выключать (значение 0) и включать (значение 1) взрывчатку. Удобен в случаях когда вам необходимо временно отключить взрывы, но при этом вы не хотите отключать модификацию.
Пример: "State": 1, – взрывы не запрещены.

“C4InitTime” – параметр отвечающий за время от момента установки взрывчатки до детонации. Устанавливается в целых секундах без дробной части (нельзя писать 12.3 или 12.0).
Пример: "C4InitTime": 120, – взрыв произойдет через 2 минуты после установки взрывчатки.

“C4DisarmTime” – параметр отвечающий за время раминирования установленной взрывчатки. Устанавливается в секундах с дробной частью.
Пример: "C4DisarmTime": 30.0, – для разминирования понадобится 30 секунд.

“C4Distance” – Параметр отвечающий за радиус сферы вокруг взрывчатки в переделах которой будет наноситься урон постройкам. Устанавливается в метрах с дробной частю. Если вы используете аддон на установку взрывчатки на конкретную постройку, то этот параметр не учитывается.
Пример: "C4Distance": 1.5, – постройкам находящимся на расстоянии менее 1 метра 50 сантиметров при взрыве будет нанесен урон.

“WeekTimetable”

“WeekTimetable” – отвечает за настройку расписания периодов разрешенного использования взрывчатки (рейд-таймов). Но это не простой параметр. Он содержит в себе набор элементов со своими параметрами. Каждый элемент отвечает за один период. Пример такого элемента:

{
    "Day":"Friday",
    "StartH":0,
    "StartM":0,
    "EndH":24,
    "EndM":0
},

Рассмотрим параметры такого элемента подробнее:

“Day” – день недели для которого устанавливается время рейд-тайм. Обязательно на английском, с большой буквы и в двойных кавычках. Напоминаю дни недели: Monday Tuesday Wednesday Thursday Friday Saturday Sunday.

“StartH” и “StartM” – время начала, часы и минуты соответственно. Вводить необходимо в 24-х часовом формате, без первыми идущих нулей. То есть для 8 часов утра вместо "StartH":08, пишем "StartH":8, .

“EndH” и “EndM” – время окончания, настраиваемое аналогично предыдущим параметрам.

Параметр “WeekTimetable” должен содержать столько элементов – сколько дней вы хотите чтобы был доступен рейд с помощью взрывчатки. В дни которые не указаны в списке рейд-тайм выключен. Например если вы хотите, чтобы взрывать было можно в любое время – элементов должно быть 7 (на каждый день недели) и в каждом время начала 0:0, а время окончания 24:0. Если рейд тайм у вас только по выходным с 8 вечера и до 11, то тогда вам подойдет такой вариант:

"WeekTimetable": [
    {
        "Day":"Sunday",
        "StartH":8,
        "StartM":0,
        "EndH":11,
        "EndM":0
    },
    {
        "Day":"Saturday",
        "StartH":8,
        "StartM":0,
        "EndH":11,
        "EndM":0
    }
],

Но устанавливая время начала и время окончания периодов – удостоверьтесь, что на них приходится и рестарт вашего сервера. Поскольку расписание в модификации YMCA_C4 проверяется только при запуске сервера и после не используется. Смена состояния возможности установки взрывчатки происходит только при рестарте. (Делайте рестарт перед каждым рейд-таймом)

“AvailiableTargets”

Этот параметр самый сложный в настройке. С его помощью можно настроить какие постройки будут взрываться, а какие нет и сколько каждой из них будет необходимо взрывчатки.

Как и предыдущий параметр, “AvailiableTargets” содержит в себе набор элементов. ВНИМАНИЕ: порядок элементов важен – причины этого будут описаны ниже.

Если ни один элемент из списка не подойдет к постройке, то она не может быть уничтожена взрывчаткой.

Пример такого элемента:

{
    "Type": "Fence",
    "MaxHP": 1,
    "RequiredAttachments": [
        "wall_base_down",
        "wall_wood_down",
    ]
}

Каждый элемент отвечает за отдельное состояние постройки. Пример выше – устанавливает ванильному забору с построенными нижними основанием и деревянной обшивкой 1 hp – то есть такой забор может быть уничтожен одним взрывом. Рассмотрим параметры подробнее:

“Type” – это название класса постройки. Ванильные постройки: "Fence" – забор, "ShelterSite" – импровизированное укрытие, "TerritoryFlag" – флагшток.

“MaxHP” – параметр отвечающий за количество взрывчатки необходимой для уничтожение таких построек. Устанавливается в целых числах без дробной части.

“RequiredAttachments” – список частей которые должны быть у постройки, чтобы для нее применялся этот элемент. Найти эти названия можно, либо в конфигурационных файлах в репозитории на гитхабе, либо в config.cpp файле модификации этой постройки.

Для того, чтобы найти названия частей из config.cpp файла необходимо изучить класс Construction у постройки. В его подклассе (название может быть абсолютно любым) будут находится классы частей постройки. Для примера рассмотрим код "TerritoryFlag" – ванильного флагштока.

class TerritoryFlag: BaseBuildingBase
{
    scope = 2;
    displayName = "$STR_CfgVehicles_TerritoryFlag0";
    ...
    class Construction
    {
        class totem
        {
            class base{...};
            class support{...};
            class pole{...};
        };
    };
};

На месте многоточий в оригинале находится дополнительный код, который был опущен для упрощения повествования.

В выше приведенном коде можно увидеть что у класса Construction есть подкласс totem. В последнем есть три класса: "base", "support", "pole" – они и являются частями постройки для флагштока. Опустим шаги по выявлению соответствий между названиями классов и внутриигровых объектов: "base" – это установленное вертикально бревно, "support" – каменное основание, "pole" сам флагшток.

Теперь перейдем к настройке “RequiredAttachments” для флагштока. Предположим, что мы хотим чтобы любой недостроенный флагшток можно было уничтожить за один взрыв, а полностью построенный – за три. Начнем с настройки полностью построенного флагштока:

Полностью построенный флагшток – это флагшток у которого построены все три части – соответственно код элемента для “AvailiableTargets”:

{
    "Type": "TerritoryFlag",
    "MaxHP": 3,
    "RequiredAttachments": [
        "base",
        "support",
        "pole",
    ]
}

Заметим, что поскольку в игре "pole" может быть построен только если уже есть "base" и "support", то их можно опустить (все флагштоки с "pole" их и так обязательно имеют) и код станет меньше:

{
    "Type": "TerritoryFlag",
    "MaxHP": 3,
    "RequiredAttachments": [
        "pole",
    ]
}

Так можно поступать и с другими постройками: у ванильного забора нельзя построить отделку (и деревянную и металлическую)

Перейдем теперь к описанию недостроенного флагштока. Поскольку мы хотим учесть флагштоки на любом этапе их постройки (и даже те, которые еще только разместили на земле и ничего не построили), указывать в “RequiredAttachments” ничего не нужно – оставляем список пустым (не забыть квадратные скобки):

{
    "Type": "TerritoryFlag",
    "MaxHP": 1,
    "RequiredAttachments": []
}

Однако теперь под такой элемент подпадает даже полностью построенный флагшток (у него построены все части из списка “RequiredAttachments”) и теперь его HP может стать не 3 а 1.

Чтобы этого избежать, необходимо вписывать элементы “AvailiableTargets” в правильном порядке. Если элемент для полностью построенного флагштока будет находится в списке раньше элемента для недостроенного флагштока, то все будет работать как нужно (у частичного HP=1, у полного – 3). В ином случае (сначала недостроенный, потом полный) – для всех флагштоков HP=1.

Полный код “AvailiableTargets” для флагштоков должен выглядеть так:

"AvailiableTargets": [
    {
        "Type": "TerritoryFlag",
        "MaxHP": 3,
        "RequiredAttachments": [
            "pole",
        ]
    },
    {
        "Type": "TerritoryFlag",
        "MaxHP": 1,
        "RequiredAttachments": []
    },
],

Для упрощения рассуждений: какой элемент поставить выше, а какой ниже, можно пользоваться простым правилом:

Чем больше параметр “MaxHP” у элемента, тем выше он должен быть.

Для закрепления вышесказанного рассмотрим такое изменение в настройках – для взрыва флагштока нужно:

  • Если еще нет камней – нужен 1 взрыв
  • Если еще не достроен, но камни уже есть – 2
  • Если полностью построен – 3

Исходя из правила порядок элементов в списке должен быть такой:

  • Полностью построенный флагшток
  • Флагшток с камнями
  • Недостроенный флагшток

Опустим рассуждения и запишем сразу готовый код для этого случая:

"AvailiableTargets": [
    {
        "Type": "TerritoryFlag",
        "MaxHP": 3,
        "RequiredAttachments": [
            "pole",
        ]
    },
    {
        "Type": "TerritoryFlag",
        "MaxHP": 2,
        "RequiredAttachments": [
            "support",
        ]
    },
    {
        "Type": "TerritoryFlag",
        "MaxHP": 1,
        "RequiredAttachments": []
    },
],

Аддоны

При покупке репака модификации в комплекте так же идут две дополнительные модификации: YMCA_C4Addon_Action и YMCA_C4Addon_Notifications. Обе модификации являются клиентскими и после установки не требуют дополнительных действий.

Ошибки

После изменения настроек всегда проверяйте config.json файл на наличие ошибок в синтаксисе json. Для этого можно воспользоваться встроенным в редактор кода инструментом или например таким онлайн сервисом.

Если после запуска вы не можете устанавливать взрывчатку – проверьте:

  • Файл настроек должен быть в папке  [profiles]/YMCA_C4
  • В параметре “State” должно быть установлено значение 1
  • В параметре “WeekTimetable” должен быть элемент с сегодняшним днем недели
    • День недели должен быть написан с большой буквы и на английском языке
    • Текущее время должно быть в пределах указанного в элементе периода

Полностью функционирующий пример настроек для сервера с ванильным забором и рейд-таймом по пятницам-субботам с 12:00 до 18:00 можно посмотреть тут.

Для добавления модификации в состав своего серверного мода необходимо приобрести её репак.

Leave a Comment

Shopping Cart
Scroll to Top