Форум Trainsim  

Вернуться   Форум Trainsim > Auran TrainZ > TrainZ - Маршруты и сценарии

Ответ
 
Опции темы Опции просмотра
Старый 27.12.2008, 21:32   #1
Roman-L
Новичок
 
Регистрация: 11.06.2008
Адрес: г.Нефтеюганск
Сообщений: 4
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Roman-L стоит на развилке (репутация по умолчанию)
По умолчанию Создание скриптов для 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крипт:
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);
}
};
Помогите пожалуйста разобраться что я делаю не так, очень надо
Roman-L вне форума   Ответить с цитированием
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА

 
Старый 27.12.2008, 22:03   #2
Combine
Матёрый пользователь
 
Аватар для Combine
 
Регистрация: 30.08.2007
Адрес: Московская область, 36км
Сообщений: 3,620
Вы сказали Спасибо: 263
Поблагодарили 304 раз(а) в 172 сообщениях
Combine стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
KUID[] mytrainSpec = new KUID[0];
Это что? Создаешь массив без элементов?
Цитата:
mytrainSpec[0] = World.FindKUID("vl10a");
mytrainSpec[1] = mytrainSpec[0];
Опять же, пытаешься работать с несуществующими элементами.
Цитата:
script testsc
class testsc
Попробуй заключить в кавычки.
Combine вне форума   Ответить с цитированием
Старый 29.12.2008, 00:38   #3
genesis
Матёрый пользователь
 
Регистрация: 31.07.2007
Адрес: Ульяновск
Сообщений: 2,570
Вы сказали Спасибо: 245
Поблагодарили 175 раз(а) в 76 сообщениях
genesis стоит на развилке (репутация по умолчанию)
Отправить сообщение для genesis с помощью ICQ Отправить сообщение для genesis с помощью Skype™
По умолчанию

behavior - кайнд правила сессии, а не сценария
genesis вне форума   Ответить с цитированием
Старый 29.12.2008, 14:54   #4
Roman-L
Новичок
 
Регистрация: 11.06.2008
Адрес: г.Нефтеюганск
Сообщений: 4
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Roman-L стоит на развилке (репутация по умолчанию)
По умолчанию

А вот если сделать вот так:
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 не работает так как она не настроена, теперь
Вопрос а можно как не будь сделать так чтоб и сессия подгружалась.
Roman-L вне форума   Ответить с цитированием
Старый 29.12.2008, 16:38   #5
Combine
Матёрый пользователь
 
Аватар для Combine
 
Регистрация: 30.08.2007
Адрес: Московская область, 36км
Сообщений: 3,620
Вы сказали Спасибо: 263
Поблагодарили 304 раз(а) в 172 сообщениях
Combine стоит на развилке (репутация по умолчанию)
По умолчанию

Думаю, да, есть правило Custom Script для сессий.
Combine вне форума   Ответить с цитированием
Старый 30.12.2008, 09:02   #6
Roman-L
Новичок
 
Регистрация: 11.06.2008
Адрес: г.Нефтеюганск
Сообщений: 4
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Roman-L стоит на развилке (репутация по умолчанию)
По умолчанию

Большое спасибо 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();
}

};
Этот скрипт получается как правило сессии
Roman-L вне форума   Ответить с цитированием
Старый 30.12.2008, 10:13   #7
genesis
Матёрый пользователь
 
Регистрация: 31.07.2007
Адрес: Ульяновск
Сообщений: 2,570
Вы сказали Спасибо: 245
Поблагодарили 175 раз(а) в 76 сообщениях
genesis стоит на развилке (репутация по умолчанию)
Отправить сообщение для genesis с помощью ICQ Отправить сообщение для genesis с помощью Skype™
По умолчанию

так он и должен в этом случае быть правилом сессии
genesis вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 23:39. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim
TopList Нажми для появления дома Trainsim на карте Intermap
Что это?