???
Математика на уровне МГУ

Показано с 1 по 6 из 6

Тема: Создание миссии в деталях

  1. #1
    Реаниматор Аватар для Gunslinger
    Регистрация
    30.03.2003
    Адрес
    Москва
    Возраст
    43
    Сообщений
    1,284

    Общее

    Вообще то данное руководство я хотел написать по окончании своей миссии, но т.к. ее создание затягивается по разным причина (сессия, сайт, глюки редактора), то решил написать главные моменты. Позже, когда миссия будет готова, я переделаю текст, который уже будет основываться на реальных примерах. Итак, поехали (все иссследования проводились на версии игры 1.40, однако большая часть верна для всех версий).

    Главное при создании миссии - это терпение и усидчивость. Если вы не обладаете этими качествами, то придется их тренировать или же заняться чем, то еще. Для примера - у меня ушло 2 дня лишь на проработку 1 военной базы (подробнее ниже).

    Также вам нужно обладать хорошими знаниями в военном искусстве (чтобы иметь представление как могут вести себя войска, как они располагаются, ведют боевые действия и т.п.).

    Еще одна не менее важная деталь - скрипты. Без них ваша миссия будет "одна из". То есть не будет выделяться среди тысяч паручасовых поделок других игроков.

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

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

    Хорошая привычка - пересматривать свои работы через некоторое время (1-2 недели). Вы забываете некоторые моменты и смотрите на них совершенно по другому. Это позволяет вам найти те ошибки, которые не были видны сразу, или сделать определенные добавления.

    Далее сюжет. Если у вас его нет, лучше и не начинать. Проект развития событий должен быть готов заранее (не обязательно полный, но в общих чертах). Детали же обычно приходят сами во время работы и это даже лучше, если события ведут вас, а не наоборот (получается куда интереснее). Хотя здесь будьте осторожны. Важно также понимать и знать все тонкости работы с редактором OF, т.к. у него достаточно ограничений, чтобы загубить ваши лучшие идеи. Если такое случилось, ищите другое решение, желательно чтобы оно было не менее оригинальное.

    Так, с общими вопросами разобрадись, переходим к деталям. Начнем с заставки, а именно Intro. Вообще это очень нудное занятие. Если вы хотите сделать качественную миссию, вам придется поработать над расположением камер и точно расставить их. Если заставка у вас прямо в миссии, а не в виде отдельного Intro, создавайте камеру в первые же секунды, чтобы не появлялся это раздражающий вид игрока перед видео-роликом.

    Делайте затенение, если не хотите показывать что твориться вначале миссии (может в это время проходит инициализация игры и не все персонажы успели встать на свои места).

    Всегда завершайте видео-ролики. Заставлять игрока жать ESC - дурной тон.

    Что касается самой миссии. Умейте сокращать. Во-первых, это признак мастерства, уметь исключать лишнее. Во-вторых этого требует игра, т.к. не у всех Pentuim 4 или Athlon. Юнитов может быть не много, но они могут быть расставлены идеально, гармонируя с внешним миром и создавая цельную картинку без явных белых пятен.

    Но и умейте наполнять. Это больше связано с реалистичностью. Вы думаете на военной базе будут футбольные поля или безлюдные площади. Посмотрите, вон в середине много свободного места. А что же мы можем там разместить? Например полевой госпиталь, всего пара мед. палаток, а уже вырисовывается объемная картинка. Или же полоса препятствий для бойцов, взлетные площадки для вертолетов, да много вариантов, подключите ваше вооброжение. Да и еще, обычно люди не сидят целый день в технике, так что на базах используйте пустую (Empty), а экипаж расположите поблизости (или можно вообше без оного, малоли какие у них дела ).

    Умейте оживить миссию. Вот это самое сложное. Важно знать где и как AI должен действовать, чтобы игроку казалось, что он не в музее восковых фигур, а на театральном представлении. Все замерает лишь ночью, и то еще шевелятся часовые и патрули. А днем вообще шабаш. Почему бы не сделать отъедз грузовика с солдатами. Может кто-то возвращается с учений. А если солдаты на улице, то займите их делом, пусть отжимаются, говорят и т.п.

    Иногда приходится ограничивать игрока (запрещать использование некоторой техники, запрещать выходить за определенную територию), чтобы он не убежал куда не надо, или не уехал. Что ж, это вынужденная мера и вам ха это еще спасибо скажут, если вы не дадите игроку тратить впустую время слоняясь по пустому острову.

    Теперь можно переходить к граблям, на которые я напоролся создавая миссию.

    1. Танк почему-то произвольно перемещался (очень медленно, как бы спозая) вверх или вниз. Оказалось на него влияет даже минимальное отклонение рельефа (грузовик стоял нормально), так что следите за коричневыит полосками на карте.

    2. Солдаты в группе напрочь отказываются вставать как я их расставляю (все время становятся клином). Не помогает ни указание свойства None вместо In Formation, ни прописвание this setbehaviour careless. До сих пор не знаю как побороть этот глюк, поэтому пришлось отказаться от объединения солдат в группы.

    3. Создание стройной колонны бегущих солдат. Уууу, вот это гемор. Всех разединил, выставил свойство none и careless. Поставил waypoint MOVE - не хотят бежать стройно, разбегаются. Убрал waypoint, поставил объект gamelogic и заставил бежать к нему командой domove, опять не хотя. Прописал просто move, побежали стройно. НО, на бегу все время сносит и могу бежать так только по прямой, при повороте опять стройность вся пропадает. Ну, думаю, сделаю хоть бег в колонее. Колонная тоже получалась не ровная. Только когда я уменьшил количество бегущих до 4 он выровнялась. А до этого 5-й солдат все время запутывался.

    4. Чтобы солдаты не падали с вышек, пропишите им в строке инициализации this setunitpos "UP", тогда они не бдут ложиться.

    5. Если после диалога строка остается на экране слишком долго, проишите в скрипте задержку на пару секунд (~2) и команду titlecut ["","plain",1] и ту строку заменит пустая, которой не будет видно.

    6. Не делайте больше диалоги (только если они не озвучены), их нудно читать.

    7. Не делайте длительных/бесконечных циклов и циклов без задержки, повесите или затормозите компьютер.

    8. Не пишите в скриптах много повторяющихся команд (например при диалогах или прописывании свойств), если после этого используете команду move, она почему-то не срабатывает.

    9. Если не хотите, чтобы игрок вылез из машины на ходу, заблокируйте ее командой lock

    10. Если хотите, чтобы юнит пошел по waypointу при определенном условии, можно воспользоваться командой lockwp, но учтите, что она срабатывает только на второй waypoint, а в первый юнит идет в любом случае (не помогает даже постановка условий с самом первом waypointе, по крайней мере в версии 1.40). Так что либо придется сделать для этого один лишний маленький waypoint гдето в паре миллиметров от юнита, чтобы он туда прошел, а дальше заблокировать его, либо использовать команду move по условию.

    11. Чтобы заставить солдата смотреть куда надо, пропишите dowatch и имя целевого объекта. Чтобы юнит стрелял по кому-то (даже по своим), используйте dofire.

    12. Если нужно использовать заложников, чтобы враги не стреляли по вам, пропишите unit setcaptive true.

    13. Если нужно посадить в технику вначале миссии солдат, используйте команду moveincargo (moveindriver, moveingunner и moveincommander).

    14. Следите за сообщениями об ошибках, появляющихся вверху экрана слева. По ним можно поределить где именно вы ошиблись. Например, возможно, вы указали объект вместо массива (такое часто бывает, если прописать unit command вместо [unit] command).

    15. Помните, что команду move надо использовать с координатами объектов а не самим объектом, то есть писать надо unit move getpos object а не unit move object.

    16. Логические значения true и fasle нужно прописывать БЕЗ кавычек, иначе они буду воприняты как текстовые переменные и команда не выполнится. И наоборот все текстовые строки, которые присваиваются переменным или используются в сприктах должны быть В кавычках.

    17. Некоторые команды не принимают группы, а только объекты по отдельности (например команда ordergetin).

    На данный момент это все, руководство будет расширяться по мере продвижения работы над миссией (или если его дополните ).
    Крайний раз редактировалось Gunslinger; 01.01.1970 в 03:00.
    Нет ничего более постоянного, чем перемены...

  2. #2
    Реаниматор Аватар для Gunslinger
    Регистрация
    30.03.2003
    Адрес
    Москва
    Возраст
    43
    Сообщений
    1,284

    Скрипты

    А вот и сегодняшняя порция Касается она в основном скриптов. Хотя есть одно отступление. Будьте аккуратны, когда делаете видео-ролики в горах, если склон очень крутой, юнит может лечь и это испортит всю сцену. Приходится искать обходные пути. Ну во, теперь перейдем непосредственно к скриптам.

    1. Из всех команд, предназначеных для контроля над камерой, влияют только cameraeffect, camsettarget, camSetFov и camsetrelpos. Причем в команде cameraeffect не все эффекты воспринимаются редактором и он может вылететь в винду. А вот используя команду camSetFov можно добиться очень интересного результата.

    2. При работе со строками помните, что их можно только складывать (команда +), а вычитать, то есть укорачивать их нельзя (ругается на оператор -). Вычетание с массивами так же не проходит гладко. Есои вы вычитаете из массива [1,2,3,2,2,2] массив [2], то будет удален не первый элемент, а все элементы содержащие значения второго масива, то есть результатом будет массив [1,3]. Сложение с массивами так же как и со строками работает нормально.

    Пока я нашел единственный способ вычитать строки - это имитировать его. И то данный метод работает только когда нужно вычитать одинаковые элементы (например пробелы, при форматировании строки вывода). Сразу скажу, чтобы вы не гадали нафиг это нужно. Это для того, чтобы сделать эффект вывода строки аля X-files (или печатная машинка), когда сбоку выводится строка посимвольно. Ведь если сделать кол-во пробелов постоянным, строка будет уходить влево, пожтому с каждым новым символом кол-во пробелов должно уменьшатся на 1 штуку.

    Создаем массив (array) с одним элементом (пусть это будет тот же пробел). Наполняем его командой array=array+[""]. Причем наполнение должно идти в цикле с заданым количеством пробелов. Далее выводим на экран строку с этим набором пробелов. Наполнение строки проблеами из массива удобно делать командой foreach, например так "spaces=spaces+_x" ForEach array. Теперь переменная spaces содержит все элементы массива как единую строку.

    Кстати важное замечение - оператор foreach не умеет работать с локальными переменными (типа _var, то есть с нижним подчеркиванием вначале), запомните это. Всегда в нем используйте обычные переменные типа var.

    Теперь если нужна строка с другим количеством пробелов, Обнуляем массив командой array=[" "] (не забудьте также обнулить ту переменную, которая использовалась в цикле foreach, в данном случае это spaces, просто напишите spaces="") и направляем скрипт на метку наполнения массива, но уже с переменной, содержащий нужное нам количество для этого раза.

    3. В команде goto "string", метка string должна указываться в кавычках, а когда вы пишете эту метку в скрипте, то БЕЗ кавычек, то есть так #string (обязательно со знаком # и на отдельной строке)

    4. Команда TitleCut прекрасно работает с переменными. Можно выводить через нее значения текстовых переменных, при это суммируя их, например так TitleCut [string1+string1,"Plain down",1]. Заметьте, что при использовании в этой команде переменной она должна писаться БЕЗ кавычек.

    Завтра продолжу заморачиваться с камерами и Интро, так что ждите продолжения.
    Крайний раз редактировалось Gunslinger; 01.01.1970 в 03:00.
    Нет ничего более постоянного, чем перемены...

  3. #3
    Реаниматор Аватар для Gunslinger
    Регистрация
    30.03.2003
    Адрес
    Москва
    Возраст
    43
    Сообщений
    1,284

    Работа с камерой

    Наконец-то нашлось свободное время между экзаменами для работы над своей миссий, в итоге завершено Intro и получен материал для следующей части статьи, которую я и собираюсь написать ниже.

    Сегодня затронем тему работы с камерой, создания Интро и немного рассмотрим операторское исусство.

    Во-первых, чтобы сделать для мисси Интро, надо переключить редактор в режим Advansed (кнопка с надписью режима находится в правом верхнем углу). После этого под кнопкой Clear появится меню (в белой рамке) из которого можно выбрать часть создаваемой миссии (начало, саму миссии или завершение). Выберите Интро (то есть начало). При этом с карты пропадут все юниты и триггеры, если вы уже расставили их для самой миссии (но они сохранятся и будут отображаться при переключении на создание миссии). Все три части миссии сохраняются в одном и том же файле, а именно mission.sqm.

    В Интро, так же как и в миссии, необходимо указать игрока, однако вы не сможете им управлять. Для проверки нажмите кнопку Preview в редакторе и посмотрите на результат (будет вид со спины игрока, вы сможете вертеть камеру по сторонам, но не сможете воздействовать на игрока).

    Чтобы завершить Интро, опять же как и в миссии, нужно ставить триггер типа End. Можно прописать в поле Condition этого триггера какю то переменную, например endcond. Теперь эту переменную надо определить в самом начале Интро, например в поле Initialization игрока, прописать endcond=false. Теперь, когда вам потребуется завершение Интро, пропишите в нужном триггере endcond=true.

    Перейдем к операторскому искусству. Без него невозможно создать качественный видео-ролик. Вы можете придумать хороший сюжет для него, написать много скриптов, но если вы неправильно расставите камеры, неточно подберете время, ролик не будет смотреться. Возьмем, к примеру, бой. Самолеты в воздухе летят бомбить базу. Пехота подбирается поближе к обороняющимся. Танки уже открыли огонь. На базе появляются первые жерты, паника, пожар. Но поставив камеру где-нибудь у забора игрок не увидит всей этой красоты (если пожар и смерть вообще может быть красивой). Ладно, пусть поле боя видно, но если камера будет стоять на одном месте все время, это опять же не даст положительного результата. Все движется и в скором времени камера будет показывать чистое поле, а игрок будет слышать лишь звуки выстрелов. Это необходимо учитывать.

    Также выжным является перемещение камеры. Никаких резких движений, передвижения по земле (или очень низко, такой ракурус смотрится хорошо лишь как исключение в редких случаях). Избегайте камеры, следяющий за передвигающимся игроком, вы замечали как она немного трясется в это время (благо с техникой такого не происходит). Лучше используйте заранее нацеленную на какой то объект камеру. Если же необходимо проследить за игроком. Поставьте в конечной точке (куда идет игрок) еще один объект (лучше всего использовать объекты Game Logic, т.к. их невидно они практически даже не существуют, но можно использовать их координаты) и сделайте перемещение камеры от первого объекта ко второму, рассчитав время так, чтобы камера при перемещении показывала игрока.

    Отдельно стоит упомянуть крупный план. Он смотрися хорошо в диалогах, когда можно показать лица героев, их движения. Также хороший прием, наезд юнита на камеру, например когда танк наезжает на камеру.

    Дальний вид стоит применять при крупномасштабных действиях, показе городов и прочих гигантских объектов (а также при отображении техники, движущейся на большой скорости). Когда юнитов не более 10-20, это придаст картинке дополнительную пустоту.

    В роликах можно использовать команду setacctime NUM (где num - число, во сколько раз уменьшается или увеличивается скорость течения времени). Этот же эффект достигается нажатием клавиш + и - во время игры. Если использовать 1 - это стандартное время, меньше 1 - замедление, больше 1 - ускорение.

    Вот мы и добрались до самой сути, а именно, до работы с камерой. Это довольно сложная часть создания миссии. Тут надо понять, как определять координаты х и у, т.к. при установке камер и выборе цели вам постоянно придется с этим сталкиваться. Причем, нужно помнить где сервер и где юг и как изменются координаты относительно вашей цели (я например, до сих пор все время путаюсь и подбираю координаты методом тыка ).

    Итак, существует несколько (пока опишу только те, которые наиболее часто применяются и которые я использовал сам) команд для управления камерой (их легко запомнить, т.к. все они начинаются на cam), это:
    - camCreate
    - camSetPos
    - camSetRelPos
    - camSetTarget
    - cameraEffect
    - camSetFOV
    - camCommit
    - camDestroy

    Важное замечание: ни одно изменение параметров камеры не вступит в силу, пока не будет выполнена команда camCommit! О ней в конце.

    Команда camCreate используется для создания камеры, это инициализационная, то есть самая первая команда идущая в порядке исполнения в процессе создания камеры, и писать в скрипте ее надо раньше других. Синтаксиси такой
    camname = "camera" camCreate [x,y,z]
    camname - это имя камеры, которе будет использоваться в дальнейшем при обращении к камере.
    x,y,z - сооветствующие координаты, то есть позиция, в которой будет создана камера. Можете в этой команде координаты все время указывать как 0,0,0. Т.к. потом их легко изменить командой camSetPos или же camSetRelPos.

    Если вы делаете начальный ролик не в виде Интро, а просто в начале миссии, чтобы не появлялся на пару секунд в начале заставки игрок (такой глюк иногда заметен), нужно создавать камеру сразу же при начале миссии, желательно в строке Initialization игрока (точнее в этой строке не создавать камеру, а вызывать из нее скрипт, который и создаст камеру).

    Команда camSetPos используется для задания местоположения камеры. Чтобы иметь возможность точного позиционирования, лучше всего использовать объекты Game Logic (как я уже говорил, их не видно и они не мешают игровому процессу). Например создаем объект такого типа с именем gl. Теперь чтобы поместить в его координаты камеру, достаточно прописать команду
    camSetPos getpos gl
    Не зобывайте при использовании координат объектов Game Logic прописывать getpos gl, а не просто gl. Если же вы хотите разместить камеру не точно на данном объекте, а немного сместить, например вверх, то здесь поможет такой скрипт
    glcoords = getpos gl
    x = glcoords select 0
    y = glcoords select 1
    z = glcoords select 2
    mycam camsetpos [x,y,z+10]
    Мы записали значения координат объекта gl в переменную glcoords, выделили их по отдельности, то есть записали координату по оси Х в переменную х, и т.д. Теперь камеру mycam мы может разместить относительно объекта gl, узкаывая в квадртаных скобках переменные x,y,z и прибавляя/вычитая из них цифровые значения. В данном случае камера будет находиться на 10 метров выше объекта gl.

    Команда camSetRelPos используется для установки камеры в координаты относительно координат цели камеры. Ее синтаксис похож на предыдущую команду, однако координаты здесь отсчитываются не относительно начала координат, а относительно юнита. Это удобно, например для создания крупного плана, можно разместить камеру в метре от нужного юнита используя команду (все также зависит куда направлен юнит, и с какой стороны отсчитывать метр, спереди или сзади, это все надо подбирать)
    myсam camSetRelPos [1,0,0]
    Заметьте, что здесь не обязательно что-то с чем-то складывать и указывать знак +. Если вы написали здесь 1, это уже означает что камеры смещается на 1 метр вперед в сторону цели. Чтобы сместить назад, надо использовать отрицательные числа, например -5.

    Установка цели камеры производится командой camSetTarget. Причем эту команду можно использовать и с юнитами (устанавливать в качестве цели опредеолнную технику или объекты) и точными координатами. В первом случае синтакисис будет такой
    camname camSetTarget UNIT
    Заметьте, что здесь НЕ надо добавлять команду getpos, так как здесь идет работа с самим объектом, а не с его координатами (точнее с ними тоже, но получаются они уже самой игрой).
    Второй метод, указание точных координат, как
    camname camSetTarget [х,y,z]
    Опять же здесь очень удобно использовать объекты Game Logic и метод получения их координат.

    Команда cameraEffect задает свойства и положение камеры. Ее синтаксис
    camname cameraEffect ["string1","string2"]
    Где string1 - это свойство, а string2 - положение. Существует несколько свойств:
    Internal
    External
    Fixed
    FixedWithZoom
    TERMINATE
    Обычно да и почти всегда используется Internal, так что на остальные можете не обращать внимания (если нетересно, можете с ними поэкспериментировать).
    Положения есть такие:
    TOP - вид сверху
    LEFT - слева
    RIGHT - справа
    FRONT - спереди
    BACK - сзади (обычно испольлзуется именно этот вид)
    Чтобы установить камеру над игроком, пропишите
    mycam cameraEffect ["internal","top"]
    И не забывайте про кавычки.

    Команда camSetFOV изменяет угол обзора камеры. Синтаксис
    camname camSetFOV NUM
    Где NUM - число. 1 - это нормальный обзор, если меньше 1, это приближение, больше 1 - удаление (с искажением вида). Данная команда аналогична той, что используется во всех частях игры Quake и с помощью которой игроки делают увеличение для RailGun`a. Кстати крупный план хорошо получается этой командой.

    Одна из самых важных команда при работе с камерой - это camCommit. Пока не будет исполнена данная команда, ни одно изменение с камерой не вступит в силу. Ее синтаксис
    camname camCommit NUM
    Где NUM - цифра, указываяющая время в секундах, в течение которого будут произведены изменения. Например если вы укажите 0 (myname camCommit 0), изменения произойдут немедленно, то есть камера сразу же переместится в новые координаты и т.п. Если же указать цифру больще 0, например 5, то изменения будут происходить в течение 5 секунд. То есть камера будет плавно (в зависимости от указанного времени и расстояния, чем больще расстояние, тем больше требуется времени для плавного перемещения) перемещаться из одного места в другое. Таким образом создается эффект двжиения камеры. Можно также плавно приближать камеру, изменяя угол обзора, например так
    mycam camSetFOV 0.5
    mycam camCommit 10

    И, наконец, чтобы вернуть упрвление игроку, если ролик создав в самой миссии, необходимо уничтожить камеру. Для этого используется команда camDestroy camname. Но перед удалением камеры обязательно пропишите строчку
    mycam cameraEffect ["TERMINATE","back"]
    Это уберет все эффекты с камеры и вернет ее в стандартное положение, чтобы игрок мог дальше нормально играть.

    Теперь небольшой пример. Сделаем вращение камеры вокруг игрока. Для этого вначале разместим 4 объекта Game Logic (чем больше будет объектов, тем плавнее будет круг, с 4 объектами это будет скорее ромб) на равном расстоянии (чтобы радиус был одинаковым) от игрока. Теперь создаем камеру в одном из этих объектов, целью камеры будет игрок. И перемещаем камеру от одного объекта к другому. На это перемещение задаем некотрое время, при этому нужно выждать это время командой ~, перед тем как исполнять другую команду. После того как выждано время меняйте положение камеры на другой объект Game Logic и т.д. Примерно это будет выглядеть так (с учетом того что 4 объекта и игрок расставлены, объекты имеют имена gl1, gl2, gl3 и gl4, а игрок с именем pl):

    [PHP]
    ;создаем камеру
    mycam = "camera" camcreate [0,0,0]
    mycam cameraeffect ["internal", "back"]
    mycam camsetpos getpos gl1
    mycam camsettarget pl
    mycam camcommit 0
    ;запускаем ее от объекта 1 к 2 в течение 5 секунд
    ;и выжидаем это время
    mycam camsetpos getpos gl2
    mycam camcommit 5
    ~5
    ;запускаем ее от объекта 2 к 3 в течение 5 секунд
    ;и выжидаем это время
    mycam camsetpos getpos gl3
    mycam camcommit 5
    ~5
    ;запускаем ее от объекта 3 к 4 в течение 5 секунд
    ;и выжидаем это время
    mycam camsetpos getpos gl4
    mycam camcommit 5
    ~5
    ;запускаем ее от объекта 4 к 1 в течение 5 секунд
    ;и выжидаем это время - возвращаем камеру
    ;на место, т.е. завершаем круг и выходим из скрипта
    mycam camsetpos getpos gl1
    mycam camcommit 5
    exit
    [/PHP]

    Более продвинутые скрипты (например, присоединение камеры к объекту) ищите на Эдитинге в разделе Примеры.
    Крайний раз редактировалось Gunslinger; 01.01.1970 в 03:00.
    Нет ничего более постоянного, чем перемены...

  4. #4
    Реаниматор Аватар для Gunslinger
    Регистрация
    30.03.2003
    Адрес
    Москва
    Возраст
    43
    Сообщений
    1,284

    Вертолеты

    И небольшое дополнение, пока не забыл Оно касается не камер, а вертолетов. Чтобы посадить в вертолет (да и вообще в технику) солдат, можно использовать 2 способа. Либо объединить и вертолет и солдат в одну группу, а солдатам указать в свойствах In Cargo. Либо Запихать солдат в вертолет с помощью команды moveincargo.

    Чтобы вертолет в миссии появился в воздухе, нужно в его свойствах указать Flying.

    Чтобы вертолет приземлился где надо, нужно обязательно в этом месте поставить HeliPad (знак в виде буквы H в кружке). Иначе вертолет будет искать только одному ему известное место посадки. Данные объект (HeliPad), можно добавлять из редактора, если установить дополнения Gunslinger Editor Addon.

    Сажать вертоелет можно также командой Heli land "LAND".

    Чтобы вертолет высадил солдат, лучше всего использовать waypoint типа Trunsport Unload. При этом он приземлиться высадит всех и останется в воздухе, то есть экипаж из него не вылезет (в отличие от waypoint типа Get Out). После высадки людей не забудьте выполнить команду UnassignVehicle всем юнитам, кто сидел в вертолете, иначе они будут ошиваться у вертолета и никуда не пойдут без него.

    Чтобы вертолет не дергался при виде врагов и не летел их уничтожать, а оставался на месте, задайте ему поведение careless.

    Чтобы изменять высоту полета выртолете используйте команду Heli FlyInHeight Num
    Где Heli - имя вертолета, а Num - высота полета.
    Учтите, что появляется вертолет всегда на высоте 50 метров, а нормально лететь может на высоте не менее 20 метров (чтобы не цепляться за деревья и не запутаться в ландшафте, и то по горам на такой высоте его лучше не пускать).
    Крайний раз редактировалось Gunslinger; 01.01.1970 в 03:00.
    Нет ничего более постоянного, чем перемены...

  5. #5
    Реаниматор Аватар для Gunslinger
    Регистрация
    30.03.2003
    Адрес
    Москва
    Возраст
    43
    Сообщений
    1,284

    Дополнительные эффекты и текст

    Чтобы сделать эффект выхода из тени или затенения, используйте команду TitleCut. Ее синтаксис
    TitleCut ["String1","String2",Num]
    Где String1 - текст, если указать просто "" (две пустые кавычки, текста не будет). String2 - метод обработки, их несколько:
    BLACK OUT - затенение
    BLACK IN - выход из затенения
    BLACKWHITE OUT - тоже затенение но белым цветом
    WHITE IN - выход из белого цвета
    Num - время в течение которого будет происходить эффект.
    Например: TitleCut ["","BLACK IN",5]
    Замечение: выход из затенения требует порядка 15 секунд и ускорить его нельзя.
    Эффект BLACK OUT хорошо применять при завершении видео-роликов (начальных или конечных, в самой миссии лучше избегать затенения). В начале же видно можно применять эффект BLACK IN.

    Для отображения диалогов можно использовать команду
    TitleText ["String1","String2",NUM]
    Где String1 - текст, String2 - положение текста. Возможные положения:
    PLAIN DOWN - текст в нижней части экрана, именно с этим параметром делаются диалоги
    PLAIN - текст в центре экрана
    Параметр NUM - время, в течение которого появится и исчезнет на экране надпись. Если значение не указано, оно считается равным 1.
    Например: TitleText ["Hello","PLAIN",1]
    Замечание: данный текст держится на экране несколько секунд. Чтобы его убрать, например через 3 секунды, пропишите такие строчки сразу после этой команды:
    ~3
    TitleText ["","PLAIN"]

    Если вы хотите, чтобы текст отображался не в центре, а левее или правее, вставьте в текст пробелы, например
    TitleText ["              Right position.","PLAIN"]
    Крайний раз редактировалось Gunslinger; 01.01.1970 в 03:00.
    Нет ничего более постоянного, чем перемены...

  6. #6
    Реаниматор Аватар для Gunslinger
    Регистрация
    30.03.2003
    Адрес
    Москва
    Возраст
    43
    Сообщений
    1,284

    Особенности гор

    Создание миссии или видео-ролика в горах представляет определенные трудности и имеет свои особенности. Например на склонах техника соскальзывает вниз и нужно искать такое место где ее впихнуть так, чтобы она не скатилась вниз.

    Вертолеты на малых высотах (до 50 метров) использовать нереально, т.к. они не могут нормально зависать, их все время клонит в бок (в соответсвии с наклоном ландшафта) и они начинаются двигаться вперед. Есть проблемы и с близким расположением waypoint`ов - вертолеты либо не хотят вообще лететь, либо не долетают.

    У солдат также есть свои замарочки - они не хотят передвигаться в пределах одного (по большей части крутого) склона. То есть, например, делаем 2 waypoint`а, первый проходит по крутому спуску, а второй находится в его середине или конце. Так вот солдаты дойдя до конца первого waypoint`а не хотят двигаться ко второму, приходится расставлять waypoint`ы на разных склонах.
    Крайний раз редактировалось Gunslinger; 01.01.1970 в 03:00.
    Нет ничего более постоянного, чем перемены...

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •