![]() |
Контроль приближения как делается? Это только в ОР?
|
Да, только ОР.
В конфигурации прописываешь между блоком [B][I]SignalAspects[/I][/B] и [B][I]SignalNumClearAhead[/I][/B]: [QUOTE]ApproachControlSettings ( PositionM ( 500 ) SpeedMpH ( 10 ) )[/QUOTE] Теперь в скрипте можно прописать такую зависимость: [QUOTE]if (Approach_Control_Speed(Approach_Control_Req_Position, Approach_Control_Req_Speed))[/QUOTE] |
Точно! Видел это в мануале, только перевод не понял. Теперь ясно.
А рестрикты - проверял для имитации ПАБ, когда на локомотивном всегда белый. В МСТС на RES 0 км/ч трафик останавливается; хотел так сделать для OR, но не вышло. Так что будет белый и красный на АЛСН. А по 3 жёлтым - да, так и надо сделать. [SIZE="1"]В РТС трафик на 0 км/ч RES останавливается.[/SIZE] |
[QUOTE=КЕ;538688]
А рестрикты - проверял для имитации ПАБ, когда на локомотивном всегда белый. В МСТС на RES 0 км/ч трафик останавливается; хотел так сделать для OR, но не вышло. Так что будет белый и красный на АЛСН.[/QUOTE] Я не смотрю твои скрипты, но, ты, вроде, когда-то собирался их попарно ставить, "прикрывая" 0 маркерами для АЛСН... Да, и в МSTS RES нужен для ограничения скорости по сигналам... Передумал? Я на ПАБ для МSTS когда-то начинал делать светофоры с аспектами SAP и RES, а показания головой DISTANCE. [QUOTE=КЕ;538688]А по 3 жёлтым - да, так и надо сделать. [/QUOTE] В МSTS тоже должно работать, только без гашения синего на RES. |
[quote]...ставить, "прикрывая" 0 маркерами для АЛСН...[/quote]
Так было в каком-то раннем варианте моей сигнализации; потом отказался, потому что "пошли" РТС и OR. Сейчас для ПАБ принцип почти тот же, только всё прописано в светофоре, без доп. маркеров. [quote]...В МSTS тоже должно работать, только без гашения синего на RES....[/quote] Да, работает, соответственно там на !enabled - STOP, на enabled - S.A.P. -------- А вообще функция определения расстояния - интересная вещь! Надо её попробовать с пригласительным... |
[QUOTE=КЕ;538710]
А вообще функция определения расстояния - интересная вещь! Надо её попробовать с пригласительным...[/QUOTE] Я думал об этом, но отказался. То есть, зажигать пригласительное показание, может, только так и нужно, чисто "для реалистичности", но как одно из условий не пошло у меня. Хотя, вот, сейчас подумал -- есть одна идея. А именно зажигать пригласительный, проверяя по [I][B]dist_multi_sig_xx()[/B][/I]. На моей сигнализации это сработает. У меня большинство входных и проходных светофоров в нормальном положении RES. Маневровые на выходной RES сами дают RES и это блокирует входной (В принципе, то, что я тебе описал с маршрутным - с небольшими оговорками - и есть скрипт моего маневрового, я показывал его на "Заборе"). Но, есть небольшая проблема. Я не могу принять сервис с перегона без точки ожидания, если продолжение его маршрута с пути станции - маневровым порядком. И часто забываю об этой фишке, прокладывая маршрут. Как следствие - сервис "застряёт" на входном. Пока это дело "отловишь" на 4-х направлениях и почти 500 км маршрута, пока переделаешь... Так вот, думаю, может, в таких ситуациях давать пригласительный на входном?... Надо потестить будет :crazy: |
Я c пригласительным попробовал "слегка", вроде получается; но надо, конечно, как следует "осилить и затестить насмерть" :)
И, по-моему, лучше для входного делать Ж или 2Ж, если след. аспект - RES или меньше. |
Костя, у меня немного другая ситуация. Входной работает согласно скрипту первого за ним маневрового. А маневровые по цепочке "через" маркер РЦ (есть и такой:D) ловят аспекты выходного. А как ты хочешь сделать пригласительный? То есть, какие условия должны выполняться, чтобы по пригласительному принимался поезд? Я имею в виду поездную ситуацию, а не скрипт.
|
Для игрока - если на входном 0 или 1, и путь за ним свободен. Не уверен, так ли это нужно; просто вспомнился "вечный красный" в сценариях МСТС.
|
Не думаю.
"0" не просто так на сигнале будет, это блокировка, "1" вообще прописывать нельзя, естественно. Есть в ORTS тоже ситуации, когда блокировки срабатывают с двух сторон и "вечный красный". Но, это надо решать расстановкой сигналов. То есть, на простой "вилке", "огороженной" сигналами этого никогда не будет, но, ведь, станции у нас не всегда простые... Думаю, пригласительный буду зажигать проверяя впередистоящие сигналы и, если на всех будут RES, тогда давать пригласительный |
Так - да. Или для особенных манёвров.
Как это писать в скрипте с dist_multi_sig_lr? Если у тебя все сигналы - NORMAL? [QUOTE=vicente;538852]...маркер РЦ (есть и такой:D)...[/QUOTE] - это кто такой???:) |
На выходных светофорах я сделал обратно-смотрящую голову NORMAL, чтобы сделать дополнительный блок. Пока состав на стрелках, светофор перед узлом (у меня - маневровый) заблокирован. Иначе есть проблемы с переводом стрелок из-за особенностей скриптов маневровых.
[size="1"][color="Silver"]Добавлено через 5 минут[/color][/size] [QUOTE=КЕ;538861]Как это писать в скрипте с dist_multi_sig_lr? Если у тебя все сигналы - NORMAL?[/QUOTE] А почему нет? Эта функция должна работать со всеми видами сигналов. С забора перенесу сюда: [QUOTE]Проверяет сигналы первого типа на пути до сигнала второго типа/враждебной стрелки/окончания пути Ну, и ловит соответствующее значение подобно другим x_sig() функциям...[/QUOTE] У него в заявлении два Fn_type. Первый ставим NORMAL, второй, скажем, DISTANCE и всё! Он читает NORMAL-ы |
А ДИСТАНС придется отдельно ставить для этого?
Как до вржд. стрелки считать? И что со стрелками не так? |
Как писать?
Не знаю пока... Думаю пока как сделать условие, чтобы на пути функции были [B]только[/B] аспекты 2 |
Вот если бы можно было передавать аспекты на впередистоящие светофоры...
С bak_sig_xx здесь никак не получится?.. |
[QUOTE=КЕ;538879]А ДИСТАНС придется отдельно ставить для этого?[/QUOTE]
Вот и я не хочу их ставить. А только пользоваться второй частью определения "враждебной стрелки/окончания пути ". Ещё неизвестно как оно в ОР работать будет, но есть шанс. Дело в том, что светофор !enabled в ОР не "читает" положение стрелок перед собой. Я проверял функцию block_state() недавно. Светофор, через который не проходит путь выдает BLOCK_JN_OBSTRUCTED независимо от положения стрелки. Возможно и dist_multi_sig_xx() будет доходить до этого момента и прекращать проверку... |
Надо завтра проверить. Только как писать? Первый тип укажем НОРМАЛ, а на месте второго что??
|
[QUOTE=КЕ;538879]И что со стрелками не так?[/QUOTE]
Это особенность скрипта моих маневровых светофоров. Из за того, что перед узлом маневровый, именно он блокирует. А у меня на занятый путь он RES, тогда поезд следующий "по удалению" резервирует стрелку для себя не по своему маршруту, а по её последнему положению. Поэтому мне надо держать его "0" пока состав не освобождает стрелки. [QUOTE=КЕ;538881]Вот если бы можно было передавать аспекты на впередистоящие светофоры... С bak_sig_xx здесь никак не получится?..[/QUOTE] Эта функция работает только на светофоре, который перед тобой :( |
Я вот сейчас хотел проверить, но, оказывается, это не то, что думал. Как этот bak_sig_xx на самом деле работает?
|
Если имеется ввиду опция opp_sig_xx, то она работает так же как next_sig_xx, только в обратную сторону. Там есть ряд ограничений на тип головы, сейчас точно не помню. Вроде REPEATER не ловил, и можно было использовать не во всех головах. Это актуально для МСТС
|
Нет, именно это, [B]extern float [I]bak_sig_lr;[/I][/B], например.
|
[QUOTE=КЕ;538887] Как этот bak_sig_xx на самом деле работает?[/QUOTE]
Лёша, В МСТС оно работает отлично от ОР Ой... не то. Что это за bak?Я, как Лёша, перепутал с оппозитом [size="1"][color="Silver"]Добавлено через 3 минуты[/color][/size] Первый раз слышу о такой функции. Откуда это? |
Брал здесь, но не до конца понятно:
[SPOILER][QUOTE=Zaborin.ru]next читает список аспектов следующей сигнальной точки, this проверка своего светофора, например – передача кода с одной головки DISTANCE на другую NORMAL. opp - маркер у считываемой точки - в сторону той, которая читает. Т.е. если упростить до ПАБ, то так можно получить аспект входного светофора, когда точка (светофор), где запущена функция, стоит к нему "лицом", т.е. они смотрят друг на друга. bak - смотрит и передаёт в обратную сторону; пример - кодирование АЛСН по неправильному пути. Bak-субобъекты Bak-головой на спине выходного можно послать код маневров на все маршрутные и входной. bak «вешает» любую головку на «спину», необязательно какую-то особенную, можно один и тот же маркер сделать на обе стороны. Обрабатываются как обычные головы, функции относительно "лица" точки; как от неё смотришь, так и прописываешь. Передает, (как при этом принимает - не тестил) в обратную строну, соответственно, как у любой нормальной головы любого стандартного типа - у неё должно быть "неактивное" состояние, в котором она не светит и передает неуправляющий на фоне других аспект. ИМХО тут нужно смотреть скриптом в ту сторону, куда смотрит головка, хотя надо затестить – может быть, только "передатчик" разворачивается. [/quote][/SPOILER] |
Нет такого. Сейчас гляну там...
[size="1"][color="Silver"]Добавлено через 13 минут[/color][/size] Костя, нет такой функции |
Опечатка, наверное, была...
Значит, передать аспекты "вперёд" нельзя (оппозиты ведь не работают с ними)? |
А зачем?
|
Думал так передавать маневровый режим.
|
Надо подумать )))
|
Вперед передать надо, но тут "зацепиться" не за что. Оппозиты только занятость пути "понимают". Я так хочу со спины выходного попробовать для маневровых Б-С.
Или dist_multi_sig_xx применить... до какого сигнала проверять? Или до конца пути - тогда как скрипт должен выглядеть? |
Олег, а ты в каком-нибудь сценарии маневровый "по удалению" за поездным сервисом с точкой ожидания делаешь?
|
Да.
На всех маневровых, если есть точка разворота за ними ( с пути на путь) ставлю точки ожидания "для реалистичности". Двухсекционникам от минуты до 2-х, маневровым локомотивам или составам 10-30 сек, чтобы сразу не возвращались. Думаю, я понял: к чему ты клонишь. Именно поэтому сейчас снова пытаюсь "пробить" маневровый режим (не получается пока - переменные не хотят запоминать себя). У меня прописано маневровому на занятый путь не открываться, если следующий светофор открыт. То есть, за поездом маневровый сервис не поедет, не сцепится с ним и т.п. Но, эта связка ненадёжна. Я перегоняю локомотивы по главным путям станций, на них останавливаются только пассажирские и пригородные с открытыми выходными. Но, хочется универсальности, потому что, если выходной пассажирскому будет заблокирован, маневровый откроется. |
[quote]переменные не хотят запоминать себя[/quote] Да, всё "сбрасывается", по крайней мере у меня, хотя в МСТС работало...
[quote]маневровому на занятый путь не открываться, если следующий светофор открыт. То есть, за поездом маневровый сервис не поедет, не сцепится с ним и т.п. Но, эта связка ненадёжна. Я перегоняю локомотивы по главным путям станций, на них останавливаются только пассажирские и пригородные с открытыми выходными. Но, хочется универсальности, потому что, если выходной пассажирскому будет заблокирован, маневровый откроется.[/quote] Была мысль ставить специальные маркеры границы станции - если путь сервиса за них не заходит, то по !enabled выдают нужный управляющий аспект. Но то же самое можно считывать с уже имеющихся светофоров, только надо думать, как... Вот твой случай как раз и показал ненадёжность всего этого. |
Да, это недостаток. Но, что сделано - то сделано. У меня маршрут почти 500 км, на всех станциях они стоят и работают. И сценарии только я делаю, так что эта ситуация принимается мной во внимание. Сигнализацию с того, что есть на сегодняшний день, я могу только улучшать. Не получается - будет работать так дальше.
Скрипт как-то странно работает в ОР. Придётся все функции с самого начала проверять на тестовом |
Маневровый Б-С:
[SPOILER]if ( enabled ) { if ( ( opp_sig_lr (SIGFN_NORMAL) == 1 ) && ( next_N <= 2 ) && ( opp_D == 1 ) ) { state = 2; draw_state = 1; } /// из горловины на станц. путь } else { state = 0; draw_state = 0; }[/SPOILER] сам DISTANCE, opp_D == 1 - управляющий код в РЦ от оппозитно стоящего около входного светофора маневрового маркера, направленного на середину станции: [SPOILER]{ state = 0; } if ( ( block_state() == BLOCK_CLEAR ) && ( next_sig_lr (SIGFN_NORMAL) <=1 ) && ( opp_sig_lr (SIGFN_NORMAL) <=1 ) ) { state = 1; }[/SPOILER] Буду проверять... |
Ух, ты!!! Поменял на тестовом проходные на DISTANCE --- интересная штука получается. Ну-ка, какие твои выводы?
[size="1"][color="Silver"]Добавлено через 7 минут[/color][/size] Костя, opp_sig_lr работает [B]только[/B] на попутном светофоре. То есть, это [QUOTE]{ state = 0; } if ( ( block_state() == BLOCK_CLEAR ) && ( next_sig_lr (SIGFN_NORMAL) <=1 ) && ( [COLOR="Blue"]opp_sig_lr (SIGFN_NORMAL)[/COLOR] <=1 ) ) { state = 1; } [/QUOTE] работать не будет |
Как выводы??? Проходные DISTANCE? И что при этом происходит???
|
Зависимость DISTANCE от enabled()
[size="1"][color="Silver"]Добавлено через 5 минут[/color][/size] DISTANCE работают как enabled() пока следующий NORMAL enabled(). Но, у меня тестовый полигон очень короткий. Я как-то тестил DISTANCE - там ещё расстояния имеют значение, если пользоваться этими функциями. Поэтому, я для передачи информации ими не пользуюсь [size="1"][color="Silver"]Добавлено через 8 минут[/color][/size] Мысль такая. Первый проходной после станции в противоположном направлении от маневрового (нормальное положение RESTRICTING), в случае, если едет поезд в сторону станции будет !enabled, блок "за ним" по ходу - занят. Прописать в нём особый аспект на этот случай [QUOTE] if (!enabled && (block_state() !=# BLOCK_CLEAR)){state = 1; }[/QUOTE] Маневровый должен по if ( opp_sig_lr (SIGFN_NORMAL) == 1 ) "ловить" поездной режим и держать его до тех пор, пока сам не станет !enabled Если условия в рамке не имело место - режим маневровый |
А у меня так отдельный маневровый "датчик" работает.
А не повлияет этот проходной, если манёвры в сторону перегона? Хотя вроде не должен. ------------------------------------------------------------------ Дистансы работают. Я заехал за входной, и они все дружно загорелись жёлтым - для трафика. "Своего" БУ не имеют. [quote]DISTANCE работают как enabled() пока следующий NORMAL enabled()[/quote] Спасибо, про это не знал! |
[QUOTE=КЕ;539237]
А не повлияет этот проходной, если манёвры в сторону перегона? [/QUOTE] Нет. Выходной настраиваем давать на следующий 1 и 2 маневровый белый 2 и всё в ажуре. Проблема в другом. Как сохранить поездной режим? [size="1"][color="Silver"]Добавлено через 3 минуты[/color][/size] Лови скрипт моего маневрового :rolleyes: (Хотя, я давал его уже на Заборе) [SPOILER] extern float block_state (); extern float route_set (); extern float next_sig_lr (); extern float this_sig_lr (); extern float next_sig_mr (); extern float def_draw_state (); extern float state; extern float draw_state; extern float enabled; extern float sig_feature (); float next_state; next_state = next_sig_lr (SIGFN_NORMAL); if (route_set ()) { state = SIGASP_STOP; if (enabled && (block_state() ==# BLOCK_CLEAR) && (next_state ==# SIGASP_STOP)) { state = SIGASP_STOP_AND_PROCEED; } else if (enabled && (block_state() !=# BLOCK_CLEAR) && (next_state ==# SIGASP_STOP)) { state = SIGASP_RESTRICTING; } else if (enabled && (block_state() !=# BLOCK_CLEAR) && (next_state ==# SIGASP_STOP_AND_PROCEED)) { state = SIGASP_RESTRICTING; } else if (enabled && (block_state() !=# BLOCK_CLEAR) && (next_state ># SIGASP_RESTRICTING)) { state = SIGASP_STOP; } else if (enabled && (next_state ==# SIGASP_RESTRICTING)) { state = SIGASP_RESTRICTING; } else if (enabled && (block_state() ==# BLOCK_CLEAR) && (next_state ># SIGASP_RESTRICTING)) { state = next_state; } draw_state = def_draw_state (state); } else { state = SIGASP_STOP; draw_state = 0; if (this_sig_lr (SIGFN_NORMAL) ># SIGASP_STOP) { draw_state = 2; } } [/SPOILER] [size="1"][color="Silver"]Добавлено через 3 минуты[/color][/size] Это старый вариант без обратно-смотрящего маркера на выходных. Писал уже, что я их сейчас меняю на вариант с маркером из-за того, что стрелка не переводится, если за сервисом по удалению идёт ещё один |
Спасибо! Посмотрю ещё раз, подумаю завтра - может, какие идеи появятся (а то спать надо...).
[quote]Как сохранить поездной режим?[/quote] Или наоборот, маневровый. Какие-то переменные нужны, чтобы не "сбрасывались". Например, у меня такая попытка была: [SPOILER]///////////////////// УПРАВЛЯЮЩИЙ МАНЕВРОВЫЙ МАРКЕР 1, светофор ///////////////////////////////////////////////////////////////////////////////////// SCRIPT TK_M1-V extern float enabled; extern float block_state (); extern float next_sig_lr (); extern float opp_sig_lr (); extern float state; ///{ state = 0; } if ( ( block_state() == BLOCK_CLEAR ) && ( next_sig_lr (SIGFN_NORMAL) <=1 ) && ( opp_sig_lr (SIGFN_NORMAL) <=1 ) ) { state = 1; }[/SPOILER] { state = 0; } закомментировал. То есть state равно 0, если только всё заново начинается. |
Текущее время: 08:09. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim