Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   MSTS - Маршруты (http://www.trainsim.ru/forum/forumdisplay.php?f=19)
-   -   Сигнализация: конфигурация и скрипты (http://www.trainsim.ru/forum/showthread.php?t=13819)

КЕ 08.03.2020 23:45

Думаю, что это может быть... ещё попытка:

[B]SCRIPT T_Head_YGR

extern float enabled;
extern float block_state ();
extern float next_sig_lr ();
extern float next_sig_mr ();
extern float def_draw_state ();
extern float state;
extern float draw_state;
extern float sig_feature ();
float next_state;

if (enabled)
{ next_state = next_sig_lr (SIGFN_NORMAL);
state = 1;
if ( ( !sig_feature ( SIGFEAT_USER1 ) ) && ( block_state () == BLOCK_CLEAR ) )
{
if ( ( next_state == 1 ) || ( next_state == 2 ) )
{ state = 3; } /// "Yellow"
else { state = 7; } /// "Green"
draw_state = def_draw_state (state);
if ( state == 7)
{
if ( next_state == 4)
{ draw_state = 4; } /// "Yellow F"
else if ( ( next_state == 5 ) || ( next_state == 6 ) )
{ draw_state = 5; } /// "Green F"
}
}
}
else {
state = 0;
draw_state = def_draw_state (state);
}[/B]

Forsayth 09.03.2020 00:07

[QUOTE=КЕ;591506]Думаю, что это может быть... ещё попытка:
[/QUOTE]

Костя!) Огромная Вам Благодарность) Снова Вы мне очень помогли) И снова третья попытка увенчалась успехом)
ОГРОМНОЕ СПАСИБО) Большего ЗДОРОВЬЯ Вам и много счастья)

КЕ 09.03.2020 00:13

Спасибо!
дело было в последних 2 строках:
[B]} else state = SIGASP_STOP;
draw_state = def_draw_state (state);[/B]
Получалось, что после правильной отработки включения огней скрипт проходил по
[B]draw_state = def_draw_state (state);[/B]
и сбрасывал огни обратно на зелёный.
После заключения в скобки:
[B]else {
state = 0;
draw_state = def_draw_state (state);
}[/B]
огни второй раз уже не менялись, скрипт не заходил на строку
[B]draw_state = def_draw_state (state);[/B].

Forsayth 09.03.2020 00:55

Скрипт работает нормально... Но я решил посмотреть, что происходит из сигналом, после проследования состава... И выяснилось... что светофор не переключается на красный)

КЕ 09.03.2020 01:06

Вот в начало скрипта:
[B]if (enabled)
{ next_state = next_sig_lr (SIGFN_NORMAL);
{ state = 1; draw_state = 0; }
...
...[/B]

Forsayth 09.03.2020 01:13

Всё идеально сработало)
Еще раз ОГРОМНОЕ СПАСИБО) :drinks:

КЕ 17.04.2020 10:37

Олег, я в соседней теме просил скрипты, чтоб понять синтаксис, а то у меня OR ругается постоянно:
[I]Unexpected number of = in string : ELSE IF ( NEXT_N = 3 ){STATE = 7...
Unmatching brackets in : ELSE IF ( NEXT_N...[/I]
Что-то там было, что терпит МСТС, а ОР вот так пишет в лог, но не помню, в чём именно дело...

vicente 17.04.2020 11:30

Скобки проверь.
Он на скобки ругается.

vicente 17.04.2020 16:12

Проблема, которую я [URL="http://www.trainsim.ru/forum/showpost.php?p=592479&postcount=48"]описал[/URL] в теме о Timetable Mode касается исключительно сигнализаций, где количество активированных сигналов функционально задействовано в каких-то ситуациях. То есть, если сигнализация построена на том, что нет никаких дополнительных сигнальных точек, или аргумент [B]SignalNumClearAhead[/B] постоянен - никаких изменений в работе не будет. Мне это сломало некоторые моменты из-за особенностей в самой сигналке. У меня [B]всегда[/B] первая сигнальная точка после станции (а также на маршрутных светофорах, но там оно не мешает, проблема обнаружилась именно с выходными) в случае [B]!enabled[/B] даёт аспект 2 (и зеленый, желтый или красный - в зависимости от занятости б/у если это проходной АБ или 2 и красный, если это входной АБ или ПАБ. Это нужно для того, чтобы в маневровом режиме давать 2 и белый на выходном. Логика проста. Естественно, если сервис отправляется на перегон и его Path не доходит до первого сигнала после входного, то этот самый первый сигнал [B]!enabled[/B] (в МСТС, кстати, тоже так, поэтому я и написал там,,что сигналка в обоих симуляторах работает) и выдаёт 2. А выходной настроен на следующий 2 давать 2 и белый. В поездном режиме первый светофор после станции активируется , естественно и выходной выдаёт поездные аспекты. Присутствие в сигнализации дополнительного маркера рельсовой цепи в начале каждого станционного пути по ходу движения сервиса, а также маневровых сигналов на входных стрелках требует точного расчета [B]SignalNumClearAhead[/B] у [B]входного[/B] светофора. Он должен "доставать" через все станционные объекты сигнализации аж до этого самого первого проходного или входного на следующую станцию. Иначе мой входной просто не откроется - маневровые дают 2, если путь знаят, чтобы позволить прицепку на занятый путь, а также если путь свободен и на выходном -2 для маневрового проследования по свободному пути, а при маневровом режиме входные у меня "заперты", естественно.
Обидно, что когда я эту механику разрабатывал, и у меня был выбор: положиться ли на разработчиков ОР с их утверждением, что светофор с [B]SignalNumClearAhead = -1[/B] не учитывается симулятором в "общем зачёте" или прописывать "топором" все значения этого параметра для каждого светофора, включая маркеры, я выбрал первое. Зря... Бывает

[size="1"][color="Silver"]Добавлено через 14 минут[/color][/size]
Вносить поправки сейчас, ИМХО, смысла не имеет, всё вышеизложенное делалось "не от хорошей жизни" , а из-за нехватки аспектов и отсутствия соответствующих функций. В Open Rails теперь есть специальные дополнительные функции для сигнализации, расчитанные именно для возможности сделать маневровые показания.
Так что, если переделывать, так уже переделывать всё

[...рыдая бьётся головой о стену... :crazy:]

КЕ 17.04.2020 16:38

Ты по удалению, впередиидущий сервис что-то изменяет?

vicente 17.04.2020 20:06

В Open Rails - нет. В MSTS [B][I]enabled()[/I][/B] распространяется и на светофор, который сервис проехал. Вернее - на тот, что проследовал и на один перед ним, если я правильно помню. На "Заборе" я выкладывал проверку по этой функции с картинками. Пост нашел, но картинки пропали.

[size="1"][color="Silver"]Добавлено через 2 минуты[/color][/size]
Поэтому, да, там поездной откроется. Я забыл

КЕ 17.04.2020 21:42

Вообще от скрипта зависит, но помню были случаи, когда после прохода трафика мне выходной белым горел вместо желтого, то есть реагировал на !enabled проходного.

vicente 19.04.2020 04:11

[QUOTE=vicente;592482]Обидно, что когда я эту механику разрабатывал, и у меня был выбор: положиться ли на разработчиков ОР с их утверждением, что светофор с SignalNumClearAhead = -1 не учитывается симулятором в "общем зачёте" или прописывать "топором" все значения этого параметра для каждого светофора, включая маркеры, я выбрал первое. Зря... Бывает[/QUOTE]
Прошу прощения заочно у буржуинов-разработчиков Open Rails и очно у уважаемых участников форума. Описанное в указанном сообщении - исключительно мой косяк и рукожопость. Я почти год до карантина вообще его не трогал. Оказалось, что тогда я не переставил местами тестовые файлы скриптов со стабильными. Так что, "грязь" была в скрипте выходного и т.д.
[B]Логика работает как работала[/B]!
Ещё раз "посыпаю голову песком", как говорил товарищ Дж. Лондон

КЕ 19.04.2020 08:33

То есть сим при подсчете светофоров твои маневровые пропускает, но работают они по обычному скрипту?

[size="1"][color="Silver"]Добавлено через 20 минут[/color][/size]
Нигде не встречал - когда в конфиге указывается число SNCA - учитываем значность сигнализации (3-значная, 4-значная), или это неважно?

vicente 19.04.2020 15:38

[QUOTE=КЕ;592520]То есть сим при подсчете светофоров твои маневровые пропускает, но работают они по обычному скрипту?[/QUOTE]
Именно. Можно, в принципе, сделать отдельный предвходной с большим SNCA, но его точно нужно расчитывать. Потому что "базовая" или "маленькая" станция - это входной, один маневровый перед стрелками и дальше - выходной. Но, у меня есть станции, где между входным и выходным или маршрутным - 4 маневровых. Здесь так просто не отделаться. Для унификации -1 -- самое то.
Есть разные способы. Один из разработчиков на буржуйском форуме писал, что у него все сигналы АБ с -1. То есть, он с выходого "энэйблит" сразу входной следующей станции независимо от количества блок-участков. Мне такой способ неприемлем, ИМХО, для трёхзначки достаточно 3, для 4-х - 4. И то - "с запасом" - из-за этого самого моего первого проходного с 2, когда он !enabled для маневрового на выходном.

[QUOTE=КЕ;592520]Нигде не встречал - когда в конфиге указывается число SNCA - учитываем значность сигнализации (3-значная, 4-значная), или это неважно?[/QUOTE]
В принципе, достаточно и на один меньше, но и так можно. Получается с небольшим запасом - то что надо.
Действительно: скажем - 3-х-значная. Сервис движется, его светофор зелёный, за ним нам нужно 2 сигнала. Первый по ходу будет зелёный, за ним - жёлтый, за ним уже !enabled.


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

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