Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   MSTS - Маршруты (http://www.trainsim.ru/forum/forumdisplay.php?f=19)
-   -   Сигнализация: конфигурация и скрипты (http://www.trainsim.ru/forum/showthread.php?t=13819)

КЕ 02.12.2016 13:41

Сигнализация комп не грузит, на ФПС (есди говорим про это) никак не повлияет.
А какая лучше - это смотря что именно лучше? Простота установки, или количество моделей, или работа в разных трех симуляторах... Что именно нужно в первую очередь?

Kaminadan 02.12.2016 16:45

[QUOTE]Что именно нужно в первую очередь?[/QUOTE]

Нужно что бы было как можно больше разных типов светофоров, конечно важно что бы сосем уж сложно устанавливать не было

КЕ 02.12.2016 18:23

Много разных в сигнализации АРК.

Kaminadan 02.12.2016 18:26

Надо посмотреть

vicente 29.01.2017 02:07

Опомнился и вспомнил об ApproachControlSettings , для того, чтобы реализовать обгоны скриптом светофора (точки ожидания перестали удовлетворять), и вот очередной сюрприз: в версии х3725 оно уже не фурычит. Светофор действительно закрыт, но когда трафик проследует предыдущий светофор, он открывается вне зависимости от значения "position".

vicente 29.01.2017 22:39

Разобрался. Если стартовать за SignalNumClearAhead, работает задержка в открытии сигнала. Сигнал при этом ничего не блокирует, маршрут сервису готовится, как будто сигнал открыт, просто открытие происходит на расстоянии position и на скорости speed

Forsayth 02.03.2020 05:21

Прошу Вашей помощи в скрипте. При прописании строчки:

[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]

КЕ 08.03.2020 00:29

То есть (route_set()) - чтоб гасить встречные огни?? Это же для линковки по стрелкам для "головы" входного/выходного сигнала из нескольких субобъектов.
Проходные светофоры встречного направления гасятся через (!enabled).
Огни [B]Жм[/B], [B]Ж-Ж[/B], [B]Ж-Жм[/B] на каких аспектах?
И лучше глядя в [B][I]sigcfg[/I][/B] разбираться.
Это точно скрипт проходного?

Forsayth 08.03.2020 06:47

[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 )
)

КЕ 08.03.2020 21:38

[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]

Forsayth 08.03.2020 22:32

К сожалению, все также горит предвходной зелёный, при открытом входном на бок "Два желтых из них верхний мигающий" :(

КЕ 08.03.2020 22:42

А можно скрипт входного? Той части, которая набок сигналит?

Forsayth 08.03.2020 22:46

Вот часть скрипта:

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);
}

КЕ 08.03.2020 23:34

А если вот такой вариант для проходного:

[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]

Forsayth 08.03.2020 23:41

Результат без изменений... Но, вот только что, попробовал изменить в sigcfg местами линзы огней, то желтый мигает но во всех случаях когда должен гореть зеленый. Получается что скрипт не считывает блок, где нужен желтый мигающий. Или же его пропускает. На все остальные сигналы реагирует нормально.


Текущее время: 16:42. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim