Форум 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)

КЕ 30.04.2020 22:12

По Бмиг пригласительному на выходном, или на отдельной головке Бмиг, висящей на "спине" входного противоположного направления. У меня такая есть, но работает только в РТС.

vicente 01.05.2020 02:28

В РТС можно "метить" поезда? Или все поезда при условиях скрипта поедут по Бмиг?


Едем дальше по Open Rails.
В отличие от MSTS, в Open Rails обратно-глядящая голова логически является отдельной сигнальной головой, несмотря на то, что в конфигурации она привязана к шейпу, точно также, как в MSTS. То есть , функцией this_sig_lr(SigFn_Type) невозможно "считывать" аспекты с голов, направленных в противоположную сторону. С другой стороны, она и не "энейблится". То есть enabled будут всегда головы одного направления.

КЕ 01.05.2020 07:31

А в МСТС вроде так же.

Насчет маневрового режима в РТС - надо протестировать во встроенном редакторе, там есть команда"Start shunting" в Track control-е, сегодня проверю, что она меняет (как ни странно, ни разу не пробовал...).

КЕ 01.05.2020 09:48

MSTS и OR как ни тестил - не стоит особо надеяться на DISTANCE при манёврах. По сравнению с NORMAL-головами обновляются реже (даже в прямом направлении), и мои маневровые светофоры Б-С "тупят". Впрочем, об этом APK-LVDZ писал уже давно - а я убедился ещё раз...[img]http://arcanumclub.ru/smiles/smile14.gif[/img]

vicente 01.05.2020 11:00

Хорошо, что на моей сигнализации ничего на DISTANCE не завязано! :russian:

vicente 01.05.2020 14:15

Костя, в ОР есть теперь как передавать данные. Сколько угодно данных. Надеюсь к вечеру закончить с этим чертовым показанием маневрового на свободный путь станции с выходным красным - покажу всё. Единственное что - после перезагрузки из сэйва сигналы не помнят введенные данные. Поэтому надо всегда думать о подстраховке.

КЕ 01.05.2020 16:08

Передавать данные - это [B][I]next_sig_id[/I][/B]?

vicente 01.05.2020 16:43

Записывать данные это [I][B]store_lvar (key, value)[/B][/I]
Извлекать их - [B][I]this_sig_lvar (key)[/I][/B]
Передавать - [B][I]next_sig_lvar (key)[/I][/B], и [B][I]id_sig_lvar (sigid, key) [/I][/B]

[size="1"][color="Silver"]Добавлено через 2 минуты[/color][/size]
[B][I] next_sig_id (SigFn_Type) [/I][/B] функция которая идентифицирует сигнал для дальнейшей работы с ним по идентификатору, который она возвращает

КЕ 01.05.2020 16:57

То есть запоминается что-то? А при реверсе движения сервиса не теряется?

vicente 01.05.2020 20:34

Нет конечно. Работаешь с этим так же как с конвенциональной логикой в MSTS. Задаешь условия, при выполнении которых запоминаешь значения.

КЕ 01.05.2020 23:47

[QUOTE]Насчет маневрового режима в РТС - надо протестировать во встроенном редакторе, там есть команда"Start shunting" в Track control-е, сегодня проверю, что она меняет (как ни странно, ни разу не пробовал...).[/QUOTE]
Проверил, что это такое.
В окне [I]TRACK CONTROL[/I] (открывается через Ctrl+Alt+F7) можно задавать маневровый режим себе или любому сервису трафика, выбирая правым мышом на значке движущегося ПС в выпадающем меню "[I]Start shunting/Cancel shunting[/I]". Себе, кроме этого, можно выбирать "Force shunting" сразу по Ctrl+Alt+F7, не заходя в TRACK CONTROL.
Все светофоры переключаются в аспект RESTRICTING. Даже проходные, они при этом загораются жёлтым.
Но делать это можно только "на ходу", а задать точки переключения на пути сервиса (по типу постановки точек ожидания) нельзя.
А хорошо было бы...

vicente 02.05.2020 04:41

Это не то.

Сигнализация [B]сама[/B] распознаёт: когда сервис движется маневровым порядком, а когда - поездным. Один и тот же сервис может двигаться часть пути одним порядком, а часть - другим. Трафик прибывает на станцию по 2Ж, должна произойти смена локомотива, он отцепляется и уходит по Б на перегон по правильному пути за маневровый, затем возвращается по свободному пути, по выходному Б едет в тупик или на гл. путь, оттуда - в депо. На его место маневровым порядком заходит под поезд сменный лок , опробывание и поезд уходит на тот же путь на перегоне, но уже не по Б, а по поездному. Таких трафиков на маршруте одновременно - несколько десятков. Можно сказать, в любое время где-то на маршруте происходят маневровые передвижения. Как я буду вручную менять режимы?

По Open Rails (и, скорее всего, в MSTS - то же самое) : [B]opp_sig_Xr (SigFn_Type)[/B] а в Open Rails и [B]opp_sig_lvar (sigid, key)[/B] работают только на [I]enabled[/I] светофорах!!! Запоминать информацию могут [B]все[/B] светофоры. А, вот, извлечь её, по крайней мере, с оппозитов могут только те, [I]enabled ()[/I] которых выдаёт TRUE.

[Ругается матом и ложится спать]

КЕ 02.05.2020 08:21

[QUOTE=vicente;592997]...Таких трафиков на маршруте одновременно - несколько десятков. Можно сказать, в любое время где-то на маршруте происходят маневровые передвижения. Как я буду вручную менять режимы?[/QUOTE]
В окне [I]TrackControl[/I]. Диспетчером будешь! :D

vicente 02.05.2020 12:15

Нет, уж, спасибо. Предпочитаю роль "зрителя" :cool:

Что-то, я тупил последние пару дней, пытаясь получить это несчастное маневровое показание через какую-то страшную ...опу - через два оппозита. Типа, маневровый "смотрит" назад, на первый проходной, тот, в свою очередь - на входной. И этот, второй оппозит не срабатывал, естественно, потому что проходной-то - [I][B]!enabled[/B][/I]!
Правильная мысль всегда приходит последней.
Думаю, достаточно будет "ловить" маневровым только первый проходной обратного направления. Логика такая: проходным через функцию [B][I]block_state ()[/I][/B] о работе которой я писал раннее, можно "поймать" направление движения сервиса "к входному" . Потому что, на втором от станции блок-участке в сторону станции сервис может быть только в поездном режиме. В этот момент маневровый уже должен быть [B][I]enabled[/I][/B] . Совокупность этих двух условий будет запоминать на маневровом поездной режим. При поездном режиме маневровый дублирует аспекты маркера РЦ, а тот - выходного, а если тот 0, даёт 1 со скоростью, соответственно пути приема (60, 40, 25 и т.д). Аспекты я решил не менять - оно и так работает прекрасно. Есть, как я писал, пара "штрихов", которые я исправляю. Дело в том, что если путь приёма занят, сегодня у меня на маневровом горит белый на аспекте 2, а входной при таком раскладе запрограммирован давать 0 на следующий 2. В поездном режиме я оставлю маневровый 2, но показание дам - синий. Второй момент - в обоих режимах на свободный путь станции при выходном 0, маневровый даёт 1, и синий, при манёврах я смогу при том же 1, дать ему белое показание.
Reset "механизма":
Проходной "обнуляется" когда он [B][I]!enabled[/I][/B] и блок за ним не занят вообще, а маневровый - когда он [B][I]!enabled[/I][/B] (голова проследовала его).
Через пару часов будет возможность протестировать это. Будет работать - можно будет поиграться с условиями сброса маневрового, чтобы не менялся с белого на синий сразу после проследования головы.
Кроме возвращения с сейва, издержкой такого подхода может быть то, что чертов Open Rails учитывает длину поезда при прокладке маршрутов (мануал симулятора). У меня на тестовой ветке ЧМушки, и он спокойно может пустить лок до входного, когда маневровый лок выезжает со станции и становится на отрезке между входным и маневровым сигналами. Но, тут уже буду думать потом: стоит ли блокировать весь перегон. Ситуация редкая, хотя, если честно, в реале (по крайней мере - у нас, в Израиле, чтобы манёвры отправились на перегон, направление на пульте должно быть "от станции" и никаких встречных не может быть по определению.

КЕ 02.05.2020 12:45

[quote]...Типа, маневровый "смотрит" назад, на первый проходной, тот, в свою очередь - на входной. И этот, второй оппозит не срабатывал, естественно, потому что проходной-то - !enabled![/quote]
Я так тоже пытался делать - бесполезно![img]http://arcanumclub.ru/smiles/smile14.gif[/img]
[quote]...маркера РЦ...[/quote]
Как он работает?
[quote]В поездном режиме я оставлю маневровый 2, но показание дам - синий.[/quote]
Это если на выходном STOP?

vicente 02.05.2020 13:51

[QUOTE=КЕ;593009]
Как он работает?[/QUOTE]
Если блок свободен:
На следующий 0 даёт 1;
Остальные аспекты дублирует.
Если блок занят (JN_OBSTRUCTED) - 0;
Если блок занят (OCCURRED):
Выходной открыт любым показанием - 0;
Выходной закрыт - 2;

Вроде, всё назвал. С телефона сейчас.

[QUOTE=КЕ;593009]Это если на выходном STOP?[/QUOTE]

Да. Нужно различать между сервисом, следующим с перегона на станцию по 1 и тем, что выезжает маневровым порядком и возвращается на свободный путь со следующим 0 по тому же 1.

КЕ 02.05.2020 14:00

А этот маркер не мешает локомотивной сигнализации?

vicente 02.05.2020 14:14

Нет. Он же дублирует выходной. На 2D кабинах я "подправил" себе АЛСН под Open Rails - на 0 у меня КЖ, на 1 - тоже. Остальные аспекты дублируются, так что, всё оk. Даже какую-то трёхмерную кабину так переделал "методом тыка"... или две. Не помню уже. ЭРка, вроде, какая-то и ЧС4т от Spiritа. Давно не гоняю уже. Тупо любуюсь сценарием, лично не участвуя в нём.
:D

КЕ 02.05.2020 14:56

О, не видел такие кабины... Рулил только в трехмерной для 2ТЭ10М.
Где их скачать?

vicente 02.05.2020 15:29

Я не помню уже. Давно это было. Но, руками точно ковырялся. Возможно, прикручивал РТС-овские кабины. Не помню, честно. Сейчас не до кабин.

КЕ 02.05.2020 18:41

РТС-ную можно, да только ничего там работать не будет, поедем по монитору пути. ))

vicente 02.05.2020 20:00

[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", но это зависит от маршрута. В смысле, сколько маневровых на больших станциях стоят один за другим, а также - от устройства станций с маневровыми и маршрутными светофорами.

КЕ 02.05.2020 20:26

[quote]пока, как я уже говорил, разработчик сигнализации Open Rails не "ослепил" сигналы, ограждающие точки[/quote]
Это когда сигнал в STOP - он не читает, что за ним дальше?

vicente 02.05.2020 21:49

Не когда 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

vicente 03.05.2020 15:47

Эх, где бы я ещё так славно, долго, а главное - [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]
И он первое не выполняет

КЕ 03.05.2020 17:50

То есть даже без [B]else[/B] перед [I][B]if (block_state !=# BLOCK_CLEAR...[/B][/I] не проверяет?

vicente 03.05.2020 23:57

Да, там сам черт ногу сломит - разбираться почему не сработало. У меня первый проходной (ну, в смысле, вообще все проходные) - довольно ёмкий сигнал. Первым проходным он становится через флаг. Если этот флаг включен и светофор [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:

КЕ 04.05.2020 10:52

Думаю все-таки точнее потестить с нулевыми стрелками границы станции [S]и обратной головой на входном[/S].
Нет, не буду, это только путаницу создаст в горловине...

vicente 04.05.2020 15:22

Вот как это работает на тестовом отрезке:
 
Перед тестами на маршруте (неизвестно когда :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]

КЕ 04.05.2020 16:36

Идеально сработано! ))
[Quote]
{
state = SIGASP_RESTRICTING;
store_lvar (1,1);
}[/quote]
Есть еще примеры использования этих новых переменных? Смысл чисел в скобках?..
[quote]что показывает АЛСН на красный[/quote]
Хорошо показывает!:drinks:
Но всё остальное горит жёлтым...

vicente 04.05.2020 17:47

Это первый раз, когда я использовал их. Потому и много времени взяло. Пришлось посовокупляться - я не мог быть уверен: когда данные передаются, когда по каким-то причинам нет, а когда я "лажаю" с условиями в программе. Самое трудное было сбросить условия , когда лок проехал сигнал. Я там долго "крутил". Три головы, одна сбрасывает, две остальные тут же ставят эти переменные опять. Я ещё думал оставить белый маневровый гореть пока поезд не "коснется" маркера РЦ... мечтатель, блин.


Первая циферь в скобках - "разряд", вторая - само значение. Можно запоминать их сколько угодно! Под каждым "разрядом" - своя переменная. В смысле, под (1,Х) - одни переменные, (2,Х) - другие и т.д.

[size="1"][color="Silver"]Добавлено через 2 минуты[/color][/size]
[QUOTE=КЕ;593065]Идеально сработано! ))
[/QUOTE]
Надо ещё "доработать напильником", чтобы белый не зажигался. Поезд в этот момент за 2 блок-участка и не видит этого, конечно. Но, остальные - видят.

[size="1"][color="Silver"]Добавлено через 1 минуту[/color][/size]
[QUOTE=КЕ;593065]
Но всё остальное горит жёлтым...[/QUOTE]
Неее...
Там все аспекты работают. Просто на видео он на 2Ж и Ж едет только.

КЕ 04.05.2020 17:51

Олег, из твоего проходного:
[B]direction = this_sig_lvar (1);[/B]
- почему здесь одна цифра?
И сами числа - как в аспектах, от 0 до 7, или неважно?
[SPOILER][quote]...оставить белый маневровый гореть...[/quote]
Это только с маневровыми К-Б:
[B]if (enabled && block_state() != BLOCK_JN_OBSTRUCTED ) state = 2; // белый маневровый
else state = 0;[/B]
Белый сменяется на красный, когда сервис уходит за узел.[/SPOILER]

vicente 04.05.2020 19:20

Когда "обращаешься к хранилищу" - вносишь только разряд - одна цифра. А, функция уже достаёт из этого "разряда" переменную - вторую цифру

[size="1"][color="Silver"]Добавлено через 1 час 11 минут[/color][/size]
[QUOTE=КЕ;593069]
Это только с маневровыми К-Б:
[B]if (enabled && block_state() != BLOCK_JN_OBSTRUCTED ) state = 2; // белый маневровый
else state = 0;[/B]
Белый сменяется на красный, когда сервис уходит за узел.[/QUOTE]
Ты в Open Rails это давно пробовал?
ИМХО, работать [B]не будет[/B]. В смысле, сигнал перекроется сразу, если он NORMAL

КЕ 04.05.2020 19:25

Да, это давно было. Я такими маневриками давно не занимался...
Хрена се... перекрывается и гаснет вообще на оба глаза, гад...
А, все, исправил. В конфиге вместо STOP - S.A.P. был.

vicente 04.05.2020 20:36

По определению, в Open Rails светофор позади сервиса - [I]!enabled[/I] , и если он ограждает узлы, функция [I]block_state[/I] не проверяется. У такой сигнальной головы она [B]всегда[/B] будет возвращать [B]BLOCK_JN_OBSTRUCTED[/B]

vicente 04.05.2020 23:57

Вот упрощённый скрипт маневрового.
[SPOILER]
next_state = next_sig_lr (SIGFN_NORMAL);
interval = opp_sig_id (SIGFN_NORMAL);
main = id_sig_lvar(interval, 1);
shunt = this_sig_lvar (1);

if (!enabled || block_state() !=# BLOCK_CLEAR || !route_set () )
{
state = 0;
if (!enabled && (this_sig_lr (SIGFN_NORMAL) <# 1))
{
store_lvar (1,0);
}
}
else
{
state = next_state;
if (main ==#1)
{
store_lvar (1,1);
}
}
draw_state = def_draw_state (state);
if ((state ==# 1) && (shunt ==# 0))
{
draw_state = 1;
}
else if ((state ==# 2) && (shunt ==# 1))
{
draw_state = 0;
}
else if ((state ==# 0) && (this_sig_lr (SIGFN_NORMAL) ># 0))
{
draw_state = 2;
}
[/SPOILER]
Это одна линкованная сигнальная голова. На все линки - тот же скрипт. Один-в-один.

Надеюсь, это поможет сообществу. Для меня это не окончательный вариант. Я уже говорил о "напильнике". Кроме того, эта разработка для однопутного перегона, оборудованного двусторонней автоблокировкой. На многопутных будет по-другому. Кроме того, со временем в планах - маршрутные и сложные по строению станции... это вообще будет жесть.
(Если честно, я даже боюсь взглянуть на скрипт маршрутного :D). Но, сначала - [I][B]Timetable Mode[/B][/I].
Посему, на том откланиваюсь... пока... и возвращаюсь к сценариям.
До новых встреч! :drinks:

КЕ 05.05.2020 00:20

Но для чего маневровому линки? Прямой или боковой путь - показание одинаковое. Я что-то пропустил??

vicente 05.05.2020 00:41

Показания одинаковые. Скорости - разные :)

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

vicente 07.05.2020 04:17

Прошу прощения. В скрипт [URL="http://www.trainsim.ru/forum/showpost.php?p=593055&postcount=507"]проходного[/URL] закралась ошибка.
Исправленный вариант под спойлером.
[SPOILER]
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 ([B](block_state() ==# BLOCK_CLEAR) &&[/B] (next_state ==# SIGASP_APPROACH_2) )
{
draw_state = 4;
}
else if (([B](block_state() ==# BLOCK_CLEAR) &&[/B] (next_state ==# SIGASP_APPROACH_3))
|| ([B](block_state() ==# BLOCK_CLEAR) &&[/B] (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)
{
store_lvar (1,1);
}
else
{
store_lvar (1,0);
}
}
[/SPOILER]
Поправка выделена. Без неё Жм и Зм будут открываться на занятый блок-участок.
Ещё раз, прошу прощения.

Как бы изловчиться и сделать вот так:
[YOUTUBE="Двусторонняя АБ"]vQlHcR7TFHs[/YOUTUBE]
:cool:
?

[size="1"][color="Silver"]Добавлено через 45 минут[/color][/size]
[YOUTUBE="Ещё дубль :o"]xkAD23p6xmY[/YOUTUBE]

КЕ 07.05.2020 09:28

А про Жм и Зм я тоже тогда подумал, но потом забыл спросить...
Первое видео - это МСТС?
Мне бы тоже хотелось, чтобы попутные проходные сзади горели...


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

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