Показать сообщение отдельно
Старый 28.09.2021, 18:28   #782
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,764
Вы сказали Спасибо: 899
Поблагодарили 1,214 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Костя, то что я писал. Симулятор "предполагает", что там будет скрипт, поэтому и expected . К сигналке не имеет отношения. Только к самим файлам.

Добавлено через 14 минут
Только что "соорудил" таймер на светофор в Open Rails. Скриптом
Этот недо-С "петли" не признаёт. Несмотря на то, что for даже в инструкции кужувской присутствует, когда-то, очень давно пробовал его - не получалось ( может, мозги кривые, конечно, но в for трудно ошибиться). На днях попробовал While - парсер послал меня подальше. Сделал под if: загнал переменную в "запоминалку" переменных Open Rails-овскую. Под if (n <# 45) поставил n = n + 1; и результат - в "запоминалку". Считает Поиграл величинами, на 45 - ждёт 28-29 секунд, на 15 - 11-12, на 99 уже, как бы долго получается. Оставлю 45 пока. Теперь - самое главное- потестить не с сейва, а с loading - может быть офигительная вещь. В идеале, конечно, привязать это к флагам... и выбирать птичкой в редакторе: большая станция, маленькая станция и т.п.

Добавлено через 6 минут
Вот скрипт-черновик:
Скрытый текст:

float next_state;
float sigid;
float wait_time;
float k;

if (!enabled || (block_state() !=# BLOCK_CLEAR) || !route_set() )
{
state = SIGASP_STOP;
if (block_state() ==# BLOCK_JN_OBSTRUCTED)
{
store_lvar(time, 0);
}
}
else
{
wait_time = this_sig_lvar(time);
next_state = next_sig_lr (SIGFN_NORMAL);
sigid = next_sig_id (SIGFN_NORMAL);
if ((next_state ==# -1) || ( wait_time <=# 99 ))
{
state = SIGASP_STOP;
wait_time = wait_time + 1;
store_lvar(time, wait_time);
}
else if (!train_requires_next_signal(sigid,1) || (next_state ==# SIGASP_RESTRICTING))
{
state = SIGASP_RESTRICTING;
}
// else if (!check_timing_trigger (45))
// {
// state = SIGASP_STOP;
// }
else
{
state = SIGASP_APPROACH_2;
}
}
draw_state = def_draw_state (state);
if ((state >=# SIGASP_APPROACH_1) && (next_state ># SIGASP_RESTRICTING))
{
draw_state = 2;
}
if ((state == SIGASP_STOP) && (this_sig_lr (SIGFN_NORMAL) ># SIGASP_STOP))
{
draw_state = 4;
}

Последний раз редактировалось vicente; 28.09.2021 в 18:35.
vicente вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо vicente за это полезное сообщение:
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА