Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: О создании нелинейных миссий
Форумы Боевого Народа > Игры > Форумы игр серии "В тылу врага" > Мастерская Maps&Mods > Руководства, примеры и мануалы
StalkerXey
Для начала один пример от меня - как создавать в триггерах с помощью команд случайный выбор. В общем вот:



Здесь рассмотрен краткий пример что надо делать, если мы хотим что б произошло случайным образом одно из двух событий.

Сначало опишем то, что хотим что б было: Есть некоторое событие. Например надо переключить эвент, который запускает триггер вызывающий, например, подкрепление. Но хочется, что б он случайно запускался либо через 10 секунд, либо через 20, либо через 30.

Таким образом нам надо использовать команду switch и следующую структуру в ней:

Код
{"switch"
   {"case"
      {condition
         {type rand}
         {value 0.33}
      }
      {"delay"
         {time 10}
      }
   }
   {"case"
      {condition
         {type rand}
         {value 0.33}
      }
      {"delay"
         {time 20}
      }
   }
   {"default"
      {"delay"
         {time 30}
      }
   }
}
{"event"
   {event "event"}
   {mode set}
   {delay 0}
}


Теперь опишем что и как работает. Есть переключатель событий (switch). В нем прописываются условия (правой кнопкой мышке на команде switch и жмем case) и условие которое срабатывает по умолчанию - если все остальные условия не сработают. Когда очередь доходит до этой команды. То по списку проверяются все условия switch'ей. То, у которого первого условие подходит - выполняется, остальные ниже уже выполняться не будут.

Таким образом, если нам надо выбрать случайно одно из 3-х событий. Мы высчитываем вероятность происхождение каждого из них - то есть 33% или 0.33. Два из трех событий мы заносим в case а одно в default. В условиях case - мы выбираем rand-ом и пишем в его параметре 0.33 (в рандоме бросается число от 0 до 1, понятное дело не целое, и если оно оказывается меньше установленого в value - то тогда срабатывает, если больше - то идем на следующее условие)

В общем то вроде бы и все.
хабанера
Q: Как сделать чтобы каждый из юнитов или единиц техники передвигались по своему маршруту.

А: 1. Выставляем юнитов, выставляем технику, сажаем туда экипаж.
2. Выставляем вэйпоинты, какой маршрут мы хотим задать.
3. Переходим в триггеры, создаем новый, скажем start, в командах выбираем самую нижнюю - waypoint. Заходим в него выбираем actor, ставим своего игрока Player 1/2 и т.д.
4. У каждого юнита и единицы техники есть свой номер - mid. Увидеть можно выделив его. И вот в настройках в строчке mids прописываем его номер, во вкладке type выбираем что это будет - human для пехоты, auto - для машин, мотиков и т.д.
5. Вэйпоинт выбираем первый в связке относящейся к этому юниту или группе юнитов.
6. Первая команда готова. Затем копируем ее Alt+C, в новой меняем mid на нужный номер и вэйпоинт.
7. Все, все идут по своим делам smile.gif
BloodSmith
Вчера эксперементировал с функцией rand - прикольно, настоящий подарок от разработчиков для создания нелинейного сюжета.
Чтобы определить как распределяется вероятность я объединил респаун юнитов с функцией rand.
Суть: 4 юнита (hidden), 1 самоперезапускающийся триггер (5 сек.), который случайным образом отправляет одного из юнитов на вейпоинт.
Вот что получилось (код в редакторе видно на картинке):
Нажмите для просмотра прикрепленного файла
Код в блокноте:
Код
{"start"
                {autoreset}
                {condition
                    {terms
                        {"1.event"
                            {id "start0"} // Триггер запустится, если событие start0 - будет включено.
                        }
                    }
                }
                {actions
                    {"switch"
                        {"case"
                            {condition
                                {type rand}
                                {value 0.25} // с вероятностью 1/4 запуститься код, указанный ниже
                            }
                            {"waypoint" // отправляется в точку (0) путем клонирования юнит (с номером 35)
                                {who
                                    {type actor}
                                    {actors
                                        {mids 35}
                                    }
                                }
                                {action
                                    {type start}
                                    {waypoint "0"}
                                    {clone}
                                }
                            }
                        }
// Аналогично делаем для других юнитов (в 4-м case вместо дефаулта я использовал rand value 1)
                        
                    }
                    {"event"
                        {event "start0"}
                        {mode toggle}
                        {delay 5}
                    }
                }
            }

Вместо отправки юнита на вейпоинт можно вставить запуск события.
В общем-то дело за сценаристами, которые смогут написать нелинейный сюжет smile.gif
хабанера
Весьма зачотная функция редактора, отчасти также для создания нелинейного сюжета. Можно назвать ее всемогущее око.
в conditions прописать условие camera, проставить зону в которую эта камера попадет, когда игрок будет изучать карту скажем.
а команды можно ставить любые.
то есть к примеру идет миссия, что то на ней происходит, кто то ходит в патруле, кто то курит, кто то разговаривает, чтобы у вас не выскакивали окошки диалогов, а вы не знали кто это говорит и к чему и сделано это условие - когда вы наведете камеру именно на этот участок и произойдет это событие. Это условие как бы делает игрока непосредственным свидетелем или участником процесса.
То есть пока ты не смотришь сюда - этого вроде как бы и нет smile.gif)
камеру можно настраивать по времени, видящую или не видящую, частично видящую.

в файле пример - стоят два солдата - наводите на них камеру - они умирают
[почувствуй себя зевсом]

smile.gif
хабанера
Еще один пример скрипта о нелинейной атаке. Тут недавно задавали вопрос, о том как сделать, чтобы атака врагов шла случайным образом, но имела некие приоритеты.
Вот конкретный пример. Допустим русские против немцев. Есть и там и там пехота, пулеметчики, базутчики, танки, спецназ. Немцам еще добавил пушки, т.к. они обороняются.
Все та же любимая функция switch, где с помощью тагов и четырех вариантов атаки случайным образом происходит бой. Либо наши пулеметчики атакуют вражеских базутчиков, дать дорогу танкам, либо базутчики атакуют немецкие танки, либо наши танки атакуют пушки или опять же танки smile.gif . Триггеры обороны не прописывал, отдал там на откуп AI.

Те же вариации можно прописывать и для обороны.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.