Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Скрипты Бесконечная битва для ARMA2 (OA) |
Бесконечная битва для ARMA2 (OA) |
› Суббота
› 11.01.2020
› 12:33
› Сообщение #
В итоге сделал так:
While {true} do { _gr1 = createGroup West; _btr2 = createVehicle ["M113_TK_EP1", getMarkerPos "marker21", [], 0, "NONE"]; _un = _gr1 createunit ["US_Soldier_Crew_EP1", getPos _btr2, [], 10, "None"]; _un moveInDriver _btr2; _un1= _gr1 createunit ["US_Soldier_Crew_EP1", getPos _btr2, [], 11, "None"]; _un1 moveingunner _btr2; _un2= _gr1 createunit ["US_Soldier_SL_EP1", getPos _btr2, [], 10, "None"]; _un2 moveInCargo _btr2; _un3= _gr1 createunit ["US_Soldier_TL_EP1", getPos _btr2, [], 10, "None"]; _un3 moveInCargo _btr2; _gr1 copyWaypoints q1; WaitUntil {count (Units _gr1) < 4} or {not alive _btr2}; }; Правильно, нужно создать как бы группу, бота с записью в ините q1 = Group this; deleteVehicle this, и с помощью команды copyWaypoints, группа, созданная скриптом, gr1, присоединяется к маршруту, проложенному в редакторе, для группы бота q1, и даже никакие маркеры не нужны) Движение начинается сразу с первой точки маршрута. Так намного легче работать с редактором, триггерами, и тд. Как работает команда waypointAttachVehicle, я примеров так и не нашел) И еще условие, WaitUntil {count (Units _gr1) < 4} or {not alive _btr2}; , оно для того, чтобы возрождение группы происходило при двух самостоятельных условиях, как при уменьшении числа ботов в группе, так и при гибели БТРа, даже пустого. Вот миссия, для которой это было нужно, она еще сырая, как бы проект, это такой штурм высоты, где пехота доставляется на БТРах к месту боя, при поддержке артиллерии и танков, в духе большой войны, как она виделась в 50-60-х гг. )) БМП-1 на стороне атакующих имитируют легкие танки) : https://dropmefiles.com/BPCr1
Труд есть дело чести, дело славы, дело доблести и геройства!
|
› Суббота
› 11.01.2020
› 23:31
› Сообщение #
такая запись не будет работать
WaitUntil {count (Units _gr1) < 4} or {not alive _btr2}; надо так WaitUntil {(count (Units _gr1 < 4)) or (not alive _btr2)}; Условие count (Units _gr1 < 4) можно заменить на это {alive _x} count (Units _gr1) < 1 будет срабатывать сразу. |
› Четверг
› 16.01.2020
› 18:24
› Сообщение #
Спасибо! Еще такой вопрос. Значит, суть этой миссии - оборона опорного пункта на высоте.
Для стороны обороняющихся группы пехоты создаются командой в триггере {_x createUnit... , и там условие на пополнение count units Gr_ < 5, и в ините командира Gr_ = Group this; Mesto_ = getPos this; Vzvod_ = .. и перечисление юнитов, входящих в группу. Может, здесь нужна команда X setSkill 1? Или что-то другое? Идет наступление, происходит респ групп обороняющейся пехоты (за высотой, на обратном склоне) и боты, задача которых, обозначенная в редакторе маршрутами, занять позиции в 1-й и 2-й полосах обороны, и стоять там до конца - идут куда нужно, но потом - убегают, отступают, еще при приближении противника, как только начинается обстрел, видимо такой алгоритм заложен в ИИ Армы. А если группа несет потери, то пополнения, которые респятся, туда уже не идут :)) Как ограничить отступление? Чтобы они не убегали? Но чтобы при том не отключать полностью ИИ, иначе они просто будут стоять на месте, ни сделав ни шагу? ) Может быть, задать триггером некую область, на карте, которую они должны оборонять, но из этого триггера не уходить? Но как? Нужно, чтобы, при приближении противника, отступление и шло, но постепенно, от рубежа к рубежу, последовательно, как бы по команде. Вот как эти рубежи триггерами задать? То есть, в редакторе задать их можно, но эти команды ИИ все равно игнорирует, включая свой алгоритм отступления, и все боты толпой ломятся за высоту, туда где безопасно))) и чтобы новые боты, респ которых произойдет, как пополнения, шли туда, куда им указано вейпоинтом, то есть, в контратаку, а не прятались за высотой. Может, нужен триггер "защищается силами..." или вейпоинт "защищать"? Или все-таки скрипты специальные Добавлено (17.01.2020, 15:05)
Труд есть дело чести, дело славы, дело доблести и геройства!
|
› Пятница
› 17.01.2020
› 19:01
› Сообщение #
disableAI всё же придётся применить. Причём к каждому боту отдельно, когда он приблизится к своей позиции.
Я , чтобы боты не убегали, ставил их на стационарные орудия. |
› Пятница
› 17.01.2020
› 22:31
› Сообщение #
А может быть, так? Вот есть такая команда как triggerArea. Она как раз показывает границы триггера. Может быть как-то ее использовать, например, если бот пересекает границу триггера, то он должен двигаться к точке такой-то.
If (_un1) doMove triggerArea "trigger1" then _x setPos markerPos "marker1" )) вот примерно так) это я просто чтоб приблизительно передать смысл, написал, как правильно, не знаю Добавлено (17.01.2020, 23:36)
Труд есть дело чести, дело славы, дело доблести и геройства!
|
› Суббота
› 18.01.2020
› 01:01
› Сообщение #
Для контроля нахождения в зоне триггера есть
https://community.bistudio.com/wiki/list т.е. список всех находящихся в зоне невычещенных фильтром. т.е. триггер с параметрами - Синие в зоне - будет выдавать список только синих. итп. if (bot1 in list trigger1) then { |
› Суббота
› 18.01.2020
› 12:57
› Сообщение #
А вообще, триггер, как способ указания определенной области, с заданными координатами, он может быть указан в скрипте как место, куда должен двигаться юнит? Или игра так не поймет? Вот допустим, команда (bot1) doMove (getMarkerPos "marker1"). А если вместо "marker1" подставить "trigger1"? Не будет работать?
Труд есть дело чести, дело славы, дело доблести и геройства!
|
› Суббота
› 18.01.2020
› 13:10
› Сообщение #
Для координат триггера используют команды как для объекта с именем
getpos trigger - координаты триггера trigger setpos [10, 20, 0] - перемещение триггера на новые координаты. https://community.bistudio.com/wiki/getPos https://community.bistudio.com/wiki/setPos |
› Суббота
› 18.01.2020
› 13:32
› Сообщение #
https://steamcommunity.com/app....3178544
Вот пример, правда здесь не точно то что я хотел, и это для Армы 3, но это пример взаимодействия области триггера, игрока и юнитов. Там говорится, что если сделать как там, то при нахождении игрока вне триггера более 2 мин. все юниты находящиеся в нем уничтожаются, так вроде бы. Но там задействованы команды которые работают толко в 3 Арме - inArea и inAreaArray (это во втором варианте, там их два) Добавлено (18.01.2020, 13:47)
Труд есть дело чести, дело славы, дело доблести и геройства!
|
› Суббота
› 18.01.2020
› 14:52
› Сообщение #
triggerArea - это размеры триггера - ширина, высота, форма.
Объекты находящиеся в зоне считываются оператором list имяТриггера. https://community.bistudio.com/wiki/list Типа !(player in list Trig1) |
› Суббота
› 18.01.2020
› 15:20
› Сообщение #
Хм, вроде не работает. Вот создаю триггер.
Условие: !(player1 in list Trig1) По активации: (bot1) doMove (getMarkerPos "marker1"); И бот1 все равно бежит к маркеру1, независимо от того, внутри я триггера или нет) Включаю активацию по радио, чтобы проверить. Если я внутри триггера, бот стоит на месте. Активирую триггер, стоя внутри него. Он должен стоять, раз я в триггере. Но он бежит ))) Добавлено (18.01.2020, 15:36) Добавлено (18.01.2020, 15:48)
Труд есть дело чести, дело славы, дело доблести и геройства!
|
› Суббота
› 18.01.2020
› 17:06
› Сообщение #
Сторона активации триггера должна быть ровна стороне Игрока, или Ктоугодно
|
› Суббота
› 18.01.2020
› 17:28
› Сообщение #
Работает! Спасибо.
Добавлено (20.01.2020, 15:01) --------------------------------------------- А как сделать такое же условие, но для определенной группы, со счетчиком живых? player1 in list Trig1, где вместо player1 было бы {alive _x} count (Units _gr1) < 1 Может, есть какое-то руководство, объясняющее правила этого языка? В каких случаях квадратные, круглые, фигурные скобки? ))) и тд. И еще вопрос, может уже была тема, где были бы примеры взаимодействия триггеров: Активация триггера (триггер) деактивирует другой(триггер) Деактивация (триггера) активирует (триггер) Какие команды в каком поле каждого из них пишутся? Добавлено (20.01.2020, 15:02) --------------------------------------------- *Выделено цветом должно быть только {alive _x} count (Units _gr1) < 1
Труд есть дело чести, дело славы, дело доблести и геройства!
|
› Понедельник
› 20.01.2020
› 22:58
› Сообщение #
Условие для зоны триггера
{alive _x} count (list Trig1) < 1 Описание всех команд для АА2 ОА https://community.bistudio.com/wiki/Category:Scripting_Commands_Arma_2 Синтаксис скрипта в формате SQF https://community.bistudio.com/wiki/SQF_syntax https://community.bistudio.com/wiki/Function https://community.bistudio.com/wiki/Control_Structures Ну и нужен некий своеобразный способ мышления, умение разделить процесс на части и записать его командами скрипта. зы. Заморачиваться с кучей триггеров не советую. Чем их меньше тем лучше. А ещё проще одним скриптом контролировать любое количество зон без всяких триггеров. |
› Вторник
› 21.01.2020
› 15:43
› Сообщение #
А если так сделать? {alive _x} count (_gr1 (list Trig1)) < 1
Труд есть дело чести, дело славы, дело доблести и геройства!
|
| |||
Чат сайта |