Маркеры для автоматического открытия светофоров при наступлении определенного времени от начала сценария.Доступны только в режиме редактирования сценария.
RS мин ХХ — маркер минут.
RS час ХХ — маркер часов.
Набором можно задать время открытия светофора с точностью до минуты.
ХХ — соответственно время в минутах или часах, через которое сработает маркер: отправит сообщение «SPAD» вперед вдоль пути.
1. Если это сообщение получит светофор – он откроется.
2. Если сообщение получит маркер (2) со значением ХХ больше, чем у маркера (1), который отправлял сообщение, то к времени открытия, которое задано скриптом маркера (2), прибавится время, заданное для маркера (1).
Например маркеры перед светофором в таком порядке:
Светофор – RS мин 03 — RS мин 02 (направление всех линков справа налево)
Откроют светофор через 5 минут.
3. Если сообщение получит маркер (2) со значением ХХ меньше, чем у маркера (1), который отправлял сообщение, то сообщение «SPAD» будет переслано вперед вдоль пути.
Например, маркеры перед светофором в таком порядке:
Светофор – RS мин 02 — RS мин 03 (направление всех линков справа налево)
Откроют светофор ДВА раза: через 2 и затем через 3 минуты (естественно, между этими моментами светофор должен как то быть закрыт)
4. Таким образом комбинация
Светофор – RS мин 03 — RS мин 01 – RS мин 10 — RS мин 02 (направление всех линков справа налево) откроет светофор два раза: через четыре и через 12 минут после старта сценария.
Такой вариант не совершенен, поскольку у светофоров есть конфликт и с русскими рельсами, и с рельсами как таковыми (есть явление, когда простое передвижение линка светофора вдоль пути на пять метров, буквально на другой участок лофта может работающий светофор починить, а работающий сломать. Перекладка рельсов тоже может иметь негативное влияние); но более важно то, что возникает необходимость расстановки кучи объектов на путях.
Чтобы уменьшить число маркеров далее скрипт, который будет просто срабатывать через определенное время (скрипт маркера, описанного ранее, чуть сложнее).
- Код: Выделить всё
------------------------------------------------------------
-- Rail Signals v0.4
------------------------------------------------------------
-- Объявление необходимых констант
------------------------------------------------------------
-- Сообщение для перезапуска скрипта (вызова функции Initialise())
RESET_SIGNAL_STATE = 0;
-- Время в сек., через которое необходимо открыть сигнал.
TIME_INTERVAL = 60;
------------------------------------------------------------
-- Функция, запускаемая при загрузки карты или сценария
------------------------------------------------------------
function Initialise()
-- переменная, через которую отслеживается время после начала сценария
gSimulationTime = 0;
-- команда выполнять каждый кадр функцию Update (timer)
Call ("BeginUpdate");
end
------------------------------------------------------------
-- Функция Update (timer), выполняемая каждый кадр. timer - время в сек. с момента предыдущего запуска
------------------------------------------------------------
function Update (timer)
-- если время после начала сценария меньше момента, когда должен быть открыт светофор
if gSimulationTime < TIME_INTERVAL then
-- обновить время после начала сценария
gSimulationTime = gSimulationTime + timer;
-- если время в сценарии больше или равно моменту, когда должен быть открыт светофор
else
-- послать следующему сигналу на пути сообщение REQUEST_SPAD
Call ( "SendSignalMessage", REQUEST_SPAD, TIME_INTERVAL, 1, 1, 0);
-- прекратить выполнение функции Update (timer)
Call ("EndUpdate");
end
end
------------------------------------------------------------
-- Функция, запускаемая, когда на линк маркера приходит сообщение сигнала
------------------------------------------------------------
function OnSignalMessage( message, parameter, direction, linkIndex )
-- если сообщение не о перезапуске карты / сценария
if message ~= RESET_SIGNAL_STATE then
-- переслать его
Call ( "SendSignalMessage", message, parameter, -direction, 1, linkIndex); -- ????
-- иначе
else
-- перезапустить скрипт
Initialise();
end logfile:write("\n end");
end
------------------------------------------------------------
-- Функция, запускаемая при прохождении поездом линка сигнала
------------------------------------------------------------
function OnConsistPass (prevFrontDist, prevBackDist,frontDist, backDist, linkIndex)
-- ничего не делать
end
------------------------------------------------------------
-- Функция, вызываемая движком для получения информации о состоянии сигнала
------------------------------------------------------------
function GetSignalState ()
-- объявление локальной переменной с информацией о состоянии впереди находящегося сигнала
local nextSignalState = Call( "GetNextSignalState", "", 1, 1, 0);
-- передача в движок РВ этого значения
return nextSignalState;
end
Каждый пусть выбирает для себя сам: либо пользоваться готовым набором маркеров, либо для каждого сценария самому создавать такие маркеры