• Страница 1 из 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Useless scripts
BendeR
Вторник, 26.03.2019, 23:44
Пост №: 1
Тут постепенно буду выкладывать свои говноскрипты. Мало ли какому ракоделу это окажется полезно

Скрипт удаления у бпла тепловизоров/меток тепловых целей на радаре/лцу

Полезно, если в сборке нет переопределенных классов БПЛА, тк простое удаление сенсоров у них можно обойти сборкой-разборкой и функцией "hack".

Код
if(!isServer) exitWith {};
//uav_param.sqf
//by [STELS]BendeR 03.2019

_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);   
    };
};




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

               _x disableAI "AUTOTARGET";
               _x disableAI "TARGET";
               _x disableAI "WEAPONAIM";
               _x disableAI "AUTOCOMBAT";
               _x disableAI "COVER";
               _x disableAI "CHECKVISIBLE";
               _x disableAI "AIMINGERROR";
               _x disableAI "SUPPRESSION";
                           
               _bpla pushBackUnique _x;
            };
         };
      } forEach allUnitsUAV;
      uiSleep(10);   
   };
};

Версия скрипта от 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];   

               _x disableAI "AUTOTARGET";
               _x disableAI "TARGET";
               _x disableAI "WEAPONAIM";
               _x disableAI "AUTOCOMBAT";
               _x disableAI "COVER";
               _x disableAI "CHECKVISIBLE";
               _x disableAI "AIMINGERROR";
               _x disableAI "SUPPRESSION";
                           
            };
            if((typeOf _x) in ["B_UGV_02_Demining_F"]) then{
               //ED1-D убираем лагучую дробь
               _x removeWeaponTurret ["Laserdesignator_mounted",[0]];
               _x removeMagazinesTurret ["15Rnd_12Gauge_Pellets",[0]];
            };
            _bpla pushBackUnique _x;
         };
      } forEach allUnitsUAV;
      uiSleep(10);   
   };
};
Сообщение отредактировал BendeR - Пятница, 29.05.2020, 12:28

Автор темы
 
BendeR
Вторник, 26.03.2019, 23:48
Пост №: 2
Еще один скрипт радара. Точнее сонара (который показывает SDV на карте). Легко переделывается в любой другой радар, отдельно коментировать не буду-подобных скриптов сотни. Единственное "но"-нет проверки на захват техники врагом

Updted 30.03.2020

Код
//[unit, side, types, distance, ["marker_icon","color"]] execVM local_radar.sqf;
//example for init.sqf: [boat01, OPFOR, ["B_SDV_01_F"], 100,["o_naval","ColorRed"]] execVM local_radar.sqf;
//v2 shitty script by [STELS]BendeR

if (isDedicated||((side player)!=(_this select 1))||(!hasInterface)) exitWith {};

   _g=[(_this select 0), (_this select 2),(_this select 3),(_this select 4)] spawn {
         private _unit       = _this select 0;
         private _classnames = _this select 1;
         private _dist       = _this select 2;
         private _m_icon      = (_this select 3) select 0;
         private _m_color      = (_this select 3) select 1;
         
         waituntil {!(_unit isEqualTo objNull)};
         
         while{alive _unit} do {
               private _Pos = getPosASL _unit;
               private _objs = _Pos nearEntities [_classnames,_dist];
               private _markers = [];
               {
                  private _str = format ["mrk_%2_%1", _forEachIndex, _unit];
                  private _mkr = createMarkerlocal [_str, getPos _x];
                  _mkr setMarkerShapeLocal "ICON";
                  _mkr setMarkerTypeLocal _m_icon;
                  _mkr setMarkerColorLocal _m_color;
                  _markers pushBackUnique _mkr;
               }foreach _objs;
            uiSleep(1);
            {
               deleteMarkerLocal _x;
            }foreach _markers;         
         };
      };
Сообщение отредактировал BendeR - Понедельник, 30.03.2020, 13:34

Автор темы
 
BendeR
Среда, 27.03.2019, 00:12
Пост №: 3
Томагавки
Чтобы ебануть по Тбилиси объекту с именем TARGET1 ванильной установкой Mk41 VLS с именем VLS создадим триггер (Активация "Кто угодно", Тип активации "Присутствует", "Только сервер") с телом "При активации" вида
Код
west reportRemoteTarget [TARGET1, 3600];
TARGET1 confirmSensorTarget [west, true];
VLS fireAtTarget [TARGET1, "weapon_vls_01"];


В условие зададим например нечто вида

Код
wmt_pub_frzState>=3//Срабатывание сразу после окончания фризтайма


Отмечу что в качестве цели лучше все же использовать объект. Если вам надо чтобы ракет прилетела в пустое определенное место-используйте объект-пустышку типа "Land_HelipadEmpty_F"

Ну и отмечу что 1 установка-одна ракета. Так что следующую лучше всего запустить другим тригером с условием вида

Код
!alive TARGET1//Работает только для уничножимой техники бтв. "Land_HelipadEmpty_F" не уничтожим


Ну и чтобы не дать игрокам доступа к лакомым ракетам, убивающим все в радиусе 200м, в активацию последнего тригера стоит добавить еще пару строк вида
Код
VLS removeMagazinesTurret["magazine_Missiles_Cruise_01_x18",[0]];
VLS removeMagazinesTurret["magazine_Missiles_Cruise_01_Cluster_x18",[0]];


+Стоит дописать соответствующие условности чтобы зрители феерверка не пострадали, а сторона которой принадлежит установка не использовала ее
Сообщение отредактировал BendeR - Среда, 27.03.2019, 09:50

Автор темы
 
BendeR
Воскресенье, 12.05.2019, 15:24
Пост №: 4
Действительно бесполезный скрипт морских мин из миссии Lost Cargo. Полезно для решения проблем с плавающей техникой. Мины разминируются через ACE-меню, как и обычные



Код

  if(isServer) then {
   plant_mine=0;
   mine_count=4;
   
   publicVariable "plant_mine";
   publicVariable "mine_count";

   _g=[] spawn {
      while{true} do {
         if(plant_mine==1) then {
            if (mine_count>0) then {
               mine_count=mine_count-1;
               publicVariable "mine_count";
               private _Pos = getPosASL sonar01;
               uiSleep(5);
               _mine = createMine ["UnderwaterMine", [ASLToAGL _Pos select 0,ASLToAGL _Pos select 1], [], 0];
               _mine setPosASL [_Pos select 0,_Pos select 1,(getPosASL _mine select 2) - 2];
            };
            plant_mine=0;
            publicVariable "plant_mine";
         };
         uiSleep(1);   
      };
   };
};

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

Автор темы
 
BendeR
Воскресенье, 13.10.2019, 21:30
Пост №: 5
Путем тестирования на кошках игроках проекта была допилена серия скриптов с выбором ванильного оружия (и оптики в случае со снайперами). Для примера выложу один из скриптов с выбором между 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 />
"]];   

_g=[] spawn {
   private   _local_equip_select_ons=0;
   private _update_briefing=False;
   private _str_equip="";
   
   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 {
      _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"];
                     };
         };
         
         _update_briefing=True;
         _local_equip_select_ons=local_equip_select;
      };
      
      
      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);
   };
};


В самой миссии необходимо обозвать нужных юнитов (задать поле "Имя переменной) с выбором экипировки
В скрипте необходимо подправить строчку со списком юнитов (я использую имена вида сторона_рольНомер):
Код
b_rpg_list=[b_rpg1,b_rpg2,b_rpg3,b_rpg4,b_rpg5,b_rpg6,b_rpg7,b_rpg8];


Еще один важный момент-юнитам должно раздаваться оружие и патроны/снаряды к нему не отличающиеся от списка удаляемого скриптом снаряжения перед выдачей нового. Само удаление в скрипте живет вот тут:

Код
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

Автор темы
 
BendeR
Суббота, 25.01.2020, 21:33
Пост №: 6
в продолжение темы. скрипты выбора снаряги ванильным снайперам ксат и нато из моих миссий. выложены в виде "как есть", сделаны аналогично скрипту выше
Сообщение отредактировал BendeR - Суббота, 25.01.2020, 21:40
Прикрепления: nato_sniper_sel.sqf (5.2 Kb) · csat_sniper_sel.sqf (5.8 Kb)

Автор темы
 
BendeR
Воскресенье, 08.03.2020, 13:10
Пост №: 7
Последняя на данный момент версия скрипта выбора снаряжения. Снаружи от старой отличается только отображением выбора поверх карты во время брифинга, а вот внутри достаточно много изменений-теперь все автоматически генерится из параметров скрипта select_main.sqf (в атаче). Это должно упростить не понимающим в скриптинге людям возможность использовать фичу.
Что он умеет:



Вот простой пример вызова для ванильного гранатометчика НАТО, делающий ровно тоже самое что и в примере который я скидывал в эту тему раньше-выбор между MAAWS Mod0 и PCML. Этот код нужно поместить в файл sqf и вызвать строчкой в init.sqf миссии (Например так: [] execVM "equip_select\select_nato.sqf";  )

Код
if(isDedicated||(!hasInterface)) exitWith {};
waitUntil { player == player };

//RPG
_units_list=[b_rpg1,b_rpg2,b_rpg3,b_rpg4,b_rpg5,b_rpg6,b_rpg7,b_rpg8];
_items=[
      ["launch_MRAWS_green_rail_F","launch_NLAW_F"]
];
   
_magazines=[
   [
      [["MRAWS_HEAT_F",1,2],["MRAWS_HE_F",2,2]],
      [["NLAW_F",2,2]]
   ]
];
_attachs=[
   [
      ["MRAWS_HEAT_F"],
      ["NLAW_F"]
   ]
];

[_units_list,_items,_magazines,_attachs] execVM "equip_select\select_main.sqf" ;


Ну и простой пример из того же файла select_nato.sqf с выбором пулеметов синими (MXM и LPMG). В целом аналогичен предыдущему. Но пару важных моментов на который стоит обратить внимание: бк пулеметов раздается в рюкзаки и разгрузки, а на сам пулемет дополнительно навешиваются сошки и прицел
ВАЖНО! Всегда проверяйте объем инвентаря. Все что не влезет-не выдастся

Код
//MG
_units_list=[b_mg1,b_mg2];
_items=[
      ["arifle_MX_SW_Black_F","MMG_02_black_F"]
];
   
_magazines=[
   [
      [["100Rnd_65x39_caseless_black_mag",4,2],["100Rnd_65x39_caseless_black_mag_Tracer",2,1],["100Rnd_65x39_caseless_black_mag",1,1]],
      [["130Rnd_338_Mag",4,2]]
   ]
];
_attachs=[
   [
      ["100Rnd_65x39_caseless_black_mag","optic_Holosight","bipod_01_F_blk"],
      ["130Rnd_338_Mag","optic_Holosight","bipod_01_F_blk"]
   ]
];

[_units_list,_items,_magazines,_attachs] execVM "equip_select\select_main.sqf" ;

Дальше немного нестандартные случаи
Для начала выбор прицела для снайпера в снайперской паре из миссии Insurgency. Стоит отметить что в итемсах у нас сама оптика, а в остальных переменных пусто (но оставлены скобки под сам выбор. собственно зачем этот пример тут).
ВАЖНО! Не пытайтесь в выбор пихать форму, шлемы, рюкзаки, разгрузки и тп-на них увы я проверки в скрипте не делал. Мб "пока не делал". С пнв, гпс и очками аналогично-в случае с ними работать мб и будет, но не проверялось.

Код
//SNIPER PAIR
_units_list=[b_pair_sniper1];
_items=[
      ["optic_LRPS","optic_AMS","optic_KHS_blk"]
];
_magazines=[
   [
      [],
      [],
      []
   ]
];
_attachs=[
   [
      [],
      [],
      []
   ]
];
[_units_list,_items,_magazines,_attachs] execVM "equip_select\select_main.sqf" ;

Или выбор подрывпакетов/клейморов саперам. Тут наоборот _items пустой (но все 3 опции выбора указаны как пустые строки), а вся раздача идет в инвентарь.

Код
//DEMOMAN
_units_list=[b_demo1,b_demo2,b_demo3,b_demo4,b_demo5,b_demo6];
_items=[
      ["","",""]
];
   
_magazines=[
   [
      [["ClaymoreDirectionalMine_Remote_Mag",1,2],["DemoCharge_Remote_Mag",1,2]],
      [["ClaymoreDirectionalMine_Remote_Mag",3,2]],
      [["DemoCharge_Remote_Mag",2,2]]
   ]
];
_attachs=[
   [
      [],
      [],
      []
   ]
];

[_units_list,_items,_magazines,_attachs] execVM "equip_select\select_main.sqf" ;

Ну и для тех кто не сошел с ума от скобок те же самые саперы, но имеющие сразу 2 выбра по 3 опции каждый-пакеты/клейморы и различные типы и сочетания мин (пп выбор, пт выбор и комбинированый дефолт). Аналогично делаются всякие выборы винтовка+отдельный выбор прицела

Код
//DEMOMAN
_units_list=[b_demo1,b_demo2,b_demo3];
_items=[
      ["","",""],
      ["","",""]
];
   
_magazines=[
   [
      [["ClaymoreDirectionalMine_Remote_Mag",1,2],["DemoCharge_Remote_Mag",1,2]],
      [["ClaymoreDirectionalMine_Remote_Mag",3,2]],
      [["DemoCharge_Remote_Mag",2,2]]
   ],
   [
      [["APERSMine_Range_Mag",3,2],["APERSTripMine_Wire_Mag",3,2],["ATMine_Range_Mag",1,2]],
      [["ATMine_Range_Mag",2,2],["SLAMDirectionalMine_Wire_Mag",2,2]],
      [["APERSMine_Range_Mag",5,2],["APERSTripMine_Wire_Mag",5,2]]
   ]
];
_attachs=[
   [
      [],
      [],
      []
   ],
   [
      [],
      [],
      []
   ]
];

[_units_list,_items,_magazines,_attachs] execVM "equip_select\select_main.sqf" ;

Ну и для осиливших собственно снайпер синих, с 3мя выборами-винтовка, оптика, пистолет. Из интересного-возможность выбирать между пистолетом с глушителем весом 5кг и "ничем" (да, можно выбор оставить пустым)

Код
//SNIPER
_units_list=[b_sniper1,b_sniper2,b_sniper3,b_sniper4,b_sniper5,b_sniper6,b_sniper7,b_sniper8];
_items=[
      ["arifle_MXM_Black_F","srifle_DMR_03_F"],
      ["optic_DMS","optic_SOS"],
      ["","hgun_Pistol_heavy_01_F"]
   ];
   
_magazines=[
   [
      [["30Rnd_65x39_caseless_black_mag",2,0],["30Rnd_65x39_caseless_black_mag",5,1],["30Rnd_65x39_caseless_black_mag_Tracer",2,1]],
      [["20Rnd_762x51_Mag",2,0],["20Rnd_762x51_Mag",6,1]]
   ],
   [],
   [
      [],
      [["11Rnd_45ACP_Mag",1,0]]
   ]
   ];
_attachs=[
   [
      ["30Rnd_65x39_caseless_black_mag"],
      ["20Rnd_762x51_Mag"]
   ],
   [],
   [
      [],
      ["11Rnd_45ACP_Mag","optic_MRD","muzzle_snds_acp"]
   ]
   ];

[_units_list,_items,_magazines,_attachs] execVM "equip_select\select_main.sqf" ;

Уже готовые скрипты встроенные в миссию можно посмотреть тут:
http://www.red-bear.ru/forum/96-1690-1
http://www.red-bear.ru/forum/20-1929-1
(миссию запускать через сетевую игру на сборке RBC TVT)

ПРОДОЛЖЕНИЕ и ссылки на сами скрипты
Сообщение отредактировал BendeR - Понедельник, 16.03.2020, 11:12

Автор темы
 
Kypatop
Воскресенье, 08.03.2020, 16:09
Пост №: 8
Спасибо !
Все предельно доступно и понятно !
Единственное, не смог понять почему в последнем примере в magazines между первым и третьим выбором, во втором выборе поставлена всего одна [], а не 2, т.к. оптики-то мы 2, получается, даем на выбор. Но, то уже разберусь на деле.  

 
BendeR
Понедельник, 16.03.2020, 11:07
Пост №: 9
Выбор снаряжения v1.6 (старый гайд все так же актуален)
-пофикшено расположение ui для разрешений больше FullHD
-добавлен необязательный параметр _uisize (0 по умолчанию). увеличивает или уменьшает ширину элемента с перечнем доступных опций в выборе. пример-выбор Мк20/промет из миссии Lost cargo:

Код
//Rifle
_units_list=[g_rifle1,g_rifle2,g_rifle3,g_rifle4,g_rifle5,g_rifle6,g_rifle7];
_items=[
      ["arifle_Mk20_F","arifle_MSBS65_F"]
];
   
_magazines=[
   [
      [["30Rnd_556x45_Stanag",2,0],["30Rnd_556x45_Stanag_Tracer_Green",3,1],["30Rnd_556x45_Stanag",4,1]],
      [["30Rnd_65x39_caseless_msbs_mag",2,0],["30Rnd_65x39_caseless_msbs_mag_Tracer",2,1],["30Rnd_65x39_caseless_msbs_mag",5,1]]
   ]
];
_attachs=[
   [
      ["optic_ACO_grn","30Rnd_556x45_Stanag"],
      ["optic_ACO_grn","30Rnd_65x39_caseless_msbs_mag"]
   ]
];

[_units_list,_items,_magazines,_attachs,0.1] execVM "equip_select\select_main.sqf" ;


-добавлен необязательный параметр _show_inventory_text (false по умолчанию). отображение текстовых описаний к тому что в разделе _magazines. полезно например на саперах из примера . вариант строки вызова скрипта с этим параметром:


Код
[_units_list,_items,_magazines,_attachs,0,true] execVM "equip_select\select_main.sqf" ;

Сам скрипт
Пример выборов для ванильных натовцев
Сообщение отредактировал BendeR - Понедельник, 16.03.2020, 11:55

Автор темы
 
BendeR
Среда, 08.04.2020, 13:13
Пост №: 10
по просьбам некоторых
выбор техники для одной из сторон
пока что "сложная" версия. смысла делать модуль или сильно упрощать не вижу, тк один фиг каждый раз делается под конкретную миссию и от написания sqf-ки расстановки и раздачи инвентаря самой техники уйти не получится (максимум можно сделать экспорт на подобии экспорта инвентаря из арсенала)

в init.sqf:

Код
[] execVM "setups\init_setup.sqf";   
[] execVM "setups\local_markers.sqf";




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";
            
            _select_setup_ons=select_setup;
         };
         uiSleep(1);   
      };
};




local_markers.sqf


Код
//Vehicle setup by [STELS]BendeR

waitUntil { !isNil {player} };
if (isDedicated||((side player)!=BLUFOR)) exitWith {};

mkrs_vehicle_list=[];
vehicle_list_ons=[];

_g=[] spawn {
private   _select_setup_ons=0;
private ["_mkr","_mkr_name","_vehname","_pos"];

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 {
         waitUntil {!(vehicle_list_ons isEqualTo vehicle_list)};
         vehicle_list_ons=vehicle_list;
         {
            deleteMarkerLocal _x;
         }foreach mkrs_vehicle_list;
         mkrs_vehicle_list=[];
         {
            _pos=position _x;
            _vehname = format ["%1", getText (configFile >> "CfgVehicles" >> (typeOf _x) >> "displayName") ];
            _mkr_name=format ["MKR_VEHICLE_%1_%2", floor ((_pos select 0) * 10), floor ((_pos select 1) * 10)];
            _mkr=createMarkerLocal[_mkr_name,_pos];
            _mkr setMarkerShapeLocal "ICON";
            _mkr setMarkerTypeLocal "mil_box";
            _mkr setMarkerColorLocal "ColorYellow";
            _mkr setMarkerTextLocal _vehname;
            mkrs_vehicle_list pushBack _mkr;
         }foreach vehicle_list;
         _select_setup_ons=select_setup;
      };
      uiSleep(1);
   };



ну и в briefing.sqf добавить нечто вроде:

Код
if(player==b_ks) then{
player createDiaryRecord ["diary", ["Выбор техники","
<execute expression='select_setup=1;publicVariable ""select_setup"";'>Сетап 1:</execute><br />
<execute expression='select_setup=2;publicVariable ""select_setup"";'>Сетап 2:</execute><br />
<execute expression='select_setup=3;publicVariable ""select_setup"";'>Сетап 3:</execute><br />
<execute expression='select_setup=4;publicVariable ""select_setup"";'>Сетап 4:</execute><br />
"] ];
}




ну и самое важное-спавнилки нашей техники. те самые setup1.sqf и тд.
я возьму для примера первый сетам из миссии Zaros

Код
//Hunter
_veh=createVehicle["B_MRAP_01_F",[8982.65,21377.73,0],[],0,"CAN_COLLIDE"];
vehicle_list pushBack _veh;
_veh setDir 140;
_veh lock 0;
clearItemCargoGlobal _veh;
clearMagazineCargoGlobal  _veh;
clearWeaponCargoGlobal  _veh;
clearBackpackCargoGlobal  _veh;
_veh addItemCargoGlobal ["30Rnd_65x39_caseless_black_mag",7];
_veh addItemCargoGlobal ["30Rnd_65x39_caseless_black_mag_Tracer",3];
_veh addItemCargoGlobal ["100Rnd_65x39_caseless_black_mag",1];
_veh addItemCargoGlobal ["100Rnd_65x39_caseless_black_mag_Tracer",1];
_veh addItemCargoGlobal ["HandGrenade",5];
_veh addItemCargoGlobal ["SmokeShell",4];
_veh addItemCargoGlobal ["20Rnd_762x51_Mag",1];
_veh addItemCargoGlobal ["rhs_weap_M136_vanilla",1];

//Hunter HMG
_veh=createVehicle["B_MRAP_01_hmg_F",[8977.028,21372.156,0],[],0,"CAN_COLLIDE"];
vehicle_list pushBack _veh;
_veh setDir 140;
_veh lock 0;
clearItemCargoGlobal _veh;
clearMagazineCargoGlobal  _veh;
clearWeaponCargoGlobal  _veh;
clearBackpackCargoGlobal  _veh;

//HEMTT
_veh=createVehicle["B_Truck_01_transport_F",[9044.469,21420.42,0],[],0,"CAN_COLLIDE"];
vehicle_list pushBack _veh;
_veh setDir 140;
_veh lock 0;
clearItemCargoGlobal _veh;
clearMagazineCargoGlobal  _veh;
clearWeaponCargoGlobal  _veh;
clearBackpackCargoGlobal  _veh;
_veh addItemCargoGlobal ["30Rnd_65x39_caseless_black_mag",7];
_veh addItemCargoGlobal ["30Rnd_65x39_caseless_black_mag_Tracer",3];
_veh addItemCargoGlobal ["100Rnd_65x39_caseless_black_mag",1];
_veh addItemCargoGlobal ["100Rnd_65x39_caseless_black_mag_Tracer",1];
_veh addItemCargoGlobal ["HandGrenade",5];
_veh addItemCargoGlobal ["SmokeShell",4];
_veh addItemCargoGlobal ["20Rnd_762x51_Mag",1];

//Blackfoot
_veh = createVehicle["B_Heli_Attack_01_dynamicLoadout_F",[9006.004,21386.99,0],[],0,"CAN_COLLIDE"];
vehicle_list pushBack _veh;
_veh setDir 140;
_veh lock 0;
//_veh setVariable ["ace_rearm_blacklist", ["PylonMissile_1Rnd_AAA_missiles","PylonMissile_1Rnd_LG_scalpel","PylonRack_12Rnd_PG_missiles","PylonRack_12Rnd_missiles"]];///!!!!!!!!!!!!!
_veh setPylonLoadOut["PylonLeft1","PylonRack_12Rnd_missiles"];
_veh setPylonLoadOut["PylonLeft2",""];
_veh setPylonLoadOut["PylonLeft3",""];
_veh setPylonLoadOut["PylonRight1",""];
_veh setPylonLoadOut["PylonRight2",""];
_veh setPylonLoadOut["PylonRight3",""];
clearItemCargoGlobal _veh;
clearMagazineCargoGlobal  _veh;
clearWeaponCargoGlobal  _veh;
clearBackpackCargoGlobal  _veh;
_veh addBackpackCargoGlobal ["B_Parachute",2];
_veh setFuel 0;
_veh enableVehicleSensor ["ActiveRadarSensorComponent",false];  
_veh enableVehicleSensor ["VisualSensorComponent",false];  
_veh enableVehicleSensor ["IRSensorComponent",false];
_veh addEventHandler ["Local", {  
   params ["_veh", "_isLocal"];
   if(_isLocal) then{
      _veh enableVehicleSensor "ActiveRadarSensorComponent",false;  
      _veh enableVehicleSensor ["VisualSensorComponent",false];  
      _veh enableVehicleSensor ["IRSensorComponent",false];
   };
}];

//Panther
_veh = createVehicle["B_APC_Tracked_01_rcws_F",[9030.478,21408.445,0],[],0,"CAN_COLLIDE"];
vehicle_list pushBack _veh;
_veh setDir 140;
_veh lock 0;
clearItemCargoGlobal _veh;
clearMagazineCargoGlobal  _veh;
clearWeaponCargoGlobal  _veh;
clearBackpackCargoGlobal  _veh;
_veh addItemCargoGlobal ["30Rnd_65x39_caseless_black_mag",7];
_veh addItemCargoGlobal ["30Rnd_65x39_caseless_black_mag_Tracer",3];
_veh addItemCargoGlobal ["100Rnd_65x39_caseless_black_mag",1];
_veh addItemCargoGlobal ["100Rnd_65x39_caseless_black_mag_Tracer",1];
_veh addItemCargoGlobal ["HandGrenade",5];
_veh addItemCargoGlobal ["SmokeShell",4];
_veh addItemCargoGlobal ["20Rnd_762x51_Mag",1];
_veh addBackpackCargoGlobal ["B_Kitbag_mcamo",1];
_veh addItemCargoGlobal ["ToolKit",1];

//Rhino
_veh = createVehicle["B_AFV_Wheeled_01_cannon_F",[9058.388,21428.793,0],[],0,"CAN_COLLIDE"];
vehicle_list pushBack _veh;
_veh setDir 140;
_veh lock 0;
_veh removeMagazinesTurret ["4Rnd_120mm_LG_cannon_missiles",[0]];
//_veh setVariable ["ace_rearm_blacklist", ["4Rnd_120mm_LG_cannon_missiles"]];///!!!!!!!!!!!!!
clearItemCargoGlobal _veh;
clearMagazineCargoGlobal  _veh;
clearWeaponCargoGlobal  _veh;
clearBackpackCargoGlobal  _veh;
_veh addBackpackCargoGlobal ["B_Kitbag_mcamo",1];
_veh addItemCargoGlobal ["ToolKit",1];

//BPLA
_veh = createVehicle["B_UAV_02_dynamicLoadout_F",[27170,24922.9,0],[],0,"CAN_COLLIDE"];
vehicle_list pushBack _veh;
_veh setDir 222.192;
_veh lock 0;
_veh setPylonLoadOut["pylons1","PylonMissile_1Rnd_Mk82_F"];
_veh setPylonLoadOut["pylons2","PylonRack_7Rnd_Rocket_04_HE_F"];
_veh removeWeaponTurret ["Laserdesignator_mounted",[0]];

clearItemCargoGlobal _veh;
clearMagazineCargoGlobal  _veh;
clearWeaponCargoGlobal  _veh;
clearBackpackCargoGlobal  _veh;
_veh setFuel 1;
_veh enableVehicleSensor ["ActiveRadarSensorComponent",false];
_veh enableVehicleSensor ["VisualSensorComponent",false];
_veh enableVehicleSensor ["IRSensorComponent",false];
//_veh enableVehicleSensor ["PassiveRadarSensorComponent",false];

_g=[_veh] spawn {
   params ["_veh"];
   waitUntil {(!isNil("WMT_Global_LeftTime"))&&(WMT_pub_frzState>=3)};
   uiSleep(1800);
   if(alive _veh) then{
      createVehicleCrew _veh;
   };
};



спавн хантера с инвентарем:

Код
//Hunter
_veh=createVehicle["B_MRAP_01_F",[8982.65,21377.73,0],[],0,"CAN_COLLIDE"];
vehicle_list pushBack _veh;
_veh setDir 140;
_veh lock 0;
clearItemCargoGlobal _veh;
clearMagazineCargoGlobal  _veh;
clearWeaponCargoGlobal  _veh;
clearBackpackCargoGlobal  _veh;
_veh addItemCargoGlobal ["30Rnd_65x39_caseless_black_mag",7];
_veh addItemCargoGlobal ["30Rnd_65x39_caseless_black_mag_Tracer",3];
_veh addItemCargoGlobal ["100Rnd_65x39_caseless_black_mag",1];
_veh addItemCargoGlobal ["100Rnd_65x39_caseless_black_mag_Tracer",1];
_veh addItemCargoGlobal ["HandGrenade",5];
_veh addItemCargoGlobal ["SmokeShell",4];
_veh addItemCargoGlobal ["20Rnd_762x51_Mag",1];
_veh addItemCargoGlobal ["rhs_weap_M136_vanilla",1];

Сообщение отредактировал BendeR - Пятница, 14.05.2021, 18:57

Автор темы
 
BendeR
Вторник, 19.05.2020, 12:12
Пост №: 11
Скрипт воскрешения работы анализатора спектра из DLC Contact
v1.2

ВЕРСИЯ 1.3 самого скрипта 2мя постами ниже
+

версия электронного противодействия v1.1

Старое видео с первых тестов:


Что реализовано в текущей версии:
основные фичи:
-установка собственных источников сигнала на любые объекты
-сигналы от работающих бпла и терминалов бпла
-реалистичное затухание сигнала от расстояние
-затухание от рельефа местности аналогичное использованному в TFAR
-реалистичные настройки скрипта "по умолчанию" (разве что огибание сигналами поверхности можно еще поменьше выкрутить)

прочие фичи:

Как добавить в миссию:
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. Остальные опции опциональны)

Код
sa_beacons=[[i_ko1, -1,-1],[i_ko2,-1,-1],[i_ko3,-1,-1],[radio1,-1,-10],[radio2,-1,-20],[radio3,-1,-30],[radio4,-1,,10],[radio5,-1,-30],[radio6,-1,-20],[radio7,-1,-30],[radio8,-1,-30]];

собственно массивчик состоящий из элементов с 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дБм по умолчанию)

Остальные опции


Скрипт работает в большинстве своем на локальном клиенте. На сервере крутится только генератор пула текущих сигналов (и тот раз в 10 секунд). Судя по тестам даже выкрученная в минимум частота выполнения локальной части скрипта на производительность влияет не сильно-основную нагрузку дает сам девайс и связанные с его отрисовкой функции бисов. На текущий момент проведено 2 теста по 50 человек на 3 и 4 девайса и на 13 и 17 сигналов соответственно

Сам скрипт не зависит от сборки/платформы

LINK на миссию-пример (сборка TvT RBC)
Сообщение отредактировал BendeR - Среда, 03.06.2020, 17:40
Прикрепления: spectrum_device.sqf (11.0 Kb)

Автор темы
 
BendeR
Четверг, 21.05.2020, 17:35
Пост №: 12
обновление анализатора спетра v1.2
-добавлены реалистичные значения диапазонов, сил сигналов и тп
-добавлены реалистичные затухания сигнала от расстояния и рельефа местности
-реворк кода скрипта

сам скрипт в атаче поста выше

немного видео:
Сообщение отредактировал BendeR - Пятница, 22.05.2020, 17:01

Автор темы
 
BendeR
Понедельник, 01.06.2020, 14:10
Пост №: 13
обновление анализатора спетра v1.3

-добавлен джам бпа
-переработаны антенны (теперь имеют разный угол и коэффициент усиления сигнала)
-добавлена тестовая поддержка импульсных сигналов. анализаторы генерируют подобные сигналы длительностью 10с в конце каждого сканирования
-фикс бага с синхронизацией сигналов при подключение нового клиента
-скрипт разделен на два-spectrum_device.sqf -основной скрипт (сигнал с беспилотников, терминалов, объектов с "маячками") и sa_ewar.sqf (скан свой-чужой, джам беспилотников)

видео с тестов джама дронов:


ссылка миссию-пример

Джам.
Переключения с опознания свой-чужой на джам происходит заменой антенны.
Каждый цикл джама-вероятность расчитывается индивидуально в зависимости от силы принимаемого сигнала.
Можно джамить дронов и терминалы бпа. При джаме происходит отключение соединений цели и блокировка возможности подключений на время установленое переменной sa_jamm_time (5 секунд по умолчанию). Так же у дронов, чей класс не вписан в массив sa_ins_list, удаляются все заданные пользователем вейпойнты (после чего дроны зависают или начинают кружить на месте)
Сообщение отредактировал BendeR - Понедельник, 01.06.2020, 14:21
Прикрепления: 7736201.sqf (11.9 Kb) · sa_ewar.sqf (7.8 Kb)

Автор темы
 
BendeR
Среда, 03.06.2020, 17:38
Пост №: 14
обновление ewar части скрипта анализатора v1.1
(только sa_ewar.sqf)

-бпа из списка sa_ins_list автоматически переключаются в автономный режим в случае джама. это позволяет оператору заранее задать вейпонты для бпа на случай электронного противодействия

пояснительное видео:


бонусом английская версия скрипта

русская в атаче поста
Сообщение отредактировал BendeR - Среда, 03.06.2020, 17:39
Прикрепления: 7672947.sqf (8.1 Kb)

Автор темы
 
BendeR
Понедельник, 15.06.2020, 18:20
Пост №: 15
обновление скриптов анализатора спектра v1.4a
-добавлена совместимость с атачем для итемов с "маяком" (делает скрипт совместимым с ace cargo framework, фикс не требует подключения ace)
-добавлена поддержка stringtable.xml (язык интерфейса скрипта без наличия этого файла в папке с миссией-английский. пока присутствует только русский перевод)

ссылка на гуглдрайв

Сообщение отредактировал BendeR - Понедельник, 15.06.2020, 18:22

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