Скрипт на использование стратегической карты, с возможностью её многократного открытия, с опциями скрытия существующих задач, и добавления новых.
Использование:
На предмете, на котором будет кнопка «Открыть стратегическую карту» вешаем это:
this addAction ["Открыть стратегическую карту","scripts\osm.sqf",[false],1,false,true,"","(_target distance _this) < 3"];
Перед тем как открыть «Стратегическая карта» , надо дать команду показать на ней места заданий (иначе ошибка).
В нашем случае это:
showAAATask = true; showArtyTask = true; showHeloTask = true;
Что бы удалить (спрятать) выполненное задание, нам нужно написать условие. Где угодно, только не в файле самой карты.
У меня оно такое:
0 spawn { waitUntil{ !alive aa; }; showAAATask = false; hint "Ok"; };
Где aa — это зенитка которую мне надо уничтожить.
Ну а hint просто для проверки работы. Если вдруг сомневаетесь.
Так же не забываем создать сами маркера.
У меня они:
Для заданий:
mrk_AAA mrk_Arty mrk_Helo
Для позиций куда телепортировать игрока:
mrk_startAAA mrk_startArty mrk_startHelo
Сам скрипт:
// Название задания startAAA = { player enableSimulation false; // Отключаем симуляцию у игрока "mrk_startAAA" setMarkerSize [1,1]; // Устанавливаем размер маркера player setpos getmarkerpos "mrk_startAAA"; // Переносим игрока к маркеру mrk_startAAA {_x setpos getmarkerpos "mrk_startAAA";_x enableAI "ANIM";_x switchMove ""} forEach [a2,a3,a4,a5]; // Переносим ботов к маркеру mrk_startAAA a2 joinAsSilent [group player, 2]; // Присоединяем бота к группе a3 joinAsSilent [group player, 3]; // Присоединяем бота к группе a4 joinAsSilent [group player, 4]; // Присоединяем бота к группе a5 joinAsSilent [group player, 5]; // Присоединяем бота к группе group player setBehaviour "STEALTH"; // Группе игрока ставим поведение "скрытно" player setdir 64; // Поворачиваем игрока на 64* player enableSimulation true; //Включаем симуляцию у игрока }; startArty = { player enableSimulation false; "mrk_startArty" setMarkerSize [1,1]; player setpos getmarkerpos "mrk_startArty"; {_x setpos getmarkerpos "mrk_startArty";_x enableAI "ANIM";_x switchMove ""} forEach [a2,a3,a4,a5]; a2 joinAsSilent [group player, 2]; a3 joinAsSilent [group player, 3]; a4 joinAsSilent [group player, 4]; a5 joinAsSilent [group player, 5]; group player setBehaviour "STEALTH"; player setdir 124; player enableSimulation true; }; startHelo = { player enableSimulation false; "mrk_startHelo" setMarkerSize [1,1]; player setpos getmarkerpos "mrk_startHelo"; {_x setpos getmarkerpos "mrk_startHelo";_x enableAI "ANIM";_x switchMove ""} forEach [a2,a3,a4,a5]; a2 joinAsSilent [group player, 2]; a3 joinAsSilent [group player, 3]; a4 joinAsSilent [group player, 4]; a5 joinAsSilent [group player, 5]; group player setBehaviour "STEALTH"; player setdir 57; player enableSimulation true; }; ////////////////////////////////////////// // Пишем сюда задания для СК. _missionsData = []; if (showAAATask) then { _missionsData pushBack [getmarkerpos "mrk_AAA",startAAA,"Позиция зенитки","Второстепенная задача: выведите их зенитку из строя","","",1,[]] }; if (showArtyTask) then { _missionsData pushBack [getmarkerpos "mrk_Arty",startArty,"Название задания","Описание задания, при наведении мыши на него.","","",1,[]]}; if (showHeloTask) then { _missionsData pushBack [getmarkerpos "mrk_Helo",startHelo,"Уничтожить тачку пидораса","Уничтожить тачилу одному педриле!","","",1,[]]}; ////////////////////////////////////////// disableserialization; _parentDisplay = [] call bis_fnc_displayMission; _mapCenter = getmarkerpos "base"; // На каком месте откроется карта. Если не прописать - укажет координаты 0,0,0 (левый нижний угол) _ORBAT = []; // Боевое расписание. Если надо. _markers = []; // Маркера. Если надо. _images = []; // Картинки. Если надо. _overcast = overcast; // Погода _isNight = !((dayTime > 6) && (dayTime < 20)); //Проверка ночь ли это. ХЗ зачем, не стал вникать _scale = 1.5; // Масштаб отображаемой карты (по умолчанию = 1) _simul = true; [ findDisplay 46, _mapCenter, _missionsData, _ORBAT, _markers, _images, _overcast, _isNight, _scale, _simul ] call Bis_fnc_strategicMapOpen;
Спасибо за помощь Dusin (участник нашего Discord).
Наше видео на эту тему (показан старый форум, сейчас тут этот сайт):
Обсудить этот метод можно в нашем Discord канале