Как это выглядит:
Последняя версия (ру версия в отдельном файле)
Простой гайд как потестить:
Как запилить в свою миссию
1. Создаем пусковую установку VLS (Синие-НАТО-Турели-Mk41 VLS) и присваиваем ей имя (пкм-атрибуты-имя переменной). По умолчанию в скрипте указано имя VLS1 (как изменить-позже).
Доп настройки ПУ:
2. Присвоить ботам игроков, которые будут использовать ПУ, имя переменной 3. Закинуть в папку с миссией скрипт, вписать его вызов в init.sqf
[] execVM "vls.sqf";
4. В скрипте отредактировать строчки
if (isNil "VLS_LAUNCHER") then { VLS_LAUNCHER = VLS1; };
if (isNil "VLS_USERS") then { VLS_USERS = [b_ks]; };
вписав свое имя лаунчера и юзеров (юзеров через запятую если их несколько)
Выдача ракет на миссии
Можно поменять тип боеприпасов на кассетные отредактировав 12ю строчку (да, переключать пока нельзя):
#define USE_CASSETS false
Что бы протестить стрельбу запустите миссию и в консоли вбейте
VLS_MISSILE_CNT=5
1. Ракеты можно выдавать тригером
Создаем в редакторе любой тригер, идем в атрибуты, ставим галочку "только сервер", "интервал" 10. убеждаемся что галка "повторяемый" снята, тип "нет", активация "нет". В поле "Условие" пишем нечто вида
if(!isNil("WMT_pub_frzState")) then {
(WMT_pub_frzState>=3)
} else {false}
(это если что для WMT платформы. означает что условие выполнится когда закончится фризтайм)
в поле "При активации" пишем наш код
VLS_MISSILE_CNT=3;
publicVariable "VLS_MISSILE_CNT";
(обратите внимание-командой publicVariable мы отправляем значение с сервера, где выполняется тригер, всем клиентам)
и наконец выставляем таймер (в секундах). Тип таймера-"обратный отсчет", время и его рандом по своему вкусу.
По вкусу можно делать это несколько раз в разных тригерах, слегка модифицировав код:
VLS_MISSILE_CNT=VLS_MISSILE_CNT+1;
publicVariable "VLS_MISSILE_CNT";
2. Выдача скриптом
if(!isServer) exitWith {};
waitUntil {uisleep 0.1;(!isNil("WMT_pub_frzState"))};
waitUntil {uisleep 0.1;(WMT_pub_frzState>=3)};
waitUntil {uisleep 0.1;(!isNil("WMT_Global_LeftTime"))};
waitUntil {uisleep 1;((WMT_Global_LeftTime select 0)<=6000)};//5 минут после фриза для миссии в 105 минут
VLS_MISSILE_CNT=1;
publicVariable "VLS_MISSILE_CNT";
waitUntil {uisleep 1;((WMT_Global_LeftTime select 0)<=5400)};//15 минут после фриза для миссии в 105 минут
VLS_MISSILE_CNT=VLS_MISSILE_CNT+1;
publicVariable "VLS_MISSILE_CNT";
все это селится в отдельный скрипт и вызавается в init.sqf по аналогии с самим скриптом на ракеты
Дополнительные настройки скрипта
Зоны запрета стрельбы
8я и 9я строки:
if (isNil "VLS_EXCLUSION_ZONES") then { VLS_EXCLUSION_ZONES = []; };
if (isNil "VLS_ALLOW_FIRE_ZONES") then { VLS_ALLOW_FIRE_ZONES = []; };
EXCLUSION_ZONES-зоны запрета стрельбы, ALLOW_FIRE_ZONES-зоны куда можно стрелять. Если ALLOW пустой-стрелять можно по всей карте, кроме EXCLUSION
To be continued чуть позже (кому не терпится-все есть на соседнем проекте)