Перейти к содержимому


Фотография

Эвакуация на вертолете.


Лучший Ответ SteelRat , 16 March 2014 - 21:46

Вот подправленный вариант функции, тем кто уже скачал предыдущий удалить из файла строку

 

sleep 0.2;

Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 62

#1 OFFLINE   sharkman

sharkman

    Ефрейтор

  • Пользователи
  • 68 сообщений
  • Откуда:Хабаровск

Отправлено 11 March 2014 - 16:04

Вот в чем вопрос. Как проверить, что вся группа игрока села в вертолет (технику)? С вейпоинтами это сделать не проблема, но вот если вейпоинтов в миссии нет (кроме бота, которому назначена точка прибытия для эвакуации). Грубо говоря, как активировать триггер, после того, как твоя команда (естественно вместе с игроком) оказалась в вертолете (либо иной технике)? Такой ход как, для триггера в условии (unit_1 in heli and unit_2 in heli and .... unit_x in heli) не очень хорош, так как не известно, сколько юнитов твоей группы останется в живых к моменту эвакуации. Я так понимаю, без скрипта здесь не обойтись? Может есть какой-то другой способ? Есть маленький опыт в программировании, но пока он мне не очень помог в решении этой задачи. Заранее благодарен! :)

Прикрепленные файлы


Сообщение отредактировал sharkman: 11 March 2014 - 16:05

  • 0

#2 OFFLINE   pixel

pixel

    Прапорщик

  • Пользователи
  • 500 сообщений
  • Откуда:Россия.

Отправлено 11 March 2014 - 19:07

Посмотри может этот пример поможет.

Прикрепленные файлы


Сообщение отредактировал pixel: 11 March 2014 - 19:31

  • 0

#3 OFFLINE   sharkman

sharkman

    Ефрейтор

  • Пользователи
  • 68 сообщений
  • Откуда:Хабаровск

Отправлено 12 March 2014 - 03:42

Посмотри может этот пример поможет.

Миссия не загрузилась...  :sad:

Прикрепленные файлы


  • 0

#4 OFFLINE   pixel

pixel

    Прапорщик

  • Пользователи
  • 500 сообщений
  • Откуда:Россия.

Отправлено 12 March 2014 - 15:10

sharkman,Тысяча извинений!)) Вот если я тебя правильно понял. НО! Верт по прибытию на точку сбора  почему то не приземляется до тех пор пока я ботам не дам команду залезть в него тогда он опускается(может кто знает где я ошибся?) Поправьте если нее трудно.  После погрузки ботов верт будет ждать пока не сядешь именно ты. 

Прикрепленные файлы


  • 0

#5 OFFLINE   sharkman

sharkman

    Ефрейтор

  • Пользователи
  • 68 сообщений
  • Откуда:Хабаровск

Отправлено 12 March 2014 - 16:33

pixel,

 



sharkman,Тысяча извинений!)) Вот если я тебя правильно понял. НО! Верт по прибытию на точку сбора  почему то не приземляется до тех пор пока я ботам не дам команду залезть в него тогда он опускается(может кто знает где я ошибся?) Поправьте если нее трудно.  После погрузки ботов верт будет ждать пока не сядешь именно ты. 

 В том примере, который ты мне дал, присутствует вейпоинт (СЕСТЬ)  и вейпоинт (ЗАГРУЗИТЬ), которые, естественно синхронизированы. Этот метод мне знаком. В моем случае вейпоинта моей группы нет, соответственно синхронизировать тут не с кем. Ставить вейпоинт своей группе в моем проекте не предусмотрено, с этим прекрасно справляются модули "Создать задание", для игрока визуально понятно, куда ему держать курс.  Задача состоит в том, чтобы после загрузки группы в транспорт - сработал триггер по условию "типа вся группа игрока вместе с самим игроком в транспорте? Если да, то вертолет лети к назначенному месту (маркеру), иначе ждём, пока все загрузятся, а потом уж взлетаем". При этом последовательность может быть разной, сначала боты а потом ты, или наоборот. Ведь будущий игрок (не зная) может сначала сам залезть в технику, а потом дать команду своей группе или наоборот. Да, я понимаю, что в триггере можно дать проверку условием player in technika и тогда он сработает именно на игрока (в этом случае вертолет рванет с места без группы) , или записать это условие для каждого юнита. Но это не выход из ситуации, так как неизвестно сколько юнитов останется в группе после боя с врагом до эвакуации, соответственно триггер не сработает на сдохшего солдата (солдат). НО, ВСЁ РАВНО СПАСИБО, что реагируете и пытаетесь помочь. Вместе мы одолеем любую задачу! PS: Ссори! я не тот тип вертолета в своем файле поставил (надо любой транспортный). 


Сообщение отредактировал sharkman: 12 March 2014 - 16:41

  • 0

#6 OFFLINE   Melnik

Melnik

    Ст. Прапорщик

  • Пользователи
  • 749 сообщений
  • Откуда:Россия

Отправлено 12 March 2014 - 17:23

pixel,

 

 Этот метод мне знаком. В моем случае вейпоинта моей группы нет, соответственно синхронизировать тут не с кем. 

А чем тебя не устраивает просто заставить вертолет прилететь, пилоты из него выйдут, ты сядешь и посадишь группу. А там хоть сам веди, хоть боту прикажи.


  • 0

#7 OFFLINE   sharkman

sharkman

    Ефрейтор

  • Пользователи
  • 68 сообщений
  • Откуда:Хабаровск

Отправлено 12 March 2014 - 17:37

Нет.


Сообщение отредактировал sharkman: 12 March 2014 - 17:52

  • 0

#8 OFFLINE   sharkman

sharkman

    Ефрейтор

  • Пользователи
  • 68 сообщений
  • Откуда:Хабаровск

Отправлено 12 March 2014 - 17:50

Угнать вертолет?! Замысел то не в том, что тебе пригнали вертушку - забирай и делай, что хочешь, а именно в эвакуации - прилетели чтобы забрать группу и свалить к чертям (то есть до зоны триггера, где выползет счастливая фраза "mission complited"). Да и в реальности группа то состоит из пехоты - у них свои умения, а у летчиков своя работа. Логика теряется. Понятно, что можно вместо вертушки на место эвакуации поставить кем-то заранее брошенный (специально доставленный) автомобиль и в задании прописать куда сваливать, но это теряет интерес финальной фазы миссии. Еще раз спасибо, за предложение!!!


  • 0

#9 OFFLINE   pixel

pixel

    Прапорщик

  • Пользователи
  • 500 сообщений
  • Откуда:Россия.

Отправлено 12 March 2014 - 17:54

sharkman,Думаю тебе нужен скрипт эвакуации. Вот тебе скрипт но он для армы 2 внутри описание на русском если сможешь его переделать выкладывай. Я пробовал но столкнулся с отсутствием модуля функции в Арме 3 собственно на это я и забросил это дело.)))) Народ кто знает может посмотрите? Эвакуация по типу вызова верта в кампании Армы 2.

Прикрепленные файлы


Сообщение отредактировал pixel: 12 March 2014 - 18:06

  • 0

#10 OFFLINE   sharkman

sharkman

    Ефрейтор

  • Пользователи
  • 68 сообщений
  • Откуда:Хабаровск

Отправлено 12 March 2014 - 19:27

Судя по коду (waituntil {not (player in HeliEvacHE)};) этот скрипт только для игрока, а не для группы.

Я вот думаю, может попробовать с помощью команд создать маршрутные точки как для вертолета так и для игрока и синхронизировать. Осталось это как то реализовать в код... Вот здесь пока я слаб... Но буду пытаться...


  • 0

#11 OFFLINE   pixel

pixel

    Прапорщик

  • Пользователи
  • 500 сообщений
  • Откуда:Россия.

Отправлено 12 March 2014 - 19:34

Как я помню верт не улетал пока ты ему не давал команду даже если ты уже в нём сидишь.


  • 0

#12 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

  • Пользователи
  • 447 сообщений
  • Откуда:Россия

Отправлено 12 March 2014 - 20:24

Player_Group = group Player; 

Триггер - Player_Group in Heli; - по моему этого будет достаточно!?


  • 0

#13 OFFLINE   pixel

pixel

    Прапорщик

  • Пользователи
  • 500 сообщений
  • Откуда:Россия.

Отправлено 12 March 2014 - 20:53

Нашёл на армахолике но не запускается. Я так понял дело в названии литлбёрда видимо в каком-то обновлении его название сменили.

Прикрепленные файлы


  • 0

#14 OFFLINE   sharkman

sharkman

    Ефрейтор

  • Пользователи
  • 68 сообщений
  • Откуда:Хабаровск

Отправлено 12 March 2014 - 20:53

D_Donskoy, Нет, этого не достаточно. Дело в том, что "in" применимо только к объекту, а не к массиву. "Player_Group" в данном случае - массив. Если б это было бы так, то кончились бы мои мучения.


  • 0

#15 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 12 March 2014 - 21:18

_Heli = объект ветолёт;
_playerInHeli = [];
_playerGroup = group Player;

{
if (_x in _Heli) then {_playerInHeli SET [count _playerInHeli, _x]};
} forEach _playerGroup; 

if (count _playerInHeli == count _playerGroup) then { сюда код для исполнения если вся группа в вертолёте };

По эксперементируйте с этой заготовкой


Сообщение отредактировал SteelRat: 12 March 2014 - 21:21

  • 0

#16 OFFLINE   sharkman

sharkman

    Ефрейтор

  • Пользователи
  • 68 сообщений
  • Откуда:Хабаровск

Отправлено 13 March 2014 - 16:49

Пока еще не получается. Тут скорее всего надо поработать с циклами. Пытаюсь, может, что-то получится.
  • 0

#17 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 13 March 2014 - 19:01

Не получается что именно?


  • 0

#18 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 13 March 2014 - 20:06

_Heli = объект вертолёт;
_unitsInHeli = [];
_groupUnits = group player;

{
  if ( _x in _Heli ) then {_unitsInHeli set [count _unitsInHeli, _x]};
} foreach (units _groupUnits);

if (count _unitsInHeli == count (units _groupUnits)) then {
  true
} else {
  false
};

Кстати, вот корректный вариант заготовки, для условия проверки в тригере. Вариант выше имеет в себе ошибку.


  • 0

#19 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 13 March 2014 - 20:15

Ещё полезнее будет наверное вынести этот код в отдельный файл , например,

 

папка миссии\functions\checkUnitsInHeli.sqf

 

а из тригера вызвать

 

(объект вертолёт) execVM "functions\checkUnitsInHeli.sqf

 

вызов функции вернёт либо ИСТИНА либо ЛОЖ, в зависимости от результата проверки

 

Если оформить код выше отдельной функцией, то нужно первую строку привести к такому виду

_Heli = _this;


Сообщение отредактировал SteelRat: 13 March 2014 - 20:17

  • 0

#20 OFFLINE   sharkman

sharkman

    Ефрейтор

  • Пользователи
  • 68 сообщений
  • Откуда:Хабаровск

Отправлено 14 March 2014 - 10:52

SteelRat, ты проверял, у тебя работает? 


  • 0




Яндекс.Метрика