def
|
Воскресенье, 03.04.2016, 11:58
|
|
Пример миссии с зоной, которую можно перезахватывать. Для победы требуется зайти в зону и защищать ее определенное время. Если противник не атакует, то удерживать зону можно меньшим составом, чем это требуется при атаке противника.
Лучше сначала загрузить миссию и почитать код триггеров, а потом прочитать пояснения по настраиваемым параметрам ниже.
Можно задавать следующие параметры захвата (в init.sqf задаем начальные значения, а в дополнительных триггерах, если нужно (см. пример с триггером казармы) )
ZoneTimerInterval = 0.0167; // интервал времени, требующийся для захвата в общем случае для примера поставил минуту. как вычислять? x/60 = кол-во минут в "десятичном" формате. К примеру, 0.5 - полчаса.
ZoneFreeDefenders = 1; // кол-во защитников в зоне, которая не атакуется (если меньше, то зона становится ничейной) Для примера поставил 1. Если условия захвата противником зоны не выполняются, то для того, чтобы не потерять ее (сделать ничейной) достаточно X бойцов.
ZoneReCaptureDefenders = 0; // кол-во защитников в зоне, при попытке ее захвата второй стороной
ZoneReCaptureAttackers = 1; // кол-во атакующих, пытающихся завладеть зоной (не важно, перезахват или захват ничейной)
Это привычные и понятные нам по стандартным миссиям RBC переменные: сколько нужно атакующих (больше или равно) и сколько нужно обороняющихся (меньше или равно), чтобы зона была перезахвачена атакующими.
(Attackers >= ZoneReCaptureAttackers ) && (Defenders <= ZoneReCaptureDefenders)
Например, при ZoneReCaptureAttackers = 4;ZoneReCaptureDefenders = 2; захват произойдет только если выполнены оба условия: В зону вошло более 3х бойцов, в то время, как в зоне оставалось менее трех бойцов обороны.
// не обязательная переменная, меняющая время захвата, при определенных условиях (для примера) ZoneTimerInterval2 = 0.0085; // интервал времени требующийся для удержания для победы, в случае, если выполнено условие второго триггера
Ссылка на миссию (исходник и mp-версия) (требуется WMT_Main, WMT_Time (можно и без них, тогда оповещение делаем другим способом))
Сообщение отредактировал def - Воскресенье, 03.04.2016, 12:04
|
|
Автор темы
|
|
|
|
|
def
|
Воскресенье, 03.04.2016, 12:09
|
|
Данная конфигурация триггеров была проверена на играх ifa rb (Битва за Шидлув)
|
|
Автор темы
|
|
|
|
|
def
|
Понедельник, 11.04.2016, 00:12
|
|
так же данная конфигурация была использована при создании миссии, где одна сторона должна удерживать зону всю игру, а вторая может захватить за 15 минут. в конце игры (на 90й минуте), если победа не произошла раньше, побеждает та сторона, которая владеет зоной. если никто то ничья.
для этого вместо одного из победных триггеров ставим триггер а-ля условие : (isServer)&& (daytime > 6.495) активация: if (ZoneCaptured == "BLUFOR") then {[[[west, "Зона захвачена силами США!"], { _this call wmt_fnc_endmission;}], "bis_fnc_spawn"] call bis_fnc_mp; };if (ZoneCaptured == "OPFOR") then {[[[west, "Зона захвачена силами ВС РФ!"], { _this call wmt_fnc_endmission;}], "bis_fnc_spawn"] call bis_fnc_mp; };if (ZoneCaptured == "") then {[[[resistance, "Вы не смогли захватить зону!"], { _this call wmt_fnc_endmission;}], "bis_fnc_spawn"] call bis_fnc_mp; };
|
|
Автор темы
|
|
|
|
|