Крым 2.2, с сигналкой SU
|
|
TRam_ | Дата: Среда, 20.03.2019, 18:51 | Сообщение # 31 |
Группа: проверенные
Сообщений: 22
Статус: Offline
| Либо можно сделать 1 массив светофоров, и тогда для переключения в противоположном от светофора направлении давать команду
Код PostMessage(Router.GetGameObject("signal_1"), "Browser-URL", "live://spanTrackFromMe", 0.0);
а для направления в сторону светофора, как выше Код PostMessage(Router.GetGameObject("signal_1"), "Browser-URL", "live://spanTrackFromOther", 0.0);
при этом естественно на перегоне поездов не должно быть.
|
|
| |
Добрый | Дата: Четверг, 21.03.2019, 12:55 | Сообщение # 32 |
Чеширский кот
Группа: администраторы
Сообщений: 3531
Статус: Offline
| Цитата TRam_ ( ) Если боты в том скрипте сами ищут светофоры Да, так и есть - в скрипте для Южного Крыма: имён светофоров в скрипт не забито, тупо отправляется сообщение всем найденным светофорам впереди на заданной дистанции. В такой ситуации не будет ли глупым одновременно всем посылать команду на переключение перегона? А для основной карты - да, там имена светофоров как переменная для роутера. Такой вариант подойдёт.
|
|
| |
TRam_ | Дата: Пятница, 22.03.2019, 19:13 | Сообщение # 33 |
Группа: проверенные
Сообщений: 22
Статус: Offline
|
Цитата В такой ситуации не будет ли глупым одновременно всем посылать команду на переключение перегона?
В такой ситуации надо посылать команду входному, который сонаправлен поиску.
А что всем светофорам-то посылается? Можно проверить тип светофора, чтобы маневровым и проходным ничего не посылать
MapObject next_obj = SearchNext(); Signal next_signal = cast<Signal>next_obj; if(next_signal and (next_signal.GetProperties().GetNamedTagAsInt("GetSignalType()", 0) & (2+4+8)) ) // для входного - (.... & 2) { /// тут собственно посылка или не посылка сообщения входному/выходному/маршрутному }
Сообщение отредактировал TRam_ - Пятница, 22.03.2019, 19:15 |
|
| |
Добрый | Дата: Суббота, 23.03.2019, 07:55 | Сообщение # 34 |
Чеширский кот
Группа: администраторы
Сообщений: 3531
Статус: Offline
| Да, так понятно, попробую
|
|
| |
Добрый | Дата: Вторник, 16.04.2019, 11:53 | Сообщение # 35 |
Чеширский кот
Группа: администраторы
Сообщений: 3531
Статус: Offline
| Долго экспериментировал. Входной определяется правильно, но мессейдж ему перегон не переключает, только если открыть его браузер. void SetSpan(Train train){ // Функция переключения направления перегона
Vehicle v=train.GetVehicles()[0];
GSTrackSearch GSTS = v.BeginTrackSearch(true);
MapObject obj = GSTS.SearchNext();
while(obj) {
if (GSTS.GetFacingRelativeToSearchDirection() and obj.isclass(Signal) and obj.GetProperties().GetNamedTagAsInt("GetSignalType()", 0)&2) {
sig=cast<Signal>obj; Interface.Print ("vhodnoi="+sig.GetName());
PostMessage(sig, "Browser-URL", "live://spanTrackFromOther", 0.0); break;
}
obj = GSTS.SearchNext();
}
}
|
|
| |
TRam_ | Дата: Понедельник, 22.04.2019, 00:46 | Сообщение # 36 |
Группа: проверенные
Сообщений: 22
Статус: Offline
| Эх, забыл что эта функция работает только когда браузер включен, и его же обновляет...
Предлагаю попробовать вот так:
Код void SetSpan(Train train){ // Функция переключения направления перегона
Vehicle v=train.GetVehicles()[0];
GSTrackSearch GSTS = v.BeginTrackSearch(true);
MapObject obj = GSTS.SearchNext();
while(obj) {
if (GSTS.GetFacingRelativeToSearchDirection() and obj.isclass(Signal)) { Soup signal_soup = obj.GetProperties();
if(signal_soup.GetNamedTagAsInt("GetSignalType()", 0)&2) { String sig_name = soup.GetNamedTag("privateName") + "@" + soup.GetNamedTag("stationName"); Interface.Print ("vhodnoi ="+sig.GetName()+" name " + sig_name);
PostMessage(obj, "SetSpanDirection", sig_name, 0.0); break; } } obj = GSTS.SearchNext(); } }
|
|
| |
Добрый | Дата: Вторник, 23.04.2019, 15:28 | Сообщение # 37 |
Чеширский кот
Группа: администраторы
Сообщений: 3531
Статус: Offline
| Я правильно понял, что PostMessage(obj, "SetSpanDirection", sig_name, 0.0); переключает перегон на противоположное от текущего направления? А как быть, если перегон уже в правильном направлении выставлен?
|
|
| |
TRam_ | Дата: Пятница, 26.04.2019, 03:27 | Сообщение # 38 |
Группа: проверенные
Сообщений: 22
Статус: Offline
| Код if (!GSTS.GetFacingRelativeToSearchDirection() and obj.isclass(Signal))
искать светофор противоположного направления...
|
|
| |