Как оформить свой сценарий в "новом стиле".

Обсуждение маршрутов, объектов, сценариев

Re: Как оформить свой сценарий в "новом стиле".

Сообщение sergz692 » 15.02.2013, 17:09

YuriA писал(а):Ну конечно с погодой ты перемудрил... Жесть полная, апокалипсис.

Вообще-то так и было задумано. Решил, что просто ехать больше двух часов будет скучно. ;)

YuriA писал(а):При загрузке сохранённого сценария, опять ясное небо.

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

Реально никакой грозы там (без дополнительной погоды, и её активации из скрипта)
конечно же не будет, просто чисотое ясное небо через какое-то время начнёт активно
затягиваться облоками, типа готовя почву под заказанный антураж. :)

Кстати ещё про погоду, в Шерман Хилле в редакторе сценариев даже смерч имеется.
Может ли он потом передвигаться, а тем паче отрывать вагоны от рельс - не в курсе.
Надо бы попробовать... :wink: :D
sergz692
 
Сообщения: 30
Зарегистрирован: 22.01.2013, 00:13
Благодарил (а): 4 раз.
Поблагодарили: 31 раз.
Играю в: Train Simulator Classic

Re: Как оформить свой сценарий в "новом стиле".

Сообщение A1iv » 15.02.2013, 18:51

Уже пробовал)). Запустил маршрут какой-то, не помню, с произвольной станции. Начал лок налаживать. Смотрю сзади ерунда какая-то, а вместе с ней вагоны моего состава улетают в небеса. Я сел в ТЭМ и тоже улетел, с концами. Лок так и не упал на землю.
Аватара пользователя
A1iv
 
Сообщения: 442
Зарегистрирован: 27.10.2011, 03:30
Откуда: РФ, Тверская обл.
Благодарил (а): 506 раз.
Поблагодарили: 118 раз.
Блог: Просмотр блога (10)
Имя: Алексей

И на последок всё же несколько слов о lua

Сообщение sergz692 » 20.02.2013, 12:04

Для полноты картины, думаю, всё же следует дать здесь обзор кода lua для скрипта сценария.
В качестве примера разберём скрипт для "фирменного" сценария Шерман Хилл "Running the #3 Track".

В самом начале кода находится так называемая заголовочная часть, где определяются некоторые
важные константы, которые в дальнейшем будут использоваться в основном "теле" скрипта:
Код: Выделить всё
------------------------------------------------
-- ScenarioScript.lua
-- 20/08/2012
-- Copyright 2012 RailSimulator.com ltd
--
-- Scenario Script Tutorial - 'Running the #3 Track'
------------------------------------------------

-- 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 )


В момент вызова этой функции единственный аргумент "event" содержит строку содержащуюся
в соответствующих тегах файла "Scenario.bin":
Код: Выделить всё
   <SuccessEvent d:type="cDeltaString">cam1</SuccessEvent>
   <FailureEvent d:type="cDeltaString"></FailureEvent>


Далее в коде скрипта идёт тело функции "OnEvent":
Код: Выделить всё
-- Instruction triggers
---------------------------

-- Timed triggers
---------------------------
   
   if event == "cam1" then -- Pan around and look at yard
      
      SysCall ( "CameraManager:ActivateCamera", "cam1", 0 );
      SysCall ( "ScenarioManager:LockControls");
      return TRUE;
         
   end -- if event == "wagoncam" then

Как будет видно, тело этой функции в основном состоит из блоков "if event == "имя_события" then *** end".
Внутри блока, который исполняется если имя события совпадает с ожидаемым, как правило, осуществляетются
соответствующие вызовы функции "SysCall". Некотрые примеры таких вызовов с небольшими пояснениями
ранее здесь постил товарищ supermax.

Код: Выделить всё
   if event == "intro" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "9dad0778-251d-4f0e-8fd2-3002904bbe00", "intro.html", 15, MSG_RIGHT + MSG_TOP, MSG_REG, FALSE );
      return TRUE;
         
   end -- if event == "intro" then
      
      
   if event == "cab" then -- Put in cabview
      
      SysCall ( "CameraManager:ActivateCamera", "CabCamera", 0 );
      SysCall ( "ScenarioManager:UnlockControls");
      return TRUE;
         
   end -- if event == "cab" then
   
   if event == "start" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "af7a2b92-ad57-4bdc-88be-eef5f7459b6a", "start.html", 35, MSG_RIGHT + MSG_TOP, MSG_SMALL, FALSE );
      return TRUE;
         
   end -- if event == "start" then
   
   if event == "lightning" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "af7a2b92-ad57-4bdc-88be-eef5f7459b6a", "lightning.html", 60, MSG_LEFT + MSG_TOP, MSG_SMALL, FALSE );
      return TRUE;
         
   end -- if event == "lightning" then
   
   if event == "stormstart" then
   
      SysCall ( "WeatherController:SetCurrentWeatherEventChain", "MinorStorm" )
      return TRUE
      
   end

   
   if event == "fault" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "af7a2b92-ad57-4bdc-88be-eef5f7459b6a", "fault.html", 25, MSG_RIGHT + MSG_TOP, MSG_SMALL, FALSE );
      SysCall ( "WeatherController:SetCurrentWeatherEventChain", "MinorStorm" )
      return TRUE;
         
   end -- if event == "fault" then
   
   if event == "lynch" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "af7a2b92-ad57-4bdc-88be-eef5f7459b6a", "lynch.html", 25, MSG_LEFT + MSG_TOP, MSG_SMALL, FALSE );
      return TRUE;
         
   end -- if event == "lynch" then
   
   if event == "fall" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "af7a2b92-ad57-4bdc-88be-eef5f7459b6a", "fall.html", 25, MSG_LEFT + MSG_TOP, MSG_SMALL, FALSE );
      return TRUE;
         
   end -- if event == "fall" then
   
   if event == "wait" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "af7a2b92-ad57-4bdc-88be-eef5f7459b6a", "wait.html", 25, MSG_RIGHT + MSG_TOP, MSG_SMALL, FALSE );
      return TRUE;
         
   end -- if event == "wait" then
   
   if event == "go" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "af7a2b92-ad57-4bdc-88be-eef5f7459b6a", "go.html", 25, MSG_LEFT + MSG_TOP, MSG_SMALL, FALSE );
      return TRUE;
         
   end -- if event == "go" then
   
   if event == "laramie" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "af7a2b92-ad57-4bdc-88be-eef5f7459b6a", "laramie.html", 25, MSG_RIGHT + MSG_TOP, MSG_SMALL, FALSE );
      return TRUE;
         
   end -- if event == "laramie" then
   
   if event == "tom" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "61969999-d8db-40a9-a37c-022cca18980b", "tom.html", 25, MSG_LEFT + MSG_TOP, MSG_SMALL, FALSE );
      return TRUE;
         
   end -- if event == "tom" then
   
   if event == "tom2" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "61969999-d8db-40a9-a37c-022cca18980b", "tom2.html", 25, MSG_RIGHT + MSG_TOP, MSG_SMALL, FALSE );
      return TRUE;
         
   end -- if event == "tom2" then
   
   if event == "tom3" then -- Pop up message
      
      SysCall ( "ScenarioManager:ShowInfoMessageExt", "61969999-d8db-40a9-a37c-022cca18980b", "tom3.html", 25, MSG_RIGHT + MSG_TOP, MSG_SMALL, FALSE );
      return TRUE;
         
   end -- if event == "tom3" then
   
end

Кроме тела функции "OnEvent" в коде этого скрипта ничего больше нет.

Осталось только обозначить вызовы "SysCall" которые осуществляются при обработке событий
моим стандартным скриптом:
  • события, выводящие текстовые сообщения: "SysCall ( "ScenarioManager:ShowInfoMessageExt", ..."
  • события, управляющие поездом: "SysCall ("PlayerEngine:SetControlValue", ..."
  • события, управляющие камерой: "SysCall ( "CameraManager:ActivateCamera", ..."
  • события, управляющие погодой: "SysCall ( "WeatherController:SetCurrentWeatherEventChain", ..."

Вот теперь совсем всё. Ну если конечно есть желание "копать" в глубь, то... :wink: :hi:
Последний раз редактировалось sergz692 27.02.2013, 22:32, всего редактировалось 1 раз.
sergz692
 
Сообщения: 30
Зарегистрирован: 22.01.2013, 00:13
Благодарил (а): 4 раз.
Поблагодарили: 31 раз.
Играю в: Train Simulator Classic

Re: Про погоду ;)

Сообщение -=Communist=- » 25.02.2013, 15:24

Допустим, я сохранился в свободном сценарии, погода солнечная, мне бы хотелось пасмурную, но при этом начиная с последнего сохранения, как это сделать?
Изображение
Аватара пользователя
-=Communist=-
 
Сообщения: 1242
Зарегистрирован: 07.05.2011, 23:24
Откуда: СССР.Ставрополь
Благодарил (а): 1044 раз.
Поблагодарили: 1304 раз.
Играю в: Train Simulator Classic
Имя: Андрей

Re: Как оформить свой сценарий в "новом стиле".

Сообщение sergz692 » 26.02.2013, 01:42

-=Communist=-
Теоретически, это можно сделать только отредактировав "ручками" файлик "ScenarioProperties.xml".
Нет способов как-то целенаправленно менять основную погоду (по крайней мере я таких не знаю :dontknow:).

А вот создать свой собственный файл основной погоды, так чтобы погода менялась по ходу сценария вполне определённым образом можно.
Но полный контроль в этом вопросе возможен только в сочетании с подключенным файлом дополнительной погоды. Не обязательно программить
там вселенский потоп, можно просто затягивать небо облаками и расчищать его, или устроить небольшой дождик. Самая изюминка заключается
в том, что все эти погодные события можно чётко привязать к конкретным игровым моментам в сценарии. ;)
sergz692
 
Сообщения: 30
Зарегистрирован: 22.01.2013, 00:13
Благодарил (а): 4 раз.
Поблагодарили: 31 раз.
Играю в: Train Simulator Classic

Re: Как оформить свой сценарий в "новом стиле".

Сообщение Mikhail_72RUS » 26.03.2013, 08:29

У меня что то не получается, пытаю сделать маленькое окно сообщения, но ничего не выходит, вроде все прочитал.
Аватара пользователя
Mikhail_72RUS
 
Сообщения: 1480
Зарегистрирован: 23.01.2011, 12:10
Откуда: Российская Федерация, Тюменская обл, г.Тюмень!
Благодарил (а): 1161 раз.
Поблагодарили: 1650 раз.
Играю в: Train Simulator Classic
Имя: Михаил

Re: Как оформить свой сценарий в "новом стиле".

Сообщение sergz692 » 27.03.2013, 00:28

///Kaban/// писал(а):... вроде все прочитал.

А скрипт-то не забыли к себе в папку переписать? ;)


ЗЫ: Файлики обеих демонстрашек уже потёрли оказывается. Перезалил. :P
sergz692
 
Сообщения: 30
Зарегистрирован: 22.01.2013, 00:13
Благодарил (а): 4 раз.
Поблагодарили: 31 раз.
Играю в: Train Simulator Classic

Re: Как оформить свой сценарий в "новом стиле".

Сообщение Mikhail_72RUS » 27.03.2013, 15:16

Написано веб-страница не доступна!
Аватара пользователя
Mikhail_72RUS
 
Сообщения: 1480
Зарегистрирован: 23.01.2011, 12:10
Откуда: Российская Федерация, Тюменская обл, г.Тюмень!
Благодарил (а): 1161 раз.
Поблагодарили: 1650 раз.
Играю в: Train Simulator Classic
Имя: Михаил

Re: Как оформить свой сценарий в "новом стиле".

Сообщение sergz692 » 27.03.2013, 19:43

///Kaban/// писал(а):Написано веб-страница не доступна!

Какая веб-страница? Файлобменника? Иногда такое бывает, только что проверил - всё вроде работает.
sergz692
 
Сообщения: 30
Зарегистрирован: 22.01.2013, 00:13
Благодарил (а): 4 раз.
Поблагодарили: 31 раз.
Играю в: Train Simulator Classic

Re: Как оформить свой сценарий в "новом стиле".

Сообщение Mikhail_72RUS » 28.03.2013, 18:16

Ни фига не могу, скачать, на яндекс перезалейте пожалуста!
Аватара пользователя
Mikhail_72RUS
 
Сообщения: 1480
Зарегистрирован: 23.01.2011, 12:10
Откуда: Российская Федерация, Тюменская обл, г.Тюмень!
Благодарил (а): 1161 раз.
Поблагодарили: 1650 раз.
Играю в: Train Simulator Classic
Имя: Михаил

Re: Как оформить свой сценарий в "новом стиле".

Сообщение sergz692 » 29.03.2013, 17:57

///Kaban///
Чего не сделаешь, для хорошего человека ;)

Демо для Шермана: http://yadi.sk/d/0b36dWdH3dMYw
Демо для Касл-Рока: http://yadi.sk/d/1rlpf4Aq3dMZq
sergz692
 
Сообщения: 30
Зарегистрирован: 22.01.2013, 00:13
Благодарил (а): 4 раз.
Поблагодарили: 31 раз.
Играю в: Train Simulator Classic

Re: Как оформить свой сценарий в "новом стиле".

Сообщение Mikhail_72RUS » 29.03.2013, 18:50

sergz692 СПАИБО бОЛЬШОЕ, буду пробовать свой сценарий оформить!
Аватара пользователя
Mikhail_72RUS
 
Сообщения: 1480
Зарегистрирован: 23.01.2011, 12:10
Откуда: Российская Федерация, Тюменская обл, г.Тюмень!
Благодарил (а): 1161 раз.
Поблагодарили: 1650 раз.
Играю в: Train Simulator Classic
Имя: Михаил

Re: Как оформить свой сценарий в "новом стиле".

Сообщение Mikhail_72RUS » 31.03.2013, 09:12

Неа, что-то у меня не получается. Буду тогда делать обычные сценарий :(
Аватара пользователя
Mikhail_72RUS
 
Сообщения: 1480
Зарегистрирован: 23.01.2011, 12:10
Откуда: Российская Федерация, Тюменская обл, г.Тюмень!
Благодарил (а): 1161 раз.
Поблагодарили: 1650 раз.
Играю в: Train Simulator Classic
Имя: Михаил

Re: Как оформить свой сценарий в "новом стиле".

Сообщение sergz692 » 01.04.2013, 18:34

///Kaban/// писал(а):Неа, что-то у меня не получается.

Ну, что я могу сказать... Выкладывайте то, что не получилось, ну а там поглядим. ;)
sergz692
 
Сообщения: 30
Зарегистрирован: 22.01.2013, 00:13
Благодарил (а): 4 раз.
Поблагодарили: 31 раз.
Играю в: Train Simulator Classic

Нововведения в TS2014

Сообщение sergz692 » 17.08.2013, 18:53

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

Новая функциональность TS2014 будет подробно изучена и добавлена в следующей версии скрипта. :nyam:
sergz692
 
Сообщения: 30
Зарегистрирован: 22.01.2013, 00:13
Благодарил (а): 4 раз.
Поблагодарили: 31 раз.
Играю в: Train Simulator Classic

Пред.След.

Вернуться в [RW] Маршруты и сценарии

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0