• Страница 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);   
   };
};
Сообщение отредактировал BendeR - Вторник, 30.04.2019, 17:55

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

Код
//[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))) 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;
               
         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 setMarkerShape "ICON";
                  _mkr setMarkerTypeLocal _m_icon;
                  _mkr setMarkerColorLocal _m_color;
                  _markers pushBackUnique _mkr;
               }foreach _objs;
            uiSleep(1);
            {
               deleteMarkerLocal _x;
            }foreach _markers;         
         };
      };
Сообщение отредактировал BendeR - Среда, 27.03.2019, 00:30

 
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)

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


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