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
|
Одиночка
|
Спасибо за скрипты!)
|
|
|
|