Версия: 4.2
Разработчики: Alexell и Agent Smith
Описание:
Диспетчерский функционал и расписания для машинистов Metrostroi.
Аддон полностью совместим с GitHub версией Metrostroi.
Команды:
- !dmenu (или в консоль
disp_menu
) - вызывает меню диспетчера, доступна игрокам с правомulx disp
, а также любому игроку, которого назначили на пост ДСЦП или ДЦХ - !disp - занять пост ДЦХ (также есть в меню)
- !undisp - освободить пост ДЦХ (также есть в меню)
- !sget - получить автоматическое расписание
- !sclear - очистить имеющееся расписание
- !sauto - вкл/выкл автоматическую перевыдачу расписания после оборота
- !spass - проехать любой запрещающий сигнал без регистрации нарушения в Metadmin с возможностью открыть ПС и перевести стрелки по маршруту
Возможности меню диспетчера:
- открывать и закрывать маршруты
- проехать запрещающий сигнал без регистрации нарушения в Metadmin
- занять пост ДЦХ, освободить или назначить на пост ДЦХ другого игрока
- установить интервал движения
- назначить на пост ДСЦП или снять с поста
- наблюдать за всеми интервалами в одном месте
- выдавать расписание игрокам с указанием выдержек и комментария
- в один клик телепортироваться к пультам на блок-постах
- администраторы могут также добавлять блок-посты на картах, где они не заполнены (на вкладке "Блок-посты" будет соответствующая кнопка)
Особенности аддона:
- панели ДЦХ, ДСЦП и расписания скрываются с экрана на клиенте при наличии в руке камеры или консольной командой
disp_showpanel 0
- панели ДЦХ, ДСЦП и расписания не скрываются, когда ДЦХ на посту
- панель расписания отображается только, если игрок сядет на место машиниста, помощника или любое другое место в кабине
- панель интервалов отображается на месте панели расписания, в один момент времени можно включить только одну из них
- если на посту есть ДЦХ, автоматическое раписание получить не получится
- расписание автоматически перевыдается после оборота, если эта опция включена у игрока
- блок-посты заполнены только на картах, где есть пульты:
gm_metro_mosldl_v1, gm_mus_neoorange_e, gm_metro_jar_imagine_line_v4, gm_jar_pll_redux_v1, gm_metronvl, gm_metro_virus, gm_metro_nekrasovskaya_line_v5, gm_metro_crossline_r199h, gm_metro_kalinin_v2, gm_mus_loopline_e
- данные блок-постов сохраняются в garrysmod\data\mdispatcher_controlrooms.txt после первого запуска сервера с этим аддоном
- администраторы так же могут переименовывать или полностью удалять все блок-посты той или иной карты в файле, чтобы затем заполнить их через меню по своему
- для работы расписаний, на карте должны присутвовать платформы и
Metrostroi.StationConfigurations
(с совпадающими ID станций), а также треки и сигнализация - для корректного просчета расписаний, от первой до последней станции должен идти единый трек
- на картах ПЛЛ и НВЛ сделано разделение линий, т.е. станции на второй линии будут иметь немного другую нумерацию, это необходимо для корректной работы расписаний
- из-за особенностей карты
gm_mus_loopline_e
, расписания для нее недоступны
Список хуков:
- MDispatcher.TookPost (ник игрока) - выполняется, когда игрок заступил на пост ДЦХ
- MDispatcher.FreedPost (ник игрока) - выполняется, когда игрок покинул пост ДЦХ
- MDispatcher.SetInt (ник игрока, интервал) - выполняется, когда диспетчер изменил интервал
- MDispatcher.DSCPSet (сообщение) - выполняется при назначении на пост ДСЦП
- MDispatcher.DSCPUnset (сообщение) - выполняется при снятии с поста ДСЦП
- MDispatcher.Departure(ply, ontime) - выполняется при отправлении игрока со станции, если
ontime
=true
, то игрок отправился вовремя, в противном случае нет
Хуки можно использовать для вывода событий куда-либо, например на ваш Discord сервер или для других целей.
Примеры использования:
hook.Add("MDispatcher.SetInt","SetInterval",function(ply,int)
local msg = "Диспетчер "..ply.." установил интервал движения "..int
-- далее ваш код для отправки msg в Дискорд
end)
hook.Add("MDispatcher.DSCPSet","SetDSCP",function(msg)
-- далее ваш код для отправки msg в Дискорд
end)
hook.Add("MDispatcher.Departure", "MSSTelemetry.Departure", function(ply, ontime)
if not IsValid(ply) then return end
if ontime then
-- игрок отправился со станции вовремя
else
-- игрок отправился с отклонением от графика
end
end)
При необходимости, вы также можете в ваших скриптах делать условия с использованием глобальной переменной MDispatcher.ActiveDispatcher
, которая принимает значение true
, если на посту ДЦХ есть игрок или false
, если нет.
Необходимые аддоны:
- Metrostroi
- ULX
- ULib