|
|
Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Скрипты Вменяемый стелс (попытка отойти от knowsabout) |
Вменяемый стелс |
› Суббота
› 27.12.2014
› 20:45
› Сообщение #
Ну не нравится мне существующая ситуация, особенно когда к knowsabout привязан флаг провала миссии.
Хотелось бы приблизить к реалу. Идея следующая: в дальней зоне (больше 15м) лежащего не видят. В средней (15-5) не видят, если игрок к тому же ползет медленно или не движется. В ближней (меньше 5) лежачего могут заметить; если он в течение 5сек остается виден, то есть не ушел из прямой видимости - за камень или угол дома - его присутствие становится известным. Если ушел - значит "показалось" Естественно, это все ночью, днем цифры будут другие. Для воплощения используется переключалка setcaptive. Вот скрипт пока для одного врага под именем s1: Скрипт будет запускаться при входе в зону. Хинты true\false обозначают положение каптива. До кучи прикручен выход по выстрелу. Затруднение есть в задержке обнаружения и нужных для этого командах (в секции spawn). Та же самая knowsabout не подходит - обнулить ее нельзя, и сама спадает долго. С lineIntersects что-то не получилось. В некотором роде можно использовать BIS_fnc_inAngleSector, но это фиговый заменитель. Подскажите хотя бы идею как это можно реализовать. Сообщение отредактировал andrucio - Суббота, 27.12.2014, 20:51
|
› Суббота
› 27.12.2014
› 23:05
› Сообщение #
Как я понял задачу - нужно насильно изменить степень знания бота об игроке.
Просто задать низкое значение невозможно. Может отодрать бота от его группы на время, пока он не забудет о цели, а затем вернуть? Поймать момент когда knowsAbout скакнет выше определенного значения и сразу отодрать (в смысле исключить)! Дождаться пока knowsAbout восстановится - и снова зачислить. Правда бот все равно начнет волноваться, палить из оружия, привлекать внимание... Подойдет ли такой вариант? Кстати, что за animationState? Можно ли с ее помощью определить название анимации наклона в сторону? Или перекатывания? Или это что-то другое? |
› Воскресенье
› 28.12.2014
› 00:29
› Сообщение #
Совершенно верно. Как уже говорил, knowsabout не подходит. Отодрать бота не получится, все равно это его персональное знание:), и он будет в курсе по-любому.
animationState это фаза текущей анимации в момент опроса. В принципе, название какой угодно определить можно, я так выдирал значения для массива, через copytoclipboard (str (aninationstate player)). В А3 с этим несколько проще. if (tolower (stance _unit) == "prone") - юнит на земле. Для А2 пришлось писать массив нужных и проверять наличие текущей анимки в нем. Всего 7 анимаций. Ну что ж.. расковырял я скрипт товарища TPW. У него там степень видимости определяется по сложной формуле, где учитывается также наличие камуфляжа (уж не знаю как, что-то из конфига читает), поза цели - стоит\лежит, время суток и эта самая видимость по lineIntersects - и там не все так просто. В общем, вроде получилось. Параметр скрипта - группа врагов и тп.. массив короче. Граничные дистанции 20 и 7 метров. speed player < 2 в условии как раз выполняется, если ползти медленно (с шифтом) Творчество товарища TPW оформил как функцию, особо не вникал. Но угол обзора смотрящего вроде достаточный. Время реакции установлено в 5сек. Проверял - если откатиться за бетонный блок, то увидевший поначалу бот потом не видит. Соответсвенно строку stealth_shooter=player можно рихтовать как угодно - присваивание переменной, запуск скрипта на поднятие тревоги и тп. В боевых условиях не проверял, можно будет еще поиграться с значениями Сообщение отредактировал andrucio - Воскресенье, 28.12.2014, 00:45
|
| |||
| |||
Чат сайта |