RailUnion.net


http://railunion.net/blog/A1iv/%D0%9A%D0%B8%D0%BD%D0%B5%D0%BC%D0%B0%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BA%D0%B0%D0%BC%D0%B5%D1%80%D0%B0_%D0%B2_Railworks_b-1497_sid-23a1273629155af0bcd8ef6c0404a9a4.html

Автор:  A1iv [ 22.06.2014, 17:51 ]
Тема блога:  Кинематографическая камера в Railworks

Автор руководства - Rick Grout
Перевод и практические комм.: Алексей Иванов (ник A1iv)
Тип руководства: для сценариев



Кинематографическая камера в Railworks

Уровень сложности: Продвинутый

Готовые примеры реализации Кинематографических камер в сценариях Railworks (видео):

1. Красивый обзорный полет

Мои идеи по реализации:
1. Заход в кабину лок. бригады с улицы или из дома , пройдя до депо :).
2. Обзорный полет станции и др. объектов маршрута.
3. Указание объектов - например, состава на станции, который нужно забрать. Или
светофора, стрелки и т.д. В общем, ключевых моментов в выполнении сценария. При этом обычно используется неподвижная кинематограф. камера, без видеоряда, но с длительностью показа.
4. Запись обзорных видеороликов с симулятора для выкладки в интернет.


Если вы хотите по-быстрому понять это руководство, переходите сразу в конец, где объяснено все вкратце. А непонятные вещи читайте потом, в подробном руководстве. Рабочий скрипт в конце прилагается.

Введение

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

Краткое изложение

Кинематографическая камера является объектом сценария. Сценарий должен содержать Триггер, Остановиться у или другие инструкции сценария, чтобы вызвать срабатывание назначенного пользователем События Успеха (либо неудачи) . Когда такое событие происходит, ScenarioScript.lua вызывает видеоряд Кинематографической камеры, производя системный вызов, ссылающийся на камеру по ее названию.

Кинематографические камеры нельзя использовать в Сценариях свободной поездки (странствия).

Предпосылки к успешному использованию

Чтобы успешно пользоваться этим руководством, вам необходимо следующее:
-- Опыт в создании обычных сценариев для Train Simulator.
-- Знание папок расположения контента, маршрутов и сценариев, и каким образом файлы расположены в этих папках.
-- Редактор двоичного кода, который позволит вам открывать, редактировать и сохранять .bin файлы Train Simulatorа.*
-- Общее представление о содержимом LUA скриптов и знакомство с принципами написания скриптов.
-- Достаточное понимание вышеизложенного для устранения проблем по мере их возникновения.

(* для этой цели обычно используются утилиты Railworksа вроде serz.exe, конвертирующие bin в xml, c дальнейшим редактироваем этого xml в обычном блокноте - прим. перев.)

Шаг 1. Расположение камеры

Определите где бы вы хотели, чтобы начинался видеоряд Кинематографической камеры, затем откройте Редактор сценария и переместитесь в то место на маршруте.
В среднем всплывающем меню слева нажмите на значок Всякое (коричневая сумка). Отыщите Кинематографическую камеру (Cinematic camera) в выпадающем списке и нажмите по ней.

Изображение

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

Шаг 2. Настройка видеоряда камеры

Находясь в Редакторе Сценария, щелкните двойным кликом по Оп. Точке камеры для вызова всплывающего меню в верхнем правом углу экрана Train Simulatorа (вам, возможно, придется сделать это несколько раз, под разными углами зрения, чтобы это сработало).

Изображение

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

Вы можете изменить Поле зрения камеры (Field of view) (значок квадрата и параллельных линий) для любого ключевого кадра, но обычно значение по умолчанию, 65 - нормально.

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


Комментарий от меня.

РАЗБОР РЕДАКТОРА И ПОСЛЕДОВАТЕЛЬНОСТЬ ДЕЙСТВИЙ ПРИ РАБОТЕ С КИНЕМАТОГРАФ. КАМЕРОЙ

ОБЩИЕ СОВЕТЫ

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

ВАРИАНТ1: СОЗДАНИЕ НЕПОДВИЖНОЙ КАМЕРЫ

Нужно создать кинематограф. камеру, отрегулировать ее высоту и направление. На значке времени добавить длительность обзора, 00.03 (3сек.) например, и дать название камере англ. буквами. Проверить результат, нажав на "проигрывать".
Пока что это неподвижная камера, но и таковые часто используются в сценариях.

ВАРИАНТ2: СОЗДАНИЕ ДВИЖУЩЕЙСЯ КАМЕРЫ

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

Длительностью видеоряда из двух камер - будет длительность действия первой камеры; плюс бездействие конечной камеры, то есть второй, когда движение первой камеры уже будет окончено. Теперь видео можно просмотреть на плеере и подкорректировать параметры ключ. точек.
Похожим образом создаются последующие камеры в ряду, представляющие собой ключ. кадры большого видеоряда. Не сложно.
* Прим. Удаление камер лучше производить в редакторе самой камеры.

ИНСТРУМЕНТЫ-ПОМОЩНИКИ

Изображение

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


Внимание, шаги3А,Б,В пока не нашли подтверждение в их надобности. Далее переходите к шагу4.

Шаг 3A. Связь камеры со сценарием (Часть А)

Данная камера - это объект сценария, поэтому новые и измененные файлы сценария ищите в папке Scenery объектов сценария (а не в папке объектов маршрута). Название искомого нами файла будет выглядеть примерно так: +000000+000001.bin, однако, возможно, с различными числами. Откройте этот принадлежащий сценарию файл в своем редакторе двоичных bin файлов. Найдите блок кода камеры и прокрутите вниз до конца, где вы увидите что-то наподобие этого:

Код: Выделить всё
<cGUID>
  <UUID>
    <e d:type="sUInt64">5274928186905200251 </e>
    <e d:type="sUInt64">>4591942580988080279 </e>
  </UUID>
  <DevString d:type="cDeltaString">fc2e067b-4f3c-4934-97f0-c8c072dbb93f </DevString>
</cGUID>


Скопируйте это в отдельный текстовый файл и сохраните. Вам это понадобится в следующем шаге.

Комментарий к шагу 3А. Я создал свой сценарий на маршруте Тест-трек, и вот путь к той папке, где он и его файлы находятся:
L:\Steam\steamapps\common\railworks\Content\Routes\00000008-0000-0000-0000-000000000000\Scenarios\17eae5c2-86c1-4dc8-97d9-d29729c9f009\

Вот в этой папке нужно найти папку с объектами сценария Scenery, оттуда скопировать файл с вышеупомянутым названием на раб. стол. Конвертировать его с пом. утилиты Railworksa serz.exe в xml найти и скопировать вышеупомянутый код-идентификатор последней созданной камеры (нашей кинематографической т.е.) - так предлагает автор статьи. Но этот же блок кода лежит и в файле ScenarioProperties, что в папке сценария (сравните), так что конвертировать было ничего не обязательно.


Шаг 3Б. Связь камеры со сценарием (Часть Б)

Откройте файл ScenarioProperties.xml в любом текстовом редакторе и с помощью Ctrl+F произведите поиск слов "NamedEntity". Результат этого поиска отобразится как <NamedEntity/>, если NamedEntity блок пуст (назовем Случаем 1), либо <NamedEntity> есть некоторые данные внутри </NamedEntity>, если здесь уже имелись данные в блоке (назовем Случаем 2).

Для Случая 1, замените [пустое] <NamedEntity/> следующими строками:

Код: Выделить всё
<NamedEntity>
  <cScenarioProperties-cGuidToNameMapping d:id="123456789">
    <Guid>
    </Guid>
  <Name d:type="cDeltaString">MyCineCam</Name>
  </cScenarioProperties-cGuidToNameMapping>
</NamedEntity>


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

Не беспокойтесь о строке d:id="123456789". Насколько нам известно, это не используется Train Simulatorом, так что любые девять чисел сработают.

Комментарий к текущему действию от меня. Собственно, при создании сценария и камеры в нем, в файле ScenarioProperties.xml автоматически создается вышеуказанный блок кода <NamedEntity> с идентификатором камеры внутри, который нужно было "скопировать и сохранить" в предыдущ. шаге. В каком случае блок <NamedEntity> будет пуст, пока не известно.


В Случае 2. [Итак,] Прокрутите вниз до места, где вы увидите строку, которую прочтете как </NamedEntity>. Напоминаю, для Случая 2 здесь имеется инф. блок <cScenarioProperties-cGuidToNameMapping>. Выберите один из таких блоков, убедившись о захвате закрывающих строк <cScenarioProperties-cGuidToNameMapping d:id="123456789"> и </cScenarioProperties-cGuidToNameMapping> при выборе выделения. Скопируйте этот текстовый блок и вставьте его чуть выше </NamedEntity>. Обратите внимание, строка d:id="123456789" в ранее упомянутом блоке, это только заполнение для какого угодно действительного числа, присутствующего в вашем файле ScenarioProperties.xml. То есть опять же, действительное число здесь назначения не имеет.

Комментарий. Я не понял зачем этот блок копировать, если он уже в Случае2 есть. Разве что вставить в Случай1.

Шаг 3В. Связь камеры со сценарием (Часть В)

Далее, для обоих случаев, вставьте текстовый блок, который вы только что скопировали в Шаге 3A выше, и конечный результат будет выглядеть примерно так:

<NamedEntity>
:
:
Здесь уже имеются строки кода (только в Случае 2)
:
:
<cScenarioProperties-cGuidToNameMapping d:id="123456789">
<Guid>
<cGUID>
<UUID>
<e d:type="sUInt64">5753443702024936244</e>
<e d:type="sUInt64">1624204495734779539</e>
</UUID>
<DevString d:type="cDeltaString">5e679b34-5690-4fd8-932e-dd2a62558a16</DevString>
</cGUID>

</Guid>
<Name d:type="cDeltaString">MyCineCam</Name>
</cScenarioProperties-cGuidToNameMapping>
</NamedEntity>

Выделенный выше цветной текст - этот тот, который вы только что вставили.
Если используется Случай 2, отредактируйте <Name> блок кода, чтобы отразить индив. название вашей камеры.
Теперь вы связали объект Кинематографическая камера с вашим сценарием, однако нам нужно еще ее активировать. Мы сделаем это в Редакторе Сценария и с помощью написанного для этого LUA скрипта.

Комментарий на Шаги 3. Все эти манипуляции в шаге 3Б,В делать для случая 1, когда блок Named пуст, а в Случае2, т.е. при обычном создании сценария, все эти блоки кода уже записаны в сценарий. У меня так. Разве что проверить их соответствие в файлах ScenarioProperties.xml и +000000+000001.bin. А название камеры всегда можно изменить и в редакторе сценариев. Хотя главное, чтобы они были одинаковы в этих двух файлах. Зачем Шаги 3АБВ нужны, не понятно.

Шаг 4. Добавление Триггер инструкций

Откройте редактор сценария и в верхнем левом выплывающем меню нажмите на значок Просмотр Расписания (сине-красные часы).

Изображение

Добавьте новую Триггер инструкцию и переместите ее [в ряду инструкций] к месту, где вы хотите, чтобы начиналось действие Кинематографической камеры. Обычно это в самом верху списка, но не обязательно. Все зависит от вас.
Откройте диалоговое окно новой Триггер инструкции. Проведите мышкой по значкам пока не найдете значок Триггер события -- это значок одного из двух шестеренок с курсором редактора. В небольшом поле справа от значка впишите простую череду алфавитно-числовых символов, которые вам о чем-то говорят. Например, если ваш сценарий назван Утренняя поездка, можете использовать сокращенное UTRO1. (Здесь же используется MSM1).

Изображение

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

Теперь добавьте еще одну Триггер инструкцию чуть ниже первой и в ее инф. поле Триггера события напишите MSM2. Этой иструкцией необходимо вернуть управление игроку. Это [событие] может быть также использовано для помещения игрока в кабину после окончания видеоряда Кинематограф. камеры.

Как правило Длительность первого Триггер события должна быть выставлена +00.00. Это означает, что видеряд Кинематограф. камеры запустится сразу по окончании предыд. инструкции сцеария, если таковая имеется, и завершится. Сделайте Длительность второй Триггер инструкции равной отрезку времени, взятому из длительности видеоряда Кинематограф. камеры, которую вы заполучили из видеоплеера в Шаге2.

Закройте диалог Просмотра расписания, Сохраните и Выйдите.

Шаг 5. Добавление скрипта

Если папка вашего сценария уже содержит файл под названием ScenarioScript.lua*, можете пропустить следующий абзац.

* Это если редактируешь чужой сценарий, там, может быть, есть скрипт.

Найдите имеющийся LUA скрипт. Возможно, вам придется просмотреть несколько папок сценариев, прежде чем вы найдете его. Начните поиск с одного из недавно вышедших маршрутов. Скрипты всегда называются ScenarioScript.lua. Перенесите скрипт в папку вашего сценария.

Комментарий. Не используйте напрямую чужие скрипты. В них многих ясно написано ­© RailSimulator и т.п. Посмотреть скрипты и поучиться возможно, но использовать напрямую 100% скрипта - нарушение авторского права.
Но, Railsimulator специально выложил практически готовый многофункциональный скрипт для сценариев с надписью Tutorial - именно на его основе я буду создавать скрипт моего сценария в конце этого мануала. Другого в сценариях я не нашел.
Код: Выделить всё
------------------------------------------------
-- ScenarioScript.lua
-- 14/06/2011
-- Copyright 2011 RailSimulator.com ltd
--
-- Scenario Script Tutorial - 'Early Morning Switching '
------------------------------------------------

-- true/false defn
FALSE = 0
TRUE = 1

-- condition return values
CONDITION_NOT_YET_MET = 0
CONDITION_SUCCEEDED = 1
CONDITION_FAILED = 2

-- Message types
MT_INFO = 0         -- large centre screen pop up
MT_ALERT = 1      -- top right alert message

MSG_TOP = 1
MSG_VCENTRE = 2
MSG_BOTTOM = 4
MSG_LEFT = 8
MSG_CENTRE = 16
MSG_RIGHT = 32

MSG_SMALL = 0
MSG_REG = 1
MSG_LRG = 2

------------------------------------------------
-- Fn OnEvent
--       event - name of the event
--       return - TRUE/FALSE if event handled
function OnEvent ( event )
if event == "camera" then -- Camera cinematique

   SysCall ( "CameraManager:ActivateCamera", "MaCamera", 0.0 );
   return TRUE;
   
end

   if event == "intro" then -- Affiche Texte
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "af7a2b92-ad57-4bdc-88be-eef5f7459b6a", "wagontext.html", 15, MSG_RIGHT + MSG_TOP, MSG_SMALL, FALSE );
      return TRUE;
         
   end
      if event == "sifflet" then -- Sifflet
      
      SysCall ( "whistle1:1", "00000000-0000-0000-0000-000000000000", 1.0 );
      return TRUE;
         
   end

end



Откройте ScenarioScript.lua в папке вашего сценария любым текстовым редактором. Вы должны увидеть что-то наподобие этого:

Блок авторских прав (различен для каждого сценария)


-- true/false defn
FALSE = 0
TRUE = 1
-- condition return values
CONDITION_NOT_YET_MET = 0
CONDITION_SUCCEEDED = 1
CONDITION_FAILED = 2
-- Message types
MT_INFO = 0 -- large centre screen pop up
MT_ALERT = 1 -- top right alert message
MSG_TOP = 1
MSG_VCENTRE = 2
MSG_BOTTOM = 4
MSG_LEFT = 8
MSG_CENTRE = 16
MSG_RIGHT = 32
MSG_SMALL = 0
MSG_REG = 1
MSG_LRG = 2
------------------------------------------------
-- Fn OnEvent
-- event - name of the event
-- return - TRUE/FALSE if event handled
function OnEvent ( event ) -- Instruction triggers
---------------------------
-- Timed triggers
---------------------------
:
:
Здесь кусок скрипта
:
:

return FALSE
end

Случай 1: Если вы используете LUA скрипт, который скопировали с другого сценария, удалите текст, представленный выше строками Здесь кусок скрипта. ЗАМЕНИТЕ текст, который вы только что удалили, приведенным ниже.

Случай 2: Если ScenarioScript.lua уже имеется в вашей папке сценария, ДОБАВЬТЕ приведенное ниже перед выражением return FALSE.

Код: Выделить всё
 if event == "MSM1" then
  SysCall ( "ScenarioManager:LockControls")
  SysCall ( "CameraManager:ActivateCamera", "MyCineCam", 0 )
  return TRUE
end
if event == "MSM2" then
  SysCall ( "CameraManager:ActivateCamera", "CabCamera", 0 );
  SysCall ( "ScenarioManager:UnlockControls");
  return TRUE
end


Системные вызовы SysCall, должно быть, говорят сами за себя, но вот чем они здесь занимаются.

Первый if event блок кода блокирует управление игрока при задействованной Кинематографической камере, а затем запускает видеряд Кинематографической камеры. Обратите внимание на употребление названия MyCineCam. Оно представляет собой название, которое вы давали камере в Шаге 3Б, либо Шаге 3В.
Второй if event блок перемещает игрока в режим Просмотра из кабины и разблокирует управление игрока. (Таким образом) вам не нужно вызывать Вид из кабины, обычно это делается в процессе выполнения скрипта. Если вы опустите этот первый SysCall, система по умолчанию будет просто переходить на внешнюю камеру вида спереди.

Окончательный скрипт должен выглядеть примерно так:


Блок авторских прав (различен для каждого сценария)
-- true/false defn
FALSE = 0
TRUE = 1
-- condition return values
CONDITION_NOT_YET_MET = 0
CONDITION_SUCCEEDED = 1
CONDITION_FAILED = 2
-- Message types
MT_INFO = 0 -- large centre screen pop up
MT_ALERT = 1 -- top right alert message
MSG_TOP = 1
MSG_VCENTRE = 2
MSG_BOTTOM = 4
MSG_LEFT = 8
MSG_CENTRE = 16
MSG_RIGHT = 32
MSG_SMALL = 0
MSG_REG = 1
MSG_LRG = 2
------------------------------------------------
-- Fn OnEvent
-- event - name of the event
-- return - TRUE/FALSE if event handled
function OnEvent ( event )
-- Instruction triggers
---------------------------
-- Timed triggers
---------------------------
:
:
Здесь уже имеющаяся часть скрипта (если она есть)
:
:

if event == "MSM1" then
SysCall ( "ScenarioManager:LockControls")
SysCall ( "CameraManager:ActivateCamera", "MyCineCam", 0 )
return TRUE
end
if event == "MSM2" then
SysCall ( "CameraManager:ActivateCamera", "CabCamera", 0 );
SysCall ( "ScenarioManager:UnlockControls");
return TRUE
end
return FALSE
end


Шаг 6. Проверка

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

КРАТКОЕ РУКОВОДСТВО И ПРАКТИКА

Все просто. Чтобы создать и завести кинематограф. камеру в сценарии, нужно:
1. Создать обычный сценарий с инструкциями и событиями.
2. Придумать где и зачем понадобится кинематограф. камера. И неподвижная она будет или движущаяся. У меня идеи представлены в самом начале этого руководства.
3. Создать видеоряд кинематограф. камеры (или неподвижную камеру) в редакторе сценария и записать где-то его полную длительность, включая простои. (Описание инструментов создания - в Шаге 1-2).
4. Добавить Триггер инструкции, описанные в шаге 4, и переместить их в стеке команд-инструкций в место начала действия кинем. камеры. Не забудьте добавить длительность видеоряда камеры у второй инструкции - у меня это 24 сек. (см. рис. ниже, в пункте 6).
5. Добавить файл скрипта с названием ScenarioScript (обязательно), сохранив его в кодировке ANSI и формате LUA (с помощью Notepad++), и положить его в папку со сценарием. Расположение сценария ориентировочно описано в шаге3А, в комментарии. В скрипт должны быть включены названия Триггеров события (у меня UTRO1 и UTRO2) и название камеры, данное при редактировании сценария (у меня "bus_camera", так как она начинает движение от остановки автобуса).
Варианты скриптов различны, под разные цели, но вот какой рабочий скрипт получился у меня.
Этот скрипт для кинематограф. камеры запускает ее после совершения какого-то события или в начале сценария. Например, поезд приехал на станцию. После прохождения видеоряда вид возвращается на прежнее место. Если машинист был в кабине, то вернется в кабину, если вне, то вернется прежний вид, какой был вне кабины.
Код: Выделить всё
------------------------------------------------
-- ScenarioScript.lua
-- 4/07/2014
-- Copyright 2011 RailSimulator.com ltd. Edit by A1iv for this scenario -   Railroadsim.net. 2014
--
-- Scenario Script for Test track. Scenario "A cinematographer and a director".
------------------------------------------------

-- true/false defn
FALSE = 0
TRUE = 1

-- condition return values
CONDITION_NOT_YET_MET = 0
CONDITION_SUCCEEDED = 1
CONDITION_FAILED = 2

-- Message types
MT_INFO = 0         -- large centre screen pop up
MT_ALERT = 1      -- top right alert message

MSG_TOP = 1
MSG_VCENTRE = 2
MSG_BOTTOM = 4
MSG_LEFT = 8
MSG_CENTRE = 16
MSG_RIGHT = 32

MSG_SMALL = 0
MSG_REG = 1
MSG_LRG = 2

------------------------------------------------
-- Fn OnEvent
--       event - name of the event
--       return - TRUE/FALSE if event handled
  function OnEvent ( event ) -- instructions triggers
   if event == "UTRO1" then
    SysCall ( "ScenarioManager:LockControls");
    SysCall ( "CameraManager:ActivateCamera", "bus_camera", 0 );
   return TRUE
  end
   if event == "UTRO2" then
    SysCall ( "ScenarioManager:UnlockControls");
   return TRUE
  end
 return FALSE
end


5. Удалить .md5 файлы в папке сценария, что описано в шаге 6.
6. Можно также добавлять текстовые сообщения при появлении камеры (в широком поле Триггера события можно написать текст).
Изображение
7. Забыл сказать, скрипты лучше компилировать. LUAC компилятор имеется в корневой папке Railworksa. Нужно на него сделать ярлык и положить на раб. стол. Затем накинуть свой скрипт на ярлык, и выдадут скомпилированный скрипт. Далее, как обычно, положить скрипт в папку сценария. Если не работает, в окне "просмотр расписания" есть компилятор.

8. (доп.) Как сделать кинематографическую камеру в начале сценария, а не посередине?
Нужно, во-первых, в редакторе сценариев, в меню просмотра расписания, переместить два Триггера события (UTRO1 и UTRO2 у меня) на самый верх стека. Камера уже будет работать, но чтобы по окончании видео сразу попасть в кабину, нужно, как вариант, дополнительно отредактировать сам сценарий: открыть редактор и сразу же во всплывающем меню справа поставить галку напротив "force Cab", или как-то так это называется.
Второй вариант, это заменить последний блок if event на вот такой:
Код: Выделить всё
 if event == "UTRO2" then
    SysCall ( "CameraManager:ActivateCamera", "CabCamera", -1 );
    SysCall ( "ScenarioManager:UnlockControls");
 return TRUE

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


На этом все. А мне нужно помогать сражаться против фашистско-киевской хунты, хоть живу в России.
-----------------

На рейтинги статей мне все равно, их оценить смогут только разработчики симулятора и я.



{ BLOG_REPLIES }

Автор:  Mr. Angelo [ 04.07.2014, 08:45 ]

Молодец, Алексей! Большое дело делаешь, хорошая статья.

Часовой пояс: UTC + 4 часа

Powered by phpBB © 2002, 2006 phpBB Group
www.phpbb.com

Blogs powered by User Blog Mod © EXreaction
www.lithiumstudios.org