Туториал БПО: используем Reinforcment, создаем арт удар |
|
Здравствуйте, гость ( Вход | Регистрация )
Туториал БПО: используем Reinforcment, создаем арт удар |
10.12.2007, 16:38
Сообщение
#1
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
В общем увидел я в третьей бонусной миссии (она правда называется второй) возможность вызывать артудары с помощью блока подкреплений и решил разобраться как это делается. Открыв миссию и иногда спрашивая некоторые не раскрытые для меня детали новой фичи у Instinct'а написал этот тутор, в которм исопльзуется блок Reinforcment (подкрепления) с помощью которого игрок будет вызывать арт удар.
Для начала, что б не очень долго делать карту для тутора - взял готовую карту, заполнил деревеньку немецкими войсками и получилось что-то вроде этого: [attachment=15244:attachment] Теперь немного о новой фиче - подкреплениях. Она появилась в F3-F9 - настройках миссии, и вот тут её на скриншоте можете увидеть: [attachment=15245:attachment] Так же еще появилась команда others/reinforcment, но она простенькая - лишь включает отключает подкрепления и добавляет, отнимает игроку очки. Так что вернемся к менюшке реинфорсмента на рисунке сверху. Сейчас там есть два параметра - это сколько у игрока будет очков (первая строка) и сколько у него может быть максимум этих очков (вторая строка) Дальше тыкаем правой кнопкой мышки в пустом месте меню реинфорсмент, выбираем ADD..., вводим имя (я ввел Artudar, например) и дальше у нас появляется новое подкрепление, которое я настроил таким образом: [attachment=15246:attachment] Теперь пройдемся по всем параметрам подкрепления. state - задает начальное состояние иконки реинфорсмента. Она может иметь состояние '-' - то есть быть активна, может быть спрятана ('hidden') и работать ('work') Строчка text задает текст, который будет написан на иконке Строчка image - будет показывать картинку иконки. Имена картинок - это имена различных войск, техники и пехоты (беруться из папки game.pak\interface\scene\) Строка hint - то что будет писаться, при наведении мышкой на иконку подкрепления count - максимальное число раз вызова данного подкрепления score - сколько очков нужно для вызова одного такого подкрепления delay - задержка между двумя вызовами этого подкрепления eventStart - включает данный event при нажатии на кнопку подкрепления eventEnd - выключает данный event при нажатии на кнопку подкрепления waypoint - если указан в этом параметре вейпоинт, то игрок должен будет после кликания на подкрепление так же еще и указать точку куда его вызывать. И тогда после клика в эту точку переместиться или создаться (если его еще нет) вейпоинт с указанным номером. Ну и я задал следующие параметры. Число очков игроку дал 10. Дал возможность вызвать 10 артударов, задержка между которыми будет 20 секунд и цену одного артудара установил в 1 очко. Так же что бы запустить триггер, который будет выполнять артудар я создал эвент 'artudar', который будет включаться при вызове игроком онного. И прописал, что артудар будет вызываться на вейпоинт 0 (WP0) После того как все здесь настроил, я создал с краю карты этот самый 0-ой вейпоинт и поставил ему радиус 400, как на этом скрине: [attachment=15247:attachment] Теперь осталось лишь сделать триггер, выполняющий артудар. [attachment=15248:attachment] Создал новый триггер, назваз его artudar В условиях запуска триггера прописал срабатывание по event'у 'artudar', который включается при вызове подкрепления. Теперь перейдем к командам в триггере: первый loop - это проигрывание в цикле звука выстрелов. То есть будет проигрываться один за другим 6 звуков выстрела артиллерии, задержка между которым будет составлять от 1 до 2-х секунд. В следующем цикле будет создаваться на вейпоинте 0 объект service/damage/artillery_explosion - который и будет взрывать все. Причем он будет не ровно на 0-ом вейпоинте создаваться, а случайно в пределах радиуса этого вейпоинта. После всех взрывов надо подготовить триггер и эвент к следующем арт удару, для чего я командой event отключаю эвент 'artudar' и перевожу тригер 'artudar' в нерабочее состояние - что бы он заново мог запуститься. На этом все. Осталось добавить лишь примеры. Вот они: В этом архиве миссий 0.mi - вариант описанный в туториале. 1.mi - все примерно тоже самое, но вместо имитации артилерии стреляют настоящие катюши B) [attachment=15250:attachment]. P.S. файл называется зип, но там рар архив. P.P.S. папку мапс из архива и все что в ней лежит вставьте в папку ресурсов в игре. И тогда откроете миссию в редакторе вот эту: map/simgle/test |
|
|
11.12.2007, 19:34
Сообщение
#2
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Вот сделал на этой же карте с теми же немцами вызов вместо артилерии Ил-2 штурмовиков. Теперь тем кто все это запустит и посмотрит приз - увидят как ИЛ-2 самолеты немцов бомбят, а они в свою очередь отбиваются чем могут И еще, если повезет, воздушные крушения, врезания в землю, и трюк самолет-факел тормозит об землю :D
[attachment=15268:attachment] P.S. в этом архиве mi файл просто в ставьте в предыдущую миссию туториала |
|
|
12.1.2008, 15:04
Сообщение
#3
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
подскажите как создать танк на карте так чтоб когда грузиш игру он появился на карте
|
|
|
7.5.2008, 15:14
Сообщение
#4
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
У меня нет reinforcment при нажатии F9
|
|
|
7.5.2008, 15:54
Сообщение
#5
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
|
|
|
9.6.2008, 20:58
Сообщение
#6
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
пример пополнения очков для подкреплений по счету мертвых врагов.
цикл прост: есть враги с неким тэгом ss. и наш юнит с неким тэгом pl. создаем триггер назовем его условно score. в условиях (condition) ставим entities - тэг ss, состояние dead > 0. и создаем команду: generic--while, в ней выбираем так же entities, так же состояние advance, group-include--state(dead), exclude--некий тэг dead который мы ему присвоим. далее пр. кнопкой мыши add inside - reinforcement (score add) прибавляем 1 очко. снова пр. кнопка мыши add - entity state (выбираем тэг ss) и добавляем tag add - dead. далее задержка в секунду delay 1 и зацикливаем триггер trigger off и ставим наш триггер score. в примере этот скрипт. запускаем его. расстреливаем врагов - и видим что с каждым убитым немцем нам добавляется одно очко. [attachment=19537:attachment] |
|
|
22.10.2008, 23:11
Сообщение
#7
|
|
Младший сержант Группа: Старожилы Сообщений: 1446 Регистрация: 13.8.2017 Пользователь №: 48893 |
А как сделать так, чтобы иконки с вариантами подкрепления отображались как в мультилеере?
То есть например справа есть несколько иконок - танк, пехота, машина. Кликнув по иконке танка например, выбираем необходимый, и тд. А то если много вариантов подкреплений сделать, помещается штук 7-8 иконок, остальные вылезают за экран, и не прокручиваются никак... |
|
|
23.10.2008, 13:39
Сообщение
#8
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Сделай типы подкреплений(танк, пехота, машина) как отдельные подкрепления.
Но при их нажатии, не приезжает подкрепление, а скрываются эти подкрепления и показываются уже виды возможных, так-же надо будет сделать кнопку(тоже подкрепление) назад, которая скрывает виды, и обратно отображает типы. |
|
|
24.10.2008, 1:00
Сообщение
#9
|
|
Младший сержант Группа: Старожилы Сообщений: 1446 Регистрация: 13.8.2017 Пользователь №: 48893 |
мм, расписать сможешь? Буду весьма благодарен)
|
|
|
24.10.2008, 18:49
Сообщение
#10
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Читай тут.
Расписано, + пример. |
|
|
20.12.2008, 17:36
Сообщение
#11
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
А можно таким образом спавнить ящик с патронами или предмет инвентаря ?
|
|
|
15.7.2010, 13:56
Сообщение
#12
|
|
Прапорщик Группа: Старожилы Сообщений: 6473 Регистрация: 13.8.2017 Пользователь №: 118395 |
|
|
|
10.3.2011, 13:46
Сообщение
#13
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Человеки помогите как можно такую мыслю реализовать например:
Едет машина заежает через прохадную останавливается с казарм выбегают солдаты и начинают с машины ящики выгружать и чтоб ящики были не пустые а например один с патронами второй с гранатами и тп и после того как разгрузили чтоб машина поехала по делам тоесть за карту а солдаты вернулись в казарму. Можете помоч реализовать? зарание спасибо |
|
|
10.3.2011, 13:54
Сообщение
#14
|
|
Прапорщик Группа: Старожилы Сообщений: 6473 Регистрация: 13.8.2017 Пользователь №: 118395 |
Artz Все вопросы, задаются здесь. В следующий раз смотрим название темы. :angry:
|
|
|
5.2.2012, 17:56
Сообщение
#15
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Цитата(хабанера @ Понедельник, 9 Июня 2008, 20:58:59) [snapback]715809[/snapback] пример пополнения очков для подкреплений по счету мертвых врагов. цикл прост: есть враги с неким тэгом ss. и наш юнит с неким тэгом pl. создаем триггер назовем его условно score. в условиях (condition) ставим entities - тэг ss, состояние dead > 0. и создаем команду: generic--while, в ней выбираем так же entities, так же состояние advance, group-include--state(dead), exclude--некий тэг dead который мы ему присвоим. далее пр. кнопкой мыши add inside - reinforcement (score add) прибавляем 1 очко. снова пр. кнопка мыши add - entity state (выбираем тэг ss) и добавляем tag add - dead. далее задержка в секунду delay 1 и зацикливаем триггер trigger off и ставим наш триггер score. в примере этот скрипт. запускаем его. расстреливаем врагов - и видим что с каждым убитым немцем нам добавляется одно очко. Я вот долго искал методом тыка но так и не нашёл идеального триггера,в этом триггере если в толпу с пушки допустим стрельнуть то за большую часть убитых очки не засчитываються так же не засчитываются очки за полное уничтожение тела солдата(допустим как происходит часто с зенитки попадания или противотанковой гранатой да или фугасом бывает что несколько человек разрывает что тел не остаётся,одни каски только и оружие)хабанера подскажи пожалуйста может есть более чёткий триггер? |
|
|
5.2.2012, 17:59
Сообщение
#16
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
,Есть более пригодный в этом плане триггер, завтра могу скинуть пример.
|
|
|
5.2.2012, 18:24
Сообщение
#17
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Цитата(Dudkoff @ Воскресенье, 5 Февраля 2012, 17:59:00) [snapback]1637128[/snapback] ,Есть более пригодный в этом плане триггер, завтра могу скинуть пример. Да скинь пожалуйста а то надо очень) |
|
|
6.2.2012, 10:40
Сообщение
#18
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Простенький скрипт подсчета количества убитых.Данный скрипт учитывает каждого убитого врага(в данном случае человека).Перезапуск триггера после каждого убитого врага.Имеется некая зона ALL_MAP(в данном случае вся карта)и юниты врага с тагом GER.Обьясню для чего в конце с юнита снимались все теги.Это чтобы в дальнейшем движок игры уже не учитывал этого юнита в последующих триггерах.
Код {triggers {"score_dead_humman" -----НАЗВАНИЕ ТРИГГЕРА {autoreset} ----------ПЕРЕЗАПУСК ЭТОГО ТРИГГЕРА {condition -----------УСЛОВИЯ ДЛЯ ЕГО СРАБАТЫВАНИЯ {terms --------УСЛОВИЯ {"1.entities" -----------ПЕРВОЕ УСЛОВИЕ.ЕСЛИ ОБЬЕКТ... {selector {tag ger} -----С ТАГОМ GER {zone "all_map"} -----НАХОДЯЩИЙСЯ В ЗОНЕ ALL_MAP {type human} ----ЧЕЛОВЕК {state dead} ---В СОСТОЯНИИ -МЕРТВ } } } } {actions ------ДЕЙСТВИЕ ТРИГГЕРА(УСЛОВИЕ СРАБОТАЛО) {"entity_state" -------СОСТОЯНИЕ ОБЬЕКТА(ЧЕЛОВЕК) {selector {amount 1-------КОЛИЧЕСТВО ОБЬЕКТА(ЧЕЛОВЕК) } {tag ger} ----С ТАГОМ GER {zone "all_map"} ---В ЗОНЕ ALL_MAP {type human} ----ЧЕЛОВЕК {state dead} -----МЕРТВ } {tag_add death} -----К ЭТОМУ ОБЬЕКТУ ДОБАВЛЯЕТСЯ ТАГ DEATH {tag_remove ger} ----И УДАЛЯЕТСЯ ТАГ GER } {"reinforcement" ----ДОБАВЛЯЕТСЯ ОДНО ОЧКО {operation score_add} {score 1} } {"entity_state"-------СОСТОЯНИЕ ОБЬЕКТА(ЧЕЛОВЕК) {selector {amount 1-------КОЛИЧЕСТВО ОБЬЕКТА(ЧЕЛОВЕК) } {tag death} ------С ТАГОМ DEATH {zone "all_map"} --------В ЗОНЕ ALL_MAP } {tag_remove death} -----УДАЛИТЬ ТАГ DEATH } {"delay" --------ЗАДЕРЖКА {time 0.1} } {"trigger" ------ПЕРЕЗАПУСК ТРИГГЕРА ПРИ ВЫПОЛНЕНИИ. {name "score_dead_humman"} } } } |
|
|
6.2.2012, 16:40
Сообщение
#19
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Цитата Имеется некая зона ALL_MAP(в данном случае вся карта)и юниты врага с тагом GER Если бы всё было так просто. Объясню, в чём заковырка: Идея в принципе правильна. И, кстати, может работать без зоны, растянутой на всю карту. Но дело в том, что юнит может распылить в ничто любой (почти) снаряд. Т.е. такой юнит в случае гибели подвергнуться учёту не успеет. Игра даже не будет рассматривать его как мёртвый юнит. Проще говоря, он был жив и после попадания фугаса этак с 75 мм и выше исчез. А может, и не один, а с несколькими рядом находящимися юнитами. В БПО (миссия "Севастополь") этот триггер не учёл бы никоим образом те десятки солдат, которые выносит после попадания рядом с ними снаряда орудия береговой батареи. Поэтому есть несколько иной вариант, о котором говорилось мной. Однако этот вариант также имеет некоторые недостатки. Пока что он не совсем готов, но как будет время... Поэтому просто скажу сейчас, что смысл триггера заключается не в отсчёте убитых юнитов, а в подсчёте всех живых юнитов и сравнении этого числа с числом живых юнитов в любой момент времени и соответствующим внесением необходимых в это число (своевременных) изменений. На данный момент я уже знаю один недостаток данного триггера - солдат, севший в танк (ибо там для триггера он "исчезает") триггером вероятнее всего будет учитываться как убитый. А в остальном особых проблем нет. Цитата Цитата Есть более пригодный в этом плане триггер, завтра могу скинуть пример. Да скинь пожалуйста а то надо очень) так что "завтра" - понятие растяжжжиимое |
|
|
6.2.2012, 21:11
Сообщение
#20
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Dudkoff спасибо большое!а на счёт тех солдат от которых остаются только каски и винтовки то будем считать их пропавшими безвести))нет тела нет и статистики))Спасибо ещё раз дал триггер такой какой нужен мне был.
|
|
|
Текстовая версия | Сейчас: 21.9.2024, 16:47 |