Введение
Добро пожаловать в первый учебник по сценариям 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 и узнаете, что требуется для создания простого сценария, который будет просто загружать карту.
kuid <KUID:-2:2023211879>
kind map
username Tutorial1
workingscale 0
workingunits 0
water <KUID:-1:110015>
region Australia
Обратите внимание на КИД вашей новой карты. В нашем случае это -2:2023211879.
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. Точно также указываются поезда, подвижной состав и все остальное. Обратите также внимание, что у вашего сценария тоже есть свой собственный уникальный КИД. Описание будет показано на экране выбора сценария.
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;
}
} ;
Теперь вы успешно создали свой самый первый сценарий. Изучите сценарии карты "Высокая долина" (Highland Valley) и файлы script.GS, чтобы узнать больше о TrainzScript. Вопросы по сценариям можно также задавать на форумах.
Удачи! Надеемся, что вам понравилось заниматься сценариями.