Покой – это ложь; есть только страсть.
Через страсть я познаю силу.
Через силу я познаю власть.
Через власть я познаю победу.
Через победу мои оковы рвутся.
Кодекс ситов
Дрю Карпишин, Трилогия Дарта Бэйна





Сколько глобус ни крути, там Fess-Style не найти...
Сайт Fess'a » Арт-поддержка - Форум
[ Новые сообщения · Участники · Правила форума · Поиск ]
Страница 1 из 11
Форум » Форум Редакторов » Редактор ARMA » Арт-поддержка
Арт-поддержка
alexandroДата: Четверг, 05.09.2013, 19:21 | Сообщение # 1

Авы нет

Группа: Удаленные





Fess нужна твоя помощь! короче говоря играл я в ARMA3 и задумался над тем, что нет смысла вводить в игру столько разнообразных видов артиллерии! Короче говоря, вот в игре есть например ракетная установка которая стреляет через всю карту (десятки километров) и как собственно говоря ей пользоваться кроме как самому вызывать арт-удар? Я очень хочу реализовать такую вещь, как самостоятельные действия ботов (командиров) с артиллерией! Вот сам подумай зачем нужна артиллерия в арме? там есть замечательный модуль поддержки который тебе и авиа-удар предоставит, и минометы, и арт-удар, собственно говоря все что надо все есть! Я вот думаю, что было бы неплохо например поставить на краю карты пару ракетниц, которые бы вели огонь по координатам командира отряда ведущего бой! Я знаю что можно это делать самому но опять же какой от этого смысл? Вообщем я пытался сделать это различными способами, например: ставил арту за горой, сливал ей бензин (что бы не двигалась), давал им командира который в дали вел бой и нифига!!! Я подумал окей может нужно дать им топлива и они сами выберут позицию? НЕТ! Они тупо приехали к командиру и их расстреляли вражеские танки! Арта ведет бой самостоятельно только когда видит противника сама, но на картах армы 3 нет таких мест от куда бы артиллерия видела бы врага на расстоянии 50 километров (а 50 км самая лучшая дистанция для стрельбы артиллерии). Fess помоги пожалуйста, что мне делать? Как заставить артиллерию стоять в дали от командира и стрелять по его засвету (координатам)??? Это же на самом деле простые вещи!? 100% должно быть простое решение! Заранее спасибо)
 
FessДата: Четверг, 05.09.2013, 22:10 | Сообщение # 2

Добрый админ
Сообщений: 2338
Статус:
Уважаемый alexandro, уххх, ну и непоседа ты)

Ставишь ракетную установку artyl в нужное тебе место, сливаешь бензин (либо отключаешь мозг на движение командой this disableAI "MOVE"). В принципе необязательно чтобы арт. расчёт был в одной группе с полевым командиром, нам это не важно.

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

1) Командир увидел противника собственными глазами
2) Проверяем, достаточно далеко ли вражеский юнит от ближайшего союзника (>100 метров)
3) Производим выстрел
4) Ждём смерти цели
5) Проверяем, остались ли снаряды (опционально)
6) Делаем вид, что уходим на перезарядку (скажем, перезарядка будет 3 минуты)
7) Перезапускаем скрипт

Попробую написать простой SQF скрипт по данному алгоритму. Пусть полевой командир англичанин и его зовут commandir

Код
_array = nearestObjects [commandir,["Man"],400];
_i = 0;

// Далее ищем ближайшего (>100м) ЖИВОГО врага, о котором знает наш командир. Немного замудрёно, но должно работать хД (может быть я где-то ошибся, пишу без проверки.)

while{!((side (_array select _i) == EAST)AND(commandir knowsAbout (_array select _i) > 3)AND(alive _array select _i)AND(commandir distance (_array select _i) > 100))} do  
{
_i = _i + 1;
};

_enemy = _array select _i;

artyl commandFire _enemy;
artyl sideChat "Ракеты выпущены, начинаем перезарядку...";
sleep 180;
artyl sideChat "Ракеты к пуску готовы!";

as = [] execVM "имя_которые_ты_дашь_этому_скрипту.sqf";
 
alexandroДата: Четверг, 05.09.2013, 23:56 | Сообщение # 3

Авы нет

Группа: Удаленные





А не мог бы ты расписать для меня тугого в скриптах что и куда??))))
 
FessДата: Пятница, 06.09.2013, 21:01 | Сообщение # 4

Добрый админ
Сообщений: 2338
Статус:
Цитата (alexandro)
А не мог бы ты расписать для меня тугого в скриптах что и куда??))))

Да блин, код не работает, как обычно)

Посидел я, подумал, пришел к выводу, что лучше всего стрелять из миномета, затем скриптом удалять вылетающий снаряд, затем создавать второй снаряд в нужном нам месте - точке приземления снаряда. Таким макаром обычный миномет может стрелять хоть на всю карту. Написал скрипт. Правда, проблема с тем, каким образом определять цель, по которой будет вестись стрельба... я сделал так, что выбирается ближайщий вражеский юнит в радиусе 70-300 метров от командира)

Прикрепил миссию к посту. Миссия для А3, Альтис.
Прочти это http://arma.at.ua/forum/46-5573-1 .

Архив распакуешь в место, где у тебя хранятся миссии редактора.
У меня это C:\Users\Admin\Documents\Arma 3 - Other Profiles\Fess\missions\

Чтобы запустить скрипт, нажми ESC и пропиши в консоль < as = [] execVM "artfire.sqf"; >, затем нажми Local exec
Прикрепления: artyl.Altis.rar(4Kb)
 
alexandroДата: Суббота, 07.09.2013, 04:21 | Сообщение # 5

Авы нет

Группа: Удаленные





Спасибо большое) еще можно вопрос?) Вот я сделал задание что вертолетам нужно атаковать базу и потом сесть и высадить пехоту так вот как сделать так что бы они садились и высаживались только тогда когда на базе не останется живых противников?
 
FessДата: Суббота, 07.09.2013, 15:37 | Сообщение # 6

Добрый админ
Сообщений: 2338
Статус:
Цитата (alexandro)
Спасибо большое) еще можно вопрос?) Вот я сделал задание что вертолетам нужно атаковать базу и потом сесть и высадить пехоту так вот как сделать так что бы они садились и высаживались только тогда когда на базе не останется живых противников?

Посмотри мой урок с триггерами на ютубе (там можно сделать, чтобы триггер срабатывал, когда юнит выходил из радиуса действия триггера, это твой случай), или смотри ниже.

Можно еще сделать скриптом. Ставишь триггер, в поле "Активация" (верхнем) стираешь this и пишешь :

Код
{(alive _x) AND (side _x == EAST)} count (markerPos "Girna" nearObjects ["Man",200]) < 3;

Затем ставишь маркер с именем "Girna" в центре той местности, где будет рассредоточен противник.

Триггер сработает, если в радиусе 200 метров от маркера останется менее 3 юнитов восточной стороны. Танк, или любая другая техника с экипажем считается за один юнит.
 
FessДата: Четверг, 01.01.2015, 01:02 | Сообщение # 7

Добрый админ
Сообщений: 2338
Статус:
Цитата Fess ()
Прикрепления: artyl.Altis.rar(4Kb)

Миссия побилась, восстановить не могу.
 
FessДата: Вторник, 03.02.2015, 15:32 | Сообщение # 8

Добрый админ
Сообщений: 2338
Статус:
Мне тут подсказали, что заставить миномет стрелять можно командой

Код
mortar commandArtilleryFire pos

Это сильно упрощает скрипт, не надо отлавливать никаких снарядов и затем спавнить их в нужном месте, все получается само по себе.
 
Форум » Форум Редакторов » Редактор ARMA » Арт-поддержка
Страница 1 из 11
Поиск: