• Страница 1 из 1
  • 1
Крылатые ракеты
BendeR
Пятница, 23.09.2022, 16:15
Пост №: 1

Пуск крылатых ракет (оф и кассетных) из ванильной ПУ VLS через целеуказание кликом по карте

Последняя версия скрипта (русская с припиской _ru)

Old version video:



Кидаем в папку с миссией
В init.sqf добавляем строку вызова:

Код
[] execVM "vls.sqf";

Далее создаем в самой миссии пусковую установку (НАТО-Турели-Mk41 VLS) и присваиваем ей имя (пкм-атрибуты-имя переменной). По умолчанию в скрипте указано имя VLS1 (как изменить-позже).



Если вам необходимо чтобы пусковая установка была отличной от синей стороны в ее инит (атрибуты-инициализация) добавьте строки вида

Код
_grpName = createGroup east;
(crew this) joinSilent _grpName;
(где east можно поменять на нужную вам сторону)


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

После открываем скачанный скрипт в папке с миссией и редактируем его:

4я строчка-сюда вместо VLS1 вписываем имя переменной своего лаунчера

Код
if (isNil "VLS_LAUNCHER") then { VLS_LAUNCHER = VLS1; };
5я строчка-сюда через запятую в квадратных скобках вписываем тех кто будет это все использовать
Код
if (isNil "VLS_USERS") then { VLS_USERS = [b_ks]; };


Если вы перекинули лаунчер за красных/зеленых вписываем нужную сторону в 11 строку

Код
#define LAUNCHER_SIDE opfor


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

В любой момент для тестов в консоли отладки (та что по меню esc) вы можете написать нечто вида

Код
VLS_MISSILE_CNT=3;
и получить в этом случае 3 пуска ракет.

Но на мисси вам придется это дело выдавать либо:
1) тригерами. Создаем в редакторе любой тригер, идем в атрибуты, ставим галочку "только сервер",  "интервал" 10. убеждаемся что галка "повторяемый" снята, тип "нет", активация "нет". В поле "Условие" пишем нечто вида
Код
if(!isNil("WMT_pub_frzState")) then {
    (WMT_pub_frzState>=3)
} else {false}
(это если что для WMT платформы. означает что условие выполнится когда закончится фризтайм)

в поле "При активации" пишем наш код
Код
VLS_MISSILE_CNT=3;
publicVariable "VLS_MISSILE_CNT";
(обратите внимание-командой publicVariable мы отправляем значение с сервера, где выполняется тригер, всем клиентам)

и наконец выставляем таймер (в секундах). Тип таймера-"обратный отсчет", время и его рандом по своему вкусу.

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";

Скрипт из примера выше состоит из блоков начинающихся с waitUntil . В каждом используется оставшееся время на миссию (в секундах). Обратите внимание что во втором блоке используется выражение 
Код
VLS_MISSILE_CNT=VLS_MISSILE_CNT+1;
Его следует использовать и в тригерах из первого примера, если вы до срабатывания этого тригера выдаете пуски ракет.

Оставшиеся настройки скрипта:
8я и 9я строки

Код
if (isNil "VLS_EXCLUSION_ZONES") then { VLS_EXCLUSION_ZONES = []; };
if (isNil "VLS_ALLOW_FIRE_ZONES") then { VLS_ALLOW_FIRE_ZONES = []; };

списки зон запрета и разрешения стрельбы соответственно. Зоны задаются маркерами. Создайте маркер, задайте ему "имя переменной" и вписываем в нужный массив (не забываем кавычки-имя маркера в арме это строка. например  ["marker_no_vls_fire_1"]. Если список VLS_ALLOW_FIRE_ZONES пуст-выбрать целью можно всю карту, кроме зон из списка VLS_EXCLUSION_ZONES

12я строка -меняем false на true если вместо ОФ ракет нужно использовать кассетные.

Код
#define USE_CASSETS true
13я и 14е строки. Отображать сообщения о пуски ракет и стороны которые их видят
Код
#define SHOW_NOTIFICATION true
if (isNil "VLS_NOTIFICATION_SIDES") then { VLS_NOTIFICATION_SIDES = [opfor]; };

Далее идут текст в меню, сообщения и тп. Думаю там все понятно-меняем на свой вкус

Версия для двух сторон пока недоступна. Как допилю для любой своей миски-выложу
Сообщение отредактировал BendeR - Вторник, 29.08.2023, 16:02

Автор темы
 
BendeR
Пятница, 30.09.2022, 12:54
Пост №: 2
v1.5
-добавлено принудительное отключение всех боевых функций AI

Автор темы
 
BendeR
Вторник, 29.08.2023, 16:05
Пост №: 3
v2.0
-новый интерфейс
-отображение оставшихся пусков/их типов (если используются кассеты)/времени перезарядки
-отображение времени и дистанции полета
-ру версия скрипта доступна отдельно


Автор темы
 
  • Страница 1 из 1
  • 1
Поиск: