На рассмотрении Предложение для MFS NoRank

Diablus

Команда форума
✔ Разработчик
Donate | Premium+
18.09.2020
178
59
Награды
7
39
Москва
1. Доработать scoreboard (TAB) таким образом, чтобы вместо слова "Перегон" был указан путь и наименование перегона (возможно для этого придется пожертвовать длиной строки должности).

2. Ограничить в scoreboard максимальную длину строки с названием состава разумным количеством ("новые системы" перекрывают следующий столбец, и т.д.)

3. Добавить оповещение о переводе стрелок в чат (немного поможет разобраться с хаосом на норанках). Вариант моего скрипта завязан на хуке "MetrostroiChangedSwitch" и работает не для всех стрелок:
Код:
if game.SinglePlayer() then return end
if SERVER then
    local function SwitchCheckerMsg(v,st)
        local state = "+"
        if st then state = "-" end
        ulx.fancyLog("Стрелка #s перевелась в #s",v.Name,state)
    end
hook.Add("MetrostroiChangedSwitch","SwitchChecker.Msg",SwitchCheckerMsg)
end
 

Diablus

Команда форума
✔ Разработчик
Donate | Premium+
18.09.2020
178
59
Награды
7
39
Москва
Дополню 1-ый пункт техническими аспектами, которые удалось обнаружить реверс-инжинирингом скриптов метростроя (в качестве справочного материала).
1. В классе поезда хранится значение идентификаторов пути, текущей станции, предыдущей станции и следующей станции. Это необходимо для корректной работы как минимум информатора. Адреса ячеек, считываемые по ReadCell таковы:
49160 - идентификатор текущей станции (при нахождении на станционном пути)
49167 - главный путь
49168 - станционный путь
49162 - предыдущая станция (при нахождении на перегоне)
49161 - следующая станция (при нахождении на перегоне)

Резолвинг имени станции по ее ID может быть осуществлен в таблице Metrostroi.StationConfigurations, где ключом является ID станции. значением ключа names является таблица имён станции на разных языках, RU - соответствует ключу 2
 

Diablus

Команда форума
✔ Разработчик
Donate | Premium+
18.09.2020
178
59
Награды
7
39
Москва
И еще подниму топик. Заметил, что многим не хватает привычного функционала !stations, выводящего список станций. Думаю, так же удобно было бы добавить такой функционал.

Реализуется так же из таблицы k,v=>pairs(Metrostroi.StationConfigurations). Где k - ID станции, а v - ее конфигурация в виде таблицы с ключом names,
т.е. по сути надо добавить новую ulx команду !stations, которая бы вывела отсортированную по ключу таблицу Metrostroi.StationConfigurations => k,v => k->v.names[2]