Скрипт на использование стратегической карты, с возможностью её многократного открытия, с опциями скрытия существующих задач, и добавления новых.
Использование:
На предмете, на котором будет кнопка «Открыть стратегическую карту» вешаем это:
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 канале