Модератор форума: GUNNER161, Panikaha |
Форум РЕДАКТОР - ArmA 3 Скрипты Артиллерия в ArmA 3 (Скрипты артиллерии для ArmA 3) |
Артиллерия в ArmA 3 |
› Четверг
› 17.04.2014
› 01:58
› Сообщение #
Одно время я несколько месяцев тешился артиллерийскими скриптами в ArmA 2. Думаю изменения, внесенные в артиллерию ArmA 3, будут интересны не только мне. Итак...
Сразу скажу СПАСИБО Slonу за помощь в составлении скриптов. С удивлением обнаружил, что ArmA поддерживает достаточно реалистичную физику. Т.е. если бросить тело под углом к горизонту, можно предсказать место его падения (читаем: если жахнуть из пушки под таким-то углом, то снаряд упадет там-то). Для этого нужно знать: координаты орудия, координаты цели, начальная скорость снаряда. Потом по координатам определялась разность высот и все в купе определяло угол возвышения ствола (кстати, этот способ используется в реальных расчетах артиллерийского выстрела). Если порыться, то этот скрипт можно найти на бескрайних просторах вопросов по скриптописанию для ArmA 2. Упреждение реализовывалось следующим образом: определялся вектор скорости цели, затем к начальным координатам цели добавлялись соответственные координаты вектора скорости цели помноженные на время упреждения. Чувствуете как выкрутило мозг? А теперь представте как я объяснял жене чем я занимаюсь в компе! Так вот, после выхода ArmA 3, весь этот громоздкий скрипт с промежуточными вычислениями уложился в одну команду CommandArtilleryFire, где нужно лишь указать имя орудия, координаты обстрела, тип обоймы и количество выстрелов. И все! Пушка пуляет столько снарядов, сколько укажешь, по указанным координатам. Подбор снарядов ближний-средний-дальний осуществляется автоматически (в ArmA 2 каждому из видов снарядов нужно было прописывать свою начальную скорость). По поводу упреждения: появилась новая команда GetArtilleryETA, возвращающая полетное время снаряда в секундах. Теперь с помощью этой команды стало проще расчитывать время прибытия снаряда к цели. И напоследок... Каждый вид артиллерии будь то миномет или гаубица имеет свою максимальную дистанцию выстрела. Опять-же на свет явилась команда InRangeOfArtillery, выясняющая находится ли позиция обстрела в зоне досягаемости нашей пукалки. Пока все. Берегите себя. |
› Четверг
› 17.04.2014
› 14:07
› Сообщение #
Неплохо бы миссию пример, для тех кто на бронепоезде !
|
› Суббота
› 24.05.2014
› 16:47
› Сообщение #
Стыдно признаться, но не получается у меня миссию-пример прикрепить, а вот скрипт - пожалуйста. Описание работы - внутри.
Добавлено (18.04.2014, 19:30) Добавлено (25.04.2014, 13:22) Добавлено (24.05.2014, 16:47) |
› Среда
› 26.11.2014
› 16:03
› Сообщение #
Дррруууг!!! Скажи пожалуйста, может знаешь, как бота заставить стрелять по противнику? Просто если бот может дострельнуть, что б он стрелял а не башкой вертел. Сам стрелял по своему усмотрению или по усмотрению командира...тоже бота
|
› Четверг
› 27.11.2014
› 05:24
› Сообщение #
madsin, ну если кратко:
_unit doTarget _target; //указать боту прицелиться sleep 3; // задержка на разворот бота _unit doFire _target; // приказ выстрелить по цели Вместо doTarget можно использовать commandTarget. Тогда у бота будет отображаться приказ от его командира. |
› Четверг
› 27.11.2014
› 10:45
› Сообщение #
Прошу прощения), я имел ввиду с арты стрелять, миномет например. Игрок идет, противник бот его видит и где то стоит арта и вот если она может дострельнуть до игрока то она стреляет. Вот это мне надо. Я уже не раз встречал этот вопрос, но не разу не видел на него ответа, кроме каких то скриптов.
|
› Четверг
› 27.11.2014
› 13:08
› Сообщение #
madsin, без скрипта - никак. Тут цепочка команд: определить цели, которые видит юнит, отсортировать нужные, передать их миномету, активировать обстрел.
Просто поставить бота и как-то соединить синхронизацией или через какой-то модуль с минометом, и получить пару наводчик - орудие не получится. Во всяком случае, я такого способа не знаю. |
› Четверг
› 27.11.2014
› 22:01
› Сообщение #
|
› Четверг
› 27.11.2014
› 22:15
› Сообщение #
|
› Пятница
› 28.11.2014
› 10:19
› Сообщение #
if (isServer) then
{ for "_i" from 10 to 15 do { //--- диапазон циклов стрельбы _mortar = [mortar1, mortar2, mortar3] call BIS_fnc_selectRandom; //--- selects a random mortar unit out of array _uni = [KOTS, AlphaLead, east, player] call BIS_fnc_selectRandom; //--- selects a unit to target the round at _center = getpos _uni; //--- central point around which the mortar rounds will hit _radius = 125; //--- random radius from the center turn lower for closer hits _pos = [ (_center select 0) - _radius + (2 * random _radius), (_center select 1) - _radius + (2 * random _radius), 0 ]; _mortar commandArtilleryFire [ _pos, getArtilleryAmmo [_mortar] select 0, 1//--- number of shots per turn per unit ]; sleep 10; //--- delay between rounds }; }; Вот скрипт нашел, вроде даже работает адекватно, но лупит не по позиции player, а куда то в другое место, иногда даже рядом с собой попадает. Я так понимаю, что опредиление места лупления это _uni = [KOTS, AlphaLead, east, player] call BIS_fnc_selectRandom;, что тут не так? |
› Пятница
› 28.11.2014
› 13:29
› Сообщение #
madsin, Если тебе нужно чтобы миномет стрелял по игроку,вместо _uni = [KOTS, AlphaLead, east, player] call BIS_fnc_selectRandom; поставь: _uni = player; Я не проверял, но должно помочь.
|
› Пятница
› 28.11.2014
› 17:27
› Сообщение #
Здесь реализована некая вероятность стрельбы по игроку - 25%. То есть стрелять будет всегда, но иногда по другим целям (ХЗ по каким.... AlphaLead.. это что? Альфа-самец? самый главный на карте?
Если цель - лупить только по игроку, то можно использовать ту же вероятность, но с логикой, без лишних имен. _uni = [true,true,true,false] call BIS_fnc_selectRandom; if (_uni) then { _center = getpos player; ...... дальше весь остальной скрипт здесь вероятность стрельбы по игроку 75%. Добавляя\удаляя true-false, вероятность можно менять. |
› Пятница
› 28.11.2014
› 20:54
› Сообщение #
|
› Понедельник
› 08.12.2014
› 19:56
› Сообщение #
подскажите как сделать не убивающий арт обстрел города
|
› Понедельник
› 08.12.2014
› 20:05
› Сообщение #
|
| |||
Чат сайта |