Модератор форума: GUNNER161, Panikaha |
Форум РЕДАКТОР - ArmA 3 Скрипты Скриптовые команды (всякая всячина) |
Скриптовые команды |
› Воскресенье
› 28.08.2016
› 13:27
› Сообщение #
Сдвется мне, что Аригато что-то подобное использовал. Частенько в процессе миссий наблюдал, что ловлю в прицел бота в окне дома, а тот внезапно исчезает
|
› Вторник
› 30.08.2016
› 03:41
› Сообщение #
Индеец, Ну я вряд ли смогу это воспроизвести, у меня нет таких знаний.
Но вот тот скрипт который ты скинул постом ранее не работает, во всяком случае у меня ругается на sleep |
› Вторник
› 30.08.2016
› 16:11
› Сообщение #
zverev11, попробуй так, может подойдет. Миссия пример: https://yadi.sk/d/ss1v89BiubtFb
|
› Среда
› 31.08.2016
› 02:23
› Сообщение #
Индеец, А вот это работает, и работает уже очень круто и эффективно! Во время игры в правом верхнем углу постоянно передаются какие то данные, не разобрался что это и не знаю как убрать. И я правильно понял что боец в обороне реагирует на ближайшего врага из массива находящихся в радиусе 500 метров от него?
|
› Среда
› 31.08.2016
› 12:56
› Сообщение #
zverev11, нет боец реагирует на всех известных ему врагов, если хотя бы один из них направил на него оружие. Если хочешь разобраться подробнее - описание команд внутри скрипта.
В правом верхнем углу отображается список известных целей в формате [[модуль, имя врага],[модуль, имя врага]...], где модуль - разница между углом (север- направление от позиции врага на позицию бойца) и углом (север- направление оружия врага на позицию бойца). На первом месте элемент с наименьшим модулем. Т.е. если наименьший модуль меньше 2 град., значит ни один из врагов не направил на бойца оружие. Если хочешь удалить отображение - сотри hint ...;(строка №60). Можно прикрутить условие на наличие и высоту укрытия, т.е. ЕСЛИ (ЕСТЬ УКРЫТИЕ) ТО {_h = высота укрытия; ЕСЛИ (0.5<_h < 0.9) ТО {лечь/на колено}; ЕСЛИ (1.2<_h <1.4) ТО {на колено/стоя};}; Как-то так... |
› Среда
› 31.08.2016
› 13:38
› Сообщение #
Индеец, Огонь! Очень круто работает, вчера тестировал пол ночи, один боец в четырёх случаях из пяти укладывает 5 ботов противника в группе. Жаль что так тяжело реализовать автоматический выбор бойцом укрытия, что бы они переползали от одного к другому. Вообще помню мы общались с тобой в другой теме про организованную оборону, с командиром, поддержкой артиллерией, и окапывающимися миномётными расчётами. Если бы реализовать всё это... эх мечты мечты =)
|
› Среда
› 31.08.2016
› 13:56
› Сообщение #
Индеец, а массовое применение скрипта пробовал? Интересуют возможные фризы, скажем, для групп 20 на 20
|
› Среда
› 31.08.2016
› 14:16
› Сообщение #
andrucio, не хватает опыта для вписывания в скрипт нескольких бойцов, если есть такие знания то вот этот скрипт, если добавишь пару бойцов то дальше я сам разберусь и протестирую сразу.
// Активация _te = [боец] execVM "test.sqf"; // добавляем в код новые переменные private ["_unit"]; _unit = _this select 0; // боец hint str _unit; sleep 1; // пока жив боец, выполнять while {alive _unit} do { // Определение врагов // добавляем в код новые переменные private ["_targets","_enemies"]; // список характеристик известных целей _targets = _unit nearTargets 500; // резервируем список известных врагов _enemies = []; // обработка данных { // если сторона объекта находится в списке враждебных сторон if ((_x select 2) in (_unit call BIS_fnc_enemySides)) // то добавить имя объекта в список врагов then {_enemies set [count _enemies,(_x select 4)]}; } forEach _targets; // для обнаруженных целей // отключаем автомомное переключение ИИ (чтоб не чудил) _unit disableAI "AUTOCOMBAT"; { // ОПРЕДЕЛЕНИЕ НАПРАВЛЕНИЯ ОРУЖИЯ ВРАГА // добавляем в код новые переменные private ["_vecWeap","_dirWeap","_dirTo"]; // единичный вектор направления оружия врага _vecWeap = _x weaponDirection currentWeapon _x; // угол направления оружия врага _dirWeap = (_vecWeap select 0) atan2 (_vecWeap select 1); // угол направления от врага на бойца _dirTo = ((getPosASL _unit select 0) - (getPosASL _x select 0)) atan2 ((getPosASL _unit select 1) - (getPosASL _x select 1)); // модуль совпадения углов _modul = abs (_dirTo - _dirWeap); // для каждого элемента масиива _enemies установить вид [модуль, имя] _enemies set [_forEachIndex, [_modul, _x]]; } forEach _enemies; // сортировать массив по возрастанию (элемент с меньшим модулем - первый) _enemies sort true; hint str _enemies; // если наименьший модуль < 2 (хотя бы один из врагов целится в бойца) if (((_enemies select 0)select 0) < 2) // бойцу - лечь then {_unit setUnitPos "DOWN"} // иначе - на колено else {_unit setUnitPos "MIDDLE"}; sleep 0.3; // период цикла }; |
› Среда
› 31.08.2016
› 16:37
› Сообщение #
zverev11, зачем вписывать?
Применяй его к каждому бойцу, которому нужно Хоть в инит пропиши. _te = [this] execVM "test.sqf" |
› Среда
› 31.08.2016
› 21:09
› Сообщение #
zverev11, причина того что один боец ложит всю вражескую группу возможно в том, что в ините ему прописано бессмертие (this allowdamage false). А так - да, занимаюсь потихоньку перемещением бойца во время боя. Есть наработки. Но работы еще очень много...
andrucio, нет, не пробовал. Пока хочу сделать, пускай и затратный, но рабочий вариант поведения только одного бота в бою. Вот обнаружил полезную команду sort, которая сортирует элементы массива, уточнил значение переменной _forEachIndex (для каждого элемента) в работе команды set, ну т.д. |
› Среда
› 31.08.2016
› 23:40
› Сообщение #
Индеец, Тогда было бы 5 из 5 случаев побед =) Я убрал у них эту строку из инита, все они теперь простые смертные. Просто удачно посадил его за укрытие, ну и капелька везения наверно. Если нужно будет потестить что то - пиши, есть время свободное могу заниматься этим.
andrucio, Ок попробую, я думал там под конкретного бота написан скрипт. |
› Воскресенье
› 11.09.2016
› 12:39
› Сообщение #
Мужики, помогите)))
потерял где-то скрипт, который обозначал маркерами дружественные группы, а так же обнаруженные группы противника. Выкладывал здесь, но поиск успехов не принёс. Может у кого-то есть на поверхности? ==== нашёл Спойлер player spawn { FAcenter = createCenter sideLogic; FAgroup = createGroup FAcenter; _fmm = FAgroup createUnit ["MartaManager", [0, 0, 0], [], 0, ""]; setGroupIconsVisible [true,false]; };// sqf скрипт, требует активации Сообщение отредактировал alex70-03 - Воскресенье, 11.09.2016, 16:29
|
› Суббота
› 07.01.2017
› 21:02
› Сообщение #
Всем доброго времени суток.
Мне нужно, чтобы транспорт двигался друг за другом (по ровной дороге) с минимальной дистанцией. Разумеется, из-за тупости ИИ без команд или скриптов этого не сделать (они вечно пытаются куда-нибудь свернуть или обогнать ). Грубо говоря, мне нужно, чтобы бот просто нажимал на педаль газа, а руль вообще не трогал))) И еще, если это возможно, нужно тоже самое только для бойца. Он должен просто бежать вперед, ни на что не обращая внимание. В общем, ребят, может кто помочь ?) |
› Суббота
› 07.01.2017
› 23:15
› Сообщение #
dyadyaIP,
Только если запишешь предварительно колонне движение командой BIS_fnc_UnitPlay. Садишься водителем активируешь запись, идеально проезжаешь, потом по этой записи бот уже сам поедет, а ты уже в следующей за ним машиной так же едучи следом записываешь как движешься. Но для бойцов такое не срабатывает, только для техники ездящей и летающей. |
› Воскресенье
› 08.01.2017
› 14:54
› Сообщение #
AleksSan,
Понял тебя, я такой командой уже пользовался. Просто при её помощи это довольно долго делается, учитывая что мне нужно простейшее движение по прямой. И еще, не подскажешь ? Можно ли записать стрельбу техники (например танка или артиллерии)? Пробовал при помощи BIS_fnc_UnitPlay, так танк стреляет не поворачивая башню... И если нельзя, то какой командой можно заставить наводчика выстрелить по какому-нибудь объекту (например бочке), при активации триггера например ? Заранее спасибо) |
| |||
Чат сайта |