![]() |
Создание скриптов для TRS 2006
Привет всем!!!. У меня 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крипт:[B][/B] 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); } }; Помогите пожалуйста разобраться что я делаю не так, очень надо |
[QUOTE]KUID[] mytrainSpec = new KUID[0];[/QUOTE] Это что? Создаешь массив без элементов?
[QUOTE]mytrainSpec[0] = World.FindKUID("vl10a"); mytrainSpec[1] = mytrainSpec[0];[/QUOTE] Опять же, пытаешься работать с несуществующими элементами. [QUOTE]script testsc class testsc[/QUOTE] Попробуй заключить в кавычки. |
behavior - кайнд правила сессии, а не сценария
|
А вот если сделать вот так:
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> } [b]Скрипт[/b][SIZE="6"][/SIZE] 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 не работает так как она не настроена, теперь Вопрос а можно как не будь сделать так чтоб и сессия подгружалась. |
Думаю, да, есть правило Custom Script для сессий.
|
Большое спасибо [B]GSTrainz[/B] он Подсказал как это делаеться, вот скрипт:
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(); } }; Этот скрипт получается как правило сессии |
так он и должен в этом случае быть правилом сессии
|
Текущее время: 02:17. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim