![]() |
Триггер "пассажирская платформа"
Наделал саму СССРовскую платформу :)
Выполнена в виде триггера. Устанавливается где-то посередине пути рядом с "реальной" платформой. Зелёный кубик находится справа от правильного направления пути (т.е. если в настройках ничего не менять, то он должен залезать на(под) платформу) Естественно, пассажиров на платформу на карте он не ставит, но пронаблюдать за пассажирами в вагоне, отследив момент загрузки, вполне можно. (Загрузка происходит мгновенно - да простят меня те, кто хотят постепенного увеличения/уменьшения числа пассажиров) Теперь настройки 1) автоматический режим открывания дверей/ не открывать двери первый предназначен для обычного ПС. Двери открываются у всех вагонов, остановившихся у этой платформы. Для закрытия дверей надо либо прогудеть, нажав h либо отправиться Не открывать двери - предназначен для скриптованного ПС. Погрузка, правда, при этом будет происходить и через закрытые двери. 2) вкл/выкл - понятно. Некоторые платформы могут не использоваться, или автору по сценарию надо останавливать пасс возле пригородной платформы без погрузки 3) платформа пригородная/станционная - первая наполняется быстрее (рандом от 15 до 40 секунд), но днём и ночью наполняется не полностью (хорошее наполнение с 5-30 до 9-00 (утром) и с 16-00 до 17-00 (вечером)). Станционная - наполняется дольше (30-70 секунд), но наполняемость всегда не меньше 70% если вы закроете двери слишком рано, то загрузки не будет 4) конечная станция - понятно. Выгрузка всех пассажиров 5) платформа правая/левая - если по сценарию надо открыть двери с другой стороны Лежит тут [url]http://dump.ru/file/4406219[/url] На движение составов не влияет. Стоп-кран не реализован :) Жду отзывов :) . Если понравится, разрешаю выложить на trainz.ru |
Ухтышка!!!
|
Для тестов подойдет, но не для нормального использования.
|
Сообщение при нажатии T такое: "DriverDisplay", "ResetTripMeter"
|
в 2006 такого сообщения нет (я в ней пока работаю). Хорошо, сделаю
|
переделал [url]http://dump.ru/file/4407050[/url]
Единственное что - протестировать не смог. А так должно работать :) В 2006 двери открываются автоматически, в 2009 и выше - по клавише T (закрываются и по свистку, и по T) |
[QUOTE=TRam_;160034]переделал [url]http://dump.ru/file/4407050[/url]
Единственное что - протестировать не смог. А так должно работать :) В 2006 двери открываются автоматически, в 2009 и выше - по клавише T (закрываются и по свистку, и по T)[/QUOTE] Здорово получилось,спасибо!Теперь как в RW можно производить посадку пассажиров......:) |
[B]Tram[/B], хорошая вещь, но почему в 2006-м до сих пор? Сапожник без сапог?;)
|
Всё, готово :)
[url]http://dump.ru/file/4407305[/url] оставшиеся баги поправил [QUOTE]Tram, хорошая вещь, но почему в 2006-м до сих пор? Сапожник без сапог?[/QUOTE]потому что у Volk'a 2006. А полувагон, сс*ка, заколдованный - одинаковые версии, а работает по-разному |
Это сообщение появилось в классике с новой версией Custom HUD.
|
[QUOTE]Это сообщение появилось в классике с новой версией Custom HUD.[/QUOTE]не знал :)
зы - тестить будешь? |
Хм, сейчас попробую :)
|
Проверил. Работало все, кроме загрузки, число пассажиров не менялось.
Что нужно для готовой к употреблению версии:[LIST=1][*]Работа со скриптованным ПС. Через GetProperties(). Сразу предлагаю вариант: Используется тег и именем [I]scripteddoors[/I], содержащий строку с форматом [I]doors [d1] [d2] [d3] ...[/I], где [d1], [d2], [d3] — номера открытых дверей, нечетные для левых, четные для правых. В контейнере [I]scripteddoorsconfig[/I] в extensions для каждого номера двери содержится скорость посадки/высадки, пассажиров/сек. Примерный алгоритм: при остановке поезда триггер проверяет все (для пригородного — только вошедшие в его зону) вагоны в поезде, если нет ни одного со скриптованными дверьми — ждем сигнала T. Иначе каждую секунду проверяем каждый вагон, в каждом вагоне проверяем открытые двери, через них загружаем количество пассажиров, указанное в конфиге. [*]Невозможно точно определить конечную станцию, поэтому я предлагаю при двойном нажатии T выводить браузер с вариантом выгрузить все. [*]Количество пассажиров на станции должно определяться временем суток. Вроде такого: [IMG]http://trainz.tramsim.com.ua/objects/tramstop/propwin.jpg[/IMG] [*]Должны быть месседжы "PassStationTrigger": "TrainStopped", "LoadStarted", "LoadCompleted", "LoadEnded" от триггера к поезду, для того, чтобы сценаристы имели возможность контролировать насколько хорошо машинист выполняет расписание и обслуживает пассажиров. [*]Для ИИ нужны команды. Значит, нужно предусмотреть хэндлеры. [*]В GetProperties должен быть признак для КЛУБа. Насчет этого стоит связаться с Александром :)[/LIST] Если ты занят, я могу доработать твой вариант по 1, 2, и 5 пунктам как наиболее важным. |
[QUOTE]кроме загрузки, число пассажиров не менялось[/QUOTE]ждать надо :) . Для пригородной платформы - от 15 до 30 секунд
[QUOTE]Примерный алгоритм: при остановке поезда триггер проверяет все (для пригородного — только вошедшие в его зону) вагоны в поезде, если нет ни одного со скриптованными дверьми — ждем сигнала T. Иначе каждую секунду проверяем каждый вагон, в каждом вагоне проверяем открытые двери, через них загружаем количество пассажиров, указанное в конфиге.[/QUOTE]триггер он на то и триггер, чтобы не знать какие вагоны на него наехали. Только индустрии. А у индустрийных триггеров зона действия не более 150 метров. Так что не для обычного триггера это дело - это должны быть парные (типа X-маркеров сигналки) fixedtrack'и, обозванные industry [QUOTE]Невозможно точно определить конечную станцию, поэтому я предлагаю при двойном нажатии T выводить браузер с вариантом выгрузить все.[/QUOTE]можно. Но это потом [QUOTE]Количество пассажиров на станции должно определяться временем суток.[/QUOTE]у меня пока нет понятия "число пассажиров на станции". Загрузка ведётся чистым рандомом числа пассажиров в вагоне. НО. У пригородной платформы, как я сказал, этот рандом зависит от времени. [QUOTE] "TrainStopped", "LoadStarted", "LoadCompleted", "LoadEnded"[/QUOTE]у меня просто загрузка происходит мгоновенно - я это писал в заголовке. По сообщению "TriggerInd","Start" . "TrainStopped" - ловится при помощи Sniff'а с поезда :) [QUOTE]Для ИИ нужны команды.[/QUOTE] ИИ должен перед отправлением гудеть - согласно ИСИ. Команда, которая бы имитировала "DriverDisplay", "ResetTripMeter" - да, нужна. [QUOTE] могу доработать твой вариант по 1, 2, и 5 пунктам как наиболее важным.[/QUOTE]я не против :) |
[QUOTE=TRam_;160172]триггер он на то и триггер, чтобы не знать какие вагоны на него наехали. Только индустрии. А у индустрийных триггеров зона действия не более 150 метров. Так что не для обычного триггера это дело - это должны быть парные (типа X-маркеров сигналки) fixedtrack'и, обозванные industry[/QUOTE]
Train.GetVehicles() [QUOTE=TRam_;160172]у меня пока нет понятия "число пассажиров на станции". Загрузка ведётся чистым рандомом числа пассажиров в вагоне. НО. У пригородной платформы, как я сказал, этот рандом зависит от времени.[/QUOTE] Платформы бывают большие и маленькие :) [QUOTE=TRam_;160172]у меня просто загрузка происходит мгоновенно - я это писал в заголовке. По сообщению "TriggerInd","Start" . "TrainStopped" - ловится при помощи Sniff'а с поезда :)[/QUOTE] Что означает, что триггер неприменим для интенсивного пригородного сообщения и метро, где длительностью процесса посадки/высадки пренебрегать нельзя. [QUOTE=TRam_;160172]ИИ должен перед отправлением гудеть - согласно ИСИ. Команда, которая бы имитировала "DriverDisplay", "ResetTripMeter" - да, нужна.[/QUOTE] В Мск собаки не свистят. Поэтому гудок — плохой признак. Лучше, опять же, T. Для ИИ нужна команды начала, окончания и всего процесса (с временем). |
[QUOTE]Train.GetVehicles()[/QUOTE]что то я затупил. GSTrackSearch. И Vehicle.GetLength()
[QUOTE]Что означает, что триггер неприменим для интенсивного пригородного сообщения и метро, где длительностью процесса посадки/высадки пренебрегать нельзя.[/QUOTE]погрузка происходит через 15-30 секунд после открытия дверей. Если двери закроют раньше - погрузки вообще не произойдёт. Другое дело что погрузка не наблюдается в реальном времени - с этим минусом согласен. Хотя попробуй определи, закончили ли люди появляться или нет :)))), если в реальном времени [QUOTE]В Мск собаки не свистят[/QUOTE]на савёловском ещё как свистят :) [QUOTE]Платформы бывают большие и маленькие[/QUOTE]а число пассажиров меняется мало :) [QUOTE]через них загружаем количество пассажиров, указанное в конфиге[/QUOTE]не. Число пассажиров, определяемое рандомом, в диапазоне, указанном в конфиге |
[QUOTE=genesis;160176]В Мск собаки не свистят.[/QUOTE]
Я те дам "не свистят", ещё как свистят, по крайней мере на Кивухе. |
Кстати, через SetMeshTranslation можно всякое веселье делать.
[QUOTE]В GetProperties должен быть признак для КЛУБа. Насчет этого стоит связаться с Александром[/QUOTE] Пока остановились на признаке, что это ОП\станция и названии. [QUOTE]погрузка происходит через 15-30 секунд после открытия дверей. Если двери закроют раньше - погрузки вообще не произойдёт. Другое дело что погрузка не наблюдается в реальном времени - с этим минусом согласен. Хотя попробуй определи, закончили ли люди появляться или нет ))), если в реальном времени[/QUOTE] Еще в метро часто принудительно обрывают посадку, нужно и этот момент отработать :) По свистку, ИМХО, делать не стоит. Ибо в пригородном часто свистят уже после дверей, в метро вообще не свистят и в целом это не связанные между собой вещи. |
в 2006 свисток - единственная обрабатываема вещь. Новичкам - элекропоездникам такая штука понадобится. А метро для 2006 не будет - ты сам знаешь в какие тормоза превращаются полигоны тоннелей в ней. В 2009 уже этот триггер запускает посадку по клавише T (в 2006 - сразу, я на это заплатку поставил)
[QUOTE]SetMeshTranslation можно всякое веселье делать.[/QUOTE]а если добавить поворот, и телескопические анимации, то получаем универсальный инструмент под перемычки [QUOTE]Еще в метро часто принудительно обрывают посадку, нужно и этот момент отработать[/QUOTE]когда посадка мгновенная, её не оборвёшь (по определению слова "мгоновенный"). Тут алгоритм вычисления захода/ухода просто надо сделать |
[QUOTE]когда посадка мгновенная, её не оборвёшь (по определению слова "мгоновенный")[/QUOTE] Я про постепенную. В метро это (время посадки-высадки) определяющая величина для всего.
|
[QUOTE=TRam_;160178]погрузка происходит через 15-30 секунд после открытия дверей. Если двери закроют раньше - погрузки вообще не произойдёт. Другое дело что погрузка не наблюдается в реальном времени - с этим минусом согласен. Хотя попробуй определи, закончили ли люди появляться или нет :)))), если в реальном времени[/QUOTE]
Но задача машиниста — следить за посадкой-высадкой. И не трогаться, пока всех не посадил. Я считаю, что будет интересно вести собаку в тяжелом графике с интенсивным пассажиропотоком, матерясь на ОП и нагоняя в пути. А уж как следить — да хоть ХУД с красным и зеленым огнем. [QUOTE=TRam_;160178]а число пассажиров меняется мало :) Ничуть, возможны и крутые различия.[/QUOTE] На мелком ОП их может быть пяток-другой, для собаки — секунда. А на пересадочном узле — сотни. К тому же, количество пассажиров требуется для объектов, генерирующих анимированных пассов. Это ты нас заразил, да? :) [QUOTE=TRam_;160178]не. Число пассажиров, определяемое рандомом, в диапазоне, указанном в конфиге[/QUOTE] В конфиге скорость посадки/высадки. |
[QUOTE][U][I]Тут алгоритм вычисления захода/ухода просто надо сделать[/I][/U][/QUOTE]у меня рандомно вычисляется новое количсество пассажиров вагоне. А делать рандом несколько раз - бессмыслено. А если сделать "количество садящихся пассажиров", "количество выходящих пассажиров" - это другое дело. Тогда погрузку растягивать по времени уже можно
[QUOTE]К тому же, количество пассажиров требуется для объектов, генерирующих анимированных пассов. Это ты нас заразил, да?[/QUOTE]но надо ж и [U]делать[/U] анимированных пассажиров, ожидающих поезд. И делать это всё как минимум полгода А триггер сделан полностью за вчерашнюю ночь - с 20-00 по 4-30 (итого 8,5 часов моей жизни, но на полгода обеспечит сообщество вполне работоспособными платформами) [QUOTE]Кстати, через SetMeshTranslation можно всякое веселье делать.[/QUOTE]а, понял. У меня абсолютно идентичные идеи были ещё в начале 2009 (но с вложенной анимацией, о SetMeshTranslation тогда ещё не знал), аж 10 страниц описания пассажиров, занимающих очередь на погрузку тогда исписал :) |
[QUOTE]Я считаю, что будет интересно вести собаку в тяжелом графике с интенсивным пассажиропотоком, матерясь на ОП и нагоняя в пути.[/QUOTE] И утрамбовывание их дверями, срывы стоп-крана, если кого-то зажало...
[QUOTE]В конфиге[/QUOTE] ПСа? [QUOTE]но надо ж и делать анимированных пассажиров, ожидающих поезд[/QUOTE] Ну это уж слишком... Хотя. ОЖИДающих и устремляющихся штурмовать двери) Мне все не дает покоя Выхино... [QUOTE] о SetMeshTranslation тогда ещё не знал[/QUOTE] Лол, я в каждой новой версии первым делом лезу в train.gs, locomotive.gs и meshobject.gs. |
[QUOTE]И утрамбовывание их дверями, срывы стоп-крана, если кого-то зажало...[/QUOTE]то появится новая каста в трс - "собаководы"...
[QUOTE]ПСа?[/QUOTE]чего угодно :) [QUOTE]Лол, я в каждой новой версии первым делом лезу в train.gs, locomotive.gs и meshobject.gs.[/QUOTE]а я в Vehicle.gs :) |
так, кому ещё удалось дождаться погрузки от этого триггера ? Или я опять его недотестил?
|
[QUOTE]чего угодно[/QUOTE] Я просто вот думаю, должна ли эта информация быть статичной?
|
[QUOTE=TRam_;160235]так, кому ещё удалось дождаться погрузки от этого триггера ? Или я опять его недотестил?[/QUOTE]
Вроде загружает, только необычно как то. Или так и задумано? Подогнал эелектру в 11 вагонов. Где то пасы уже были. Постоял на тригере секунд 30. В середине состава оказались вагоны пустые, по краям забиты :D |
[QUOTE]Вроде загружает, только необычно как то. Или так и задумано?[/QUOTE]да
[QUOTE]В середине состава оказались вагоны пустые, по краям забиты[/QUOTE]рандом так сработал :) |
[QUOTE=TRam_;160284]да
рандом так сработал :)[/QUOTE] Ну тогда классная вещь =) Спасиб. Как раз маршрут сейчас строю пригородный реальный. Ой как пригодится. |
Новый вариант в процессе. Готовы пункты 1, 3, 4, 6.
|
в пункте 3 не забудь рандом сделать :)
|
А он нужен? Вряд ли кто-либо будет ползать по вагонам проверяя сколько именно загрузилось. Важно лишь затрачиваемое время.
|
Миша ! Я тебе сказал сделать рандом, заначит надо :) Тем более время тоже должно быть немного рандомным. А то что за смысл - " в этом сценарии на платформе А стоять 10 секунд, на платформе Б - 20 секунд " . Это не дело!
|
А можно я выскажу предложение? Ну думаю можно.
Закрытие по гудку (клавиша H) это отлично, так же как и закрытие при трогании. Но может стоит ещё добавить закрытие по свистку (клавиша b) Потому что в реальности редко кто даёт пронзительный длинный гудок в пригороде. Ну а если нет так нет. И вопрос, а можно ли как то с помощью этой штуки реализовать следующее: Имеем путь. По бокам от него платформы. Тоесть, электра подъезжая к станции может открыть двери с одной стороны и с другой. Так вот можно ли сделать как то так,что бы некоторые поезда открывали двери на одну сторону, а другие на другую? |
кстати, у тебя какой трс? если 2009, то можешь закрывать и по t. А вообще подумаю насчёт b
по второму - думаю пока нет. Перед началом игры можно выбирать сторону (правый/левый), для отдельных сценариев вполне достаточно. Но вот менять эту сторону в процессе игры... |
[QUOTE=TRam_;160809]кстати, у тебя какой трс? если 2009, то можешь закрывать и по t. А вообще подумаю насчёт b[/QUOTE]
2009 и 2010. Сейчас уже всё на 2010 перетаскиваю. [QUOTE=TRam_;160809] по второму - думаю пока нет. Перед началом игры можно выбирать сторону (правый/левый), для отдельных сценариев вполне достаточно. Но вот менять эту сторону в процессе игры...[/QUOTE] Перед началом я знаю :) Кстати,а нужно именно точное физическое присутствие ПС на тригере для открытия дверей? Или существует какой то радиус действия, где тригер "захватывает" ПС? Я к тому что если не доехать например 1 метр физически до места установки тригера? Двери не откроются? |
радиус действия около 50 м
|
20, если быть точным. Радиус триггера можно настроить там, где находится список с маркером, триггером и т.д.
|
Такс, вот и итог проб и ошибок: [URL="http://narod.ru/disk/18923127000/RF%20PassStationTrigger.cdp.html"]http://narod.ru/disk/18923127000/RF%20PassStationTrigger.cdp.html[/URL]
Работает: начало и прекращение погрузки по Т, показ HUD'а по двойному Т. В худе можно выбрать вид процесса, также отображается его прогрессбар. В настройках указывается сторона платформы, имя, путь (в будущем это будет использоваться во всяких САВП), вид трафика (в пригородном, если поезд весь не влез, то накладывается штраф на скорость посадки/высадки), скорости посадки/высадки по умолчанию (скриптованные вагоны должны сами предоставлять эту инфу), длину платформы и величину трафика. Все числа в таблице трафика — в процентах от общей емкости состава. Я посчитал, что это лучший вариант, так как с одной платформы могут отправляться поезда разной вместительности. Возможно в дальнейшем стоит различать вид трафика не только по настройке в триггере, но и по поезду. Для этого можно создать отдельный продукт Local Passengers (пригородные пассажиры :)). Касательно скриптового управления. Информация получается через GetProperties() от вагона. При наличии в нем тега [I]scripteddoors[/I] ожидается, что за ним следует два числа — скорость погрузки/выгрузки слева и справа, пассажиров в секунду, дробные значения поддерживаются. Вопрос, стоит ли различать скорость посадки и высадки (читать 4 числа)? Месседжей-уведомлений есть три, отсылаются они поезду от триггера: "PassStationTrigger.Notify", "ProcessStarted <тип процесса>" — о начале процесса "PassStationTrigger.Notify", "ProcessCompleted" — об успешном его завершении "PassStationTrigger.Notify", "ProcessAborted" — о неуспешном завершении. Завершить процесс (в том числе закрыть двери) можно второй раз нажав на Т. Если сделать это до загорания на худе зеленого огня, то процесс будет считаться незавершенным. О маневрах во время посадки/высадки: они не поддерживаются. Нужно или запускать процесс после их, или завершать до. Из-за невозможности надежно опираться на объект поезд при маневрах, а также необходимости дублировать процесс для двух расцепившихся частей, или сливать в один при сцепке код сильно осложнался, раздувался и работал ненадежно. Решение, которе сейчас у меня назрело — не использовать поезд, а проводить процесс над массивом вагонов. В принципе для этого уже многое в коде готово, но я не могу более заниматься этим маркером, ибо стоят проекты важнее. Кто желает, может этим заняться, скрипт свободен для некоммерческого использования. АПИ, команды машинисту, правила сессии: их пока нет. Причина указана выше. Но, точно также, база под это дело заложена. Пока выходные, я смогу исправить в работе баги, если таковые обнаружены. Потом уже мне будет не до этого триггера. |
[QUOTE]Из-за невозможности надежно опираться на объект поезд при маневрах, а также необходимости дублировать процесс для двух расцепившихся частей, или сливать в один при сцепке код сильно осложнался, раздувался и работал ненадежно[/QUOTE]прицепные вагоны - не редкость... Постараюсь посмотреть и, может, что-то придумаю
|
Текущее время: 20:25. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim