Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   TrainZ - Маршруты и сценарии (http://www.trainsim.ru/forum/forumdisplay.php?f=24)
-   -   Триггер "пассажирская платформа" (http://www.trainsim.ru/forum/showthread.php?t=9953)

TRam_ 07.03.2010 05:48

Триггер "пассажирская платформа"
 
Наделал саму СССРовскую платформу :)

Выполнена в виде триггера. Устанавливается где-то посередине пути рядом с "реальной" платформой. Зелёный кубик находится справа от правильного направления пути (т.е. если в настройках ничего не менять, то он должен залезать на(под) платформу)

Естественно, пассажиров на платформу на карте он не ставит, но пронаблюдать за пассажирами в вагоне, отследив момент загрузки, вполне можно. (Загрузка происходит мгновенно - да простят меня те, кто хотят постепенного увеличения/уменьшения числа пассажиров)


Теперь настройки

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

Gregory_777 07.03.2010 08:33

Ухтышка!!!

genesis 07.03.2010 10:50

Для тестов подойдет, но не для нормального использования.

genesis 07.03.2010 11:38

Сообщение при нажатии T такое: "DriverDisplay", "ResetTripMeter"

TRam_ 07.03.2010 13:41

в 2006 такого сообщения нет (я в ней пока работаю). Хорошо, сделаю

TRam_ 07.03.2010 14:16

переделал [url]http://dump.ru/file/4407050[/url]

Единственное что - протестировать не смог. А так должно работать :)


В 2006 двери открываются автоматически, в 2009 и выше - по клавише T (закрываются и по свистку, и по T)

Диспетчер 07.03.2010 14:39

[QUOTE=TRam_;160034]переделал [url]http://dump.ru/file/4407050[/url]

Единственное что - протестировать не смог. А так должно работать :)


В 2006 двери открываются автоматически, в 2009 и выше - по клавише T (закрываются и по свистку, и по T)[/QUOTE]
Здорово получилось,спасибо!Теперь как в RW можно производить посадку пассажиров......:)

Добрый 07.03.2010 14:57

[B]Tram[/B], хорошая вещь, но почему в 2006-м до сих пор? Сапожник без сапог?;)

TRam_ 07.03.2010 15:50

Всё, готово :)
[url]http://dump.ru/file/4407305[/url]
оставшиеся баги поправил


[QUOTE]Tram, хорошая вещь, но почему в 2006-м до сих пор? Сапожник без сапог?[/QUOTE]потому что у Volk'a 2006. А полувагон, сс*ка, заколдованный - одинаковые версии, а работает по-разному

genesis 07.03.2010 19:00

Это сообщение появилось в классике с новой версией Custom HUD.

TRam_ 07.03.2010 19:12

[QUOTE]Это сообщение появилось в классике с новой версией Custom HUD.[/QUOTE]не знал :)

зы - тестить будешь?

genesis 07.03.2010 20:44

Хм, сейчас попробую :)

genesis 07.03.2010 21:54

Проверил. Работало все, кроме загрузки, число пассажиров не менялось.

Что нужно для готовой к употреблению версии:[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 пунктам как наиболее важным.

TRam_ 07.03.2010 22:25

[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]я не против :)

genesis 07.03.2010 22:38

[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. Для ИИ нужна команды начала, окончания и всего процесса (с временем).

TRam_ 07.03.2010 22:42

[QUOTE]Train.GetVehicles()[/QUOTE]что то я затупил. GSTrackSearch. И Vehicle.GetLength()

[QUOTE]Что означает, что триггер неприменим для интенсивного пригородного сообщения и метро, где длительностью процесса посадки/высадки пренебрегать нельзя.[/QUOTE]погрузка происходит через 15-30 секунд после открытия дверей. Если двери закроют раньше - погрузки вообще не произойдёт. Другое дело что погрузка не наблюдается в реальном времени - с этим минусом согласен. Хотя попробуй определи, закончили ли люди появляться или нет :)))), если в реальном времени

[QUOTE]В Мск собаки не свистят[/QUOTE]на савёловском ещё как свистят :)

[QUOTE]Платформы бывают большие и маленькие[/QUOTE]а число пассажиров меняется мало :)

[QUOTE]через них загружаем количество пассажиров, указанное в конфиге[/QUOTE]не. Число пассажиров, определяемое рандомом, в диапазоне, указанном в конфиге

Tramwayz 07.03.2010 22:52

[QUOTE=genesis;160176]В Мск собаки не свистят.[/QUOTE]

Я те дам "не свистят", ещё как свистят, по крайней мере на Кивухе.

Combine 07.03.2010 22:54

Кстати, через SetMeshTranslation можно всякое веселье делать.

[QUOTE]В GetProperties должен быть признак для КЛУБа. Насчет этого стоит связаться с Александром[/QUOTE] Пока остановились на признаке, что это ОП\станция и названии.

[QUOTE]погрузка происходит через 15-30 секунд после открытия дверей. Если двери закроют раньше - погрузки вообще не произойдёт. Другое дело что погрузка не наблюдается в реальном времени - с этим минусом согласен. Хотя попробуй определи, закончили ли люди появляться или нет ))), если в реальном времени[/QUOTE] Еще в метро часто принудительно обрывают посадку, нужно и этот момент отработать :)

По свистку, ИМХО, делать не стоит. Ибо в пригородном часто свистят уже после дверей, в метро вообще не свистят и в целом это не связанные между собой вещи.

TRam_ 07.03.2010 23:06

в 2006 свисток - единственная обрабатываема вещь. Новичкам - элекропоездникам такая штука понадобится. А метро для 2006 не будет - ты сам знаешь в какие тормоза превращаются полигоны тоннелей в ней. В 2009 уже этот триггер запускает посадку по клавише T (в 2006 - сразу, я на это заплатку поставил)

[QUOTE]SetMeshTranslation можно всякое веселье делать.[/QUOTE]а если добавить поворот, и телескопические анимации, то получаем универсальный инструмент под перемычки

[QUOTE]Еще в метро часто принудительно обрывают посадку, нужно и этот момент отработать[/QUOTE]когда посадка мгновенная, её не оборвёшь (по определению слова "мгоновенный"). Тут алгоритм вычисления захода/ухода просто надо сделать

Combine 07.03.2010 23:11

[QUOTE]когда посадка мгновенная, её не оборвёшь (по определению слова "мгоновенный")[/QUOTE] Я про постепенную. В метро это (время посадки-высадки) определяющая величина для всего.

genesis 07.03.2010 23:12

[QUOTE=TRam_;160178]погрузка происходит через 15-30 секунд после открытия дверей. Если двери закроют раньше - погрузки вообще не произойдёт. Другое дело что погрузка не наблюдается в реальном времени - с этим минусом согласен. Хотя попробуй определи, закончили ли люди появляться или нет :)))), если в реальном времени[/QUOTE]
Но задача машиниста — следить за посадкой-высадкой. И не трогаться, пока всех не посадил. Я считаю, что будет интересно вести собаку в тяжелом графике с интенсивным пассажиропотоком, матерясь на ОП и нагоняя в пути.
А уж как следить — да хоть ХУД с красным и зеленым огнем.
[QUOTE=TRam_;160178]а число пассажиров меняется мало :)
Ничуть, возможны и крутые различия.[/QUOTE]
На мелком ОП их может быть пяток-другой, для собаки — секунда. А на пересадочном узле — сотни.
К тому же, количество пассажиров требуется для объектов, генерирующих анимированных пассов. Это ты нас заразил, да? :)
[QUOTE=TRam_;160178]не. Число пассажиров, определяемое рандомом, в диапазоне, указанном в конфиге[/QUOTE]
В конфиге скорость посадки/высадки.

TRam_ 07.03.2010 23:14

[QUOTE][U][I]Тут алгоритм вычисления захода/ухода просто надо сделать[/I][/U][/QUOTE]у меня рандомно вычисляется новое количсество пассажиров вагоне. А делать рандом несколько раз - бессмыслено. А если сделать "количество садящихся пассажиров", "количество выходящих пассажиров" - это другое дело. Тогда погрузку растягивать по времени уже можно

[QUOTE]К тому же, количество пассажиров требуется для объектов, генерирующих анимированных пассов. Это ты нас заразил, да?[/QUOTE]но надо ж и [U]делать[/U] анимированных пассажиров, ожидающих поезд. И делать это всё как минимум полгода

А триггер сделан полностью за вчерашнюю ночь - с 20-00 по 4-30 (итого 8,5 часов моей жизни, но на полгода обеспечит сообщество вполне работоспособными платформами)


[QUOTE]Кстати, через SetMeshTranslation можно всякое веселье делать.[/QUOTE]а, понял. У меня абсолютно идентичные идеи были ещё в начале 2009 (но с вложенной анимацией, о SetMeshTranslation тогда ещё не знал), аж 10 страниц описания пассажиров, занимающих очередь на погрузку тогда исписал :)

Combine 08.03.2010 01:08

[QUOTE]Я считаю, что будет интересно вести собаку в тяжелом графике с интенсивным пассажиропотоком, матерясь на ОП и нагоняя в пути.[/QUOTE] И утрамбовывание их дверями, срывы стоп-крана, если кого-то зажало...

[QUOTE]В конфиге[/QUOTE] ПСа?

[QUOTE]но надо ж и делать анимированных пассажиров, ожидающих поезд[/QUOTE] Ну это уж слишком... Хотя. ОЖИДающих и устремляющихся штурмовать двери) Мне все не дает покоя Выхино...

[QUOTE] о SetMeshTranslation тогда ещё не знал[/QUOTE] Лол, я в каждой новой версии первым делом лезу в train.gs, locomotive.gs и meshobject.gs.

TRam_ 08.03.2010 01:51

[QUOTE]И утрамбовывание их дверями, срывы стоп-крана, если кого-то зажало...[/QUOTE]то появится новая каста в трс - "собаководы"...

[QUOTE]ПСа?[/QUOTE]чего угодно :)

[QUOTE]Лол, я в каждой новой версии первым делом лезу в train.gs, locomotive.gs и meshobject.gs.[/QUOTE]а я в Vehicle.gs :)

TRam_ 08.03.2010 02:19

так, кому ещё удалось дождаться погрузки от этого триггера ? Или я опять его недотестил?

Combine 08.03.2010 03:59

[QUOTE]чего угодно[/QUOTE] Я просто вот думаю, должна ли эта информация быть статичной?

Shney 08.03.2010 10:48

[QUOTE=TRam_;160235]так, кому ещё удалось дождаться погрузки от этого триггера ? Или я опять его недотестил?[/QUOTE]
Вроде загружает, только необычно как то. Или так и задумано?
Подогнал эелектру в 11 вагонов. Где то пасы уже были. Постоял на тригере секунд 30. В середине состава оказались вагоны пустые, по краям забиты :D

TRam_ 08.03.2010 11:56

[QUOTE]Вроде загружает, только необычно как то. Или так и задумано?[/QUOTE]да

[QUOTE]В середине состава оказались вагоны пустые, по краям забиты[/QUOTE]рандом так сработал :)

Shney 08.03.2010 12:11

[QUOTE=TRam_;160284]да

рандом так сработал :)[/QUOTE]
Ну тогда классная вещь =) Спасиб. Как раз маршрут сейчас строю пригородный реальный. Ой как пригодится.

genesis 09.03.2010 00:45

Новый вариант в процессе. Готовы пункты 1, 3, 4, 6.

TRam_ 09.03.2010 01:43

в пункте 3 не забудь рандом сделать :)

genesis 09.03.2010 13:12

А он нужен? Вряд ли кто-либо будет ползать по вагонам проверяя сколько именно загрузилось. Важно лишь затрачиваемое время.

TRam_ 09.03.2010 14:42

Миша ! Я тебе сказал сделать рандом, заначит надо :) Тем более время тоже должно быть немного рандомным. А то что за смысл - " в этом сценарии на платформе А стоять 10 секунд, на платформе Б - 20 секунд " . Это не дело!

Shney 10.03.2010 10:16

А можно я выскажу предложение? Ну думаю можно.
Закрытие по гудку (клавиша H) это отлично, так же как и закрытие при трогании. Но может стоит ещё добавить закрытие по свистку (клавиша b) Потому что в реальности редко кто даёт пронзительный длинный гудок в пригороде. Ну а если нет так нет.
И вопрос, а можно ли как то с помощью этой штуки реализовать следующее:
Имеем путь. По бокам от него платформы. Тоесть, электра подъезжая к станции может открыть двери с одной стороны и с другой. Так вот можно ли сделать как то так,что бы некоторые поезда открывали двери на одну сторону, а другие на другую?

TRam_ 10.03.2010 11:32

кстати, у тебя какой трс? если 2009, то можешь закрывать и по t. А вообще подумаю насчёт b

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

Shney 10.03.2010 11:39

[QUOTE=TRam_;160809]кстати, у тебя какой трс? если 2009, то можешь закрывать и по t. А вообще подумаю насчёт b[/QUOTE]
2009 и 2010. Сейчас уже всё на 2010 перетаскиваю.
[QUOTE=TRam_;160809]
по второму - думаю пока нет. Перед началом игры можно выбирать сторону (правый/левый), для отдельных сценариев вполне достаточно. Но вот менять эту сторону в процессе игры...[/QUOTE]
Перед началом я знаю :)
Кстати,а нужно именно точное физическое присутствие ПС на тригере для открытия дверей? Или существует какой то радиус действия, где тригер "захватывает" ПС? Я к тому что если не доехать например 1 метр физически до места установки тригера? Двери не откроются?

TRam_ 10.03.2010 14:59

радиус действия около 50 м

genesis 10.03.2010 16:01

20, если быть точным. Радиус триггера можно настроить там, где находится список с маркером, триггером и т.д.

genesis 20.03.2010 00:10

Такс, вот и итог проб и ошибок: [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" — о неуспешном завершении.

Завершить процесс (в том числе закрыть двери) можно второй раз нажав на Т. Если сделать это до загорания на худе зеленого огня, то процесс будет считаться незавершенным.

О маневрах во время посадки/высадки: они не поддерживаются. Нужно или запускать процесс после их, или завершать до. Из-за невозможности надежно опираться на объект поезд при маневрах, а также необходимости дублировать процесс для двух расцепившихся частей, или сливать в один при сцепке код сильно осложнался, раздувался и работал ненадежно. Решение, которе сейчас у меня назрело — не использовать поезд, а проводить процесс над массивом вагонов. В принципе для этого уже многое в коде готово, но я не могу более заниматься этим маркером, ибо стоят проекты важнее. Кто желает, может этим заняться, скрипт свободен для некоммерческого использования.

АПИ, команды машинисту, правила сессии: их пока нет. Причина указана выше. Но, точно также, база под это дело заложена.

Пока выходные, я смогу исправить в работе баги, если таковые обнаружены. Потом уже мне будет не до этого триггера.

TRam_ 20.03.2010 00:27

[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