![]() |
Нашел ,почему на тестовой и основной карте по разному получается.
На тестовой первый вагон train2 обращен к train1.На основной-последний. Создал на тестовой карте train2 хвостом к train1 - вообще все 3 проверки расстояния выполнились сразу (a==true в этом случае получается всегда) Пробовал от последнего вагона train2 измерять расстояние ( one2=train2.GetVehicles()[4];// 5 вагон состава из 5 вагонов) и все равно a==true получается всегда. train2.Turnaround(); тоже ничего не дало... А вот когда ставишь на рельсы между составами какой-нибудь Track объект,расстояние измеряется до него(как и на основной карте). |
[QUOTE]train2.Turnaround(); тоже ничего не дало...[/QUOTE]если сидишь в кабине и лок однокабинный, то оно ничего не даст. Только если снаружи сидеть либо лок типа ЧМЭ3 нового.
|
Да в составe train2 вообще нет локомотива.Просто хотел его логически развернуть,что бы последний вагон стал первым.
|
Короче,может кому пригодится:методом "научного тыка" проблему решил.
train2.Turnaround(); one2=train2.GetVehicles()[1]; и дальше,ко всем измеряемым расстояниям,надо прибавлять длину 1 пассажирского (в данном случае) вагона ( + 23 ) Нулевой вагон почему-то не работает. |
[QUOTE]и дальше,ко всем измеряемым расстояниям,надо прибавлять длину 1 пассажирского (в данном случае) вагона ( + 23 )[/QUOTE] Не длину вагона, а половины длин вагонов составов. Расстояние измеряется между геометрическими центрами (0,0,0 моделей вагонов).
|
Combine,да нет.В этом случае-расстояние как раз-таки до сцепки Vehicles()[1](Vehicles()[0] почему-то в упор не видит).Поэтому надо плюсовать длину невидимого для команды вагона.Получается,что Turnaround() логически разворачивает состав,но не вагон в нем.И нулевой вагон является тем последним триггером перед составом.
У меня сейчас такая проблема возникла:наконец дошло до меня,что в kuid-table сценария не обязательно ставить вагоны.Можно указывать куид состава(который создается в редакторе сессии) и из kuid-table этого состава брать вагоны в сценарий. Но...Создал я составы из одинаковых по типу вагонов(платформы-один состав,полувагоны-другой и т.д.) и настроил сценарий так,что бы эти вагоны из составов создавались в сценарии.Все отлично.Все работает.Но...Для чего я это все делал?Для того,что бы каждый желающий мог поставить в составы свои вагоны.Для этого я создал составы из 30 одинаковых по типу вагонов(думал,что и в kuid-table этих составов будет по 30 вагонов)Но такой обломс.В kuid-table состава-всего один куид(куид-то у всех 30 вагонов одинаковый...)И менять вагоны в составе невозможно(чтоб при выходе эти изменения сохранялись).И что делать... |
Глупый вопрос
Неожиданно столкнулся с такой проблемой - заполнение массива. В Java это выглядит так: int [] st; st= new int []{1,2,3,4,5};
Однако в трайнзе int [] st; компилятор пропускает, а вот st= new int []{1,2,3,4,5}; - нет. Если заполнять ячейки по одной st [0] = 1; то работает, а сразу все - ругается. Не могу понять, какие знаки препинания тут требуются.:confused: |
[QUOTE]Не могу понять, какие знаки препинания тут требуются.[/QUOTE]просто трейнз не поддерживает всего того синтаксиса, который реализуется в Си. Потому заполнять надо только по 1 элементу.Вообще надо так:
int[] st= new int [5]; st[0]=1; st[1]=2; st[2]=3; st[3]=4; st[4]=5; |
[code]public int[] NewIntArray(string numbers)
{ string[] tokens = Str.Tokens(numbers, ","); int[] ret = new int[tokens.size()]; int i; for (i = 0; i < tokens.size(); ++i) ret[i] = Str.ToInt(tokens[i]); return ret; }[/code] [code]int[] st = NewIntArray("1,2,3,4,5");[/code] Си, джава, шарп, GS похожи, но не перестают от этого быть разными языками. |
Вот спасибо! А то я не мог понять, как упростить ввод данных:drinks:
И ещё один глупый вопрос - можно ли в трайнзе создавать массивы программно, т. е. название массива не прописывается в ручную, а задаётся переменной? Интуитивно понимаю, что нет, но знаний маловато:o |
Делать массив объектов, содержащих массивы. Обычные двумерные массивы трейнз не поддерживает.
|
Нет, такое решение мне не подходит. Вот я знаю, что можно выяснить длину массива, скажем, так: int аа = а.size(). А как можно выяснить название массива? Есть формула?
|
Нет, название ты вычислить не можешь.
В крайнем случае объяви объект class NamedArray { public string name; public int[] arr; }; организуй массив таких объектов NamedArray[] main_arrays=new NamedArray[5]; for(i=0;i<5;i++) { main_arrays[i]=new NamedArray(); main_arrays[i].arr=new int[10]; } и затем именуешь main_arrays[0].name="hren1"; main_arrays[2].name="korova"; и затем в коде, когда тебе понадобится массив с нужным именем, делай перебор int i=0; int j=-1; while(i<main_arrays.size() and j<0) { if(main_arrays[i].name=="dispetcher") j=i; i++ } if(j>=0) { next_array=main_arrays[j].arr; } |
Вот Combine посоветовал не использовать goto в скрипте, ибо вызывает ошибки. Посоветуйте, как более корректно осуществлять переход от одной строки к другой, если речь не идёт о выходе из цикла. С выходом из цикла вопросов нет.
|
Безусловный переход от одной строки другой уже некорректен и свидетельствует о неверном подходе к решению задачи. Гоуту лишь следствие.
Расскажи, в чем проблема. |
Текущее время: 17:06. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim