![]() |
[QUOTE=КЕ;602289]
Какое число было необходимым?[/QUOTE] 7 |
[QUOTE=vicente;602286]Прграммировать светофоры для этого нужно с [B]С#[/B], а я вообще не знаю его, и в жизни программированием не занимаюсь.
[/QUOTE] Удобный язык для программирования, еще qt c++ мощная штука. В msts внешнее апи очень урезанное, даже под отладку нормальных возможностей не дали - из скрипта невозможно определить с каким из шейпов идет работа. Приходится извращаться: снимать user1-4 опции у нужных сигналов, чтобы получить уникальный набор [B]future[/B]. Я тут поборол сигналку на БМО 1.8. Покопав далее скрипт distance входных сигналов заметил такое: [CODE]if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) { WORK1 = opp_sig_mr ( SIGFN_NORMAL ); if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_ONE_WAY = 1; } WORK1 = opp_sig_lr ( SIGFN_DISTANCE ); if ( WORK1 ==# SIGASP_RESTRICTING ) { opp_POEZD = 2; } if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { opp_POEZD = 1; } } if ( sig_feature( SIGFEAT_GRADIENT_PLATE ) && !sig_feature( SIGFEAT_NUMBER_PLATE ) ) { if ( ( block_state() ==# BLOCK_OCCUPIED || POEZD !=# 0 ) && opp_POEZD !=# 1 ) { state = SIGASP_STOP_AND_PROCEED; } if ( opp_ONE_WAY ==# 1 || opp_POEZD ==# 2 ) { state = SIGASP_STOP_AND_PROCEED; } }[/CODE] Оказывается для удержания направления перегона используют не только SAP в distance, но и SAP в normal проходных сигналов. Глянул код голов normal у проходных, нашел это: [CODE]state = SIGASP_STOP; if ( sig_feature( SIGFEAT_NUMBER_PLATE ) && POEZD !=# 1 ) { if ( block_state() !=# BLOCK_CLEAR || POEZD ==# 2 || ONE_WAY ==# 1 ) { state = SIGASP_STOP_AND_PROCEED; } }[/CODE] То есть, если сигналы включены, то distance [B]POEZD [/B] = 0 по скрипту и занятые участки будут в normal SAP ставить. А выше это в коде: [CODE]WORK1 = next_sig_mr ( SIGFN_NORMAL ); if ( WORK1 ==# SIGASP_STOP_AND_PROCEED ) { ONE_WAY = 1; }[/CODE] Обеспечивает удержание sap на головах normal, где участки уже clear. Направление перегона переключается не в Иванцево, а в Драчеево, то есть с другого конца, по редактору видно, что [B]enable[/B] не дотягивает до входного, его скрипт не срабатывает. Попробовал увеличить в[B]APK_3AB_YGR_YW_DISTANCE[/B] параметр [B]SignalNumClearAhead[/B] до 15. Теперь работает на тестовой сцене. |
[QUOTE=КЕ;602289]В смысле - менять исходный код ORTS?
[/QUOTE] Нет. Исходный код меняют разрабы. Есть там определённая процедура изменения кода. "Открытость" состоит в том, что любой желающий может [B]предложить[/B] изменения в коде, а команда вносит эти изменения в тестовые версии по своему усмотрению. Русификацию, например, делает твой "визави" на форуме Игоря... ну, тот, что в беседу тебя внёс на elvastower.com , ссылку на которую ты мне кинул :D Речь идёт о замене sigscr.dat на программу на С#. Кстати, молодёжь, кто знает Шарп? Я вообще в нем ни бум-бум! :o Может кто-нибудь набрость какой-нибудь скрипт сигнальной головы? Я имею в виду перевод из этого недо-С в С#... Я бы глянул и смекнул: что к чему. Потому что самоучитель я ниасиливаю (стар?), да и времени, если честно - совсем на него нет. Туплю на азах, в общем. Форма скрипта в с# такова: [QUOTE] using System; using Orts.Simulation.Signalling; namespace ORTS.Scripting.Script { public class MYSIGNALTYPE : CsSignalScript // мой сигнальный тип - название Signal_Head { public override void Initialize() { // Perform some initializations here, taking into account // that no route information is available at this point } public override void Update() { // Set the aspect of your signal here depending on route state } public override void HandleSignalMessage(int signalId, string message) {} } } [/QUOTE] |
[QUOTE=vicente;602294]
Кстати, молодёжь, кто знает Шарп? Я вообще в нем ни бум-бум! :o[/QUOTE] Да проблема не в языке, а в самом проекте, нужно ведь изучить сорцы OR, прочитать даташиты по их функционалу, что и как подавать в эти переопределяющие методы [B]ovveride[/B]. Сам язык понять можно быстро по ютуб урокам. Судя по всему вся логика в [B]Update[/B]. А вот [B]HandleSignalMessage[/B] это что не очень понял, то ли для отладки, то ли обмен инфой между сигналами. |
Рома, я писал, что не вижу по Иванцево буфера изменения направления. Головы входного "хватают" STOP_AND_PROCEED с выходного и соответственно - противоположное направление. А как в Драчеево это переключается? Там стоит дополнительный служебный маркер?
И, это... спасибо за проделанную работу. Дотошный :D [size="1"][color="Silver"]Добавлено через 4 минуты[/color][/size] Источник скачивается на сайте. Если понимаешь язык, можешь разобраться не только с сигналкой, но и с другими интересующими вещами в соответствующих cs файлах. Меня интересует пока только синтаксис [size="1"][color="Silver"]Добавлено через 11 минут[/color][/size] [QUOTE=roman5;602295] Судя по всему вся логика в [B]Update[/B]. А вот [B]HandleSignalMessage[/B] это что не очень понял, то ли для отладки, то ли обмен инфой между сигналами.[/QUOTE] Если честно, пока (подчёркиваю- пока), вся эта авантюра с С# - довольно спорна. Но, старое поколение уходит, может быть, в скором времени вся логика, заимствованная из MSTS будет переписана. Это не есть хорошо, ИМХО, так как совместимость с MSTS - основоопределяющее условие, которое было заявлено при открытии проекта. Сейчас она (совместимость эта) всё дальше и дальше. Главная причина перехода на С#-скрипты - уаеличение аспектов, которых [S]тупым американцам[/S] кое-кому там не хватает. Снятие информации с предыдущего светофора промелькнуло в одном из постов, но с тех пор по теме - тишина. Синтаксис, как я уже сказал, моя главная проблема, но беглым просмотром sc я узнаю знакомые функции. Пока по сигналам "сзади" - глухо. |
[QUOTE=vicente;602296]Головы входного "хватают" STOP_AND_PROCEED с выходного и соответственно - противоположное направление.[/QUOTE]
Не совсем так, выходные вроде тут вообще не участвуют, у них нету в distance SAP. Между входным и выходными стоят служебные маркеры: они выдают res на занятые либо копируют distance с выходного, но там все кроме sap. То есть когда появляется поезд на станции, входной видит res состояние на маркере. И тут делает себе sap: [CODE]if ( ( block_state() ==# BLOCK_OCCUPIED || POEZD !=# 0 ) && opp_POEZD !=# 1 ) { state = SIGASP_STOP_AND_PROCEED; } if ( opp_ONE_WAY ==# 1 || opp_POEZD ==# 2 ) { state = SIGASP_STOP_AND_PROCEED; }[/CODE] При чем тут несколько вариантов, [B]opp_POEZD=0[/B] для станции отправления: 1. Поезд еще на станции [B]POEZD=2[/B] - попадаем в первый if, потом выезжаем за маркер, тут по [B]block_state()[/B] начинает sap удерживаться. 2. На Драчеево стоит маркер около входного встречный. 3. Когда заезжаем за входной, на встречном проходном скрипт делает на normal голове аспект sap, благодаря этому теперь [B]opp_ONE_WAY=1[/B] помогает держать перегон. В тех случаях, где входной и встречный проходной не рядом стоят, то за счет встречного маркера у входного делается [B]opp_POEZD=2[/B] - состояние res встречного маркера. Таким образом, [B]opp_ONE_WAY [/B] помогает держать sap на перегоне, если туда заедут по удалению не сколько поездов, переменная будет скинута, как только последний поезд заедет за входной станции прибытия. [size="1"][color="Silver"]Добавлено через 14 минут[/color][/size] Немножко скринов еще сделал. [SPOILER][IMG]https://s211vla.storage.yandex.net/rdisk/aabbde5b669ae2f4481f86b9535ba636316e26da12a8f4ed0088bfc843807432/614f3369/CP0r4W7WBqH1rzBA08nC4dSHB9NBKYWTVvXur3FQYzlWW0ve7GbuUBTO0SFRUT-zO0U0tg0NY2Xy7SutJph6RA==?uid=0&filename=скрин.png&disposition=inline&hash=&limit=0&content_type=image%2Fpng&owner_uid=0&fsize=6158980&hid=e66f946d1c2d88d42353df6bdc6529b8&media_type=image&tknv=v2&etag=aa177c74985ba659ed0bd397b98645f3&rtoken=ikV2VPtqKCcG&force_default=no&ycrid=na-73296d88f8ae215f3a32364f55c8dc10-downloader13f&ts=5ccd2c234ec40&923c7898e5226691c790fcae3ec9f53b&pb=U2FsdGVkX1_NOwEFOQiMFHP9xVzSo1O8LvXkxXfpFvjnAUWIEkYG0i44ayGbHPzldywxYqLCOcrid6BNDMA0s68-yMDKRo03hc2anjgbTaM[/IMG][/SPOILER] На 1-2 скринах: никого нет, сигналка в обе стороны включена. На 3: трафик появился, белый на маркере, sap подхватился. На 4-5 выезд со станции. Переключение маркера на clear2 - перегон свободен за ним. На 6-7: проходной изначально stop normal, по проезду на sap перешел. |
У всех скрины открываются? А то у меня - нет.
|
[QUOTE=КЕ;602301]У всех скрины открываются? А то у меня - нет.[/QUOTE]
У меня не открываются. |
Ром, скрины проверь - не открываются!
[size="1"][color="Silver"]Добавлено через 1 час 3 минуты[/color][/size] [QUOTE=vicente;602296]Синтаксис, как я уже сказал, моя главная проблема, но беглым просмотром sc я узнаю знакомые функции. Пока по сигналам "сзади" - глухо.[/QUOTE] Сюда бы еще Рому RWM, он тоже вроде программер. Жаль, давно пропал с форумов... |
Ребята, а есть ли способ решения задачи, при которой бы сервис игрока или трафика, смог бы выехать за сигнал светофора, после чего сделав реверс в сторону этого же светофора, уже по заранее проложенному пути? Насколько мне известно, это невозможно, так как на светофоре горит красный и как только проезжаешь его, игра заканчивается.
|
В MSTS - разгонись, потом КМ в ноль, и реверс назад. Проедешь закрытый сигнал без разбора у начальника депо!:crazy:
|
А как трафик в этом случае поведёт себя? :)
|
Встанет у красного, разумеется.
|
[QUOTE=КЕ;602301]У всех скрины открываются? А то у меня - нет.[/QUOTE]
Перезалил, хотел с яндекс диск дать ссылки на оригинальные скрины, не пожатые. [SPOILER] [IMG]https://i.ibb.co/wd1vyBt/1.png[/IMG] [IMG]https://i.ibb.co/Nj2gHBV/2.png[/IMG] [IMG]https://i.ibb.co/JCkPRx2/3.png[/IMG] [IMG]https://i.ibb.co/vxdDTkk/4.png[/IMG] [IMG]https://i.ibb.co/vhhfN3G/5.png[/IMG] [IMG]https://i.ibb.co/r3n7TCm/6.png[/IMG] [IMG]https://i.ibb.co/Q8kSLFM/7.png[/IMG] [/SPOILER] |
[QUOTE=КЕ;602291] Олег, ты говоришь про это? -[/QUOTE]
Именно [QUOTE=КЕ;602291] Нашёл интересное замечание в наших давних сообщениях: [/QUOTE] "Как молоды мы были, как молоды мы были..." Именно так эта функция описана кужувцами в Документации по сигнализациям MSTS . Не я один "сел в лужу" с оппозитами, надо сказать в своё оправдание. Вполне себе уважаемые Буржуи в отношении сигнализаций, тоже не вкуривали этот вопрос, пока знающие люди не разъяснили. На данный момент, совершенно очевидно: как работают функции с префиксом opp_ |
Текущее время: 08:31. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim