_g=[] spawn { private _bpla=[]; while{true} do { { if (!(_x in _bpla))then{ //Сюда вписываем-убираем типы бпла. Сейчас вписаны дартеры всех сторон+стационарный лцу CSAT if((typeOf _x) in ["O_UAV_01_F", "I_UAV_01_F", "B_UAV_01_F","O_Static_Designator_02_F"])then{ //Строчки ниже коментим по вкусу //_x disableTIEquipment true; //Тепловизор _x enableVehicleSensor ["IRSensorComponent",false];//Отметки больших тепловых целей _x enableVehicleSensor ["ManSensorComponent",false];//Отметки малых тепловых целей _x removeWeaponTurret ["Laserdesignator_mounted",[0]];//ЛЦУ _bpla pushBackUnique _x; }; }; } forEach allUnitsUAV; uiSleep(10); }; };
Ну с красными точками целей понятно-ванильный дартер отмечает на радаре даже пехоту в радиусе 300м-оператору работы не остается, только перерисовывать на карту КСу. ЛЦУ тоже полезно вырубить если не хочется получить веселье типа птуров на 6км с засветами от весьма незаметного БПЛА
ах да, вызывать из init.sqf например так: [] execVM "uav_param.sqf";
warn! версия скрипта ниже требует доработки. возможное решение-каждый раз отключать аи после освобождения управления турелью игроком версия для любителей использовать ванильные БПА и БПЛА с вооружением. Отключаем АИ ботов, позволяющий им при включение в терминале галки "Автономный режим" самостоятельно находить цели и вести огонь
В скрипте-у ксатовских Саифов. Нужный класнейм думаю вписать труда не составить. Теперь никакого нытья на то что воюют и убивают боты. Управлять турелькой получится только в ручную. При этом оставлена возможность навигации по вейпойнтам
Код
if(!isServer) exitWith {};
_g=[] spawn { private _bpla=[]; while{true} do { //Отключаем тпв и радар для дартеров и прочих { if (!(_x in _bpla))then{ if((typeOf _x) in ["O_UAV_01_F", "I_UAV_01_F", "B_UAV_01_F"])then{ //Дартеры и им подобные _x disableTIEquipment true; _x enableVehicleSensor ["IRSensorComponent",false]; _x enableVehicleSensor ["ManSensorComponent",false]; _bpla pushBackUnique _x; }; if((typeOf _x) in ["O_T_UGV_01_ghex_F", "O_T_UGV_01_rcws_ghex_F"])then{ //Стомперы и им подобные _x disableTIEquipment true; _x enableVehicleSensor ["IRSensorComponent",false]; _x enableVehicleSensor ["ManSensorComponent",false];
Версия скрипта от 12.06.2020 добавлено убирание дроби у бпа ED1-D из DLC Contact (класнеймы бпа зеленых и красных стоит добавить в список если нужно)+сам скрипт чутка причесан
Код
if(!isServer) exitWith {};
_g=[] spawn { private _bpla=[]; while{true} do { //Отключаем тпв, лцу и радар для дартеров и прочих { if (!(_x in _bpla))then{ if((typeOf _x) in ["O_UAV_01_F", "I_UAV_01_F", "B_UAV_01_F","O_Static_Designator_02_F"])then{ _x disableTIEquipment true; _x enableVehicleSensor ["IRSensorComponent",false]; _x enableVehicleSensor ["ManSensorComponent",false]; _x removeWeaponTurret ["Laserdesignator_mounted",[0]]; }; if((typeOf _x) in ["B_UGV_01_rcws_F","B_UGV_01_F","O_UGV_01_F"])then{ //Стомперы и им подобные _x disableTIEquipment true; _x enableVehicleSensor ["IRSensorComponent",false]; _x enableVehicleSensor ["ManSensorComponent",false];
Еще один скрипт радара. Точнее сонара (который показывает SDV на карте). Легко переделывается в любой другой радар, отдельно коментировать не буду-подобных скриптов сотни. Единственное "но"-нет проверки на захват техники врагом
Томагавки Чтобы ебануть по Тбилиси объекту с именем TARGET1 ванильной установкой Mk41 VLS с именем VLS создадим триггер (Активация "Кто угодно", Тип активации "Присутствует", "Только сервер") с телом "При активации" вида
wmt_pub_frzState>=3//Срабатывание сразу после окончания фризтайма
Отмечу что в качестве цели лучше все же использовать объект. Если вам надо чтобы ракет прилетела в пустое определенное место-используйте объект-пустышку типа "Land_HelipadEmpty_F"
Ну и отмечу что 1 установка-одна ракета. Так что следующую лучше всего запустить другим тригером с условием вида
Код
!alive TARGET1//Работает только для уничножимой техники бтв. "Land_HelipadEmpty_F" не уничтожим
Ну и чтобы не дать игрокам доступа к лакомым ракетам, убивающим все в радиусе 200м, в активацию последнего тригера стоит добавить еще пару строк вида
Действительно бесполезный скрипт морских мин из миссии Lost Cargo. Полезно для решения проблем с плавающей техникой. Мины разминируются через ACE-меню, как и обычные
sonar01 заменить на имя вашей лодки, mine_count количество мин вызывать из инита через execVM (придется немного модифицировать для вызова через call) в условности миссии стоит прописывать что мина появляется взведенной через 5с, чтобы лодка успела отойти на безопасное расстояние эта версия скрипта поправлена (исправлен баг спавна мин на уровне воды), но еще не игралась на больших играх как подсказывает кэп-работает только для одной посудины и слегка привязан к wmt-платформе (установка мин доступна только после фриза)
waitUntil {(!isNil("plant_mine"))&&(!isNil("mine_count"))}; player addAction ["<t color='#ff0000'>Установить мину</t>",{plant_mine=1;publicVariable "plant_mine";hintsilent format ["Мина сброшена. Активация через 5 секунд. Осталось %1", (mine_count-1)];},[],1.5,true,false,"","(player==(driver sonar01))&&(plant_mine==0)&&(mine_count>0)&&(wmt_pub_frzState>=3)"];
Сообщение отредактировал BendeR - Воскресенье, 12.05.2019, 15:30
Путем тестирования на кошках игроках проекта была допилена серия скриптов с выбором ванильного оружия (и оптики в случае со снайперами). Для примера выложу один из скриптов с выбором между maaws mod.0/pcml для ванильных птшников синих/зеленых ("как добавить" написано максимально тупо)
В init.sqf до (важно) строчки
Код
[] execVM "briefing.sqf";
вписать вызов нашего скрипта, например так:
Код
[] execVM "equip_select\nato_rpg_select.sqf";
Сам скрипт (в нашем случае поселить в файлик nato_rpg_select.sqf в папке equip_select в папке с миссией):
Код
if(isDedicated||(!hasInterface)) exitWith {}; waitUntil { player == player };
b_rpg_list=[b_rpg1,b_rpg2,b_rpg3,b_rpg4,b_rpg5,b_rpg6,b_rpg7,b_rpg8]; if(!(player in b_rpg_list)) exitWith {}; local_equip_select=1;
player createDiarySubject ["equip_select", "ВЫБОР СНАРЯЖЕНИЯ"]; player createDiaryRecord ["equip_select", ["Пояснения","Выбор работает только на брифинге.<br />Рекомендуется выбирать через 30с после прогрузки на брифинг.<br />Текущий выбор-самая верхняя строчка в разделе Выбранное снаряжение<br />Раздел Инструктаж-Мое отделение при работе скрипта не обновляется"]]; player createDiaryRecord ["equip_select", ["ВЫБОР СНАРЯЖЕНИЯ"," <execute expression='local_equip_select=1;'>Вариант 1</execute>: <img image='"+getText (configfile >> "CfgWeapons" >> "launch_MRAWS_green_rail_F" >> "picture")+"' height=40 /> MAAWS Mod.0 <img image='"+getText (configfile >> "CfgMagazines" >> "MRAWS_HEAT_F" >> "picture")+"' height=30 />x2 <img image='"+getText (configfile >> "CfgMagazines" >> "MRAWS_HE_F" >> "picture")+"' height=30 />x2<br /> <execute expression='local_equip_select=2;'>Вариант 2</execute>: <img image='"+getText (configfile >> "CfgWeapons" >> "launch_NLAW_F" >> "picture")+"' height=40 /> PCML <img image='"+getText (configfile >> "CfgMagazines" >> "NLAW_F" >> "picture")+"' height=30 />x3<br /> "]];
while{(WMT_pub_frzTimeLeft>=(wmt_param_PrepareTime*60))&&(WMT_pub_frzState<3)} do { _update_briefing=False; if(local_equip_select!=_local_equip_select_ons) then { player removeWeapon "launch_MRAWS_green_rail_F"; player removeWeapon "launch_NLAW_F"; player removeMagazines "MRAWS_HE_F"; player removeMagazines "MRAWS_HEAT_F"; player removeMagazines "NLAW_F";
uiSleep(0.2); while{["MRAWS_HE_F", "MRAWS_HEAT_F", "NLAW_F"] in magazines player} do { uiSleep(0.1); };
switch(local_equip_select) do { case 1: { player addWeapon "launch_MRAWS_green_rail_F"; for "_i" from 1 to 1 do {player addItemToBackpack "MRAWS_HEAT_F";}; for "_i" from 1 to 2 do {player addItemToBackpack "MRAWS_HE_F";}; while{!("launch_MRAWS_green_rail_F" in weapons player)} do { uiSleep(0.1); }; player addWeaponItem ["launch_MRAWS_green_rail_F","MRAWS_HEAT_F"];
}; case 2: { player addWeapon "launch_NLAW_F"; for "_i" from 1 to 2 do {player addItemToBackpack "NLAW_F";}; while{!("launch_NLAW_F" in weapons player)} do { uiSleep(0.1); }; player addWeaponItem ["launch_NLAW_F","NLAW_F"]; }; };
if(_update_briefing) then{ switch(local_equip_select) do { case 1: { _str_equip="MAAWS Mod.0"; }; case 2: { _str_equip="NLAW"; }; }; player createDiaryRecord ["equip_select", ["Выбранное снаряжение",_str_equip]]; };
uiSleep(1); }; };
В самой миссии необходимо обозвать нужных юнитов (задать поле "Имя переменной) с выбором экипировки В скрипте необходимо подправить строчку со списком юнитов (я использую имена вида сторона_рольНомер):
Еще один важный момент-юнитам должно раздаваться оружие и патроны/снаряды к нему не отличающиеся от списка удаляемого скриптом снаряжения перед выдачей нового. Само удаление в скрипте живет вот тут:
Код
player removeWeapon "launch_MRAWS_green_rail_F"; player removeWeapon "launch_NLAW_F"; player removeMagazines "MRAWS_HE_F"; player removeMagazines "MRAWS_HEAT_F"; player removeMagazines "NLAW_F";
Тут прописаны как раз оба вида труб и бк к ним (отдельно обращу внимание что прописан "зеленый" MAAWS, и если например юниту выдан песочный-скрипт заглючит. Как вариант-не выдавать юниту оружие и бк вообще, тк скрипт автоматом выполняет одну итерацию "удаления-выдачи" при загрузке игрока в игру. Из минусов этого подхода-если бота не займут на брифинге то он будет с пустыми руками/рюкзаком-"не полутать")
Важный момент: скрипт работает только с WMT-платформой (требуются модули WMT_Main и WMT_Time на миссии, причем последний с заданными настройками фризтайма)
Сообщение отредактировал BendeR - Воскресенье, 12.01.2020, 15:37
Последняя на данный момент версия скрипта выбора снаряжения. Снаружи от старой отличается только отображением выбора поверх карты во время брифинга, а вот внутри достаточно много изменений-теперь все автоматически генерится из параметров скрипта select_main.sqf (в атаче). Это должно упростить не понимающим в скриптинге людям возможность использовать фичу. Что он умеет:
-несколько независимо выбираемых опций для одного слота -автоматически создавать пункты "выбор снаряжения" в дневнике и элемент выбора снаряжения на экране брифинга -автоматическе для раздела _items определять тип обязательного DLC с отображением пользователю -отображать выборы в WMT-подобном виде (картинка+цифра с подписаным типом оружия и подсчетом общего количества бк) -работать только локально у пользователся с минимальной нагрузкой на сервер (протестировано до 70 пользователей с различным выбором снаряжения при онлайне 120-130) -не оставлять работающих компонентов после завершения брифинга
Вот простой пример вызова для ванильного гранатометчика НАТО, делающий ровно тоже самое что и в примере который я скидывал в эту тему раньше-выбор между MAAWS Mod0 и PCML. Этот код нужно поместить в файл sqf и вызвать строчкой в init.sqf миссии (Например так: [] execVM "equip_select\select_nato.sqf"; )
Код
if(isDedicated||(!hasInterface)) exitWith {}; waitUntil { player == player };
Описано максимально тупо чтобы люди не особо смыслящие в программирование могли понять
Первый 2 строчки это просто ограничение для вызова локально только у игроков Дальше переменная _units_list. Список тех кто может выбирать. Если пользователь не в списке-скрипт тупо завершится. В миссии так же надо присвоить "имя переменной" в свойствах всем юнитам которые выбирают. Как вариант если лень обзывать каждый юнит-можно использовать армовский формат вида "Альфа 3-1:1". Но с этим сами разбирайтесь,
_items Тут начинается момент когда не стоит путаться в скобках. Сразу обратите внимание что выбор оружия указан через запятую внутри еще одной пары скобок. Сделано это для возможности нескольких выборов на одном слоте-те каждый новый выбор (пример: отдельный выбор винтовки и прицела у снайпера) будет идти в отдельной паре скобок. Перечисляются у нас классы объектов из армы-посмотреть их можно например нажав "экспорт" нужного юнита в виртуальном арсенале
_magazines Список того что будет положено в инвентарь юниту. Обратите внимание-добавился еще один "уровень" скобок (а точнее даже два) -сделано это чтобы указать количество и место расположения итемов. (Пояснение для тех кому совсем тяжело: если внешние скобки самой переменной _magazines. Внутри-скобки нашей опции выбора, в них 2 пары скобок наших вариантов. В них для каждого итема-свои скобки в которых дополнение к классу указаны 2 цифры). Для каждого итема кроме класса указывается сначала количество, потом слот куда положить (0-форма, 1-разгрузка, 2-рюкзак)
_attachs Список того что будет навешано на оружие. В том числе заряженный по-умолчанию магазин/снаряд (если не указать-автоматом как при обычной раздачи снаряжения само не зарядится). Все аналогично _magazines, за исключением отсутствия внутреннего уровня скобок, тк нет необходимости указывать "куда" пихать выдаваемое
ну и последняя строчка-вызов тела самого скрипта, который лежит в данном случае в папке equip_select
Для тех кто осилил-в атаче файлик select_nato.sqf с большим количеством всякого выбора для нато, а заодно и пример как я убого оформляю скрипты выбора для каждой из сторон на своих миссиях
Ну и простой пример из того же файла select_nato.sqf с выбором пулеметов синими (MXM и LPMG). В целом аналогичен предыдущему. Но пару важных моментов на который стоит обратить внимание: бк пулеметов раздается в рюкзаки и разгрузки, а на сам пулемет дополнительно навешиваются сошки и прицел ВАЖНО! Всегда проверяйте объем инвентаря. Все что не влезет-не выдастся
Дальше немного нестандартные случаи Для начала выбор прицела для снайпера в снайперской паре из миссии Insurgency. Стоит отметить что в итемсах у нас сама оптика, а в остальных переменных пусто (но оставлены скобки под сам выбор. собственно зачем этот пример тут). ВАЖНО! Не пытайтесь в выбор пихать форму, шлемы, рюкзаки, разгрузки и тп-на них увы я проверки в скрипте не делал. Мб "пока не делал". С пнв, гпс и очками аналогично-в случае с ними работать мб и будет, но не проверялось.
Или выбор подрывпакетов/клейморов саперам. Тут наоборот _items пустой (но все 3 опции выбора указаны как пустые строки), а вся раздача идет в инвентарь.
Тут кстати есть интересный баг скрипта который наверное стоит когда нибудь исправить-текстовое описание я пока беру только для объектов в категории _items. Соответственно в дневнике текущий выбор будет пустым, но на экране все будет нормально отображаться.Как вариант конечно уже избавиться от дневника как планировалось изначально
Ну и для тех кто не сошел с ума от скобок те же самые саперы, но имеющие сразу 2 выбра по 3 опции каждый-пакеты/клейморы и различные типы и сочетания мин (пп выбор, пт выбор и комбинированый дефолт). Аналогично делаются всякие выборы винтовка+отдельный выбор прицела
Ну и для осиливших собственно снайпер синих, с 3мя выборами-винтовка, оптика, пистолет. Из интересного-возможность выбирать между пистолетом с глушителем весом 5кг и "ничем" (да, можно выбор оставить пустым)
Спасибо ! Все предельно доступно и понятно ! Единственное, не смог понять почему в последнем примере в magazines между первым и третьим выбором, во втором выборе поставлена всего одна [], а не 2, т.к. оптики-то мы 2, получается, даем на выбор. Но, то уже разберусь на деле.
Выбор снаряжения v1.6 (старый гайд все так же актуален) -пофикшено расположение ui для разрешений больше FullHD -добавлен необязательный параметр _uisize (0 по умолчанию). увеличивает или уменьшает ширину элемента с перечнем доступных опций в выборе. пример-выбор Мк20/промет из миссии Lost cargo:
-добавлен необязательный параметр _show_inventory_text (false по умолчанию). отображение текстовых описаний к тому что в разделе _magazines. полезно например на саперах из примера . вариант строки вызова скрипта с этим параметром:
по просьбам некоторых выбор техники для одной из сторон пока что "сложная" версия. смысла делать модуль или сильно упрощать не вижу, тк один фиг каждый раз делается под конкретную миссию и от написания sqf-ки расстановки и раздачи инвентаря самой техники уйти не получится (максимум можно сделать экспорт на подобии экспорта инвентаря из арсенала)
как обычно пояснения в стиле "для тупых" под спойлерами вызов двух скриптов которые лежат в папке setups в папке с миссией (там же будут лежать сами скрипты спавна техники) init_setup.sqf-основной скрипт отвечающий за переспавн сетапов и удаление предыдущих local_markers.sqf-необязательная часть добавляющая WMT-подобные маркеры на выбраную в данный момент технику
init_setup.sqf
Код
//Vehicle setup by [STELS]BendeR
vehicle_list=[]; select_setup=1;
if (!isServer) exitWith {};
publicVariable "select_setup";
_g=[] spawn { private _select_setup_ons=0; waitUntil {(!isNil("WMT_pub_frzTimeLeft"))&&(!isNil("wmt_param_PrepareTime"))&&(!isNil("WMT_pub_frzState"))}; while{(WMT_pub_frzTimeLeft>=(wmt_param_PrepareTime*60))&&(WMT_pub_frzState<3)} do {
if(select_setup!=_select_setup_ons) then { { deleteVehicle _x; }foreach vehicle_list; vehicle_list=[];
switch(select_setup) do { case 1: {call compile preprocessFileLineNumbers "setups\setup1.sqf";}; case 2: {call compile preprocessFileLineNumbers "setups\setup2.sqf";}; case 3: {call compile preprocessFileLineNumbers "setups\setup3.sqf";}; case 4: {call compile preprocessFileLineNumbers "setups\setup4.sqf";}; default {call compile preprocessFileLineNumbers "setups\setup1.sqf";}; }; publicVariable "vehicle_list";
основной скрипт. тут надо поправить на свое усмотрение количество возможных сетапов в операторе switch. если по простому: каждая строчка-вызов своего скрипта лежащего в папке setups и называющихся setups1.sqf и тд (в нашем случае. можете обзывать как удобно). В каждом таком скрипте выполняется спавн техники. Подробности будут ниже
local_markers.sqf
Код
//Vehicle setup by [STELS]BendeR
waitUntil { !isNil {player} }; if (isDedicated||((side player)!=BLUFOR)) exitWith {};
в local_markers.sqf ничего править не нужно кроме стороны во второй строчке (маркеры рисуются как в WMT-только для стороны, которой принадлежит техники. в этом примере-за синих) Как вариант можно обозначить выбираемую часть техники отдельным цветом поменяв его в строчке _mkr setMarkerColorLocal "ColorYellow";
Тут я сознательно привел самый простой вариант. Сам юнит обзывается b_ks ("имя переменной" в свойствах юнита). Сам выбор-в брифинге. Строчки <execute expression='select_setup=4;publicVariable ""select_setup"";'>Сетап 4:</execute><br /> добавить-убавить по количеству своих сетапов. В них не забыть поменять меременную select_setup на нужное значение). Можно снабдить чем угодно-картинками, просто текстовым перечнем техники и тп. Можно сделать отдельный список техники для "простых смертных". Я например делаю wmt-подобные картинки техники прямо из ресурсов армы так: <img image='"+getText (configfile >> "CfgVehicles" >> "B_Heli_Attack_01_dynamicLoadout_F" >> "picture")+"' height=24 /> Тут-B_Heli_Attack_01_dynamicLoadout_F это класс нашей техники
ну и самое важное-спавнилки нашей техники. те самые setup1.sqf и тд. я возьму для примера первый сетам из миссии Zaros
на вид страшно, на самом деле-нет. Все состоит из блоков каждый из которых это респ 1 единицы техники. Важно понимать что все это счастье выполняется на сервере и то что раньше вы писали в инит вашей техники через this в этих скриптах пишется через _veh. Из это же следует что стоит быть внимательным при переносах всяких вещей раньше живших в инитах техники внутри spawn (например популярные "локи" вертушек) Подробно рассмотрю пока лишь хантер ниже
Самое основное это строчка с createVehicle. тут указывается класс того что мы спавним-B_MRAP_01_F и координаты куда мы это дело спавним-[8982.65,21377.73,0]. Рекомендую спавнить на ровной поверхности, под открытым небом и не вплотную к объектам. Далее vehicle_list pushBack _veh; Важный момент для работы скрипта-все текущие техники хранятся в массиве vehicle_list на сервере. Маркеры, удаление старой техники перед спавном новой-все работает через этот список. _veh setDir 140; тут понятно-азимут куда смотрит техника строчка которую не стоит забывать-техника по-умолчанию залочена _veh lock 0; дальше очистка и раздача инвентаря как и в любой ящик, боте и тп. Если есть отдельный sqf с раздачей можно написать его вызов например так call compile preprocessFileLineNumbers "units\inventory_nato.sqf";
Сообщение отредактировал BendeR - Пятница, 14.05.2021, 18:57
Что реализовано в текущей версии: основные фичи: -установка собственных источников сигнала на любые объекты -сигналы от работающих бпла и терминалов бпла -реалистичное затухание сигнала от расстояние -затухание от рельефа местности аналогичное использованному в TFAR -реалистичные настройки скрипта "по умолчанию" (разве что огибание сигналами поверхности можно еще поменьше выкрутить)
прочие фичи:
-распознавание свой/чужой (пока работает на всех объектах и привязано к стороне держащего девайс): https://www.youtube.com/watch?v=jhg0v_MAhgU -точная подстройка частоты на клавиши зероинга оружия -изменение "частоты" работы скрипта на клавиши шифт+зероинг оружия -изменение силы принимаемого сигнала при снятие/установки различных антенн (пока только 2 из 3х) -ну и автоматический выбор частот без повторений
Как добавить в миссию: 1. закинуть сам скрипт spectrume_device.sqf в папку с миссией 2. в init.sqf прописать вызов скрипта:
Код
[] execVM "spectrum_device.sqf";
3. в самом скрипте отредактировать список объектов с маячками и прочие настройки (подробности ниже) 4. раздать юнитам девайсы. Сами девайсы в арсеналах/редакторах скрыты, так что раздавать только скриптом, например так:
Код
this addWeapon "hgun_esd_01_F"; this addHandgunItem "muzzle_antenna_02_f";
для работы скрипта используется базовый классы "hgun_esd_01_F", "hgun_esd_01_antenna_01_F","hgun_esd_01_antenna_02_F","hgun_esd_01_antenna_03_F". Рекомендую использовать первый, тк остальные похоже созданы бисами для кампании DLC. на выбор можно дать антенны "muzzle_antenna_02_f" (коэффициент 1) и muzzle_antenna_03_f (коэффициент 0.6) Рекомендую использовать "hgun_esd_01_F" и просто цеплять нужные антенны и фонарик ("acc_esd_01_flashlight")
Ну и немного про настройку самого скрипта. По факту единственное что стоит поправить-массив sa_becons. Остальные опции опциональны)
собственно массивчик состоящий из элементов с 3мя параметрами (например [radio2,601.3,-30]): 1. имя объекта (radio2 в примере). Может быть любой объект для которого выполняются фунции position и getPosASL(например пустые тригеры я использвоал для создания сигналов с радиовышек на карте) 2. частота (в примере-601.3). все понятно, разве что можно воспользоваться встроеной в скрипт генерилкой частот задав -1. тогда частота будет выбрана рандомно при старте миссии (в диапазоне от sa_freq_min до sa_freq_max. 500МГц до 1ГГц по умолчанию) 3. сила сигнала (в примере -30 дБм). Если параметр не задан-сила сигнала будет равна дефолтному значению заданному переменной sa_base_signal_str (36 дБм по умолчанию, что соответствует мощности передатчика 4 Вт). Аналогично можно задать силу сигнала рандомно выставив параметр в -1 (в диапазоне от sa_min_random_str до sa_max_random_str. от 23 дБм до 36дБм по умолчанию)
Остальные опции
Сначала 2 закоменченые строчки:
#define SA_DISABLE_UAV_TERMINAL_DETECT 1 Если убрать коментарии (// в начале) отключает подсветку подключенных терминалов бпла. по умолчанию-подключенный терминал начинает светиться на той же частоте что и беспилотник к которому он зацеплен
#define SA_DISABLE_UAV_DETECT 1 Если убрать коментарии (// в начале) отключает подсветку всех бпла и бпа. Для использования необходимо так же раскоментить предыдущую строку
sa_tan_limit -тангенс антенны. Если по простому-отклонение от центра экрана пользователя в котором виден сигнал. По умолчанию 0.9
sa_scan_temp -шаг при "сканирование" (зажатой лкм)-тем с которой будет бежать прогресбар. 0.2 по умолчанию sa_time_k -начальная частота выполнения скрипта (0.5с по умолчанию). игрок может менять ее с шагом 0.1 от 0.1с до 1с клавишами шифт+зероинг оружия
sa_base_signal_str-сила сигнала по умолчанию (36 дБм). Используется как сила сигнала БПЛА, терминалов и сигналов с незаданой силой sa_min_random_str и sa_max_random_str -диапазон для сигналов с рандомной генерации силы (23 и 36 по умолчанию)
sa_freq_min и sa_freq_max -минимальная и максимальная частота для отображения девайсом и генерации частот (500МГц и 1 ГГц по умолчанию) sa_freq_window -ширина полоски выбора на экране девайса (20Гц по умолчанию) sa_freq_sel_step -шаг при точной настройке выбранной частоты (1Гц по умолчаниб)
sa_sens_min и sa_sens_max -минимальная и максимальная чувствительности девайса
Скрипт работает в большинстве своем на локальном клиенте. На сервере крутится только генератор пула текущих сигналов (и тот раз в 10 секунд). Судя по тестам даже выкрученная в минимум частота выполнения локальной части скрипта на производительность влияет не сильно-основную нагрузку дает сам девайс и связанные с его отрисовкой функции бисов. На текущий момент проведено 2 теста по 50 человек на 3 и 4 девайса и на 13 и 17 сигналов соответственно
обновление анализатора спетра v1.2 -добавлены реалистичные значения диапазонов, сил сигналов и тп -добавлены реалистичные затухания сигнала от расстояния и рельефа местности -реворк кода скрипта
сам скрипт в атаче поста выше
немного видео:
Сообщение отредактировал BendeR - Пятница, 22.05.2020, 17:01
-добавлен джам бпа -переработаны антенны (теперь имеют разный угол и коэффициент усиления сигнала) -добавлена тестовая поддержка импульсных сигналов. анализаторы генерируют подобные сигналы длительностью 10с в конце каждого сканирования -фикс бага с синхронизацией сигналов при подключение нового клиента -скрипт разделен на два-spectrum_device.sqf -основной скрипт (сигнал с беспилотников, терминалов, объектов с "маячками") и sa_ewar.sqf (скан свой-чужой, джам беспилотников)
Джам. Переключения с опознания свой-чужой на джам происходит заменой антенны. Каждый цикл джама-вероятность расчитывается индивидуально в зависимости от силы принимаемого сигнала. Можно джамить дронов и терминалы бпа. При джаме происходит отключение соединений цели и блокировка возможности подключений на время установленое переменной sa_jamm_time (5 секунд по умолчанию). Так же у дронов, чей класс не вписан в массив sa_ins_list, удаляются все заданные пользователем вейпойнты (после чего дроны зависают или начинают кружить на месте)
Сообщение отредактировал BendeR - Понедельник, 01.06.2020, 14:21
обновление ewar части скрипта анализатора v1.1 (только sa_ewar.sqf)
-бпа из списка sa_ins_list автоматически переключаются в автономный режим в случае джама. это позволяет оператору заранее задать вейпонты для бпа на случай электронного противодействия
обновление скриптов анализатора спектра v1.4a -добавлена совместимость с атачем для итемов с "маяком" (делает скрипт совместимым с ace cargo framework, фикс не требует подключения ace) -добавлена поддержка stringtable.xml (язык интерфейса скрипта без наличия этого файла в папке с миссией-английский. пока присутствует только русский перевод)