Замучился искать по всему интернету, нигде не нашел толкового скрипта Командно Штабной Машины (КШМ, бурж.: HQ), пришлось ваять самому.
Итак, самый простой вариант, спасибо Fess'у за радиомаяк (см. интересности), который и лег в основу.
Ставим Машку, называем ее kshmeast (или иначе), пишем ей в инит :
["respawn_east",kshmeast] exec "mayakeast.sqs"; "respawn_east" setMarkerAlpha 0;
Создаем в папке с миссией mayakeast.sqs, в нем пишем:
_marker = _this select 0
_obj = _this select 1
#loop
_marker setMarkerPos getpos _obj
~1
goto "loop"
Все, блин, наш респ лазает за Машкой по всей карте !
Пояснение: респ уже должен быть сделан.
"respawn_east" setMarkerAlpha 0; - делает маркер невидимым, актуально в ПвП, что бы не демаскировать КШМ на карте маркером респа.Добавлено (19.03.2014, 13:49)
---------------------------------------------
Далее вариант два, посложнее.
Ставим Машку, называем ее kshmeast1 (или иначе),
ставим Машку, называем ее kshmeast2 (или иначе),
ставим Машку, называем ее kshmeast3 (или иначе),
ставим Машку, называем ее kshmeast4 (или иначе), пишем им в инит :
["respeast1",kshmeast1] exec "mayakeast1.sqs"; "respawn_east" setMarkerAlpha 0;
["respeast2",kshmeast2] exec "mayakeast2.sqs";
["respeast3",kshmeast3] exec "mayakeast3.sqs";
["respeast4",kshmeast4] exec "mayakeast4.sqs";
Каждой машине свою строчку, разумеется.
Создаем в папке с миссией mayakeast1.sqs,
создаем в папке с миссией mayakeast2.sqs,
создаем в папке с миссией mayakeast3.sqs,
создаем в папке с миссией mayakeast4.sqs, в них пишем:
_marker = _this select 0
_obj = _this select 1
#loop
_marker setMarkerPos getpos _obj
~1
goto "loop"
Тут везде одинаково.
На карте ставим маркеры (пустые, те что самые первые) respeast1,respeast2,respeast3,respeast4, baseeast.
Ставим триггеры, пять штук:
Радио Альфа, многократно, размер 0/0, текст: Развернуть КШМ1
Условие: Alive kshmeast1
Активация: "respawn_east" setMarkerPos getMarkerpos "respeast1";
Радио Браво, многократно, размер 0/0, текст: Развернуть КШМ2
Условие: Alive kshmeast2
Активация: "respawn_east" setMarkerPos getMarkerpos "respeast2";
Радио Дельта, многократно, размер 0/0, текст: Развернуть КШМ3
Условие: Alive kshmeast3
Активация: "respawn_east" setMarkerPos getMarkerpos "respeast3";
Радио Чарли, многократно, размер 0/0, текст: Развернуть КШМ4
Условие: Alive kshmeast4
Активация: "respawn_east" setMarkerPos getMarkerpos "respeast4";
Нет, многократно, размер 0/0
Условие: not alive kshmeast1 and not alive kshmeast2 and not alive kshmeast3 and not alive kshmeast4
Активация: "respawn_east" setMarkerPos getMarkerpos "base";
Теперь у нас четыре Машки! Машка разворачивается радиокомандой, при этом респ переносится на нее и с ней ездит по карте, пока не перенесешь на другую. При уничтожении всех КШМ, респ автоматом уезжает на базу (маркер base).
Маркеры respeast1,respeast2,respeast3,respeast4 и baseeast можно заменить с пустых на иконки (флажок, например), тогда на карте будет видно положение каждой машины.
Пятый триггер можно так же сделать на радиоактивации, убрав условие (поставить this), тогда можно еще и на базу респ нести.
В активации триггеров недурно было бы вписать: hint "Развернут КШМ 1" , но в ПвП это сообщение будет выдаваться всем (врагам тоже).
Добавлено (19.03.2014, 14:27)
---------------------------------------------
Вариант три, пока сырой, но вроде работает.
Ставим Машку, называем ее kshmeast, в инит пишем:
["respeast",kshmeast] exec "mayakeast.sqs"; "respawn_east" setMarkerAlpha 0; redopen=true;
Создаем в папке с миссией mayakeast.sqs, в нем пишем:
_marker = _this select 0
_obj = _this select 1
#loop
_marker setMarkerPos getpos _obj
~1
goto "loop"
Создаем Shtabeast.sqs, в нем:
eastfuelsliv = true;publicVariable "eastfuelsliv";
eastfuelnaliv = false;publicVariable "eastfuelnaliv";
eastset = true;publicVariable "eastset";
"respawn_east" setMarkerPos getMarkerpos "respeast";
redopen=false;publicVariable "redopen";
player removeAction acteast;
~60
redclose=true;publicVariable "redclose";
Создаем Shtabeast2.sqs, в нем:
"respawn_east" setMarkerPos getMarkerpos "baseeast";
redclose=false;publicVariable "redclose";
player removeAction acteast2;
eastset = false;publicVariable "eastset";
~60
eastfuelsliv = false;publicVariable "eastfuelsliv";
eastfuelnaliv = true;publicVariable "eastfuelnaliv";
redopen=true;publicVariable "redopen";
deleteVehicle neteast1;
deleteVehicle neteast2;
Создаем Setka1east.sqs, в нем:
neteast1 = "Land_CamoNet_EAST_EP1" createVehicle getpos kshmeast;
neteast1 attachTo [kshmeast, [0,1.2,-1.5]];
~0.01
neteast1 setDir ((getDir kshmeast) +90);
eastset = false;publicVariable "eastset";
player removeAction acteastsetka2; playe
Создаем Setka2east.sqs, в нем:
neteast2 = "Land_CamoNet_EAST" createVehicle getpos kshmeast;
neteast2 attachTo [kshmeast, [0,1.2,-1.5]];
~0.01
neteast2 setDir ((getDir kshmeast) +90);
eastset = false;publicVariable "eastset";
player removeAction acteastsetka2; player removeAction acteastsetka1;
В игре создаем восемь триггеров:
Нет, многократно, размеры 0.
Условие: player distance kshmeast > 5
Активация: player removeAction acteast2;
Нет, многократно, размеры 0.
Условие: player distance kshmeast > 5
Активация: player removeAction acteast; player removeAction acteastsetka2; player removeAction acteastsetka1;
Нет, многократно, размеры 0.
Условие: player distance kshmeast < 5 and redclose
Активация: if (redclose) then {acteast2 = player addaction ["Cвернуть штаб","Shtabeast2.sqs"]};
Нет, многократно, размеры 0.
Условие: player distance kshmeast < 5 and redopen
Активация: if (redopen) then {acteast = player addaction ["Развернуть штаб","Shtabeast.sqs"]};
Нет, многократно, размеры 0.
Условие: eastfuelnaliv
Активация: kshmeast setFuel 1;
Нет, многократно, размеры 0.
Условие: eastfuelsliv
Активация: kshmeast setFuel 0;
Нет, многократно, размеры 0.
Условие: player distance kshmeast < 5 and eastset
Активация: if (isServer) then {acteastsetka1 = player addaction ["Накрыть сетью. Пустыня","Setka1east.sqs"]}; if (isServer) then {acteastsetka2 = player addaction ["Накрыть сетью. Лес","Setka2east.sqs"]};
Нет, многократно, размеры 0.
Условие: not alive kshmeast
Активация: "respawn_east" setMarkerPos getMarkerpos "base";
На карте нужны маркеры base, respeast b respawn_east, разумеется.
Все? Вроде, все. Надеюсь, ничего не забыл, не напутал.
Как работает:
Подходишь к Машке, появляется пункт в меню "Развернуть штаб". Жмешь- респ переносится на Машку, появляется меню "Накрыть сетью лес\пустыня", сливается топливо (можно водителя просто заблокировать, но сначала его надо высадить, что бы не замуровать) и минуту Машка недоступна, потом можно свернуть штаб, подождать еще минуту и ехать. Респ при этом вернется на базу.
Для Стороны синих заменить east на west, red на blue. Везде. С особой тщательностью.
Делалось для мультиплеера, но протестить основательно не удалось. Возможны ошибки, да что возможно, есть они наверняка. В скриптах я разбираюсь как балерина в танковом газотурбинном двигателе, но пришлось разбираться.
Добавлено (19.03.2014, 14:33)
---------------------------------------------
Врет (19.03.2014, 7.30) !
Было бы великолепно, если кто-нибудь оптимизирует и сожмет- поправит то что я нагородил. Наверняка, можно все это проще сделать.
А если у бисов такая функция есть и включается одной кнопкой, то вообще замечательно.
Добавлено (19.03.2014, 14:44)
---------------------------------------------
Опять врет (19.03.2014, 7.42) !
Ах, да! ArmA 2 CO (c ACE модом, если что) у меня.