– Придёт день, и вы столкнетесь с ситуацией, к которой окажетесь полностью неподготовлены как физически, так и эмоциально. Тогда вы и узнаете, какие из вас врачи, насколько вы подвержены страху и как хорошо вы выучились.
Лекция одного преподавателя на Риннале Джо Шрайбер, "Звёздные Войны: Солдаты Смерти"
Сколько глобус ни крути, там Fess-Style не найти...
1. Fess, подскажи пожалуйста, что прописывать, что бы триггер срабатывал когда: 1)Юнит садится в технику? 2)Когда миссия просто начинается (триггер должен переключиться с самого начала игры)? 3)Происходит взрыв мины? 4)Две группы объединяются в одну по средствам маршрутных точек? 5)Парашютист приземляется?
2. Что прописать или поставить в маршрутной точке, что бы у группы было задание уничтожить объект? Это достаточно примитивная основа простой миссии, но я так и не смог это реализовать. То есть у группы задание: "подорвать вражеский танк" (с помощью взрывчатки). Сапер должен подойти к танку и заложить взрывпакет, после чего отойти с группой на безопасное расстояние и взорвать его, миссия выполнена! Если этого нельзя сделать без длинных скриптов и т.д., то я вообще не понимаю зачем в некоторых отрядах есть саперы с множеством мин и взрывчатки в снаряжении, если они не могут ими пользоваться!?
3. В ArmA III есть модуль "случайный патруль", если тебе не сложно, то пожалуйста объясни как им пользоваться?! Там в описании сказано что то о синхронизации гражданских и командиров групп с контрольными точками и т.д., я вообще ничего не понял из того, что там написано =D
4. Как заставить артиллерийскую установку имитировать обстрел вражеских позиций? То есть стоит пушка с поднятым стволом и стреляет по городу (или по чему то еще, не важно). Мне нужно это для миссии: "вражеская артиллерия обстреливает позиции союзников. Задача отряда проникнуть на территорию противника, обнаружить артиллерийскую позицию и уничтожить ее".
5. Что прописать, что бы после переключения триггера начиналась вторая часть миссии? Например группа подходит на место встречи с остальными бойцами, потом идет затемнение экрана и вы уже едите на машине или сидите в засаде в другой точке на карте.
6. И последний вопрос Едет колонна из нескольких грузовиков с пехотой, первая машина подрывается на мине (взорвалась она или просто повредилась не должно влиять на суть), после чего все остальные машины останавливаются и из них выгружается пехота, и начинает вести бой. Как это реализовать?
P. S. Fess, если ты почитаешь всю эту мою писанину, то можешь мне сразу ответить и сказать: потрудишься ты над ответами к моим вопросам или нет? Просто ответы мне реально важны, а я не хочу изменять твоему форуму и писать где либо еще =D Заранее спасибо!
2)Когда миссия просто начинается (триггер должен переключиться с самого начала игры)?
В условие просто < true > или < time > 0 >
ЦитатаSS_Panzer_Division ()
3)Происходит взрыв мины?
В условие < !alive minaname >, minaname - переменная, в которой находится твоя мина. Недавно в соседней теме я уже приводил пример, как можно забить в переменную целое здание, после чего его можно, например, сносить командой dom setDamage 1.
ЦитатаSS_Panzer_Division ()
4)Две группы объединяются в одну по средствам маршрутных точек?
В поле активации (не в условие!) марш.точки с типом "Присоединиться"\"Присоединиться и возглавить" напиши что-нибудь вроде < groupjoined = true >, а в условие активации триггера напиши < groupjoined >
ЦитатаSS_Panzer_Division ()
5)Парашютист приземляется?
Я не уверен, но можешь попробовать в поле активации < getPos parashytist select 2 < 5 >. Есть вероятность, что getPos вернет не высоту над землей, а высоту над уровнем моря. Мне сейчас не на чем проверять, так что тебе придется это проверять самому). Чтобы триггер не срабатывал, когда от парашютиста до земли будет 5 метров (например, если ты будешь сохранять игру, то будет некрасиво сохранять игрока перед приземлением, лучше сделать это после), можешь поставить триггер на задержку. В низу там есть 0, 0, 0 - замени на 20, 20, 20 (или на сколько тебе надо секунд).
ЦитатаSS_Panzer_Division ()
2. Что прописать или поставить в маршрутной точке, что бы у группы было задание уничтожить объект? Это достаточно примитивная основа простой миссии, но я так и не смог это реализовать. То есть у группы задание: "подорвать вражеский танк" (с помощью взрывчатки). Сапер должен подойти к танку и заложить взрывпакет, после чего отойти с группой на безопасное расстояние и взорвать его, миссия выполнена! Если этого нельзя сделать без длинных скриптов и т.д., то я вообще не понимаю зачем в некоторых отрядах есть саперы с множеством мин и взрывчатки в снаряжении, если они не могут ими пользоваться!?
Чтобы выполнить\провалить, создаешь триггер и в активацию < ["nazvanieZadaniaNaLatinice","Succeeded"] call BIS_fnc_taskSetState; >. Вместо succeeded можно писать Failed.
Заставить бота поставить мину под танк - занятие скорее для мазохистов. И черт возьми, я этим занимался В идеале, чтобы бот поставил мину в нужную точку, вокруг не должно быть врагов. А то он начинает бояться и прятаться, а потом может поставить бомбу себе под ноги, вместо того, чтобы лезть под пули. Стандартный мозг у ботов слишком маленький, чтобы обдуманно подползти, заложить мину, уползти, взорвать. Поэтому без скриптов тут никак.
1) В папке с миссией создай файл init.sqf 2) Вставь туда это
Код
FESS_fnc_SetBomb = { /* Описание soldier устанавливает С4 в позиции placepos Использование [soldier, placepos] spawn FESS_fnc_SetBomb; для взрыва в нужный момент используем soldier action ["TOUCHOFF", soldier] */ _man = _this select 0; _pos = _this select 1; _man doMove _pos;
waitUntil{!alive _man || _man distance _pos < 3}; // Дистанция для закладки С4 - 3 метра if(alive _man) then { _man action ["SETTIMER", "DemoCharge_Remote_Mag"]; sleep 0.5; _man Fire ["DemoChargeMuzzle", "DemoChargeMuzzle", "DemoCharge_Remote_Mag"];
// Раскомментировать строку для превращения сапера в солдата-смертника :DDD // _man action ["TOUCHOFF", _man]; }; };
3) Поставь в игре триггер, в описание триггера напиши "Приказать взорвать танк", активация Радио Альфа. 4) В поле активации пишешь < [soldiername, getPos tankname] spawn FESS_fnc_SetBomb; >
Теперь в нужный момент нажимаешь 0-0-1, и твой бот бежит бежит закладывать бомбу.
5) Создаешь триггер, который будет подрывать, в активацию пишешь < soldiername action ["TOUCHOFF", soldiername]; >, Радио Бета (или как там), описание : "Взорвать заряд".
Тут есть небольшая вероятность, что взорвать заряд можно будет только с дистанции, не превышающей 100 метров. Такая дистанция была установлена в А2 для игрока. Как это сработает с ботами - не знаю, проверь. Возможно, они смогут подрывать заряд с какой угодно дистанции.
Если не хочешь подрывать самостоятельно, можно поставить таймер. Тогда раскомментируй те две строчки и после < _man Fire [...]; > напиши < sleep 30; >. Это установит таймер в 30 секунд. НО если сапер погибнет раньше срока, то бомбу уже никак не взорвать.
ЦитатаSS_Panzer_Division ()
3. В ArmA III есть модуль "случайный патруль", если тебе не сложно, то пожалуйста объясни как им пользоваться?! Там в описании сказано что то о синхронизации гражданских и командиров групп с контрольными точками и т.д., я вообще ничего не понял из того, что там написано =D
Насколько я понял, создай гражданских и поставь им вэйпоинты, создай группу военных. Модуль убьет гражданских и направит случайнную группу военных по вэйпоинтам случайно выбранного гражданского
ЦитатаSS_Panzer_Division ()
4. Как заставить артиллерийскую установку имитировать обстрел вражеских позиций? То есть стоит пушка с поднятым стволом и стреляет по городу (или по чему то еще, не важно). Мне нужно это для миссии: "вражеская артиллерия обстреливает позиции союзников. Задача отряда проникнуть на территорию противника, обнаружить артиллерийскую позицию и уничтожить ее".
Код
// ======= ПЛАТФОРМА ДЛЯ СОЗДАНИЯ SP МИССИЙ ========= // ================ СТУДИЯ САРМАТ =================== // = http://arma.at.ua/ = http://web-pioneer.at.ua/ =
/* Cтрельба в верх(кто либо) Активация: _as = [имя_стреляющего,"имя_маркера(направления стрельбы)",колво_выстрелов,"имя_снаряда"] exec "sсripts\arti_fire.sqf" Пример: _as = [grad,"mark",20] execVM "sсripts\arti_fire.sqf"; Применения: применяется для всего того что хотите чтоб стреляло(по стандарту в воздух), направления стрельбы регулируется маркером, в данном случае "mark".
Примечания: аккуратно его используйте, не всегда захочет стрилять так как это надо, потаскайте маркер туда-сюда, колво выстрелов может не всегда соответствовать тому, что вы написали(нет столько снарядов, долгая перезарядка и прочие) */
5. Что прописать, что бы после переключения триггера начиналась вторая часть миссии? Например группа подходит на место встречи с остальными бойцами, потом идет затемнение экрана и вы уже едите на машине или сидите в засаде в другой точке на карте.
6. И последний вопрос Едет колонна из нескольких грузовиков с пехотой, первая машина подрывается на мине (взорвалась она или просто повредилась не должно влиять на суть), после чего все остальные машины останавливаются и из них выгружается пехота, и начинает вести бой. Как это реализовать?
Уважаемый Fess, спасибо тебе большое за такой быстрый ответ))) а как "добавить ссылку на тему в шапке"? (Я тогда просто создам 2 новые темы)
Добавлено (13.02.2014, 00:46) --------------------------------------------- Уважаемый Fess, на счет вопроса 2. (Про взрывчатку), у меня скрипт отказывается работать =( сделал все в точности как ты написал, но бот просто подбегает к точке, проигрывается анимация закладывания взрывпакета, после чего он стоит на месте (взрывчатки нет)...
Добавлено (15.02.2014, 08:18) --------------------------------------------- Уважаемый Fess, за скрипт стрельбы техники по точке я тебе бесконечно благодарен!!!!!!! Но что значит строчка _ob = nearestObject [ _strelok, "R_GRAD"]; ??? И почему там "R_GRAD"? Видимо нужно вписать другое название?
Сообщение отредактировал SS_Panzer_Division - Суббота, 15.02.2014, 08:36
сделал все в точности как ты написал, но бот просто подбегает к точке, проигрывается анимация закладывания взрывпакета, после чего он стоит на месте (взрывчатки нет)...
Раньше эта команда работала (и то, подбирал я ее чередой проб и ошибок, долго мучился), сейчас перестала. Возможно что-то попутали BIS'ы [бесы :D]. Проблема возникает именно с командой < botname Fire ["DemoChargeMuzzle", "DemoChargeMuzzle", "DemoCharge_Remote_Mag"]; >
Я НЕ знаю, как можно по-другому заставить бота положить С4.
ЦитатаSS_Panzer_Division ()
Уважаемый Fess, за скрипт стрельбы техники по точке я тебе бесконечно благодарен!!!!!!! Но что значит строчка _ob = nearestObject [ _strelok, "R_GRAD"]; ??? И почему там "R_GRAD"? Видимо нужно вписать другое название?
Вероятно, эта штука удаляет вылетевший снаряд. Я думаю, в данном случае строчки