Здравия всем! как обозначить группу, что бы поставить вэйпойнт на ее позицию?
#1161 OFFLINE
Отправлено 26 February 2018 - 03:55
#1162 OFFLINE
Отправлено 26 February 2018 - 04:07
Потом, когда обозначили юнита считываете с него координаты командой getpos
И ставите на эти координаты вейпоинт
Сообщение отредактировал ReXcOr: 26 February 2018 - 04:08
#1163 OFFLINE
Отправлено 26 February 2018 - 09:44
Где то была создана группа
_side = "WEST"; _group = createGroup _side;
....
Если есть необходимость обращаться к группе, или ее юнитам, группу надо сохранить куда то(можно с доп параметрами)
_groupID = ....; // Создаем ИД группы - как дело десятое GROUPS set [(count GROUPS), [_group, _groupID]];
....
Где то был создан юнит
_unit = _group createUnit [_side, [0,0,0], [], 1, "NONE"];
....
Где юнит был добавлен в группу
[_unit] joinSilent _group;
....
Ищем группу которая нам необходима
_findID = ...;//ИД который нам нужен { if ( _findID == (_x select 1) ) exitWith {_group = (_x select 0);}; } forEach GROUPS; if !(isNil _group) then { _units = units _group; { _pos = getPos _x; // Отмечаем позишн каждого юнита на карте(можно только лидера, или только первого юнита... в общем дальше на свое усмотрение) } forEach _units; };
Сообщение отредактировал NoNameUltima: 26 February 2018 - 09:46
#1164 OFFLINE
Отправлено 26 February 2018 - 17:46
так как группа это не объект, а список объектов
Не верное утверждение, таки объект.
0 = 0 spawn { sleep 3; systemChat "Group player set variable ..."; (group player) setVariable ["GroupVar_0", "Group variable 0"]; systemChat format ["Result: %1", (group player) getVariable ["GroupVar_0", "NONE"]]; };
screenday_01.jpg 12.15К 0 Количество загрузок:
#1165 OFFLINE
Отправлено 26 February 2018 - 18:45
Но на счёт можно ли дернуть с неё координаты я не уверен, хотя после вашей демонстрации, у меня такое ощущение, что может и координаты она имеет)))
#1166 OFFLINE
Отправлено 26 February 2018 - 20:19
таки объект
Да не совсем.
дернуть с неё координаты
Конечно нет.
То что для групп есть базовый класс и используется ООП, не означает, что методы и свойства будут такие же как у объекта - игрок, или подобных.
#1167 OFFLINE
Отправлено 26 February 2018 - 20:43
таки объектДа не совсем.
дернуть с неё координатыКонечно нет.
То что для групп есть базовый класс и используется ООП, не означает, что методы и свойства будут такие же как у объекта - игрок, или подобных.
Это не отменяет того что это объект, пусть и своего типа, и тем не менее объект. И собственно кто говорил что объект типа group то же самое что объект типа player?
Ни хто!!!
ЗЫ
По факту выходит так, и не только в арме, но и в других движках, масса игровых объектов, разных типов, наследуют от некого одного базового класса-объекта именуемого, например Object, или GameObject, как вариант. Так что группа, это объект, который хранит в себе некий набор данных и методов, к которым вы обращаетесь через интерфейс скриптовых команд.
Сообщение отредактировал SteelRat: 26 February 2018 - 20:48
#1168 OFFLINE
Отправлено 26 February 2018 - 23:37
Моя тема возникла из следующего сценария: _spawn_mob = ["marker_0" ,"marker_2", "marker_3", "marker_4", "marker_5", "marker_6", "marker_7", "marker_8"] call BIS_fnc_selectRandom; _pl = createGroup resistance; _tr = createGroup resistance; _merc = createGroup resistance; "I_MU_mercs_M_F" createUnit [getmarkerPos _spawn_mob, _pl, "addSwitchableUnit this"]; _her01 = group civ_0 createUnit ["I_MU_mercs_helipilot_F", getMarkerPos _spawn_mob, [], 5, "FORM"]; [_her01] join _tr; _her02 = group civ_0 createUnit ["I_MU_mercs_sniper_F", getMarkerPos _spawn_mob, [], 5, "FORM"]; [_her02] join _tr; _mob = createVehicle["MU_MERC_HummingBird", getMarkerPos _spawn_mob, [], 5, "fly"]; _mob setpos [getpos _mob select 0, getpos _mob select 1, (getpos _mob select 2) + 200]; _her01 moveindriver _mob; _her02 moveincargo _mob; {_x assignasCargo _mob} forEach units _pl; {_x moveInCargo _mob} forEach units _pl; _mob_wp = _tr addWaypoint [getPos ????, 150]; _mob_wp setWaypointType "TR UNLOAD"; _mob_wp setWaypointSpeed "FULL"; _mob_wp setWaypointBehaviour "COMBAT"; _mob_wp01 = _tr addWaypoint[getPos _spawn_mob, 5]; _mob_wp01 setWaypointType "MOVE"; _mob_wp01 setWaypointSpeed "FULL"; _mob_wp01 setWaypointBehaviour "COMBAT"; . Вертолет (_mob) наемников появляется на краю карты , группа(_tr) -пилот и снайпер, должны доставить бойца (pl) к месту дислокации группы (_merc). Где то когда то видел вариант в одну строчку, где создавалась некая переменная на позицию группы. Это экшен блок fcm/ Сечас буду аналайзить вышеприведенное.
#1170 OFFLINE
Отправлено 27 February 2018 - 01:14
probel, выделение кода в блок кода? Переходы на новую строчку? Нет?
Ну самый простой способ - лидер группы:Где то когда то видел вариант в одну строчку, где создавалась некая переменная на позицию группы
getPos leader myGroup;
да, видимо это оптимально
#1171 OFFLINE
Отправлено 27 February 2018 - 13:26
Ну самый простой способ - лидер группы
А если лидера нет?)
#1172 OFFLINE
Отправлено 27 February 2018 - 13:36
В таких сценариях подразумевается, что пока это используется - это будет существовать
#1173 OFFLINE
Отправлено 27 February 2018 - 15:35
#1174 OFFLINE
Отправлено 27 February 2018 - 16:56
Ну самый простой способ - лидер группыА если лидера нет?)
Стыдно признаться)
А разве такое возможно? Если есть группа, то есть лидер, даже если вы сами его не назначали. Простой пример, если в процессе миссии погибает лидер группы, движок автоматически назначает лидером самого звёзного и скилового.
Или я несведущь в этом плане?
#1175 OFFLINE
Отправлено 27 February 2018 - 19:08
ну а че давайте пойдем дальше
Да это то понятно, что за своими скриптами и следить надо. Но в данном случае - имхо правильней взять первого юнита в группе(хз что там могло быть с лидером).
А вообще, как то так:
if !(isNil _group) then { _leader = (leader _group); if !(isNil "_leader") then { if ( _leader != ObjNull ) then { if ( alive _leader ) then {_pos = (getPos _leader);}; }; }; if (isNil "_pos") then { _units = units _group; if ( (count _units) > 0 ) then { { if (alive _x) then {_pos = (getPos _x);}; if !(isNil "_pos") exitWith {}; } forEach _units; }; }; }; if !(isNil "_pos") then { // Ставим маркер на позицию группы };
Сообщение отредактировал NoNameUltima: 27 February 2018 - 19:10
#1176 OFFLINE
Отправлено 27 February 2018 - 19:14
А разве такое возможно?
Да. Если все в группе мертвы(группа будет пустой), или создана пустая группа(менеджер ее удалит не сразу, как и в случае смерти всех юнитов в группе).
Сообщение отредактировал NoNameUltima: 27 February 2018 - 19:15
#1177 OFFLINE
Отправлено 27 February 2018 - 21:31
Да. Если все в группе мертвы(группа будет пустой), или создана пустая группа(менеджер ее удалит не сразу, как и в случае смерти всех юнитов в группе).
Я не много не о том.
Я про то, что пока в группе есть хоть одно тело, в группе будет лидер.
И ясное дело, что нужно отслеживать нюансы типа, а жива ли группа вообще, прежде чем к ней обращаться.
Сообщение отредактировал SteelRat: 27 February 2018 - 21:42
#1178 OFFLINE
Отправлено 28 February 2018 - 03:13
Зачем проверка локальной переменной на nil сразу после ее инициализации 100% не nil значением?
Где инициализация локальной переменной _group?
Вы зачем сравниваете objNull операторами ==/!=? Вы знаете особенности значений nil и null?
Зачем проверка массива через count когда forEach знает что такое пустой массив?
alive objNull == false - проверка на isNull перед этим не имеет смысла
Вы знаете что такое область видимости?
... Лучше подредактируйте тот пост, что бы новички не видели его и не ломали часами голову почему не работает
Я вам открою секрет у любой группы есть лидер, даже если он мертв, вся группа мертва или еще что-нибудь с ней стряслось. А если группа была удалена, то "лидер" эквивалентен objNull, а с objNull все команды нормально работают и их поведение однозначно определеноДа. Если все в группе мертвы(группа будет пустой)
Сообщение отредактировал vlad333000: 28 February 2018 - 03:30
#1179 OFFLINE
Отправлено 28 February 2018 - 03:36
Где инициализация локальной переменной _group?
тут
https://arma3.ru/for...ptingu/?p=79002
Зачем проверка локальной переменной на nil сразу после ее инициализации 100% не nil значением?
Если группа пустая - переменной не будет. - Будет nil
Если лидера нет будет - objNull
Зачем проверка массива через count когда forEach знает что такое пустой массив?
да. это лишнее...
Я вам открою секрет у любой группы есть лидер, даже если он мертв, вся группа мертва или еще что-нибудь с ней стряслось.
попробуй сделать такой финт -
_side = "WEST"; _group = createGroup _side;
а потом попробуй найди лидера у данной группы.
#1180 OFFLINE
Отправлено 28 February 2018 - 03:53
А теперь нажали на и сказали строчку на которой вы нашли синтаксис команды соответствующий:попробуй сделать такой финт -
_side = "WEST"; _group = createGroup _side;а потом попробуй найди лидера у данной группы.
<group> = createGroup <string>;
Пусстаня группа эквивалентно grpNull не эквивалентно nilp
Если группа пустая - переменной не будет. - Будет nil
Если лидера нет будет - objNull
У вас хоть одна команда сломалась при использовании null (не nil) в качестве операнда? (null это лишь особая форма объекта, но вполне себе работающая)