![]() |
Сигнализация комп не грузит, на ФПС (есди говорим про это) никак не повлияет.
А какая лучше - это смотря что именно лучше? Простота установки, или количество моделей, или работа в разных трех симуляторах... Что именно нужно в первую очередь? |
[QUOTE]Что именно нужно в первую очередь?[/QUOTE]
Нужно что бы было как можно больше разных типов светофоров, конечно важно что бы сосем уж сложно устанавливать не было |
Много разных в сигнализации АРК.
|
Надо посмотреть
|
Опомнился и вспомнил об ApproachControlSettings , для того, чтобы реализовать обгоны скриптом светофора (точки ожидания перестали удовлетворять), и вот очередной сюрприз: в версии х3725 оно уже не фурычит. Светофор действительно закрыт, но когда трафик проследует предыдущий светофор, он открывается вне зависимости от значения "position".
|
Разобрался. Если стартовать за SignalNumClearAhead, работает задержка в открытии сигнала. Сигнал при этом ничего не блокирует, маршрут сервису готовится, как будто сигнал открыт, просто открытие происходит на расстоянии position и на скорости speed
|
Прошу Вашей помощи в скрипте. При прописании строчки:
[B]if (enabled) { if (route_set()) {[/B] Что бы потушить светофоры встречного направления на однопутном участке, светофор перестал сигнализировать сигналом "один жёлтый мигающий" при открытом входном светофоре, сигнализирующим "два жёлтых огня" или "два жёлтых огня, из них один верхний мигающий" в этом случае предвходная точка сигнализирует "один зелёный огонь". При всех остальных сигналах входного светофора сигнализирует правильно. Вот сам скрипт: [B]SCRIPT T_Head_YGR extern float block_state (); extern float route_set (); extern float next_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; if (enabled) { if (route_set()) { state = SIGASP_STOP_AND_PROCEED; if ((enabled || !sig_feature (SIGFEAT_USER1)) && (block_state() ==# BLOCK_CLEAR)) { next_state = next_sig_lr (SIGFN_NORMAL); if ((next_state ==# SIGASP_STOP) || ((next_sig_mr (SIGFN_NORMAL) ==# SIGASP_STOP_AND_PROCEED) && (next_state ==# SIGASP_RESTRICTING))) { state = SIGASP_RESTRICTING; } else if ((next_state ==# SIGASP_STOP_AND_PROCEED) || (next_state ==# SIGASP_RESTRICTING)) { state = SIGASP_APPROACH_1; } else { state = SIGASP_CLEAR_2; } } draw_state = def_draw_state (state); if (state ==# SIGASP_CLEAR_2) { 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 { state = SIGASP_STOP; if (block_state() ==# BLOCK_JN_OBSTRUCTED) { state = SIGASP_STOP_AND_PROCEED; } } } else state = SIGASP_STOP; draw_state = def_draw_state (state);[/B] |
То есть (route_set()) - чтоб гасить встречные огни?? Это же для линковки по стрелкам для "головы" входного/выходного сигнала из нескольких субобъектов.
Проходные светофоры встречного направления гасятся через (!enabled). Огни [B]Жм[/B], [B]Ж-Ж[/B], [B]Ж-Жм[/B] на каких аспектах? И лучше глядя в [B][I]sigcfg[/I][/B] разбираться. Это точно скрипт проходного? |
[QUOTE=КЕ;591485]И лучше глядя в [B][I]sigcfg[/I][/B] разбираться.
Это точно скрипт проходного?[/QUOTE] Вот скрипт [B]sigcfg[/B] проходного светофора: SignalType ( [B]"T_Head_YGR"[/B] SignalFnType ( NORMAL ) SignalLightTex ( "T_SignalLight.ace" ) SigFlashDuration ( 1.0 0.5 ) SignalLights ( 4 SignalLight ( 0 "Yellow Light" Position ( 0 7.475 0.01 ) Radius ( 0.35 ) ) SignalLight ( 1 "Green Light" Position ( 0 7.175 0.01 ) Radius ( 0.35 ) ) SignalLight ( 2 "Red Light" Position ( 0 6.875 0.01 ) Radius ( 0.35 ) ) SignalLight ( 3 "No Light" Position ( 0 -1 0 ) Radius ( 0.01 ) ) ) SignalDrawStates ( 7 SignalDrawState ( 0 "Red" DrawLights ( 1 DrawLight ( 2 ) ) ) SignalDrawState ( 1 "Yellow" DrawLights ( 1 DrawLight ( 0 ) ) ) SignalDrawState ( 2 "Green" DrawLights ( 1 DrawLight ( 1 ) ) ) SignalDrawState ( 3 "White" DrawLights ( 1 DrawLight ( 2 ) ) ) SignalDrawState ( 4 "Yellow F" DrawLights ( 1 DrawLight ( 0 SignalFlags ( FLASHING )) ) ) SignalDrawState ( 5 "Green F" DrawLights ( 1 DrawLight ( 1 SignalFlags ( FLASHING )) ) ) SignalDrawState ( 6 "No" DrawLights ( 1 DrawLight ( 3 ) ) ) ) SignalAspects ( 5 SignalAspect ( STOP "No" SpeedKPH ( 0 ) ) SignalAspect ( STOP_AND_PROCEED "Red" SpeedKPH ( 0 ) ) SignalAspect ( RESTRICTING "White" SpeedKPH ( 20 ) ) SignalAspect ( APPROACH_1 "Yellow" SpeedKPH ( 60 ) ) SignalAspect ( CLEAR_2 "Green" ) ) SignalNumClearAhead ( 3 ) ) |
[I][B](route_set())[/B][/I] лучше вообще убрать.
И вообще странно, в секции конфига [B]SignalDrawStates ( [/B]проходному прописан белый огонь, хотя в секции [B]SignalLights ([/B] белого огня нет...:confused: Попробуем вообще убрать "всё насчёт белого" из скрипта. Строку [B]next_state = next_sig_lr (SIGFN_NORMAL);[/B] перенести в начало скрипта сразу после [B]if (enabled) {...[/B] Вот если так попробовать: [B]SCRIPT T_Head_YGR extern float enabled; extern float block_state (); extern float next_sig_lr (); extern float next_sig_mr (); extern float def_draw_state (); extern float state; extern float draw_state; extern float sig_feature (); float next_state; if (enabled) { next_state = next_sig_lr (SIGFN_NORMAL); state = 1; if ( ( enabled || !sig_feature ( SIGFEAT_USER1 ) ) && ( block_state () == BLOCK_CLEAR ) ) { if ( ( next_state == 1 ) || ( next_state == 2 ) ) { state = 3; } /// "Yellow" else { state = 7; } } draw_state = def_draw_state (state); if ( state == 7) { if ( next_state == 4) { draw_state = 4; } /// "Yellow F" else if ( ( next_state == 5 ) || ( next_state == 6 ) ) { draw_state = 5; } /// "Green F" } } else state = 0; draw_state = def_draw_state (state);[/B] |
К сожалению, все также горит предвходной зелёный, при открытом входном на бок "Два желтых из них верхний мигающий" :(
|
А можно скрипт входного? Той части, которая набок сигналит?
|
Вот часть скрипта:
SCRIPT [B]T_Head_Yx_RY_I[/B] extern float block_state (); extern float route_set (); extern float next_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; if (route_set()) { state = SIGASP_STOP_AND_PROCEED; if (enabled && (block_state() ==# BLOCK_CLEAR)) { next_state = next_sig_lr (SIGFN_NORMAL); if ((next_state ==# SIGASP_STOP) || ((next_sig_mr (SIGFN_NORMAL) ==# SIGASP_STOP_AND_PROCEED) && (next_state ==# SIGASP_RESTRICTING))) { state = SIGASP_RESTRICTING; } else { state = SIGASP_APPROACH_2; } } draw_state = def_draw_state (state); if ((state >=# SIGASP_APPROACH_1) && (next_state ># SIGASP_RESTRICTING)) { draw_state = 3; } } else { state = SIGASP_STOP; if (block_state() ==# BLOCK_JN_OBSTRUCTED) { state = SIGASP_STOP_AND_PROCEED; } draw_state = def_draw_state (state); } |
А если вот такой вариант для проходного:
[B]SCRIPT T_Head_YGR extern float enabled; extern float block_state (); extern float next_sig_lr (); extern float next_sig_mr (); extern float def_draw_state (); extern float state; extern float draw_state; extern float sig_feature (); float next_state; if (enabled) { next_state = next_sig_lr (SIGFN_NORMAL); state = 1; if ( ( !sig_feature ( SIGFEAT_USER1 ) ) && ( block_state () == BLOCK_CLEAR ) ) { if ( ( next_state == 1 ) || ( next_state == 2 ) ) { state = 3; } /// "Yellow" else { state = 7; } /// "Green" draw_state = def_draw_state (state); if ( state == 7) { if ( next_state == 4) { draw_state = 4; } /// "Yellow F" else if ( ( next_state == 5 ) || ( next_state == 6 ) ) { draw_state = 5; } /// "Green F" } } } else state = 0; draw_state = def_draw_state (state);[/B] |
Результат без изменений... Но, вот только что, попробовал изменить в sigcfg местами линзы огней, то желтый мигает но во всех случаях когда должен гореть зеленый. Получается что скрипт не считывает блок, где нужен желтый мигающий. Или же его пропускает. На все остальные сигналы реагирует нормально.
|
Текущее время: 16:42. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim