![]() |
[B]next_sig_id[/B] - это что-то новое! Что за функция?
[B]if (!train_requires_next_signal(sigid,1))[/B] - что за условие? |
Это новые функции, которые были внесены в Open Rails. Нехватка аспектов ощущается не только у нас ;)
[B]sigid[/B] определяет объект, с которого нужно считать дополнительную информацию. Строкой [QUOTE]sigid = next_sig_id (SIGFN_NORMAL);[/QUOTE] я "пометил" следующий светофор типа [B]NORMAL[/B]. Это не единственный вариант. Можно выбирать не только этот тип, но и другие. Можно "метить" подобъекты и снимать с них информацию. Есть также функция [B][I]next_[B]n[/B]sig_id(SigFn_TYPE,[B]n[/B])[/I][/B] на подобии функции [B][I]next_[B]n[/B]sig_lr (SigFn_TYPE,[B]n[/B])[/I][/B], о которой я уже рассказывал. Работает точно также - на светофор, находящийся на удалении [B]n[/B]. [B]train_requires_next_signal(sigid,position)[/B] - функция, проверяющая проходит ли [I]Path[/I] через сигнал, идентифицированный параметром [B]sigid[/B] |
То есть эту "метку" ставить на первый проходной в нашем случае?
if (!train_requires_next_signal(sigid,1)) - число "1" означает проверку первого от нас светофора? |
На сам светофор не надо ничего ставить. Я его функцией "пометил" с выходного
|
А, понял - выбираем нужный светофор, а потом по ходу дела проверяем, проходит путь сервиса через него или нет. Здорово!
Просто, как все гениальное!!! ))) В принципе, я сегодня нулевыми стрелками делал то же самое! ))) |
Вот этого, как раз, я пока не соображу: можно или не можно...
"Долблюсь" как раз с этим. Поэтому и про оппозиты спрашивал. Мне надо передать от выходного (того самого, что на скрипте [B]KRN25_YR_YW [/B]) противостоящему маневровому информацию о том, что выходной открылся белым. Маневровый должен обработать эту информацию, передав её всем своим "головам" и запомнить. И после того, как манёвры выедут с пути станции, ограждённого этим выходным, "знать", что нужно открываться маневровым показанием. Более того, мне нужно, чтобы, в [B]Timetable Mode[/B], в случае команд [B]$forms, $triggers[/B] и так далее, этот маневровый "помнил" в каком режиме он находится. Потому что [B]$forms, $triggers[/B] "и так далее" - это пропадание сервиса и возникновение на его месте другого. В смысле, если я проложу путь на станцию, и на ней сделаю [B]$forms / $triggers[/B] - выходной с пути , на котором будет выполяться команда останется закрытым до возникновения нового сервиса. А, закрытым он будет, потому что [B]!enabled[/B]. |
Не знаю, как в OR, но в МСТС - как я ни бился, запомнить состояние не получалось... При каких-то изменениях в одной сигнальной точке остальные тоже отрабатывают свой скрипт, обновляются, и маневровый режим терялся в момент прохода сервиса через какую-либо сигнальную точку, даже если ее аспект не менялся...
Нет никакой внешней переменной, об'единяющей все светофоры, которую можно было бы устанавливать и сбрасывать командой из скрипта (что-то отдаленно похожее есть в RTS, но там [B]signal_mode[/B] устанавливается и сбрасывается игроком вручную (сочетанием клавиш по ходу игры), а скрипты ее только считывают). А мы можем только менять аспекты сигнальных голов, и больше ничего... Ну вот только если только попробовать у противостоящего маневрика это: if (opp_sig_lr (SIGFN_NORMAL) ==2) { state =2; } и больше ничего! )) При загрузке сценария исходно все аспекты по нулям, а потом он перейдет в RESTRICTING, да так и останется (?)... |
[QUOTE=КЕ;592745]То есть эту "метку" ставить на первый проходной в нашем случае?
if (!train_requires_next_signal(sigid,1)) - число "1" означает проверку первого от нас светофора?[/QUOTE] "[B]position[/B]" ("число 1") здесь означает другое. Что [I]Path[/I] [B]пересекает[/B] этот светофор. То есть заходит за него. Если позиция = 0, проверяется, достигает ли маршрут требуемого сигнала; если позиция = 1; проверяется, выходит ли маршрут за пределы требуемого сигнала. [зачем им нужен "0" - я хз :confused:] [size="1"][color="Silver"]Добавлено через 7 минут[/color][/size] [QUOTE=КЕ;592749]Не знаю, как в OR, но в МСТС как я ни бился, запомнить состояние не получалось. При каких-то изменениях в одной сигнальной точке остальные тоже отрабатывают свой скрипт, обновляются, и маневровый режим терялся в момент прохода сервиса через какую-либо сигнальную точку, даже если аспект не менялся... Если только попробовать if (opp_sig_lr (SIGFN_NORMAL) ==2) { state =2; } и больше ничего! )))[/QUOTE] У меня была другая идея. Заявить переменную, скажем, float shunt; Вписать ей действие [I]shunt = shunt +0;[/I], в случае, если на выходном появляется 2, давать [I]shunt = 1[/I], найти условие, при котором возвращать [I]shunt = 0[/I], скажем, поезд прехал маневровый в сторону станции по block_stste () через BLOCK_OCCUPIED - как я уже писал, в ORTS состояние блока учитывает направление движения. Но, я не могу поймать "оппозит"!!! Сейчас буду пробовать через [I]sigid[/I] фуекцией [B]sigid = opp_sig_id(SIGFN_Type, <n>) [/B] (этот <n> мне тоже непонятен. ИМХО - очепятка просто) |
Переменная [B]float shunt[/B] - не сбросится в ноль при перезагрузке сервисов?
Я так делал, но такая же внутренняя переменная при движении сервиса "терялась" при реверсе движения или еще как-то, как я писал чуть выше. [quote]надо передать от выходного (того самого, что на скрипте KRN25_YR_YW ) противостоящему маневровому информацию о том, что выходной открылся белым[/quote] - сервис должен идти по сигналу на выходном, а маневровый "смотрит" вслед сервису? Он не сработает по [B]opp_sig_lr[/B], он в оппозитном положении вообще ничего не считывает с других сигналов. Может только менять свой аспект по BLOCK_STATE (). |
Не знаю. Может, я что-то делаю не так...
И Не должен сбрасываться. Светофор связан с сервисами постольку-поскольку. Через функции. Всё это я собираюсь делать когда светофор [I]!enabled[/I] - сервис движется в другом направлении, он будет [I]!enabled[/I]. И, когда сервис проехал светофор - тот становится снова [I]!enabled[/I]. Вопрос в том, корректно ли так писать скрипт. |
Я использовал оппозиты (маркеры-"датчики" на пути) только для определения занятости БУ, считывая их аспект, меняющийся через функцию BLOCK_STATE (). Они больше ничего не могут.
|
DISTANCE?
|
И нормалы тоже так.
Хотя в последних версиях ОР надо проверять. [B]sigid = opp_sig_id(SIGFN_Type, <n>)[/B] - сработает? Получится оппозитно проверить путь до какого-то сигнала - после реверса, когда сервис уже прошел наиболее отдаленную точку пути - точку разворота, и пошел по горловине в сторону станции? |
Сработало :D
В смысле что-то изменилось. Со скриптом не то. Не открывается. [B]<n>[/B] я не ставил. Мне кажется, это очепятка у Буржуев [size="1"][color="Silver"]Добавлено через 1 минуту[/color][/size] Нет. Мне тупо нужно знать, что выходной открылся маневровым, а не путевым. Я считываю аспект с этого светофора и всё [size="1"][color="Silver"]Добавлено через 1 минуту[/color][/size] Вот скрипт [QUOTE] sigid = opp_sig_id (SIGFN_NORMAL) next_state = next_sig_lr (SIGFN_NORMAL); opp_state = ID_SIG_LR (sigid); shunt_state = shunt_state + 0; if (!enabled && (opp_state ==# SIGASP_RESTRICTING)) { shunt_state = 1; } if (!enabled && (block_state() ==# BLOCK_OCCUPIED)) { shunt_state = 0; } if (route_set () ) { state = SIGASP_STOP; if (enabled && (shunt_state ==# 1)) { state = SIGASP_RESTRICTING; } else if (enabled && (block_state() ==# BLOCK_CLEAR)) { 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; } } [/QUOTE] [size="1"][color="Silver"]Добавлено через 9 минут[/color][/size] Вот маневровый на выходном. [IMG][URL=http://piccy.info/view3/13776164/db1d3866c221148533c0f5924b726434/][IMG]http://i.piccy.info/i9/5b8d4218b78f48e17253872d1060de79/1587945631/25229/1373151/RunActivityLAA_2020_04_27_02_55_46_38_500.jpg[/IMG][/URL][URL=http://i.piccy.info/a3c/2020-04-27-00-00/i9-13776164/477x350-r][IMG]http://i.piccy.info/a3/2020-04-27-00-00/i9-13776164/477x350-r/i.gif[/IMG][/URL][/IMG] Я снял а [B]number_plate[/B] и проходные за станцией - в обычном режиме [size="1"][color="Silver"]Добавлено через 3 минуты[/color][/size] Дополнительные строки в скрипте - до [B]if (route_set())[/B] [IMG][URL=http://piccy.info/view3/13776165/3e1315e11a34f34718bf4e8ca07b156f/][IMG]http://i.piccy.info/i9/c843cc2bceafbab840dff503ed3343a8/1587945774/26555/1373151/RunActivityLAA_2020_04_27_02_56_49_76_500.jpg[/IMG][/URL][URL=http://i.piccy.info/a3c/2020-04-27-00-02/i9-13776165/477x350-r][IMG]http://i.piccy.info/a3/2020-04-27-00-02/i9-13776165/477x350-r/i.gif[/IMG][/URL][/IMG] Без этого должно было открыть паровозику STOP_AND_PROCEED на свободный путь со следующим красным. Что-то пошло не так. |
Странно!! Смотрю скрины с телефона - все нормально, а с ноута через телефон - вместо картинок - "[I][U]Your IP is blacklisted[/U][/I]"...:confused:
Что-то тот сайт хернёй занимается... |
Текущее время: 09:40. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim