• Страница 1 из 1
  • 1
Форум » Мастерская » В помощь картоделу » Скрипты » Useless scripts (Некоторые бес_полезные скрипты)
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
Оффлайн
Пользователь
по просьбам некоторых
выбор техники для одной из сторон
пока что "сложная" версия. смысла делать модуль или сильно упрощать не вижу, тк один фиг каждый раз делается под конкретную миссию и от написания 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 - Среда, 08.04.2020, 13:44

 
BendeR
Вторник, 19.05.2020, 12:12
Оффлайн
Пользователь
Скрипт воскрешения работы анализатора спектра из 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
Оффлайн
Пользователь
обновление анализатора спетра v1.2
-добавлены реалистичные значения диапазонов, сил сигналов и тп
-добавлены реалистичные затухания сигнала от расстояния и рельефа местности
-реворк кода скрипта

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

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

 
BendeR
Понедельник, 01.06.2020, 14:10
Оффлайн
Пользователь
обновление анализатора спетра 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
Оффлайн
Пользователь
обновление 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
Оффлайн
Пользователь
обновление скриптов анализатора спектра v1.4a
-добавлена совместимость с атачем для итемов с "маяком" (делает скрипт совместимым с ace cargo framework, фикс не требует подключения ace)
-добавлена поддержка stringtable.xml (язык интерфейса скрипта без наличия этого файла в папке с миссией-английский. пока присутствует только русский перевод)

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

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

 
Форум » Мастерская » В помощь картоделу » Скрипты » Useless scripts (Некоторые бес_полезные скрипты)
  • Страница 1 из 1
  • 1
Поиск:


Правила чата
Мини-чат
+Мини-чат
0