Информация: Уважаемые посетители! В течение нескольких месяцев на форуме существовала проблема с регистрацией новых пользователей, о которой администрации стало известно недавно. Если вы ранее пытались зарегистрироваться на форуме, но не получили на ваш e-mail письмо с ссылкой для подтверждения регистрации, просим вас зарегистрироваться повторно. Приносим извинения за доставленные неудобства. Если вы все еще испытываете проблемы с регистрацией на форуме, обратитесь за помощью на e-mail: mr.angelo@railroadsim.net

Язык скриптования Auran Game Script

Другие вопросы и проблемы разработки дополнений

Re: Язык скриптования Auran Game Script

Сообщение Ant » 24.01.2010, 18:04

kemal:

Снова требуется помощь.

Я объявляю в своём сценарии метод JunctionBase.AllowManualControl(false);, а игра пишет, что:

1. JunctionBase не является статическим классом либо переменной в пределах этого класса (is not static class or variable within this class);
2. Функция AllowManualControl не объявлена (not declared).

Что делать?


Попробуй код ТРама.


Это пока для меня сложновато. Но я его не игнорирую.
Изучаю Auran Game Script
#477779
Ant
 
Сообщения: 156
Зарегистрирован: 07.10.2008, 21:52
Откуда: Казань
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Имя: Антон

Re: Язык скриптования Auran Game Script

Сообщение kemal » 24.01.2010, 18:17

Понятно... пойдём по пунктам. Что такое ООП знаешь?
Вобщем, писать JunctionBase.AllowManualControl(false); нельзя. Метод AllowManualControl() можно применять только к стрелке, т.е. должна быть переменная типа Junction (или JunctionBase). Например так
Код: Выделить всё
Junction JM;
JM=cast<Junctiion>Router.GetGameObject("Junction 1");
JM.AllowManualControl(false);

Это с одной стрелкой. Если надо все, то получаем их список при помощи World.GetJunctionList(); и в цикле применяем к каждой.
А вообще, зачем все стрелки блокировать? Можно только те, которые переключаешь. Если ты пишешь сценарий, то используй Navigate.LockJunction() (или как его там? Давно сценарии не писал...). Вообще, начинающим сценариописателям советую читать тут: http://trainz-dm.narod.ru
<kuid:216981:******>
куид.ру не нужен
Аватара пользователя
kemal
 
Сообщения: 375
Зарегистрирован: 10.02.2006, 18:21
Откуда: Казань
Благодарил (а): 4 раз.
Поблагодарили: 7 раз.
Блог: Просмотр блога (4)
Играю в: Auran Trainz
Роль: Разработчик
Имя: Камиль

Re: Язык скриптования Auran Game Script

Сообщение AlexanderG » 24.01.2010, 19:10

Опа, а я и не заметил, что он использует имя класса, а не объект.
Join Dropbox and SHARE YOUR SHIT FOR FREE!
AlexanderG
 
Сообщения: 761
Зарегистрирован: 27.06.2009, 16:54
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Блог: Просмотр блога (2)
Имя: Александр

Re: Язык скриптования Auran Game Script

Сообщение Ant » 24.01.2010, 19:23

Что такое ООП знаешь?


Охренеть О сколько Писать мне ещё...

А если серьёзно, ООП - объектно-ориентированное программирование, вестимо.
Вобщем, писать JunctionBase.AllowManualControl(false); нельзя. Метод AllowManualControl() можно применять только к стрелке, т.е. должна быть переменная типа Junction (или JunctionBase).


Ясно. Будем посмотреть.

Если ты пишешь сценарий, то используй Navigate.LockJunction() (или как его там? Давно сценарии не писал...). Вообще, начинающим сценариописателям советую читать тут: http://trainz-dm.narod.ru


Navigate.LockJunction() мне известен. Статью Дмитрия Мыльникова прочитал и не раз. Буду ещё читать. Ещё API аурановский читаю. Ну, и ещё вас читаю.
Изучаю Auran Game Script
#477779
Ant
 
Сообщения: 156
Зарегистрирован: 07.10.2008, 21:52
Откуда: Казань
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Имя: Антон

Re: Язык скриптования Auran Game Script

Сообщение Ant » 24.01.2010, 19:56

вот первая грабля комплекта Т10: нет консольного компилятора скриптов. Без него проверку синтаксиса проводить не реально (запускать ТРС, чтоб узать потом, что не хватает запятой в сто первой строке скрипта - такой мазохизм не для меня


Эта грабля появилась в ТС2009. Нету его в девятом.

Я, кстати, и занимаюсь сейчас мазохизмом - врубаю игру, запускаю сценарий, вырубаю игру, правлю, снова запускаю... И так до охренения.
Изучаю Auran Game Script
#477779
Ant
 
Сообщения: 156
Зарегистрирован: 07.10.2008, 21:52
Откуда: Казань
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Имя: Антон

Re: Язык скриптования Auran Game Script

Сообщение AlexanderG » 24.01.2010, 20:40

Вроде нашли в 2010, в trainzutil.exe.

Я, кстати, и занимаюсь сейчас мазохизмом - врубаю игру, запускаю сценарий, вырубаю игру, правлю, снова запускаю... И так до охренения.
Это нормально. Когда ВЛ10 делался, такая манипуляция повторялась несколько десятков тысяч раз :)
Join Dropbox and SHARE YOUR SHIT FOR FREE!
AlexanderG
 
Сообщения: 761
Зарегистрирован: 27.06.2009, 16:54
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Блог: Просмотр блога (2)
Имя: Александр

Re: Язык скриптования Auran Game Script

Сообщение Ant » 25.01.2010, 20:35

Возможно, мой вопрос корифеям скриптования покажется весьма глупым, но всё же:

Зачем подключать модули, если мой скрипт является наследником класса Scenario, который, в свою очередь, является наследником базового класса GameObject?

То есть:

game class pass isclass Scenario
{
};

class Scenario isclass GameObject
{
};
Изучаю Auran Game Script
#477779
Ant
 
Сообщения: 156
Зарегистрирован: 07.10.2008, 21:52
Откуда: Казань
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Имя: Антон

Re: Язык скриптования Auran Game Script

Сообщение AlexanderG » 25.01.2010, 21:32

Наследуй от сценария. Чтобы сделать класс "Грузовик", ты же будешь его наследовать от класса "Автомобиль", а не от "Металлический объект"?
Join Dropbox and SHARE YOUR SHIT FOR FREE!
AlexanderG
 
Сообщения: 761
Зарегистрирован: 27.06.2009, 16:54
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Блог: Просмотр блога (2)
Имя: Александр

Re: Язык скриптования Auran Game Script

Сообщение Ant » 26.01.2010, 00:02

В общем, вот результат моей недельной работы:

Код: Выделить всё
include "trainz.gs"


game class pass isclass Scenario
{
   Train consist1,consist2,tr3,tr4;
   bool JunctionHand = false;


      bool Load(string data)
        {

           if(!World.LoadMap(World.FindKUID("tutorial1")))
           {
   Interface.Log("Error");
           return false;
           }
   

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

   void TrainDerailed(int trainId)
   {
       {
        Interface.SetObjective("The train has been derailed!","bad.tga");
       }
        World.EndScenario(5);
   }

   void TrainCollided(int trainId)
   {
      {
        Interface.SetObjective("DISASTER!","bad.tga");
       }
        World.EndScenario(5);
   }
   
   void TrainSpeedingFine()
   {
      {
        Interface.SetObjective("WARNING! SLOWDOWN!","bad.tga");
       }
       {
      Interface.AdjustScore(-10);
      }
   }

   void TrainBadCouple(int vehicleId)
      {
        Interface.AdjustScore(-200);
      }



   //основной поток
   thread void main(void)
   {

   Monitor();

   //начисляем 500 очков
         Interface.AdjustScore(500);

   //устанавливаем размер значков стрелок 50%
   Interface.SetHelperIconScale(0.5f);
   
   //убираем всякую помощь
   Interface.ShowOnScreenHelp(false);


   /*
   Код Трама (пока не удаётся)

   Junction [] JArray= World.GetJunctionList();
   int i;

   for(i=0;i<JArray.size(),i++)
   {
   (cast<JunctionBase>JArray).AllowManualControl(false);
   }
   */

    
     //пишем параметры составов и создаём их

     KUID[] consist1Spec = new KUID[0];

     consist1Spec[0] = World.FindKUID("te7");
     consist1Spec[1] = World.FindKUID("vp_kupe");
     consist1Spec[2] = consist1Spec[1];
     consist1Spec[3] = World.FindKUID("vp_plac");
     consist1Spec[4] = consist1Spec[3];
     consist1Spec[5] = consist1Spec[3];

     KUID[] consist2Spec = new KUID[0];

     consist2Spec[0] = World.FindKUID("te3");        
     consist2Spec[1] = World.FindKUID("vp_kupe_2");
     consist2Spec[2] = World.FindKUID("VP_plac");
     consist2Spec[3] = World.FindKUID("VP_sid");
     consist2Spec[4] = consist2Spec[2];
     consist2Spec[5] = consist2Spec[2];
     consist2Spec[6] = consist2Spec[2];

     KUID[] tr3Spec = new KUID[0];

     tr3Spec[0] = World.FindKUID("vl60");        
     tr3Spec[1] = World.FindKUID("vp_kupe_2");
     tr3Spec[2] = World.FindKUID("VP_plac");
     tr3Spec[3] = World.FindKUID("VP_sid");
     tr3Spec[4] = tr3Spec[1];
     tr3Spec[5] = tr3Spec[1];
     tr3Spec[6] = tr3Spec[1];
     tr3Spec[7] = tr3Spec[2];
     tr3Spec[8] = tr3Spec[2];
     tr3Spec[9] = tr3Spec[2];
      tr3Spec[10] = tr3Spec[3];
     tr3Spec[11] = tr3Spec[3];
     tr3Spec[12] = tr3Spec[2];
      tr3Spec[13] = tr3Spec[1];


     KUID[] tr4Spec = new KUID[0];

     tr4Spec[0] = World.FindKUID("m62");        
     tr4Spec[1] = World.FindKUID("vp_kupe_2");
     tr4Spec[2] = World.FindKUID("VP_plac");
     tr4Spec[3] = World.FindKUID("VP_sid");
     tr4Spec[4] = tr4Spec[3];
     tr4Spec[5] = tr4Spec[3];
     tr4Spec[6] = tr4Spec[2];
     tr4Spec[7] = tr4Spec[1];


     consist1 = World.CreateTrain(consist1Spec,"mk_st1_put4_nch",true);
     consist2 = World.CreateTrain(consist2Spec,"mk_st2_put1_ch",true);
   
     tr3 = World.CreateTrain(tr3Spec,"mk_vl60_pass",true);
     tr4 = World.CreateTrain(tr4Spec,"mk_start_consist3",true);
         
       consist1.SetFloatingLimit(Train.KPH_TO_MPS * 10, true);
         consist1.GetFrontmostLocomotive().SetHasDriver(true);

       consist2.SetFloatingLimit(Train.KPH_TO_MPS * 10, true);
         consist2.GetFrontmostLocomotive().SetHasDriver(true);

       tr3.SetFloatingLimit(Train.KPH_TO_MPS * 10, true);
         tr3.GetFrontmostLocomotive().SetHasDriver(true);

       tr4.SetFloatingLimit(Train.KPH_TO_MPS * 10, true);
         tr4.GetFrontmostLocomotive().SetHasDriver(true);

     //садимся в наш локомотив
         World.SetCamera(consist1.GetVehicles()[0],World.CAMERA_INTERNAL);

     Interface.SetObjective("Start scenario","play.tga");

     //отключаем нафиг DCC
     World1.SetDCCMode(0);

     //спим 15 секунд
     Sleep(15);
       
     Interface.SetObjective("The way was setup, you may go on","play.tga");

     //готовим маршрут для себя до станции b
     Navigate.LockJunction("a01",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("b04",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("b05",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("b07",Junction.DIRECTION_RIGHT,JunctionHand);
   
     //готовим маршрут для consist2 до станции а
     Navigate.LockJunction("b02",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("b01",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("a03",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("a02",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("a04",Junction.DIRECTION_RIGHT,JunctionHand);   

     //врубаем автопилот для состава2
     consist2.SetAutopilotMode(Train.CONTROL_AUTOPILOT);

     Navigate.OnJunction(me,consist1,"b04",Navigate.JUNCTION_ENTER);

     //готовим маршрут для отправления состава3 со станции b
     Navigate.LockJunction("b03",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("b01",Junction.DIRECTION_RIGHT,JunctionHand);

     //готовим маршрут для поезда tr4 до станции b
     Navigate.LockJunction("c01",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("b08",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("b06",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("b09",Junction.DIRECTION_LEFT,JunctionHand);      

     //врубаем автопилот для состава4
     tr4.SetAutopilotMode(Train.CONTROL_AUTOPILOT);

     //врубаем автопилот для состава3
     tr3.SetAutopilotMode(Train.CONTROL_AUTOPILOT);

     tr3.SoundHorn();

     Navigate.OnJunction(me,consist2,"a02",Navigate.JUNCTION_LEAVE);

     //готовим маршрут для поезда tr3 для прибытия на станцию а
     Navigate.LockJunction("a03",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("a01",Junction.DIRECTION_LEFT,JunctionHand);

     Navigate.OnTrigger(me,tr4,"trig_for_me",Navigate.TRIGGER_ENTER);

     //готовим маршрут для себя до станции с
     Navigate.LockJunction("b08",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("c01",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("c02",Junction.DIRECTION_RIGHT,JunctionHand);

   }
};


Работает отлично!
Это пока мой первый вариант без использования мнимой многопоточности.
Изучаю Auran Game Script
#477779
Ant
 
Сообщения: 156
Зарегистрирован: 07.10.2008, 21:52
Откуда: Казань
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Имя: Антон

Re: Язык скриптования Auran Game Script

Сообщение kemal » 26.01.2010, 01:24

Вроде нормально... Но, обкатать бы))
Насчёт стрелок. Ты по примеру Дмитрия Мыльникова используешь переменную JunctionHand. Ну и оставь так. На остальные стрелки, которые в сценарии не переключаются, можно забить.
Насчёт кода Трама_. Попробуй так.
Код: Выделить всё
Junction[] JArray = World.GetJunctionList();
int i;
for(i=0;i<JArray.size(),i++){
  JArray[i].AllowManualControl(false);
}
Но это так, для общего развития. Первый вариант лучше.

И ещё, смотрю ты тоже из Казани. Может совмесно какой-нибудь сценарий сделаем? В реальности то оно удобнее усилия совмещать))
<kuid:216981:******>
куид.ру не нужен
Аватара пользователя
kemal
 
Сообщения: 375
Зарегистрирован: 10.02.2006, 18:21
Откуда: Казань
Благодарил (а): 4 раз.
Поблагодарили: 7 раз.
Блог: Просмотр блога (4)
Играю в: Auran Trainz
Роль: Разработчик
Имя: Камиль

Re: Язык скриптования Auran Game Script

Сообщение Ant » 26.01.2010, 19:52

Но, обкатать бы))


Могу всё дать, но карта больно убогая - чисто для учёбы. Если надо - выложу сюда. Надо?

Насчёт стрелок. Ты по примеру Дмитрия Мыльникова используешь переменную JunctionHand. Ну и оставь так. На остальные стрелки, которые в сценарии не переключаются, можно забить.


Да, определяю функцию bool JunctionHand = false; - скорее всего, так и оставлю.

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

Моя задача лишь состоит в том, чтобы научиться писать интересные сценарии.

Иногда я бываю на МСТС-ных ветках и завидую обилию сценариев у них. Что называется: сел и поехал.
А у нас что-то как-то хило с этим... Неужели никому они неинтересны??

И ещё, смотрю ты тоже из Казани. Может совмесно какой-нибудь сценарий сделаем? В реальности то оно удобнее усилия совмещать))


Можно, конечно, попробовать. Нам бы встретиться где-нить, Pofig тоже из Казани - но он как-то не проявляет интереса. Есть ещё Nextuha, но он МСТС-ник. (Хотя, это ничему не мешает)
Пошёл оффтоп...

Попозже ещё допишу скрипт - вставлю пару интересных фишек.
Изучаю Auran Game Script
#477779
Ant
 
Сообщения: 156
Зарегистрирован: 07.10.2008, 21:52
Откуда: Казань
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Имя: Антон

Re: Язык скриптования Auran Game Script

Сообщение kemal » 26.01.2010, 21:16

Ant писал(а):Могу всё дать, но карта больно убогая - чисто для учёбы. Если надо - выложу сюда. Надо?

Нормально, для тестов самое то.
Можно и при встрече. Если кому-нибудь ещё интересно, то можно и здесь.
Ant писал(а):Да, определяю функцию bool JunctionHand = false; - скорее всего, так и оставлю.

Эээ.. Извини, что придерюсь, но это не функция. Это переменная.
Ant писал(а):Пошёл оффтоп...

Ага, ухожу в личку.
<kuid:216981:******>
куид.ру не нужен
Аватара пользователя
kemal
 
Сообщения: 375
Зарегистрирован: 10.02.2006, 18:21
Откуда: Казань
Благодарил (а): 4 раз.
Поблагодарили: 7 раз.
Блог: Просмотр блога (4)
Играю в: Auran Trainz
Роль: Разработчик
Имя: Камиль

Re: Язык скриптования Auran Game Script

Сообщение Ant » 26.01.2010, 21:26

Эээ.. Извини, что придерюсь, но это не функция. Это переменная.


Нет, наоборот, ты правильно делаешь, что поправляешь! Это поможет мне лучше разобраться.

Вот, немного исправил, немного добавил:

Код: Выделить всё
include "trainz.gs"


game class pass isclass Scenario
{
   Train consist1,consist2,tr3,tr4;
   bool JunctionHand = false;


      bool Load(string data)
        {

           if(!World.LoadMap(World.FindKUID("tutorial1")))
           {
   Interface.Log("Error");
           return false;
           }
   

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

   void TrainDerailed(int trainId)
   {
       {
        Interface.SetObjective("The train has been derailed!","bad.tga");
       }
        World.EndScenario(5);
   }

   void TrainCollided(int trainId)
   {
      {
        Interface.SetObjective("DISASTER!","bad.tga");
       }
        World.EndScenario(5);
   }
   
   void TrainSpeedingFine()
   {
      {
        Interface.SetAlert("WARNING! SLOWDOWN!","bad.tga",10,Interface.Colour_Red);
       }
       {
      Interface.AdjustScore(-10);
      }
   }

   void TrainBadCouple(int vehicleId)
      {
        Interface.AdjustScore(-200);
      }



   //основной поток
   thread void main(void)
   {

   Monitor();

   //начисляем 500 очков
         Interface.AdjustScore(500);

   //устанавливаем размер значков стрелок 50%
   Interface.SetHelperIconScale(0.5f);
   
   //убираем всякую помощь
   Interface.ShowOnScreenHelp(false);


   /*
   Код Трама (пока не удаётся)

   Junction [] JArray= World.GetJunctionList();
   int i;

   for(i=0;i<JArray.size(),i++)
   {
   (cast<JunctionBase>JArray).AllowManualControl(false);
   }
   */

    
     //пишем параметры составов и создаём их

     KUID[] consist1Spec = new KUID[0];

     consist1Spec[0] = World.FindKUID("te7");
     consist1Spec[1] = World.FindKUID("vp_kupe");
     consist1Spec[2] = consist1Spec[1];
     consist1Spec[3] = World.FindKUID("vp_plac");
     consist1Spec[4] = consist1Spec[3];
     consist1Spec[5] = consist1Spec[3];

     KUID[] consist2Spec = new KUID[0];

     consist2Spec[0] = World.FindKUID("te3");        
     consist2Spec[1] = World.FindKUID("vp_kupe_2");
     consist2Spec[2] = World.FindKUID("VP_plac");
     consist2Spec[3] = World.FindKUID("VP_sid");
     consist2Spec[4] = consist2Spec[2];
     consist2Spec[5] = consist2Spec[2];
     consist2Spec[6] = consist2Spec[2];

     KUID[] tr3Spec = new KUID[0];

     tr3Spec[0] = World.FindKUID("vl60");        
     tr3Spec[1] = World.FindKUID("vp_kupe_2");
     tr3Spec[2] = World.FindKUID("VP_plac");
     tr3Spec[3] = World.FindKUID("VP_sid");
     tr3Spec[4] = tr3Spec[1];
     tr3Spec[5] = tr3Spec[1];
     tr3Spec[6] = tr3Spec[1];
     tr3Spec[7] = tr3Spec[2];
     tr3Spec[8] = tr3Spec[2];
     tr3Spec[9] = tr3Spec[2];
      tr3Spec[10] = tr3Spec[3];
     tr3Spec[11] = tr3Spec[3];
     tr3Spec[12] = tr3Spec[2];
      tr3Spec[13] = tr3Spec[1];


     KUID[] tr4Spec = new KUID[0];

     tr4Spec[0] = World.FindKUID("m62");        
     tr4Spec[1] = World.FindKUID("vp_kupe_2");
     tr4Spec[2] = World.FindKUID("VP_plac");
     tr4Spec[3] = World.FindKUID("VP_sid");
     tr4Spec[4] = tr4Spec[3];
     tr4Spec[5] = tr4Spec[3];
     tr4Spec[6] = tr4Spec[2];
     tr4Spec[7] = tr4Spec[1];


     consist1 = World.CreateTrain(consist1Spec,"mk_st1_put4_nch",true);
     consist2 = World.CreateTrain(consist2Spec,"mk_st2_put1_ch",true);
   
     tr3 = World.CreateTrain(tr3Spec,"mk_vl60_pass",true);
     tr4 = World.CreateTrain(tr4Spec,"mk_start_consist3",true);
         
       consist1.SetFloatingLimit(Train.KPH_TO_MPS * 10, true);
         consist1.GetFrontmostLocomotive().SetHasDriver(true);

       consist2.SetFloatingLimit(Train.KPH_TO_MPS * 10, true);
         consist2.GetFrontmostLocomotive().SetHasDriver(true);

       tr3.SetFloatingLimit(Train.KPH_TO_MPS * 10, true);
         tr3.GetFrontmostLocomotive().SetHasDriver(true);

       tr4.SetFloatingLimit(Train.KPH_TO_MPS * 10, true);
         tr4.GetFrontmostLocomotive().SetHasDriver(true);

     //садимся в наш локомотив
         World.SetCamera(consist1.GetVehicles()[0],World.CAMERA_INTERNAL);

     Interface.SetObjective("Start scenario","play.tga");

     //отключаем нафиг DCC
     World1.SetDCCMode(0);

     //спим 15 секунд
     Sleep(15);
       
     Interface.SetObjective("The way was setup, you may go on","play.tga");

     World.Play2DSound("334_1.wav");


     //готовим маршрут для себя до станции b
     Navigate.LockJunction("a01",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("b04",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("b05",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("b07",Junction.DIRECTION_RIGHT,JunctionHand);
   
     //готовим маршрут для consist2 до станции а
     Navigate.LockJunction("b02",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("b01",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("a03",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("a02",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("a04",Junction.DIRECTION_RIGHT,JunctionHand);   

     //врубаем автопилот для состава2
     consist2.SetAutopilotMode(Train.CONTROL_AUTOPILOT);

     Navigate.OnJunction(me,consist1,"b04",Navigate.JUNCTION_ENTER);

     //готовим маршрут для отправления состава3 со станции b
     Navigate.LockJunction("b03",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("b01",Junction.DIRECTION_RIGHT,JunctionHand);

     //готовим маршрут для поезда tr4 до станции b
     Navigate.LockJunction("c01",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("b08",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("b06",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("b09",Junction.DIRECTION_LEFT,JunctionHand);      

     //врубаем автопилот для состава4
     tr4.SetAutopilotMode(Train.CONTROL_AUTOPILOT);

     //врубаем автопилот для состава3
     tr3.SetAutopilotMode(Train.CONTROL_AUTOPILOT);

     tr3.SoundHorn();

     Navigate.OnJunction(me,consist2,"a02",Navigate.JUNCTION_LEAVE);

     Interface.SetObjective("You must admit passenger train coming from the opposite direction","play.tga");
    
     //готовим маршрут для поезда tr3 для прибытия на станцию а
     Navigate.LockJunction("a03",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("a01",Junction.DIRECTION_LEFT,JunctionHand);

     Navigate.OnTrigger(me,tr4,"trig_for_me",Navigate.TRIGGER_ENTER);
    
     World.Play2DSound("334_2.wav");    

     //готовим маршрут для себя до станции с
     Navigate.LockJunction("b08",Junction.DIRECTION_LEFT,JunctionHand);
     Navigate.LockJunction("c01",Junction.DIRECTION_RIGHT,JunctionHand);
     Navigate.LockJunction("c02",Junction.DIRECTION_RIGHT,JunctionHand);

     //Заканчиваем с игрой
     Navigate.OnTrigger(me,consist1,"trig_end",Navigate.TRIGGER_STOPPED);
   
     Interface.SetObjective("Congratulations! Scenario is done!","play.tga");
     World.EndScenario(5);

   }
};
Изучаю Auran Game Script
#477779
Ant
 
Сообщения: 156
Зарегистрирован: 07.10.2008, 21:52
Откуда: Казань
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Имя: Антон

Re: Язык скриптования Auran Game Script

Сообщение AlexanderG » 26.01.2010, 21:53

Моя задача лишь состоит в том, чтобы научиться писать интересные сценарии.
ИМХО, проще правилами и командами. Если будет остро чего-то не хватать — писать свои команды и правила. Будет удобнее, гибче и стабильнее.
Join Dropbox and SHARE YOUR SHIT FOR FREE!
AlexanderG
 
Сообщения: 761
Зарегистрирован: 27.06.2009, 16:54
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Блог: Просмотр блога (2)
Имя: Александр

Re: Язык скриптования Auran Game Script

Сообщение Ant » 26.01.2010, 22:46

AlexanderG писал(а):ИМХО, проще правилами и командами. Если будет остро чего-то не хватать — писать свои команды и правила. Будет удобнее, гибче и стабильнее.


Может и проще, да только возможности не те. Да тем более, писать свои команды и правила и связываться с сессиями мне не хочется, да и неинтересно.

Попозже выложу демку. Только там очень убогая, страшная карта. Чисто для отработки сценария.
Изучаю Auran Game Script
#477779
Ant
 
Сообщения: 156
Зарегистрирован: 07.10.2008, 21:52
Откуда: Казань
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Играю в: Auran Trainz
Имя: Антон

Пред.След.

Вернуться в [TZ] Другие вопросы

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

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