![]() |
![]() |
![]() |
#1 |
Новичок
Регистрация: 11.06.2008
Адрес: г.Нефтеюганск
Сообщений: 4
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
![]() |
![]()
Привет всем!!!. У меня TRS 2006 Вот очень сильно хочу разобраться как делать сценарии с помощью скриптов. Прочитал много информации, смотрел примеры ну что у меня не чего получается, уже неделю долблюсь сделать простой скрипт просто поставить
поезд на маркер и управлять им потом. Для этого я создал маршрут простой две станции A и B, затем создал сессию Для него. Затем в Content Manager импортирую скрипт, жму Ctrl+M захожу В Trainz в редактор маршрутов выбираю свою сессию в созданном маршруте Потом в правилах сессии добавляю скрипт сохраняю. Перехожу в Driver Выбираю свой маршрут и ту сессию где скрипт все загружается но поезда нет Вот сам скрипт и конфиг: kind "behavior" username testsc script testsc class testsc kuid <kuid:200108:0005> region Russia category-region-0 RU category-era-0 1990s category-class YS kuid-table { Default <kuid:-2:1091> vl10a <kuid2:166294:260:1> } description "Script" Cкрипт: nclude "ScenarioBehavior.gs" include "browser.gs" include "locomotive.gs" game class testsc isclass ScenarioBehavior { Train mytrain; KUID[] mytrainSpec = new KUID[0]; thread void main(void) { Monitor(); mytrainSpec[0] = World.FindKUID("vl10a"); mytrainSpec[1] = mytrainSpec[0]; mytrain = World.CreateTrain(mytrainSpec,"msta2",true); mytrain.SetAutopilotMode(Train.CONTROL_MANUAL); } }; Помогите пожалуйста разобраться что я делаю не так, очень надо |
![]() |
![]() |
![]() |
|
Яndex
Спонсор
Регистрация: 01.01.2007
Сообщения: 500
Реклама показывается изредка по случайному принципу |
![]() |
![]() |
#2 | |||
Матёрый пользователь
Регистрация: 30.08.2007
Адрес: Московская область, 36км
Сообщений: 3,620
Вы сказали Спасибо: 263
Поблагодарили 304 раз(а) в 172 сообщениях
![]() |
![]() Цитата:
Цитата:
Цитата:
|
|||
![]() |
![]() |
![]() |
#3 |
Матёрый пользователь
|
![]()
behavior - кайнд правила сессии, а не сценария
|
![]() |
![]() |
![]() |
#4 |
Новичок
Регистрация: 11.06.2008
Адрес: г.Нефтеюганск
Сообщений: 4
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
![]() |
![]()
А вот если сделать вот так:
kind "activity" username "testsc" scriptlibrary "testsc" scriptclass "testsc" kuid <kuid:200108:0011> region "Russia" category-region-0 "RU" category-era-0 "1990s" category-class "YS" description "Script" asset-filename "Mashinist" kuid-table { test-script-map <kuid:-2:1091> vl10a vl10a <kuid2:166294:260:1> } Скрипт include "trainz.gs" include "navigate.gs" include "train.gs" include "turntable.gs" include "junction.gs" game class testsc isclass Scenario { Train mytrain; bool JunctionHand = true; KUID[] mytrainSpec = new KUID[0]; bool Load(string data) { if(!World.LoadMap(World.FindKUID("test-script-map"))) { Interface.Log("Error loading scenario map"); return false; } Interface.AdjustScore(1000); return true; } thread void main(void) { sostav[0] = World.FindKUID("vl10a"); sostav[1] = sostav[0]; mytrain = World.CreateTrain(sostav,"msta2",true); World.SetCamera(mytrain.GetVehicles()[0],World.CAMERA_INTERNAL); Sleep(10); } }; То в TRS2006 в Driver в разделе Scenario появляется скрипт все работает нормально Появляется локомотив, ну так не совсем подходит так, как загружается карта без Сессии и соответственно сигналка z6 не работает так как она не настроена, теперь Вопрос а можно как не будь сделать так чтоб и сессия подгружалась. |
![]() |
![]() |
![]() |
#5 |
Матёрый пользователь
Регистрация: 30.08.2007
Адрес: Московская область, 36км
Сообщений: 3,620
Вы сказали Спасибо: 263
Поблагодарили 304 раз(а) в 172 сообщениях
![]() |
![]()
Думаю, да, есть правило Custom Script для сессий.
|
![]() |
![]() |
![]() |
#6 |
Новичок
Регистрация: 11.06.2008
Адрес: г.Нефтеюганск
Сообщений: 4
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
![]() |
![]()
Большое спасибо GSTrainz он Подсказал как это делаеться, вот скрипт:
include "ScenarioBehavior.gs" include "locomotive.gs" class testsc isclass ScenarioBehavior { bool objectRunningDriver =false; // Функция переключения стрелки void ChangeJunc(string jName,int dir){ Navigate.LockJunction(jName,dir,true); } thread void SecondThread() { KUID[] sostav = new KUID[0]; Train Mytrain; KUID SN = GetAsset().LookupKUIDTable("testsc"); Asset SCN_dir = World.FindAsset(SN); World.SetGameTime (0.800);// время Interface.ShowOnScreenHelp (false) ;// убираем светящиеся левера World.SetWeather (2,1);// погода sostav=new KUID[0]; sostav[0]=GetAsset().LookupKUIDTable("vl10a"); sostav[1]=GetAsset().LookupKUIDTable("vl10a"); Mytrain=World.CreateTrain(sostav,"msta2",true); //Ставим поезд на маркер с именем msta2 Mytrain.GetVehicles()[1].Reverse(); //переворачиваем 2-ю секцию локомотива Mytrain.SetTrainPriorityNumber(3); // маневровый World.SetCamera(Mytrain.GetFrontmostLocomotive(), World.CAMERA_INTERNAL); Mytrain.SetAutopilotMode(Train.CONTROL_MANUAL); Sleep(20); } public void RunInDriver(){ if(World.GetCurrentModule()!=World.DRIVER_MODULE){ return; } SecondThread(); } public void RunInSurveyor(){ if(World.GetCurrentModule()!=World.SURVEYOR_MODULE ){ return; } } void ModuleInitHandler(Message msg){ if (objectRunningDriver) return; if (World.GetCurrentModule() == World.DRIVER_MODULE) { objectRunningDriver =true; RunInDriver(); } } public void Init(Asset self) { inherited(self); AddHandler(me, "World", "ModuleInit", "ModuleInitHandler"); RunInSurveyor(); } }; Этот скрипт получается как правило сессии |
![]() |
![]() |
![]() |
#7 |
Матёрый пользователь
|
![]()
так он и должен в этом случае быть правилом сессии
|
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|
|
![]() Что это? |