УЧЕБНИК ПО СЦЕНАРИЯМ TRAINZ

Введение

Добро пожаловать в первый учебник по сценариям Trainz (TrainzScript). Сценарии Trainz - это интерпретируемый язык, разработанный для игры Auran Trainz. Мы расскажем вам, как создать очень простой сценарий - мы не ставим своей целью научить вас программировать или преподавать вам концепции программирования. Сценарии Trainz можно использовать, начиная с Версии 1, пакет обновлений 3. Если вы не понимаете концепции программирования, вам может понадобиться перед созданием сценариев для Trainz прочитать другие учебники. Мы выпустим дружественный интерфейс для компиляции мощных сценариев в следующих версиях.

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

Где я могу найти сценарии

TrainzScript - это интерпретируемый язык, используемый для выполнения сценариев. Каждый сценарий состоит из одного или более файлов (*.GS), расположенных в своем каталоге ...\Trainz\World\Custom\Scenarios. Дополнительные файлы поддержки TrainzScript находятся в каталоге ...\Scripts. Файлы из этого каталога предоставляют вам все вспомогательные функции, необходимые для управления игрой. Постепенно вы изучите большинство функций, находящихся в этих файлах. Компилятор TrainzScript (gsc.EXE) расположен в каталоге ...\Bin .

В окне ДОС перейдите в каталог ...\Bin и запустите компилятор с флажком -d:

gsc  -d > reference.TXT

Документация на TrainzScript будет скопирована в файл reference.TXT. Сверяйтесь с этим документов по вопросам языка TrainzScript.

Создание сценария

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

  1. Запустите Trainz и создайте в Топографе новую карту. Разместите на ней маленькое кольцо и поместите где-нибудь на путях отметку (track mark) с именем 'START'. Проверьте, что имя отметки набрано ПРОПИСНЫМИ буквами, поскольку все именованные объекты в TrainzScript чувствительны к регистру. Поместите где-нибудь на путях стрелку, чтобы было на что направить камеру. Сохраните карту и назовите ее 'Tutorial1'.
  2. Перед выходом из Топографа, выберите 'Export Scenario TSO' из главного меню Trainz и напечатайте 'Tutorial1'.
  3. Выйдите из Trainz и перейдите в каталог ..\Trainz\World. Найдите файл config.TXT в каталоге ...\Trainz\World\Custom\Maps\Tutorial1.
  4. Откройте файл config.TXT вашей карты Tutorial1. Он должен выглядеть примерно следующим образом:
kuid <KUID:-2:2023211879>
kind map
username Tutorial1
workingscale 0
workingunits 0
water <KUID:-1:110015>
region Australia

Обратите внимание на КИД вашей новой карты. В нашем случае это -2:2023211879.

  1. Теперь перейдите в каталог ...\Trainz\World\Custom\Scenarios\Tutorial1\ и откройте файл conflg.TXTвашего сценария Tutorial1. Он должен выглядеть примерно так:
kind activity
username Tutorial1
scriptlibrary Tutorial1
scriptclass MyTutorial1
kuid <KUID:-2:2023211880>
kuid-table {
tutorial1 <KUID:-2:2023211879>
}
description "Tutorial1" 

Несколько замечений. kuid-table - это таблица преобразования имен в КИД, используемая сценарием. Все объекты, загружаемые сценарием, должны быть перечислены в этой таблице.Сценарии ссылаются на КИДы с помощью имен, зависящих от регистра. Например, когда сценарий загружает карту, он указывает ее имя "Tutorial1". Это имя будет найдено в таблице КИД как KUID:-2:2023211879. Точно также указываются поезда, подвижной состав и все остальное. Обратите также внимание, что у вашего сценария тоже есть свой собственный уникальный КИД. Описание будет показано на экране выбора сценария.

  1. Теперь мы отредактируем файл сценария. Откройте Tutorial1.GS в своем любимом текстовом редакторе. Этот файл создан по шаблону template.GST из каталога ...\scripts\, когда вы экспортировали TSO. Синтаксис сценария объясняется в документации по компилятору, но если вы его прочитаете, то увидите, что сценарий довольно понятен. Файл выглядит так:
Примечание переводчика: Если вы хотите использовать в сценариях русские буквы, вы должны будете сохранить файл в кодировке UTF-8.

include "trainz.GS"

//
// класс MyTutorial1
// Это класс сценария. Измените этот класс в соответствии со
// своими целями.
//
game class MyTutorial1 isclass Scenario
{
  Train myConsist;
  bool scenarioDone = false;

  //
  // Метод Load будет вызван игрой для загрузки карты сценария, или когда пользователь нажмет Ctrl-L
  // аргумент - данные сохраненной игры, если загружается сохраненная игра.
  //
  bool Load( string data)
  {
    if(data and data.size())
    {
      Interface. Load(data);
    }

    // load the map
    if(! World.LoadMap(World.FindKUID(" Tutorial1")))
    {
      Interface.Log(" Ошибка загрузки карты сценария" );
      return false;
    }

    return true;
  }

  //
  // Метод Save будет вызван игрой, когда пользователь нажмет Ctrl-S.
  // возвращает строку сохраненной игры, чтобы load мог ее загрузить позже

  //
  string Save( )
  {
     return Interface. Save( );
  }

  //
  // TrainDerailed будет вызван игрой, когда поезд сойдет с рельсов
  //
  void TrainDerailed(int trainId)
  {
    if(! scenarioDone)
    {
      World.EndScenario(10);
      scenarioDone = true;
    }
  }

  //
  // TrainCollided будет вызван игрой при столкновении поезда с препятствием
  //
  void TrainCollided(int trainId)
  {
    if(! scenarioDone)
    {
       World.EndScenario(10);
       scenarioDone = true;
    }
  }

  //
  // TrainSpeedingFine( ) будет вызываться игрой каждую секунду, если поезд превысит текущий предел скорости
  //
  void TrainSpeedingFine( )
  {
     // Interface.AdjustScore(-10);
  }

  //
  // TrainBadCouple( ) будет вызвано игрой при сцепке на скорости больше 8 км/ч.
  //
  void TrainBadCouple(int vehicleId)
  {
     // Interface.AdjustScore(-200);
  }

  //
  //
  // main thread
  // main вызывается автоматические после вызова Load( ). Отредактируйте

  // метод main содержит ваш сценарий.
  //
  //

  thread void main(void)
  {
     // Запуск монитора для отслеживания превышения скорости, схода с рельсов и т.д.
     Monitor( );

     //
     // создаем параметры состава
     //

     //
     // создаем составы
     //

     //
     // игра
     //

     scenarioDone = true;
  }
} ;

  1. Последний шаг - компиляция сценария. Скопируйте файл makescript.BAT из каталога ...\Scripts\Docs в ваш каталог ...\Trainz\World\Custom\Scenarios\Tutorial1. Запустите этот пакетный файл и убедитесь, что нет сообщений об ошибках (спросите помощи на форуме). Обратите внимание, что пакетный файл использует компилятор TrainzScript (gsc.EXE) для создания файла Tutorial1.GSL.
  2. Теперь все готово для запуска вашего самого первого сценария. Сценарий должне загрузить вашу карту Tutorial1. Вы заметите, что камера установилась на стрелке, которую мы разместили на карте. Если бы этой стрелки не было, карта была бы невидимой, поскольку игре не на что было бы повернуть камеру.

Теперь вы успешно создали свой самый первый сценарий. Изучите сценарии карты "Высокая долина" (Highland Valley) и файлы script.GS, чтобы узнать больше о TrainzScript. Вопросы по сценариям можно также задавать на форумах.

Удачи! Надеемся, что вам понравилось заниматься сценариями.

 

Content Creation Guide Table of Content

Paint Shed Guide
Hosted by uCoz
1