• Страница 2 из 2
  • «
  • 1
  • 2
Форум » Мастерская » В помощь картоделу » Скрипты » Useless scripts (Некоторые бес_полезные скрипты)
Useless scripts
BendeR
Суббота, 18.07.2020, 11:02
Оффлайн
Пользователь
скрипт выбора времени из миссии ФАБРИКА

Код
time_set=[[13,00],[00,00]];
private _who_can_select=[b_ks];

time_select=1;
private _str_time="";
private ["_display","_ctrl","_ctrlButton"];

if(isServer) then{
   _g=[] spawn {
      private _time_select_ons=0;
      private _new_date_time=[];
      waitUntil {(!isNil("WMT_pub_frzTimeLeft"))&&(!isNil("wmt_param_PrepareTime"))&&(!isNil("WMT_pub_frzState"))};
      waitUntil {!isNil("WMT_pub_frzBeginDate")};
      while{(WMT_pub_frzTimeLeft>=(wmt_param_PrepareTime*60))&&(WMT_pub_frzState<3)} do {
         if(time_select!=_time_select_ons) then {
            _new_date_time=date select [0,3];
            _new_date_time append (time_set select time_select);
            WMT_pub_frzBeginDate=_new_date_time;
            publicVariable "WMT_pub_frzBeginDate";
            _time_select_ons=time_select;
         };
         uiSleep(1);
      };
   };
};

//Брифинг и прочие красивости
if(isDedicated||(!hasInterface)) exitWith {};
waitUntil { player == player };
player createDiarySubject ["ts_brf", "ВЫБОР ВРЕМЕНИ"];
player createDiaryRecord ["ts_brf", ["Пояснения","Выбор работает только на брифинге.<br />Рекомендуется выбирать через 30с после прогрузки на брифинг и не позже чем за 10с до старта в игру.<br />Текущий выбор-самая верхняя строчка в разделе Выбранное время<br />Раздел Инструктаж-Мое отделение при работе скрипта не обновляется"]];
{   
   _str_time="";
   if((_x select 0)<10) then {_str_time="0";};
   _str_time=_str_time+str (_x select 0)+":";
   if((_x select 1)<10) then {_str_time=_str_time+"0";};
   _str_time=_str_time+str (_x select 1);
   if(player in _who_can_select) then{
    _str_time="<execute expression='time_select="+str(_forEachIndex)+";publicVariable ""time_select"";'>"+_str_time+"</execute>";
   };
   player createDiaryRecord ["ts_brf", ["Выбор времени",_str_time]];
} foreach time_set;

if(!(player in _who_can_select)) exitWith{};
   _display = uinamespace getVariable ["RscDiary",displaynull];
   if (isnull _display) exitwith {};
   disableSerialization;
   uisleep 1;
   _ctrl = _display ctrlCreate ["RscText", -1];
   _ctrl ctrlSetPosition [0.5, safezoneY+0.07, 0.07, 0.05];
   _ctrl ctrlSetBackgroundColor [0, 0, 0, 0.7];
   _ctrl ctrlSetText "00:00";
   _ctrl ctrlCommit 0;
   
   _ctrlButton = _display ctrlCreate ["RscShortcutButton", -1];
   _ctrlButton ctrlSetPosition [0.57, safezoneY+0.07, 0.24, 0.05];
   _ctrlButton ctrlSetStructuredText parseText "<t align='center'>Сменить время</t>";
   _ctrlButton buttonSetAction format["
   time_select=time_select-1;
   if(time_select<0)then{time_select=%1};
   publicVariable ""time_select"";
   ",(count time_set)-1];
   _ctrlButton ctrlCommit 0;

_g2=[_ctrl,_ctrlButton] spawn {
   params ["_ctrl","_ctrlButton"];
   private _str_sel_time="";
   private _time_select_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(time_select!=_time_select_ons) then {
         _str_sel_time="";
         if(((time_set select time_select) select 0)<10) then {_str_sel_time="0";};
         _str_sel_time=_str_sel_time+str ((time_set select time_select) select 0)+":";
         if(((time_set select time_select)select 1)<10) then {_str_sel_time=_str_sel_time+"0";};
         _str_sel_time=_str_sel_time+str ((time_set select time_select) select 1);
         player createDiaryRecord ["ts_brf", ["Выбранное временя",_str_sel_time]];
         
         _ctrl ctrlSetText _str_sel_time;
         _ctrl ctrlCommit 0;
         
         _time_select_ons=time_select;
      };
      uiSleep(1);
   };
   ctrlDelete _ctrl;
   ctrlDelete _ctrlButton;
};


все как обычно:
1. поменять варианты выбора в первой строчке в формате [часы.минуты] (time_set)
2. присвоить "имя переменной" юнитам которые могут выбирать и вписать во вторую (_who_can_select)
3. вызвать это дело в init.sqf: [] execVM "time_select.sqf";

известны "глюки":
1) при работе скрипта в начале (обычно на хардфризтайме) можно увидить как несколько раз меняется время. это связано с работой платформы WMT, на функционал никак не влияет
2) не тестировано если в списке тех кто может делать выбор есть несколько юнитов (за ненадобностью). в теории-тот кто последний сделает выбор на брифинге тот и прав
Сообщение отредактировал BendeR - Суббота, 18.07.2020, 11:08

 
BendeR
Воскресенье, 02.08.2020, 13:32
Оффлайн
Пользователь
маленький фикс скрипта анализатора спектра
(v1.1a версия sa_ewar.sqf)
-фикс UI

https://drive.google.com/drive....qdQjDr8
Сообщение отредактировал BendeR - Воскресенье, 02.08.2020, 13:32

 
BendeR
Четверг, 06.08.2020, 15:33
Оффлайн
Пользователь
Собака в виде демонстрационной не запакованной миссии

https://drive.google.com/drive....sharing

Выложена "как есть", написана мб через жопу но в целом как показали тесты на ТВТ1 и ТВТ2-работает. Если нужно нечто прям идеальное-юзать не рекомендую.

Зависимости: WMT, ACE, Taskforce (запускалась на сборках твт и IF, остальные не проверял)

Маленький мануал как запилить в свое поделие



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


Кнопки:


готовый код для брифинга для ленивых

Код
player createDiaryRecord ["diary", ["! СОБАКА (функционал и условности)","
      Скрипт воскрешающий функционал ванильного юнита собаки v1.1 by [STELS]BendeR<br />
      <br />
      ЗАПРЕЩЕНО:<br />
      -заходить в воду (собака не плавает, а бегает по дну)<br />
      -взаимодействовать с объектами через ace-меню<br />
      <br />
      ОГРАНИЧЕНИЯ:<br />
      -Возможность 'прямой речи' taskforce radio у собаки отключена до попадания в канал 200-х. Слышать что вам говорят вы можете как обычно<br />
      -карта отключена после окончания брифинга<br />
      -нет возможности садиться в технику<br />
      -бесконечная стамина<br />
      -нет возможности ходить назад (стоит быть осторожным в узких коридорах)<br />
      <br />
      УПРАВЛЕНИЕ:<br />
      -звуки на клавиши 1-2-3, переключение громкости-Tab<br />
      -атака на клавишу 'выстрел' (действует только после фризтайма, нет анимации-только звук). требует 2-3 атаки чтобы выключить цель. Действует только на пехоту<br />
      -сесть/встать на клавишу 'сесть'<br />
      -имитация нюха через тепловизор (клавиша включения пнв). Обозор затемняется если смотреть против ветра (отображение направления ветра Shift+K по умолчанию). В этом режиме работает подсветка мин и растяжек в поле зрения в радиусе 8м<br />
   "] ];

Видео с ТВТ (старая версия скрипта):

Warning! собака была обновлена. подробности в посте ниже
Сообщение отредактировал BendeR - Понедельник, 22.02.2021, 19:20

 
BendeR
Понедельник, 10.08.2020, 21:36
Оффлайн
Пользователь
хотфикс скрипта анализатора спектра
(v1.1b версия sa_ewar.sqf)
-фикс фикса UI

https://drive.google.com/drive....qdQjDr8

 
BendeR
Вторник, 11.08.2020, 10:30
Оффлайн
Пользователь
хотфикс скрипта анализатора спектра
(v1.1с версия sa_ewar.sqf)
-фикс фикса фикса UI (баг с перезаходом)

https://drive.google.com/drive/folders/11j-1GZAlLP5uWU0jrzp1A7_7tqdQjDr8

 
BendeR
Суббота, 15.08.2020, 15:01
Оффлайн
Пользователь
обновление скрипта анализатора спектра
v1.4b
-добавлена дополнительная синхронизация сигналов после старта в игру для тормозящих на прогрузе
-синхронизация для переконектившихся теперь работает только в мп
-в sa_ewar убраны забытые отладочные строки

LINK

 
BendeR
Суббота, 29.08.2020, 14:47
Оффлайн
Пользователь
v1.5 (обновлены обе части скрипта, версия файлов теперь одна)
-при сканирование свой-чужой теперь отображается сторона видимого сигнала терминала бпа
-импульсные сигналы (генерируемые анализаторами при сканирование/джаме) теперь корректно удаляются
-убрано сканирование свой-чужой без установленной антенны

LINK

 
BendeR
Понедельник, 31.08.2020, 09:57
Оффлайн
Пользователь
Не совсем скрипт.
Туториал для анализатора спектра: https://steamcommunity.com/sharedfiles/filedetails/?id=2214415193
Полезно для тех кто хочет пощупать все функции в сингле и понять надо ли оно вам-вписываться на такой слот на твт.

Сообщение отредактировал BendeR - Понедельник, 31.08.2020, 10:08

 
BendeR
Вторник, 01.09.2020, 20:11
Оффлайн
Пользователь
анализатор v1.5a
-еще чутка уменьшена нагрузка от сигналов-импульсов
-фикс для отключения импульсных сигналов через параметр SA_DISABLE_SPIKE_SIGNALS
-подредактирован stringtable.xml

LINK

 
BendeR
Вторник, 08.09.2020, 12:06
Оффлайн
Пользователь
анализатор v1.6
-фикс джама
-добавлены импульсные сигналы джаму аналогично со сканом
-фикс сообщений если не используется stringtable.xml

LINK

 
BendeR
Четверг, 19.11.2020, 17:24
Оффлайн
Пользователь
Скрипт выпила арткомпов у всего живого из миссии Марксмена Загнанные в угол

Проблема в том что WMT в некоторые моменты перевыставляет enableEngineArtillery в true, поэтому нужен такой костыль.
Публикую этот кусок кода потому что этот же костыль позволяет при желание рисовать на экране арткомпа, добавлять и удалять элементы пользовательского интерфейса на нем и тп (пример, правда для окошка gps, есть в миссии Ion storm).

Код
_g=[] spawn {
   if(isDedicated||(!hasInterface)) exitWith {};
   enableEngineArtillery false;
   while{true} do {
      if(shownArtilleryComputer) then {
         enableEngineArtillery false;
         {
            if (!isNull (_x displayCtrl 500)) then {_x closeDisplay 0;};
         } forEach (allDisplays + (uiNamespace getVariable "IGUI_Displays"));
      };
      uisleep 0.5;
   };
};


можно воткнуть прямо в инит.скф, можно вызвать от туда же как отдельный файл
Сообщение отредактировал BendeR - Четверг, 19.11.2020, 17:30

 
BendeR
Пятница, 18.12.2020, 16:07
Оффлайн
Пользователь
Небольшой апдейт по скрипту выпила ванильного функционала беспилотников

-скрипт слегка переработан дабы исключить возможность "оживание" функций ии
-в скрипт добавлен автоматический фикс забаговавшегося бпа если контролирующий его игрок погибает


Код
if(!isServer) exitWith {};
fnc_uav_runtime={
   params ["_unit",["_disable_ai",false]];
   private _sensors=[];
   private _controller=objNull;
   while{alive _unit} do {
      if(_disable_ai&&(_unit checkAIFeature "AUTOCOMBAT")) then {
         {
            _unit disableAI _x;
         }forEach ["AUTOTARGET","TARGET","WEAPONAIM","AUTOCOMBAT","COVER","CHECKVISIBLE","AIMINGERROR","SUPPRESSION"];
      };
      _sensors=_unit isVehicleSensorEnabled "ManSensorComponent";
      if(count _sensors>0) then {
         if(_unit isVehicleSensorEnabled "ManSensorComponent" select 1) then {
            _unit enableVehicleSensor ["IRSensorComponent",false];
            _unit enableVehicleSensor ["ManSensorComponent",false];   
         };
      };

      {
         if(_forEachIndex%2==0) then {
            if(_x!=objNull) then {
               if(!((alive _x)&&(isPlayer _x))) then {
                  _x connectTerminalToUAV objNull;
               };
            };
         };
      } forEach UAVControl _unit;
      uiSleep(10);
   };
};

[] 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","B_Static_Designator_01_F"])then{//Сюда вписать свои классы               
               _x disableTIEquipment true; 
               _x removeWeaponTurret ["Laserdesignator_mounted",[0]];
               [_x] spawn fnc_uav_runtime;
               _bpla pushBackUnique _x;
            };
            if((typeOf _x) in ["B_UGV_01_rcws_F","B_UGV_01_F","O_UGV_01_F","O_UGV_01_rcws_F","B_GMG_01_A_F"])then{//Сюда вписать свои классы
               //Стомперы и им подобные (без лцу)
               _x disableTIEquipment true; 
               [_x, true] spawn fnc_uav_runtime;                        
               _bpla pushBackUnique _x;
            };
         };
      } forEach allUnitsUAV;
      uiSleep(10);   
   };
};

 
BendeR
Вторник, 12.01.2021, 20:56
Оффлайн
Пользователь
Фикс неработающих в мультиплеере инсигний юнитов

О самих инсигниях:


Проблема в том что функция BIS_fnc_setUnitInsignia вызывает не совместимую с мультиплеером функцию setObjectTextureGlobal (тупо не работает в мп). Те результат работы вы увидите только в сингле/редакторе

Вместо BIS_fnc_setUnitInsignia создаем в папке с миссией файлик set_unit_insignia.sqf с содержимым:

Код
params ["_unit", "_class"];

if(!hasInterface) exitWith{};

private _cfgInsignia = [["CfgUnitInsignia", _class], configNull] call BIS_fnc_loadClass;

if (configName _cfgInsignia != _class) exitWith
{
   [
   "'%1' is not found in CfgUnitInsignia. Available classes: %2",
   _class,
   ("true" configClasses (configFile >> "CfgUnitInsignia") apply {configName _x})
   +
   ("true" configClasses (missionConfigFile >> "CfgUnitInsignia") apply {configName _x})
   +
   ("true" configClasses (campaignConfigFile >> "CfgUnitInsignia") apply {configName _x})
   ]
   call BIS_fnc_error;
   false
};

private _set = false;

{
   if (_x == "insignia") exitWith
   {    
      _unit setObjectMaterial [_forEachIndex, "\a3\data_f\default.rvmat"];
      _unit setObjectTexture [_forEachIndex, getText (_cfgInsignia >> "texture")];
      _set = true;
   };
}
forEach getArray (configFile >> "CfgVehicles" >> getText (configFile >> "CfgWeapons" >> uniform _unit >> "ItemInfo" >> "uniformClass") >> "hiddenSelections");

_set;

(функция бисов переписаная на локальный вариант)

Для того чтобы выдать инсигнии всем пехам одной из сторон в initPlayerLocal.sqf добавляем такой код:

Код
{
   [_x,"NOD_red"] call compile preprocessFileLineNumbers "set_unit_insignia.sqf";
} forEach (allUnits select {alive _x && side _x == opfor});
(в данном случае красным выдаются инсигнии класса NOD_red который определен в description.ext миссии как

Код
class CfgUnitInsignia
{
   class NOD_red
   {
      displayName = "Brotherhood of NOD";
      author = "Westwood Studios";
      texture = "nod_logo.paa";
      textureVehicle = "nod_logo.paa";
      material="";
   };
};

где nod_logo.paa-текстура в формате PAA 128х128 пикселей, лежащая в папке с миссией (конвертер из любого в paa есть в составе Arma3 Tools в стиме). Можно вместо своей текстуры использовать стандартные классы из армы или подключенных модов

К сожалению многие инсигнии на технике (в том числе и на ванильной) поломаны сторонними модами сборки. Для добавления на техники где они все еще работают работают достаточно присвоить технике или юниту имя переменной и в initPlayerLocal.sqf поместить строку вида

Код
[unit_var_name,"NOD_red"] call compile preprocessFileLineNumbers "set_unit_insignia.sqf";
Сообщение отредактировал BendeR - Вторник, 12.01.2021, 21:03

 
BendeR
Понедельник, 22.02.2021, 19:16
Оффлайн
Пользователь
маленький апдейт на собаку
https://drive.google.com/drive....sharing

обновлены dog.sqf и dog_compat.sqf:
-сила ветра рассчитывается функцией ACE если выполняется dog_compat.sqf

гайд как добавить в миссию выше в теме
Сообщение отредактировал BendeR - Понедельник, 22.02.2021, 19:20

 
GingerHead
Четверг, 22.04.2021, 16:00
Оффлайн
Пользователь
Спасибо за скрипты!)
В игре: [KS] InGir
 
Форум » Мастерская » В помощь картоделу » Скрипты » Useless scripts (Некоторые бес_полезные скрипты)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:


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