Модератор форума: GUNNER161, Panikaha |
Форум РЕДАКТОР - ArmA 3 Скрипты Скриптовые команды (всякая всячина) |
Скриптовые команды |
› Среда
› 21.01.2015
› 23:35
› Сообщение #
voin64s, да. Я перепроверил все варианты, И синих выставлял, и независимых. И даже в ТИПе юзал от незнания, существует и не существует тоже выставлял, но все тщетно. У меня получилось вейпоинтами проложить и расчитать нужное время прибытия за счет активации триггера (когда враг проходит определенное место на карте), но это не совсем то, что я хочу - сильно усложнено, но работает... хотя не совсем стабильно - вертолет моментами делает лишние круги, только потом улетает. Или же тупо виснет в воздухе и ждет расправы, если в него мочат снайперы. Вот и думаю, может скрипт какой есть, чтобы все эти потуги облегчить?
|
› Среда
› 21.01.2015
› 23:45
› Сообщение #
Phantasmagore, поставь в ВП верта count (units имя отряда) == 0
А ты уверен, что отряд весь уничтожен? Может там остался один глубоко раненый:) |
› Четверг
› 22.01.2015
› 01:25
› Сообщение #
andrucio, да, я проверял в Зевсе, ставил возле них танк и сносил нужный отряд, все равно не работало. Сейчас проверю.
|
› Четверг
› 22.01.2015
› 01:36
› Сообщение #
В триггере нужно выбрать тип - "переключить". Вертолетам выставить поведение беспечно, режим боя не стрелять. Тогда они не будут трусить или гонятся за врагами.
|
› Четверг
› 22.01.2015
› 01:57
› Сообщение #
andrucio, в общем у меня пустой вертолет, в него садятся два вертолетчика и шестеро спецов. Я кинул вертолетчикам вейпоинт после посадки под ноги, прописал в этом вейпоинте в разделе УСЛОВИЕ count (units имя отряда) == 0, и на нужном отряде указал "имя отряда = Group this;". Ликивдировал отряд через Зевса, но вертолет так и не взлетел.
Добавлено (22.01.2015, 01:57) |
› Четверг
› 22.01.2015
› 06:28
› Сообщение #
Phantasmagore, нафига тебе триггер если условие есть в Поинте ?
|
› Четверг
› 22.01.2015
› 12:11
› Сообщение #
Slon, я уже пробовал в самой поинте прописывать. Не работает. Может я что-то не так делаю или где-то что-то забываю? Напишите пожалуйста подробно, что и куда нужно вставить, вписать, впихнуть. Лучше в личку, а то нафлудил я в этой теме со своими вертолетами
|
› Четверг
› 22.01.2015
› 13:44
› Сообщение #
Phantasmagore, если верт взлетает вне видимости игрока, имеет смысл ставить его уже с экипажем и группой либо вообще спавнить в нужной точке.
кинул вертолетчикам вейпоинт после посадки под ноги, прописал в этом вейпоинте в разделе УСЛОВИЕ ЗЫ Я просто такие дела уже давно скриптами описываю, с этими триггерами и синнхронизациями гимор один.. |
› Пятница
› 23.01.2015
› 02:23
› Сообщение #
andrucio, Согласен на счет герома))
-на счет вейпоинтов - так и сделал, прописывал УСЛОВИЕ в тот, что до посадки, но после поинта СЕСТЬ (сейчас еще попробую в поинт СЕСТЬ прописать и отпишусь) в вертолет, но так и не заработало. -на счет вертолета уже с экипажем: тут тоже небольшая загвоздка - американские вертолеты не устроили, особенно тот, что совсем открытый, мои снайпера половину состава на подлете еще снимают прямо с вертушки либо самих пилотов, поэтому пришлось ставить пустой верт от Независимых. Он закрытый и пилотов с составом никто не грохнет. А чтобы уже в пустой посадить нужных людей, я так понял, нужно прописать это скриптом, а я совсем не дружу с этим. Все бы ничего, но я каждого бойца создаю через арсенал с аддонами, и как я подозреваю, в вертолет не получится прописать нужных мобов в нужным мне снаряжением. Поэтому, обойдусь триггером и простыми поинтами Добавлено (22.01.2015, 16:44) Добавлено (23.01.2015, 02:23) |
› Пятница
› 23.01.2015
› 23:37
› Сообщение #
unit doWatch unit2
Unit смотрит на unit2, тоесть не следит прицелом,а именно следит за ним глазами Добавлено (23.01.2015, 23:37) |
› Суббота
› 24.01.2015
› 00:46
› Сообщение #
Прошу помощи.
Пробую слепить скрипт управления ботом во время боя. Описание, как обычно, внутри. Проблема в том, что после определения безопасной позиции бот не желает к ней двигаться. Подскажите как заставить. Пробовал move, doMove, даже moveTo - работает в 1 случае из 10. Ошибку определить не могу. Это рабочий вариант, задумок еще много. // добавляем в код новые переменные private ["_unit","_gunner"]; _unit = _this select 0; _gunner = _this select 1; _unit doWatch getPos _gunner; sleep 2; // пока жив боец, выполнять: while {alive _unit} do { // боец принимает положение по усмотрению _unit setUnitPos "AUTO"; // добавляем в код новые переменные private ["_objects","_enemies","_dangerous_enemies"]; // объекты, о которых знает боец _objects = _unit targetsQuery ["", "", "", "", ""]; // ОПРЕДЕЛЕНИЕ ВРАГОВ // резервируем список врагов _enemies = []; { // если сторона объекта враждебна стороне бойца, if (((_x select 2) getFriend (side _unit) < 0.5) // и у объекта имеется оружие and (count weapons (_x select 1) > 0)) // то зачислить объект в список врагов then {_enemies set [count _enemies, (_x select 1)]}; // для всех известных объектов } forEach _objects; // если враги есть, то if (count _enemies > 0) then { //добавляем в код новые переменные private ["_hideout","_hide","_find_enemy","_dir","_pos"]; // ближайший известный враг _find_enemy = _unit findNearestEnemy _unit; // ОПРЕДЕЛЕНИЕ УКРЫТИЯ // список укрытий в радиусе 20 м _hideout = nearestObjects [_unit, ["Static"], 20]; // если укрытий больше нуля, то if (count _hideout > 0) then { _i = 0; while {_i < count _hideout} do { /* если расстояние от врага до укрытия меньше расстояния от врага до бойца*/ if ((_find_enemy distance (_hideout select _i)) < (_find_enemy distance _unit)) // то выход из цикла с присваиванием _hide названия подходящего укрытия exitWith {_hide = _hideout select _i}; // следующий объект _i =_i + 1; }; }; // ОПРЕДЕЛЕНИЕ КООРДИНАТ ПОЗИЦИИ ЗА УКРЫТИЕМ hint format ["_hide: %1\n _find_enemy: %2", _hide, _find_enemy]; // если лидер группы врага знает о бойце менее чем на 1.5 баллов, if (leader group _find_enemy knowsAbout _unit < 1.5) // то режим боя бойца - огонь только в защиту then {_unit setCombatMode "GREEN"} // иначе - огонь по желанию else {_unit setCombatMode "YELLOW"}; // угол между направлением на север и направлением от врага на укрытие _dir = ((getPosASL _hide select 0) - (getPosASL _find_enemy select 0)) atan2 ((getPosASL _hide select 1) - (getPosASL _find_enemy select 1)); // позиция за укрытием _pos = [ (((getPos _hide) select 0) + (sin _dir)* 3), ((getPos _hide) select 1) + (cos _dir)* 3), ((getPos _hide) select 2)]; _znak = "Sign_Arrow_F" createVehicle _pos; _unit setUnitPos "MIDDLE"; _unit doMove _pos; - почему не срабатывает ??? // ждать, пока между бойцом и позицией будет 0.5 м waitUntil {((getPos _unit) distance _pos) < 0.5}; }; sleep 2; }; |
› Суббота
› 24.01.2015
› 15:22
› Сообщение #
Индеец, а координаты _pos получаются реальными? Вытащи их хинтом для контроля. И плюс дистанцию между pos и юнитом.. хотя у тебя стрелка там спавнится..
Может вместо domove ВП добавить? достаточно (unit distance _pos) < 0.5 и 0.5 может быть мало. Не умеют они точно на координаты вставать. 1\2ОФФ В соседней теме есть скрипт определения высот\низин на местности. Не сгодится для твоей тактики? Снайперу самое оно будет, на горушку зелезть |
› Суббота
› 24.01.2015
› 16:57
› Сообщение #
andrucio, стрелку я поставил для теста - определял будет ли _pos ЗА укрытием и вообще определились ли координаты _pos. Стрелку потом уберу. Проблема в другом: странности какие-то происходят. Как только ставлю if... после определения _pos, команды после while {alive _unit} do вообще не выполняются.
Пробовал и ВП - та же херня. Где-то ошибка с логикой или иерархией выполнения, но где - разобрать не могу. А скриптик тот - да, сохранил на будущее. Должен пригодиться. Прям в точку то, что хотел alex70-03. |
› Суббота
› 24.01.2015
› 17:30
› Сообщение #
|
› Суббота
› 24.01.2015
› 18:56
› Сообщение #
while {_i < count _hideout} do { /* если расстояние от врага до укрытия меньше расстояния от врага до бойца*/ if ((_find_enemy distance (_hideout select _i)) < (_find_enemy distance _unit)) // то выход из цикла с присваиванием _hide названия подходящего укрытия exitWith {_hide = _hideout select _i}; // следующий объект _i =_i + 1; }; Здесь не понял. После определения позиции ставится _znak, откуда опять while {alive _unit}? |
| |||
Чат сайта |