metrostroi-repo / MetrostroiAddon

Metrostroi is an addon for Garry's Mod which puts you behind the controls of the real and fully simulated subway trains.
https://metrostroi.net
Other
40 stars 29 forks source link

Автостопы #540

Open AlmP-RUS opened 2 years ago

AlmP-RUS commented 2 years ago

Добавьте возможность выносить автостопы у светофоров. ~При создании АБ это немного облегчит жизнь)~ Можно либо сделать отдельный ползунок в меню натройки светофора, на сколько будет автостоп вынесен вперед, но тогда будут беды в поворотах; либо сделать возможность ставить светофор сигнал тулом как отдельный самостоятельный entity (Ну например нужно нам вынести автостоп на 15 метров у светофора, мы ставим светофор, снимаем у него галочку autostop и после за 15 метров до него ставим сам автостоп, почему бы и нет собсна) Так же второй способ позволит при необходимости ставить дублирующий автостоп в тупиках, когда это будет нужно. Еще можно будет его как-то разнообразить и добавить возможность ставить например просто скобу перед тупиком или инерционник (на минске же как-то их сделали, не думаю что это прям так сложно)

~А вы тоже слышите звуки прикрепляющегося лэйбла "Прокрастинатион" и закрытия иссуе?~

EineDas commented 2 years ago

Плюсую и даже умножаю. У себя на локалке пытался реализовать подобное, сделав "Autostop" отдельным SignalType'ом. Однако все, что я понаписал в коде - огромнейшего размера костыль, ибо уровень моего знания луа и кода метростроя - "потыкай че-нибудь, поменяй циферки в коде и допиши пару if else, авось оно заработает". Поэтому хотелось бы видеть нормальную реализацию этой задумки в метрострое.

EineDas commented 2 years ago

ну, будто бы могло быть иначе)))

TheFUlDeep commented 2 years ago

В пул реквесте все описал

EineDas commented 2 years ago

В пул реквесте все описал

Чекнул эту штуку у себя на локалке, столкнулся с такой вещью: в случае, если состав заспавнен так, что более 1 промежуточного вагона смотрят по направлению движения, происходит следующее: головной вагон проезжает автостоп и светофор нормально, после светофор перекрывается на запрещающее показание, однако далее на вышеупомянутые промежуточные вагоны, направленные головой по ходу движения, при проезде ими автостопа, который после проезда головы уже оказался в поднятом положении, также срабатывает Train.Pneumatic:TriggerInput("Autostop",nomsg and 0 or 1). Если же все промежуточные вагоны направлены головой против хода движения поезда, то такого не происходит, однако после оборота поезда на конечной эти вагоны в любом случае окажутся по направлению хода, и в итоге эта же штука со сработкой автостопов начнется уже на другом пути.

TheFUlDeep commented 2 years ago

Понел, спасибо. Надо будет добавить "фильтр" только на головные вагоны или что-нибудь эдакое.

Еще там скорее всего есть баг: если автостоп будет стоять прямо на краю трека, и паравоз будет ехать очень быстро, то автостоп не сработает, так как там каждые полсекунды сопоставляется "предыдущий передний" и "нынешний задний" автостопы, а если паравоз будет уже не на треке или перейдет на другой трек, то "задний" автостоп не определится. И по аналогичной причине будет непредсказуемое поведение, если два автостопа в одном направлении стоят рядом, и паравоз проедет их оба быстрее чем за полсекунды. Это я уже не знаю как решить. Только если определять "передний" и "задний" автостопы каждый тик, но я не хочу.

EineDas commented 2 years ago

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

Про эту штуку в курсе уже, код изучил, посмотрел (правда из-за своего уровня знания луа понял от силы половину). Такая же штука происходит и с sys_alscoil.lua, где прописано автостопное торможение от обычных signal - там может пройти аж секунда с момента проезда автостопа до момента его срабатывания, из-за чего и так не совпадающие с ПТЭ тормозные пути при автостопном торможении увеличиваются еще сильнее. Так, с 60 км/ч на ровном участке у меня Е тормозила 165 метров при норме в 125. Но это так, к слову.

TheFUlDeep commented 2 years ago

Так, ну проверку вагонам на то, что у них может в принципе триггериться автостоп добавил. И уменьшил вероятность того, что не сработает автостоп, если за полсекунды было проехано 2+ автостопа (на скорости примерно 140км/ч эта фигня вернется, но в метрострое таких скоростей нет, так что можно считать, что полностью избавился от этой проблемы).

Осталась только одна проблема - если установить автостоп в самый конец трека, то он скорее всего проигнорируется. Но в метрострое с сигналами аналогичная фигня, так что можно оставить, думаю).

доказательства, что с сигналами такая же фигня 1: ![image](https://user-images.githubusercontent.com/39480610/195163919-7e82c365-f9ff-46d2-8e0d-9adfa62ce210.png) 2: передний мотовоз чуток сдвинул назад ![image](https://user-images.githubusercontent.com/39480610/195164654-99338a77-2ee4-4dc3-a445-e7c75b2e229e.png)