![]() |
[QUOTE=КЕ;593009]
Как он работает?[/QUOTE] Если блок свободен: На следующий 0 даёт 1; Остальные аспекты дублирует. Если блок занят (JN_OBSTRUCTED) - 0; Если блок занят (OCCURRED): Выходной открыт любым показанием - 0; Выходной закрыт - 2; Вроде, всё назвал. С телефона сейчас. [QUOTE=КЕ;593009]Это если на выходном STOP?[/QUOTE] Да. Нужно различать между сервисом, следующим с перегона на станцию по 1 и тем, что выезжает маневровым порядком и возвращается на свободный путь со следующим 0 по тому же 1. |
А этот маркер не мешает локомотивной сигнализации?
|
Нет. Он же дублирует выходной. На 2D кабинах я "подправил" себе АЛСН под Open Rails - на 0 у меня КЖ, на 1 - тоже. Остальные аспекты дублируются, так что, всё оk. Даже какую-то трёхмерную кабину так переделал "методом тыка"... или две. Не помню уже. ЭРка, вроде, какая-то и ЧС4т от Spiritа. Давно не гоняю уже. Тупо любуюсь сценарием, лично не участвуя в нём.
:D |
О, не видел такие кабины... Рулил только в трехмерной для 2ТЭ10М.
Где их скачать? |
Я не помню уже. Давно это было. Но, руками точно ковырялся. Возможно, прикручивал РТС-овские кабины. Не помню, честно. Сейчас не до кабин.
|
РТС-ную можно, да только ничего там работать не будет, поедем по монитору пути. ))
|
[QUOTE=КЕ;593009]Как он работает?[/QUOTE]
[B]Логика маневрового[/B]: Если блок не свободен, - аспект 0; В остальных случаях при свободном блоке - дублирование аспекта маркера РЦ. Также учитываются линки. Я выше выкладывал его полный скрипт. [B]Входной сигнал[/B]: Если блок не свободен, а также если блок свободен, но следующий (маневровый) - 0 или 2 - аспект 0; В остальных случаях - логика исходит из следующего сигнала. Если маневровый 1, входной будет 3 или 4 исходя из линка, далее при аспектах выше 2 маневровый дублирует выходной, так что там - обычная конвенциональная логика. [size="1"][color="Silver"]Добавлено через 1 час 8 минут[/color][/size] Такая логика маневрового позволяет ставить их несколько один за другим. Также у меня есть маневровые с логикой как в маркере РЦ как самостоятельного сигнала - вначале именно такие стояли на маршруте, а маркеров не было, пока, как я уже говорил, разработчик сигнализации Open Rails не "ослепил" сигналы, ограждающие точки. Маршрут огромный, так что, где-то они у меня ещё валяются на каких-то станциях. Там ставил оба типа маневровых. Последним был тот,,который с логикой маркера, остальные - те, что я описал. Также есть станции "классические" - входной и выходной. Там другие светофоры, почти не отличающиеся от оригинала от Timas. [B]SNCA[/B] маневрового и РЦ в [B]Open Rails[/B] - "-1". Это позволяет не завышать параметр у остальных светофоров. В [B]MSTS[/B] эта логика тоже работает. Но, там, как известно, [B]SNCA[/B] берется самый высокий в конфигурации. У меня в [B]MSTS[/B]-овском варианте стоит "7", но это зависит от маршрута. В смысле, сколько маневровых на больших станциях стоят один за другим, а также - от устройства станций с маневровыми и маршрутными светофорами. |
[quote]пока, как я уже говорил, разработчик сигнализации Open Rails не "ослепил" сигналы, ограждающие точки[/quote]
Это когда сигнал в STOP - он не читает, что за ним дальше? |
Не когда STOP, a когда он !enabled. Не определяет route_set (). И состояние блока - возвращает всегда BLOCK_JN_OBSTRUCTED. Насчет сигналов - надо потестить. Я не использую это
[size="1"][color="Silver"]Добавлено через 11 минут[/color][/size] В смысле, нет такой ситуации, когда мне маневровым [I]!enabled[/I] нужно знать состояние следующего сигнала. [size="1"][color="Silver"]Добавлено через 37 минут[/color][/size] Тем более, в Open Rails, где [I][B] enabled ()[/B][/I] работает отлично от MSTS |
Эх, где бы я ещё так славно, долго, а главное - [B]качественно[/B] потрахался, как не с сигналкой в симуляторе!
Короче, долбился я, долбился с этим маневровым показанием - со временем даже то, что, вроде, работало из функций, начало "глючить". Маневровый перестал "видеть" оппозит и т.п. Думаю, я "нагромоздил" там условий и есть какие-то взаимоисключающие. В общем, переписываю "с нуля" скрипт проходного. :D [size="1"][color="Silver"]Добавлено через 2 минуты[/color][/size] Дал ему [B]if (block_state ==# BLOCK_JN_OBSTRUCTED...[/B] А ниже: [B]if (block_state !=# BLOCK_CLEAR...[/B] И он первое не выполняет |
То есть даже без [B]else[/B] перед [I][B]if (block_state !=# BLOCK_CLEAR...[/B][/I] не проверяет?
|
Да, там сам черт ногу сломит - разбираться почему не сработало. У меня первый проходной (ну, в смысле, вообще все проходные) - довольно ёмкий сигнал. Первым проходным он становится через флаг. Если этот флаг включен и светофор [I]!enabled[/I] - он 1 (на однопутках первый проходной - 2 - не суть - на оба этих аспекта выходные были запрограммированы давать маневровый сигнал (сейчас я изменил условие с новой функцией - я показывал). Ну, и под этим - целый блок с показаниями при аспекте 1, согласно занятости перегона. Плюс учтена возможность давать ЖМ и ЗМ, потому что первый проходной может быть и предвходным одновременно.
Затем идёт блок для обычного движения, когда светофор [I]enabled[/I]. Но само условие [I]enabled[/I] я, в своё время, не вписывал - не нужно было. И весь блок идёт просто под [B]else if (...[/B]. Подозреваю, что этот [B]store_lvar[/B] не в любое место скрипта можно запихнуть. Ну, и условия эти... [B]if (block_state ==# BLOCK_JN_OBSTRUCTED... [/B] стоит в первом блоке, под [I][B]!enabled[/B][/I], a [B] if (block_state !=# BLOCK_CLEAR... [/B] - в блоке под [B]else if (...[/B] Может, в этом проблема, я хз. Так как скрипт всё равно переписывать, копать дальше не вижу смысла [size="1"][color="Silver"]Добавлено через 1 час 4 минуты[/color][/size] Упс... прошу прощения. Там было не [B]else if (...[/B], a просто [B]else (...[/B], a уже внутри, отдельно , было [B]if (...[/B] Короче, многоэтажка, родившаяся в тестах и не приведенная в "товарный вид" потому что... ну, работало и так... :D [size="1"][color="Silver"]Добавлено через 4 минуты[/color][/size] Потихоньку начинаю стороить проходной. Вот "тело": [QUOTE] next_state = next_sig_lr (SIGFN_NORMAL); state = SIGASP_CLEAR_2; direction = this_sig_lvar (1); if (block_state() ==# BLOCK_OCCUPIED) { state = SIGASP_STOP; } else if ((next_state ==# SIGASP_STOP) || (next_state ==# SIGASP_STOP_AND_PROCEED) || (next_state ==# SIGASP_RESTRICTING)) { state = SIGASP_APPROACH_1; } draw_state = def_draw_state (state); if (next_state ==# SIGASP_APPROACH_2) { draw_state = 4; } else if ((next_state ==# SIGASP_APPROACH_3) || (next_state ==# SIGASP_CLEAR_1)) { draw_state = 5; } else if ( direction ==# 1) { draw_state = 6; } if (!enabled && has_number_plate) { if (block_state ==# BLOCK_JN_OBSTRUCTED) { state = SIGASP_RESTRICTING; store_lvar (1,1); } else { store_lvar (1,0); } }[/QUOTE] [B]draw_state = 6[/B] - [B]не горит[/B]. Потом можно будет через функцию "гасить" весь перегон. Скрипт полностью рабочий. Забирай :drinks: [size="1"][color="Silver"]Добавлено через 2 минуты[/color][/size] Пока оставлю его так. Пойду к маневровому, "ловить" этот самый [I][B]direction[/B][/I] :crazy: |
Думаю все-таки точнее потестить с нулевыми стрелками границы станции [S]и обратной головой на входном[/S].
Нет, не буду, это только путаницу создаст в горловине... |
Вот как это работает на тестовом отрезке:
Перед тестами на маршруте (неизвестно когда :cool: )
Первому трафику я насильно перекрыл выходной, чтобы создать ситуацию аналогичную той по которой сервис игрока заехал на свободный путь станции с закрытым выходным. Третий трафик приближается к входному, который закрыт, так как путь приёма занят. На прежней версии в этой ситуации маневровый горел белым. [YOUTUBE="Маневпрвый KRN25"]1uSa7pqN0_w[/YOUTUBE] Табло со стороны перегона показывает когда запоминается переменная, отвечающая за направление: [QUOTE] { [B]state = SIGASP_RESTRICTING[/B]; store_lvar (1,1); } [/QUOTE] [size="1"][color="Silver"]Добавлено через 47 минут[/color][/size] [SPOILER] Костя, ты говорил о 3d кабинах... Нашёл у себя на канале старое видео. Сигнализации тоже касается, я там барабан "ковырял руками" - в конце видео обрати внимание: что показывает АЛСН на красный :p [YOUTUBE="Зd кабина в Open Rails"]QbZjfQ1UmqE[/YOUTUBE] Ха-ха.. сам лок - попробуй найди ещё.. в моём-то бардаке :crazy: [/SPOILER] |
Идеально сработано! ))
[Quote] { state = SIGASP_RESTRICTING; store_lvar (1,1); }[/quote] Есть еще примеры использования этих новых переменных? Смысл чисел в скобках?.. [quote]что показывает АЛСН на красный[/quote] Хорошо показывает!:drinks: Но всё остальное горит жёлтым... |
Текущее время: 01:48. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim