![]() |
Потестил, причину нашёл.
В скриптах вот это [CODE][B]#[/B]next_sig_lr(SIGFN_NORMAL)[/CODE] что означает? МСТС очевидно лишние символы игнорирует. У меня # рассматривается как неизвестное действие от next_sig_lr. |
# - это округление до целого числа. Не знаю, зачем в МСТС это так установлено - всё равно в "рельсовой цепи" идут аспекты сигналов целыми числами: 0, 1, 2, 3, 4, 5, 6, 7.
[SPOILER][B]#next_sig_lr(SIGFN_NORMAL)[/B] - определение аспекта следующего ([B]next[/B]) сигнала по "верхнему" ([B]lr[/B]) значению (в РЦ могут идти одновременно "верхнее" и "нижнее" показание, например, у входных светофоров Тимаса идут аспекты 0 ("STOP") и, скажем, 7 ("боковая часть" в "0" и погашена, по прямой - зелёный). Т.е. в этой записи в "РЦ" читается "верхний" аспект, тип проверяемого светофора - NORMAL (например, этот Тимасовский сигнал прочитается как "7" - "CLEAR_2")[/SPOILER] |
Ну, добавил оператор округления. Хотя, он явно ни к селу ни к городу... Нафига округлять, если там все операторы сравнения имеют целочисленную версию (==#,>#) Ни Тимас ни Слава Усов унарного оператора # не использовали. Нафига это надо?
Сижу дальше. this_sig_lr для последнего сигнала в цепи возвращало всегда STOP. Переделал, теперь просматривает текущий сигнал. Вот, сейчас он отрабатывает... [URL=http://img219.imagevenue.com/img.php?image=974251456_TestSig002_122_1183lo.jpg][IMG]http://img219.imagevenue.com/loc1183/th_974251456_TestSig002_122_1183lo.jpg[/IMG][/URL] |
[SIZE="2"]Нет, эта "#" есть и у Славы, и у Тимаса, и у Алексея. Вот Усовская:
[B][COLOR="Green"][SIZE="1"]... if (next_state ==[COLOR="Red"]#[/COLOR] SIGASP_STOP_AND_PROCEED || next_state ==[COLOR="Red"]#[/COLOR] SIGASP_RESTRICTING || next_state ==[COLOR="red"]#[/COLOR] SIGASP_STOP ) ...[/SIZE][/COLOR][/B] Тимасовская: [B][COLOR="green"][SIZE="1"]... if ((next_state ==[COLOR="red"]#[/COLOR] SIGASP_STOP) || ((next_sig_mr (SIGFN_NORMAL) ==[COLOR="red"]#[/COLOR] SIGASP_STOP_AND_PROCEED) && (next_state ==[COLOR="red"]#[/COLOR] SIGASP_RESTRICTING))) {state = SIGASP_RESTRICTING;} ...[/SIZE][/COLOR][/B] У Алексея тоже: [SIZE="1"][COLOR="Teal"][B]... if ( WORK1 ==[COLOR="Red"]#[/COLOR] SIGASP_CLEAR_2 ) { SVET = 5; } if ( WORK1 ==[COLOR="red"]#[/COLOR] SIGASP_CLEAR_1 ) { SVET = 4; } if ( WORK1 ==[COLOR="red"]#[/COLOR] SIGASP_APPROACH_3 ) { SVET = 3; } if ( WORK1 ==[COLOR="red"]#[/COLOR] SIGASP_APPROACH_2 ) { SVET = 2; } ...[/B][/COLOR][/SIZE] Я заменил "словесные" аспекты цифрами, остальное так же. А [B]this_sig_lr[/B] использовал в светофорах с несколькими субъобъектами для контроля, например - светофор с маршрутным указателем, у которого цифра на МУ загорается только при разрешающем показании этого светофора.[/SIZE] |
Да нет же, это совершенно другое. Тут # - часть операторов сравнения!
[QUOTE=Kostian;427410][SIZE="2"] Усовская: [B][COLOR="Green"][SIZE="1"]... if (next_state [COLOR="Red"]==#[/COLOR] SIGASP_STOP_AND_PROCEED || next_state [COLOR="Red"]==#[/COLOR] SIGASP_RESTRICTING || next_state [COLOR="red"]==#[/COLOR] SIGASP_STOP ) ...[/SIZE][/COLOR][/B] и Тимасовская [B][COLOR="green"][SIZE="1"]... if ((next_state [COLOR="red"]==#[/COLOR] SIGASP_STOP) || ((next_sig_mr (SIGFN_NORMAL) [COLOR="red"]==#[/COLOR] SIGASP_STOP_AND_PROCEED) && (next_state [COLOR="red"]==#[/COLOR] SIGASP_RESTRICTING))) {state = SIGASP_RESTRICTING;} ...[/SIZE][/COLOR][/B] [/QUOTE] Это бинарные операторы целочисленного сравнения. Есть и операторы без #, но это попросту другие операторы. |
Понял.
А вчерашнее [B]if(...#next_sig_lr(SIGFN_NORMAL)==...)[/B] - такое же сравнение, что и [B][SIZE="1"]... next_state = next_sig_lr (SIGFN_NORMAL); if (next_state==#...) ...[/SIZE][/B] только функция проверки задаётся "на ходу":), по ходу скрипта. [SIZE="1"]Или я не о том?[/SIZE] |
Проблема была не в том, что на ходу задаётся.
Компилятор знает операторы ==, ==#,>,># и т.д., но он не знал оператора #. Код "#next_sig_lr(SIGFN_NORMAL)==0" раскладывался в такое: PUSH SIGFN_NORMAL CALL next_sig_lr ;результат в AX ??? AX ; в AX 0 CMP AX,0 ; всегда равно JNE else... ; на else он не переходил никогда |
Ясно. Я-то думал, [B]#...==[/B] - то же , что и [B]#==[/B].
Ted, а вот в тестовом маршруте, который на скрине - там всё полностью расставлено, АЛСН-блоки перед каждым светофором? И ещё вопрос - чем лучше открыть файл тайла -*.t? |
Всё расставлено, иначе они бы все жёлтым горели.
Дык... 16-ричным редактором каким-нить лучше всего, специализированных редакторов под него нет. |
[QUOTE=Ted;427392][SIZE="1"]Ну, добавил оператор округления... Вот, сейчас он отрабатывает...[/SIZE][/QUOTE]
Ted, а это будет в следующем обновлении? |
Как нужно устанавливать RTS? Скопировать содержимое папок GLOBAL, GUI, SOUND, TRAINS в соответствующие папки MSTS?
|
Арсений К.,да
|
А куда копировать содержимое папки SD?
|
Арсений К.,эту папку просто кинуть в папку RTS
|
... [Было что-то написано]
[COLOR="Orange"][B]В следующий раз хорошо подумайте, прежде чем нажимать кнопку "Ответить". Пока устное замечание. Следующее такое сообщение будет считаться флудом со всеми вытекающими. //MJack[/B][/COLOR] |
Текущее время: 01:32. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim