Модератор форума: GUNNER161, Panikaha |
Форум РЕДАКТОР - ArmA 3 Вопрос - ответ Динамическое создание юнитов и добавление им вейпоинтов. (продолжение темы ARMA2 динамическое создание юнитов.) |
Динамическое создание юнитов и добавление им вейпоинтов. |
› Вторник
› 21.01.2014
› 15:38
› Сообщение #
AleksSan, есть оператор отсоединить в я зыке А3?
По логике, нужно каждого юнита ждущей группы обозвать собственным именем и в случае необходимости ссылаться на него. По теме: http://www.flashpoint.ru/threads....0%B8%D0 %B3%D1%80%D0%B5.50481/ http://arma.at.ua/forum/46-3243-9 по ссылкам примеры в целом по присоединению. В последней ссылке сообщения SLONа читай. |
› Вторник
› 21.01.2014
› 17:01
› Сообщение #
имена давать тот еще гимор, нет команды что бы выделять из группы любых 4 юнитов и отсоединять? тогда придется держать несколько маленьких групп в запасе но тут у меня вопрос как тогда группе 3 потрепаной в боях присоединять группу запаса 4? вернее как сделать что бы нуждающаяся группа брала к себе одну из четырех групп резерва?
|
› Вторник
› 21.01.2014
› 17:19
› Сообщение #
|
› Вторник
› 21.01.2014
› 18:58
› Сообщение #
если доп. хотелок нет, то всё просто
gr_rezerv - так например называется группа резерва gr_armi_1 - название боевой группы _ms = units gr_rezerv; // список ботов _a = (count _ms) min 4; // на случай если в резерв меньше 4 ботов. _ms resize _a; // отрезаем от списка лишних _ms Join gr_armi_1; // присоединяем |
› Среда
› 22.01.2014
› 04:51
› Сообщение #
Спасибо такой код работает. Только команда на призыв с присоединением резерва должна исходить из скрипта боевой локальной группы _gr_armi_1 так как этих групп по ходу миссии будет создана уева туча. И нужно людям из резерва как то вычленять ту группу кому они нужны, проще их присоединять на призыв о помощи из той локальной группы которую потрепали, вкратце после выполнения условия:
// WaitUntil {count units _gr_armi_1< 6}; // людей осталось мало в группе. // _gr_armi_1 setBehaviour "STEALTH"; // остатки группы переходят в скрытый режим что бы дожить до подмоги. // sleep xx; // приблизительное время сколько должна идти подмога. // {[_x] join _gr_armi_1} foreach units ms; // к группе должно получиться присоединение группы ms которая в свою очередь отпочковалась от резерва и (идет, летит, едет) по своим вейпоинтам. Даже если атакующая группа будет до прихода помощи зачищена под 0, люди с резерва все равно перейдут в эту группу и подхватят ее не пройденные вейпоинты и задачи. // WaitUntil {count units _gr_armi_1 < 1}; while {(count (waypoints _gr_armi_1)) > 0} do { deleteWaypoint ((waypoints _gr_armi_1) select 0); }; // тут проверка и если вся группа уничтожена вместе с подошедшем резервом, то удаление вейпоинтов этой группы. С этой частью понятно и должно работать. Но вот не получается дать имя отпочковавшейся из резерва группе ms. Вот скрипт для отряда резерва: gr_rezerv = creategroup Resistance; "I_Soldier_TL_F" createUnit [getmarkerPos "Start", gr_rezerv, "", 0.8]; "I_Soldier_GL_F" createUnit [getmarkerPos "Start", gr_rezerv, "", 0.6]; "I_Soldier_GL_F" createUnit [getmarkerPos "Start", gr_rezerv, "", 0.6]; "I_Soldier_TL_F" createUnit [getmarkerPos "Start", gr_rezerv, "", 0.8]; "I_Soldier_GL_F" createUnit [getmarkerPos "Start", gr_rezerv, "", 0.6]; "I_Soldier_GL_F" createUnit [getmarkerPos "Start", gr_rezerv, "", 0.6]; "I_medic_F" createUnit [getmarkerPos "Start", gr_rezerv, "", 0.4]; ms = units gr_rezerv; // список ботов. _a = (count ms) min 4; // на случай если в резерв меньше 4 ботов. ms resize _a; // отрезаем от списка лишних. ms = Group this; // вот тут загвоздка видимо не правильно даю имя группе из 4 солдат что отсоединяется от основной группы резерва. _wpo = ms addWaypoint [getMarkerPos "dvig4", 0]; _wpo setWaypointType "MOVE"; ms setSpeedMode "FULL"; //группа поддержки идет с базы по вейпоинтам, а не сразу присоединяется к запросившей помощи группе, иначе побегут напролом по самому короткому пути. Потом через время хх командой с первого скрипта группа присоединяется к группе _gr_armi_1 и выполняет ее задачи. Место на котором застрял выделил жирным. Сообщение отредактировал AleksSan - Среда, 22.01.2014, 05:02
|
› Среда
› 22.01.2014
› 09:25
› Сообщение #
ms = Group this; // вот тут загвоздка видимо не правильно даю имя группе из 4 солдат что отсоединяется от основной группы резерва. это массив, содержит 4 шт. ID ботов. ты превращаеш это в название группы. их нужно присоединить. gr_ms = creategroup Resistance; _ms Join gr_ms; _wpo = gr_ms addWaypoint [getMarkerPos "dvig4", 0]; _wpo setWaypointType "MOVE"; Цитата WaitUntil {count units _gr_armi_1< 6}; пример, создание 100 групп, с записью в массив Divizia, и контроль колва ботов в каждой группе Divizia = []; for "_a" from 0 to 99 do { _gr = createGroup West; Divizia set [_a, _gr]; }; _flag = []; While {true} do { { if (_forEachIndex in _flag) then { if (count units _x > 1) then {_flag = _flag - [_forEachIndex];}; } else { if (count units _x < 1) then {_x Spawn fn_AddBotsGroup; _flag = _flag + [_forEachIndex]; }; }; } forEach Divizia; }; |
› Пятница
› 18.03.2016
› 14:59
› Сообщение #
Подскажите, как правильно прописать скриптом зацикленный ВП из двух точек.
_gr2 = createGroup resistance; _sol4 = _gr2 createUnit ["B_Soldier_F", [23483.1,20558.9,0], [], 0, "CAN_COLLIDE"]; _wp =_gr2 addWaypoint [[23431,20602.6,0], 2]; _wp setWaypointType "MOVE"; _wp setWaypointSpeed "LIMITED"; _wp setWaypointBehaviour "CARELESS"; _wp1 = _gr2 addWaypoint [[23483.1,20558.9,0], 2]; _wp1 setWaypointType 'CYCLE'; Вопрос снимается. Почему-то потребовалась еще одна промежуточная точка, пусть даже с теми же координатами _wp1 = _gr2 addWaypoint [[23486.8,20551.4,0], 1]; _wp2 = _gr2 addWaypoint [[23486.8,20551.4,0], 1]; _wp2 setWaypointType "CYCLE"; Сообщение отредактировал andrucio - Пятница, 18.03.2016, 15:30
|
› Суббота
› 11.02.2017
› 02:24
› Сообщение #
Доброго дня. Пытался использовать скрипты для своей миссии из этой темы, а также скрипт уважаемого Slon'а отсюда: http://arma.at.ua/forum/46-2062-41813-16-1261976180, но по ходу руки настолько кривые, что два дня бьюсь и все без толку.
Суть: есть две группы group1 и group2, допустим по десять рыл в каждой. Группы движутся к какой-то точке, где сидит игрок. У каждой группы есть свой куратор: curator1 и curator2 соответственно. Кураторы находятся на своих местах и в бой не рвутся. Около каждого расположен триггер. Когда игрок выбивает половину первой группы, curator1 активирует скрипт на спавн новой group1, через триггер. Новая group1 спавнится около куратора и бежит на помощь к своим предшественникам. То же самое и со второй группой. Это как должно быть в задумке. Но вот с реализацией что-то совсем не клеится. Прошу помочь в создании правильного скрипта. Только сильно тапками не бейте. И если будет не в тягость, разжевать все подробно. |
› Суббота
› 11.02.2017
› 08:14
› Сообщение #
Кураторы это места распавна новых отрядов? Как бы необходимости в них нет. Места спавна целых групп можно указать просто маркером, и задание выдавать без них.
Добавлено (11.02.2017, 08:14) |
› Суббота
› 11.02.2017
› 15:23
› Сообщение #
weliar, Я делал скрипты без кураторов. просто подсчитывая размер отряда в триггере. Отправить отряд назад можно Активировав поинт № 1. А уже на нём можно возродить отряд когда остатки вернутся.
Назначение имени группы в ините командира Grp_1 = group this Условие контроля размера группы count (Units Grp_1) < 3 активация поинта 1 этой группы Grp_1 setCurrentWaypoint [Grp_1, 1] https://community.bistudio.com/wiki/group https://community.bistudio.com/wiki/units https://community.bistudio.com/wiki/setCurrentWaypoint |
› Суббота
› 11.02.2017
› 18:02
› Сообщение #
Slon, AleksSan, спасибо за ответы. Я только начинаю изучать редактор, и в скриптах вообще не бум-бум. Пока пошел другим путем. Создал файл скрипта, в нем прописал:
group2 = [getmarkerpos "mk1", EAST, ["O_G_Soldier_F", "O_G_Soldier_SL_F", "O_G_Soldier_TL_F", "O_G_Soldier_AR_F", "O_G_medic_F", "O_G_Soldier_exp_F", "O_G_Soldier_M_F"],180] call BIS_fnc_spawnGroup; Поставил маркер для появления группы и глобальный триггер с условием "count (units grp_1) < 3;" Триггер синхронизировал с командиром группы 1. Вроде работает. Может тогда подскажете ещё, как сделать, чтобы group2 появлялась по месторасположению группы 1? Еще раз большое спасибо за помощь. |
› Суббота
› 11.02.2017
› 19:26
› Сообщение #
weliar, изучи правила вызова функи BIS_fnc_spawnGroup .там есть как указать место.
https://community.bistudio.com/wiki/BIS_fnc_spawnGroup Функа BIS_fnc_spawnGroup не добавляет ботов в существующую группу, а создаёт новую. Но в переменную выдаёт название группы, а уже действую через переменную можно присоединить полученных солдат к существующей группе например group_N2 = [getmarkerpos "mk1", EAST, [ "O_G_Soldier_F", "O_G_Soldier_SL_F", "O_G_Soldier_TL_F", "O_G_Soldier_AR_F", "O_G_medic_F", "O_G_Soldier_exp_F", "O_G_Soldier_M_F" ], 180] call BIS_fnc_spawnGroup; (Units group_N2) JoinSilent group2; https://community.bistudio.com/wiki/joinSilent |
› Суббота
› 11.02.2017
› 23:39
› Сообщение #
weliar, что бы советы в ни куда не уходили, каков ваш уровень знания скриптов? Просто создавать отряды, спавнить юнитов, посылать куда то при помощи только одного редактора и тригеров армы моветон и тот еще гемор.
|
› Воскресенье
› 12.02.2017
› 12:01
› Сообщение #
AleksSan, откровенно говоря, уровень знания скриптов у меня никакой. Я только начал пытаться понять эту хитрую науку. В любом случае, спасибо за советы и помощь.
|
| |||
Чат сайта |