Форум 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)

vicente 09.10.2020 04:13

[QUOTE=Forsayth;596069] Думаю, что проблема в самом файле sigcfs.dat
Хотя не уверен.[/QUOTE]
Думаю, sigcfs.dat ни при чем. Надо в шеёпе самом направление света править.

Forsayth 09.10.2020 04:18

Естественно там ничего не понять. Смотрю сам шейп файл, там практически 0 и 1. Что и где поменять нужно, не понять. :confused:

vicente 09.10.2020 04:27

Всё. Я - спать!

Кое что нашёл. Пока оставлю это здесь
[QUOTE]В TSRE5 вы можете переворачивать (переворачивать) сигналы (размещая) вместе с формой, если вы установили крючок на «Отразить фигуру» слева в окне Object :, если нет, вы перевернете только красную пирамиду ...

Есть разница между MSTSRE и TSRE5 размещением сигналов:
MSTS: если вы повернете форму сигнала более чем на 180 градусов, красная пирамида автоматически перевернется в другом направлении дорожки.
TSRE5: вы можете вращать и перемещать форму сигнала в любом направлении, которое вам нравится (с помощью «R», затем Numpad или мыши), красная пирамида остается в направлении размещения.
Чтобы повернуть красную пирамиду, вы должны выбрать Shae или красную пирамиду и использовать функцию FLIP в меню «Объект» слева (с или без выбора формы отражения).


[/QUOTE]

Forsayth 09.10.2020 05:53

Проверил. Разворачивается только в TRSEE, когда заходишь снова в стандартный редактор, все возвращается к исходной проблемы.

[size="1"][color="Silver"]Добавлено через 1 час 8 минут[/color][/size]
Проблема в не развороте линзы, может быть, в том, что линза привязана к самому маркеру, а не к объекту. Поэтому, как ни крути объекты, а линза будет все равно на одном месте.

vicente 09.10.2020 11:23

Странно , что [URL="http://www.trainsim.ru/forum/showpost.php?p=596061&postcount=548"]здесь[/URL], ты говоришь, что вторая линза в ту же сторону смотрит. Линза - это конфиг - 100%. Как доберусь до компьютера - сам попробую back-facing "прикрутить". На USA2 они же смотрят в другую сторону. А там - по тому же принципу сделано.

Forsayth 09.10.2020 19:26

Перебрал весь шейп. Разворачивал и возвращал в исходную позицию. Кроме изменения координат модели, больше ничего не меняется. Линза огня стоит мертво в одну сторону.

[size="1"][color="Silver"]Добавлено через 1 час 19 минут[/color][/size]
В файле шейп. Есть строчки:
sort_vectors ( 0 )
colours ( 0 )
matrices ( 1
matrix Signal ( 1 0 0 0 1 0 0 0 1 0 0 1 )
)
Где matrix Signal отвечает за положение линзы. Как не менял цифры, свет линзы будет растягиватся вдоль и в поперек, пропадать. Ни ни как не развернется.

Скорей всего нужно делать новую голову и подстраивать положение линзы под разворот маркера.

vicente 10.10.2020 02:30

Единственное, что я нашёл у буржуев, это то, что [B]чтобы линза повернулась, надо развернуть оси относительно объекта SIGNAL[/B].
Честно говоря, я не очень себе это представляю. Сигнал с линзами "против шерсти" маркера я никогда не делал у себя.

Forsayth 10.10.2020 02:40

В их сигнализации, открыв шейп. Увидел, что светофор сделан, как два объекта, которые с помощью опций делает его с сигнальной головой в разные стороны. Выбираешь одну опцию: Head1 - появляться одна голова, нажимаешь Head1 в другой вкладке - появляется голова противоположного направления. И эти все опции прописаный в файлах sigcfg и sigscr.
Так, что не получится ни как развернуть линзу. Нужно новый объект делать.

vicente 10.10.2020 03:04

Да, похоже на то...
У меня множество двусторонних светофоров, но без огней. Поднял и увеличил линзу на одном из них, покрасил её красным - оказалось - то же самое: смотрит в ту же сторону.
[IMG]https://i.ibb.co/tmzndkF/train-2020-10-10-00-54-11-11.png[/IMG]

Forsayth 23.10.2020 22:31

В одном из заграничных маршрутов есть трех-крылый семафор.
[img]https://a.radikal.ru/a13/2010/23/5fc6150f3069t.jpg[/img]
В сигнализации СССР подобные семафоры использовались для указания направления при многопутном участке: При наличии трёх и более направлений применяются трёхкрылые семафоры ... Третье крыло сигнализирует также, как и второе крыло, желтым огнем.
Есть ли возможность поднять одновременно три крыла семафора?

Используя, вот этот скрипт:
[B]sigcfg.dat[/B]
SignalType ( "[B]T_Semaphore_GR_X_X[/B]"
SignalFnType ( NORMAL )
SignalLightTex ( "ltex" )
SemaphoreInfo ( 1 )
SignalFlags ( SEMAPHORE )
SignalLights ( 2
SignalLight ( 0 "Red Light"
Position ( -0.367 0 -0.04 )
Radius ( 0.1 )
SignalFlags ( SEMAPHORE_CHANGE )
)
SignalLight ( 1 "Green Light"
Position ( -0.367 0 -0.04 )
Radius ( 0.1 )
SignalFlags ( SEMAPHORE_CHANGE )
)
)
SignalDrawStates ( 2
SignalDrawState ( 0
"Stop"
DrawLights ( 1
DrawLight ( 0 )
)
SemaphorePos ( 0 )
)
SignalDrawState ( 1
"Green"
DrawLights ( 1
DrawLight ( 1 )
)
SemaphorePos ( 2 )
)
)
SignalAspects ( 2
SignalAspect ( STOP_AND_PROCEED "Stop" SpeedKPH ( 0 ) )
SignalAspect ( CLEAR_1 "Green" )
)
SignalNumClearAhead ( 1 )
)
SignalType ( "[B]T_Semaphore_GX_Y_X[/B]"
SignalFnType ( NORMAL )
SignalLightTex ( "ltex" )
SemaphoreInfo ( 1 )
SignalFlags ( SEMAPHORE )
SignalLights ( 3
SignalLight ( 0 "No Light"
Position ( 0 0 0 )
Radius ( 0.001 )
SignalFlags ( SEMAPHORE_CHANGE )
)
SignalLight ( 1 "AmberF Light"
Position ( -0.367 0 -0.04 )
Radius ( 0.1 )
SignalFlags ( SEMAPHORE_CHANGE )
)
SignalLight ( 2 "Green Light"
Position ( -0.367 0 -0.04 )
Radius ( 0.1 )
SignalFlags ( SEMAPHORE_CHANGE )
)
)
SignalDrawStates ( 2
SignalDrawState ( 0
"No Light"
DrawLights ( 1
DrawLight ( 0 )
)
SemaphorePos ( 0 )
)
SignalDrawState ( 1
"YellowGreen"
DrawLights ( 2
DrawLight ( 1 )
DrawLight ( 2 )
)
SemaphorePos ( 2 )
)
)
SignalAspects ( 2
SignalAspect ( STOP "No Light" )
SignalAspect ( APPROACH_1 "YellowGreen" SpeedKPH ( 40 ) )
)
SignalNumClearAhead ( 3 )
)
SignalType ( "[B]T_Semaphore_GX_Y_Y[/B]"

SignalFnType ( INFO )
SignalLightTex ( "ltex" )
SemaphoreInfo ( 1 )
SignalFlags ( SEMAPHORE )
SignalLights ( 4
SignalLight ( 0 "No Light"
Position ( 0 0 0 )
Radius ( 0.001 )
SignalFlags ( SEMAPHORE_CHANGE )
)
SignalLight ( 1 "Amber Light"
Position ( -0.367 0 -0.04 )
Radius ( 0.1 )
SignalFlags ( SEMAPHORE_CHANGE )
)
SignalLight ( 2 "AmberF Light"
Position ( -0.367 0 -0.04 )
Radius ( 0.1 )
SignalFlags ( SEMAPHORE_CHANGE )
)
SignalLight ( 3 "Green Light"
Position ( -0.367 0 -0.04 )
Radius ( 0.1 )
SignalFlags ( SEMAPHORE_CHANGE )
)
)
SignalDrawStates ( 2
SignalDrawState ( 0
"No Light"
DrawLights ( 1
DrawLight ( 0 )
)
SemaphorePos ( 0 )
)
SignalDrawState ( 1
"YellowYellow"
DrawLights ( 3
DrawLight ( 3 )
DrawLight ( 2 )
DrawLight ( 1 )
)
SemaphorePos ( 2 )
)
)
SignalAspects ( 2
SignalAspect ( STOP "No Light" )
SignalAspect ( APPROACH_1 "YellowYellow" SpeedKPH ( 40 ) )
)
SignalNumClearAhead ( 5 )
)

SignalShape (
"LHUQ3abs.s"
"Выходной Семафор 3 Крыла"
SignalSubObjs ( 3
SignalSubObj ( 0 "HEAD1" "Одно Крыло-Главный Путь"
SigSubType ( SIGNAL_HEAD )
SignalFlags ( JN_LINK )
SigSubSType ( "[B]T_Semaphore_GR_X_X[/B]" )
)
SignalSubObj ( 1 "HEAD2" "Два Крыла-Ответление На Боковой Путь"
SigSubType ( SIGNAL_HEAD )
SignalFlags ( JN_LINK OPTIONAL DEFAULT )
SigSubSType ( "[B]T_Semaphore_GX_Y_Y[/B]" )
)
SignalSubObj ( 2 "HEAD3" "Три Крыла-Ответление На Боковой Путь"
SigSubType ( SIGNAL_HEAD )
SignalFlags ( JN_LINK OPTIONAL DEFAULT )
SigSubSType ( "[B]T_Semaphore_GX_Y_Y[/B]" )

)
)
)

[B]sigscr.dat[/B]
[B]SCRIPT T_Semaphore_GR_X_X[/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;

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_STOP_AND_PROCEED)))
{
state = SIGASP_CLEAR_1;
}
else
{
state = SIGASP_CLEAR_1;
}
}
draw_state = def_draw_state (state);

[B]SCRIPT T_Semaphore_GX_Y_X[/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_AND_PROCEED) || ((next_sig_mr (SIGFN_NORMAL) ==# SIGASP_STOP_AND_PROCEED) && (next_state ==# SIGASP_STOP_AND_PROCEED)))
{
state = SIGASP_STOP_AND_PROCEED;
}
else
{
state = SIGASP_APPROACH_1;
}
}
draw_state = def_draw_state (state);
if ((state >=# SIGASP_APPROACH_1) && (next_state ># SIGASP_STOP_AND_PROCEED))
{
draw_state = 1;
}
else if (next_state ==# SIGASP_STOP_AND_PROCEED)
{
draw_state = 1;
}
}
else
{
state = SIGASP_STOP_AND_PROCEED;
if (block_state() ==# BLOCK_JN_OBSTRUCTED)
{
state = SIGASP_STOP_AND_PROCEED;
}
draw_state = def_draw_state (state);
}


[B]SCRIPT T_Semaphore_GX_Y_Y[/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_AND_PROCEED) || ((next_sig_mr (SIGFN_NORMAL) ==# SIGASP_STOP_AND_PROCEED) && (next_state ==# SIGASP_STOP_AND_PROCEED)))
{
state = SIGASP_STOP_AND_PROCEED;
}
else
{
state = SIGASP_APPROACH_1;
}
}
draw_state = def_draw_state (state);
if ((state >=# SIGASP_APPROACH_1) && (next_state ># SIGASP_STOP_AND_PROCEED))
{
draw_state = 1;
}
else if (next_state ==# SIGASP_STOP_AND_PROCEED)
{
draw_state = 1;
}
}
else
{
state = SIGASP_STOP_AND_PROCEED;
if (block_state() ==# BLOCK_JN_OBSTRUCTED)
{
state = SIGASP_STOP_AND_PROCEED;
}
draw_state = def_draw_state (state);
}

У меня следующая ситуация:
При указании главного пути: Семафор сигнализирует правильно:
[img]https://c.radikal.ru/c17/2010/67/c4953470c24ct.jpg[/img]
При указании бокового направления и два крыла. Семафор сигнализирует правильно.
[img]https://d.radikal.ru/d14/2010/e2/ad0b96eb7ad8t.jpg[/img]
А при использовании третьего направления,почему-то не подымается, среднее крыло.
[img]https://c.radikal.ru/c31/2010/0b/7ad859710382t.jpg[/img]
Возможно нужно прописать какой-то дополнительный параметр?

vicente 23.10.2020 23:22

Маршрут не по линку - вот и не поднимается.

Forsayth 23.10.2020 23:23

Там просто не видно третьего пути)
Получается, что скрипт полностью правильный?

vicente 24.10.2020 00:21

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

[size="1"][color="Silver"]Добавлено через 39 минут[/color][/size]
Логика мне видится примерно твк:
Верхнее крыло работает на "закрыто-открыто". Поэтому линковка там - ни к чему. Остальные подобъекты - линкованые. Причем, если одно из них работает по своему линку, другому нужно прописать ещё зависимость от показаний "подсобрата"

Forsayth 24.10.2020 00:25

[QUOTE=vicente;596352]Причем, если одно из них работает по своему линку, другому нужно прописать ещё зависимость от показаний "подсобрата"[/QUOTE]

Вот поэтому не могу понять, что именно нужно прописать в зависимость "подсобрата".
В сигналке я - аматор. И пытаюсь понять исходя из созданных сигнализаций или советов.

vicente 24.10.2020 00:38

Открытое показание нижнего крыла сделай не APPROACH_1, a CLEAR_2 (с желтым показанием) и среднему крылу добавь, что если маршрут не по линку
if (!route_set && this_sig_lr ==# SIGASP_CLEAR_2) {state = APPROACH_1};

[size="1"][color="Silver"]Добавлено через 4 минуты[/color][/size]
Логика ясна? Если маршрут не по линку среднего, но по линку нижнего, средний через эту зависимость будет видеть, что нижний открыт и открываться


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

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