Форум 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=13619)

NickLon 02.02.2011 13:21

Организация движения ПС, появляющегося из порталов
 
Всем привет!
Тема возникла в связи с необходимостью организовать движение ПС, который появляется из порталов, в сессии с помощью правил в определенной последовательности. Проблема заключается в том, что правила, которые существуют подразумевают явное указание в редакторе или ПС или машиниста. Но в редакторе то их не существует! Они уже в Drive session появятся.
Например, Schedule Rule, Drive Shedule Rule и т.д.
Задача в следующем. Когда ПС наедет на маркер, в зависимости от того, что или кто именно наехал вставить определенные команды машинисту. SheduleAtTrakMark не подходит, т.к. сначала нужно определить что именно или кто наехал на маркер. Если организовывать подчиненные правила, то две проверки в одной иерархии подчинения не сработают...
Как быть?:confused:

Kompozitor 02.02.2011 13:56

Животрепещущую тему поднял. Лично я давно мечтаю о команде, которая бы приписывала уникальное имя ПСу, что выехал из портала.

[QUOTE] в зависимости от того, что или кто именно наехал[/QUOTE]

А какже проверка по именам машинистов?

Опиши по порядку схему правил, хочется у себя попробовать, что и как. Или кинь тестовую сессию на какой нибудь дефолтной карте с дефолтным ПС.

NickLon 02.02.2011 15:08

[QUOTE=Kompozitor;238322]
А какже проверка по именам машинистов?
[/QUOTE]
Ну и что толку? Ну проверил командой Consist Check. Там можно указывать тип ПС (точнее, сам ПС) из всего списка, а не только из того, что стоит на карте. Но дальше то мне всё равно, кому-то конкретно нужно список команд всучить.
[QUOTE]
Опиши по порядку схему правил, хочется у себя попробовать, что и как.
[/QUOTE]
Chack trackside
подч- Consist Check
подч- подч- а вот тут что!?
Любому набору команд требуется указание кому именно их присвоить. Вот тут и загвоздка.

DonCapone 02.02.2011 15:47

Я понял в чем дело. Решал я такую проблему, и кстати тут где-то описано такое решение.
Во-первых, в некоторых сессиях командой driver schedule rule можно задавать команды машинистам, которых нету на карте. Это было на дефолтной карте Avery-drexel. Композитор выдвинул теорию, что для такого эффекта необходима уникольность имён машинистов(в дальнейшем это подтвердилось для дефолтной карты). Но на других картах мне достичь такого не удавалось. Потому, решение только одно:
Создаём на карте ПС с машинистами, имена которых идентичны именам поездов в портале(тех, которым ты собираешься задавать команды). Это будут "фиктивные" машинисты. В редакторе ты назначаешь через driver schedule rule команды нужному машинисту, так как он есть на карте. Чтобы небыло одинаковых машинистов, делаешь так, чтобы в начале сессии "фиктивные" машинисты сразу уехали в порталы и пропали. Затем команды будут задаваться портальным машинистам. Мной это было опробовано и проверено в сценарии: [url]http://www.trainsim.ru/forum/showthread.php?t=13473[/url] Правда там команда задаётся редко, и может не задаться вообще(события сценария построены по рандомному принципу).

Ну а проверку ПС, проходящего по триггеру делаем тупо правилом triggercheck с проверкой по имени машиниста. Там можно задавать имена вообще любых машинистов.

NickLon 02.02.2011 21:19

О! Эврика! DriveScheleRule! Можно задать имя одного машиниста. Ну и хрен с ним, если на маршруте боты, таскающие грузовые составы у меня будут все Андреи, а пассажирские - Томы. Только в редакторе они должны по одному существовать на момент заведения правила!
Это, правда, только теория. Сейчас проверю работоспособность этой идеи.

NickLon 02.02.2011 21:57

Не, не взлетит... Даже без теста прозрел. Если на карте два Андрея - кому из них команды присваивать? Коллапс...
А что касается уникальности имен машинистов, портал может штамповать один и тот же поезд хоть три подряд. И вот уже не уникальны...
Думаем дальше...

DonCapone 03.02.2011 07:30

[QUOTE]Не, не взлетит... Даже без теста прозрел. Если на карте два Андрея - кому из них команды присваивать? Коллапс...[/QUOTE]
Команды даст тому, кто появился первый.
[QUOTE]А что касается уникальности имен машинистов, портал может штамповать один и тот же поезд хоть три подряд.[/QUOTE]
Да, тут только отказ от рандома поможет.
[QUOTE]Думаем дальше... [/QUOTE]
Остаётся только понять, в каком случает DSR позволяет задавать имена всем машинистам, даже тем, которых нет на карте. Попробуй убрать всех машинистов из правила Driver setup, тогда появится возможность задавать через DSR команды любому из имеющихся машинистов. Потом снова поставишь машинистов в driver setup.

Kompozitor 03.02.2011 08:16

[QUOTE=NickLon;238439]
А что касается уникальности имен машинистов, портал может штамповать один и тот же поезд хоть три подряд.[/QUOTE]
Насчет "подряд" - это же можно, видимо, урегулировать триггерными командами, чтоб первой командой в плане триггерного бота было ожидание какого-либо события, например, дождаться, пока "тёзка" исчезнет в портале.
Мы вот с Don Capone где-то тут перетирали насчет необходимости бота, который будет ездить где-то в лесу, наступая на триггеры через определенное время и выполняя роль часов.

Лично у меня в портальных делах свой интерес - к примеру, должны встретитmся два поезда в пункте смены локомотива и поменяться локами - пофиг, что кто-то раньше или позже прибудет, лишь бы в портале сидел бот и по прибытию поезда через проверку уникального имени вагона был готов сменить лок.

NickLon 03.02.2011 13:43

Да, кстати, а как задать появление ПС из портала не рандомно, а по порядку, как задал?
А вообще, я вот подумал, что использование порталов для появления и исчезновения ПС годится только для покатушек. Если делать серьёзную сессию/сценарий, то в них ПС должен использоваться по назначению. То есть, вагоны - разгружаться и загружаться, соответственно нужно устраивать оборот вагонов. Локомотивы должны "жить" в депо и становиться под состав по мере необходимости и т.д.
Так что, не так страшен черт, как его малютка. :-)

DonCapone 03.02.2011 16:15

[QUOTE]Да, кстати, а как задать появление ПС из портала не рандомно, а по порядку, как задал?[/QUOTE]
Отвечает Капитан Очевидность: в настройках портала Order to emit вместо Random поставить Sequential
При условии, конечно, что ты изначально добавил поезда в портал в нужном порядке.

[QUOTE]Если делать серьёзную сессию/сценарий[/QUOTE]
Твои планы ещё страшнее планов Композитора :)

Dublin 03.02.2011 16:20

[QUOTE=DonCapone;238616]Твои планы ещё страшнее планов Композитора :)[/QUOTE]

это нереальный объем работ:crazy:

DonCapone 03.02.2011 16:23

Ну... объём работ ещё может уложиться в голове. Нереально время, нужное на тесты. При создании сессий работа - это процентов 30 времени. Остальное - тесты.

Скорее ауран допилит мультиплеер/взломают мультиплеер, и такие функции будут выполнять игроки, чем кто-то заставит грамотно работать по такому алгоритму ботов.

Dublin 03.02.2011 16:25

О да, я этого и жду)
Процентов 30...если куча крупных станций и ПС, и каждому ПС нужно куча заданий...проценты резко повысятся:)

DonCapone 03.02.2011 16:45

Нет. Тут затраты на тесты растут пропорционально затратам на разработку. Особенно ближе к концу создания. Ну... конечно если у тебя на этих крупных станциях куча ПС должна выполнить задания минут за 20, то да, тут время на тесты не много потратится :)

NickLon 04.02.2011 12:47

Ууу, как всё запущено! Да тут не только и не столько в порталах дело, в конце концов, можно обойтись и без них, а сколько вообще о необходимости какой-то конструкции, которая бы четко проверяла кто/что именно проехало по маркеру, прежде, чем командой ScheduleAttrackMark изменять набор команд проехавшему.
У меня маневровый на станции во время маневра наткнулся на маркер с командами, предназначенными поездному составу. А как это обойти с помощью правил (собственно, и команды правилом добавляются) пока не придумал и подозреваю, что весьма затруднительно это сделать, если вообще возможно.

DonCapone 04.02.2011 13:59

роверять кто/что проехало по маркеру можно обычным триггерчеком. Триггер ставь прямо радом с маркером, на котором задаётся ScheduleATTrackmarck. В триггерчеке укажи, кого именно проверять, и [B]обязательно[/B] сними галочку "wait for child rules to complete even if there is no train at trigger". Тогда SAT будет работать только когда на триггере находится нужный поезд. Когда нужный поезд съедет с триггера, SAT перестанет выполняться.

Kompozitor 04.02.2011 19:16

[QUOTE=NickLon;238439] портал может штамповать один и тот же поезд хоть три подряд. И вот уже не уникальны...[/QUOTE]
Грубо говоря, я примерно такое хочу - в портале, находящемся, допустим, в депо Полтава и построенном специально для ночного экспресса "Киев-Харьков", находится лок и по триггеру ждет только этот поезд. А для дневного экспресса можно отдельный портал поставить с другим именем бота и с проверкой другого состава по имени вагона.

А следующий "подряд" должен выполниться, когда поезд совершит полный оборот и опять прибудет на станцию. К этому времени первый лок, вышедший из этого же портала уж точно должен исчезнуть в портале конечной станции своего плеча и вопрос с "однофамильцами" отпадает.

То есть в моих "страшных" )) задумках порталов должно быть [B]очень[/B] много и они [B]только [/B] для локов. вагоны не должны ни попадать, ни исчезать в порталах, т.к. их уникальные имена важны для сессии.

NickLon 04.02.2011 21:44

Не, в итоге я от порталов отказался. Вагоны должны на путях стоять, а локомотивы - в депо. И оттуда выходить под состав.
Сейчас другой вопрос возник. Впрочем, сначала о Check trigger. Там третья галка, как я понял, обуславливает срабатывание проверки триггера. Вот фраза мне не понятна: "... train is heading forward/backward inti the trigger". Поезд всегда передом идёт. Что это означает?
И теперь мой вопрос. Перед конечной, тупиковой станцией нужно убрать по маркеру все команды и заменить на другие. Так сказать, прибытия на конечною станцию. Есть такое правило, но там нужно указать машиниста конкретного.

Kompozitor 04.02.2011 22:13

[QUOTE]а локомотивы - в депо. И оттуда выходить под состав.[/QUOTE]
Ну считай, что ты, допустим, приехал в депо, сдал лок маневровой бригате, которая погнала его в цех(в нашем случае-портал в цеху) Тебе на это уже фиолетово, ты этого не видишь, ты вообще сел в электричку и поехал с работы домой.
Просто для бесконечной сессии без порталов 100500 локов надо.
[QUOTE]фраза мне не понятна: "... train is heading forward/backward inti the trigger". Поезд всегда передом идёт. Что это означает?[/QUOTE]
Видимо, направление триггера. Триггер, хоть и симметрично выхлядит, имеет свой зад и перед. Вот в этом смысле, наверно - в спину или в лицо триггеру ПС смотрит, когда едет.

Dublin 04.02.2011 22:27

Реализовать бы еще появление вагонов.. впринципе дать команду маневровому, чтоб он выкатил состав и уехал обратно в портал. Но выкатывать до бесконечности он не может, да и игрок ездит не со скоростью самолета:(

Kompozitor 04.02.2011 22:33

[QUOTE]Реализовать бы еще появление вагонов..[/QUOTE]
Да они и без лока могут появляться из портала. Я, например, хочу сесть в вагон в начале карты, и проехать всю карту в этом вагоне, а портальные локи пусть меняются.
Тут вариантов много, смотря кем ты хочешь быть в сессии - машинистом или пассажиром. Мне нужно и то и то в одной сессии.

Dublin 04.02.2011 22:37

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

Kompozitor 05.02.2011 00:02

[B]Dublin[/B], да не вопрос. Из другого портала может появляться лок, который и будет забирать твои вагоны куда ты хочешь.
И в том, что имена вагонов не уникальны, нет проблем - есть команды, позволяющие цепляться не по имени вагона, а по маркеру или собранному маршруту.

Dublin 05.02.2011 00:21

Я имею ввиду если бот будет на ОДНУ станцию вагоны приганять из портала)Он их будет ставить и ставить, а я не буду успевать их вывозить)Или лучше большой интервал времени "вывозки" боту дать

NickLon 05.02.2011 00:22

[QUOTE=Kompozitor;239060]Триггер, хоть и симметрично выхлядит, имеет свой зад и перед. Вот в этом смысле, наверно - в спину или в лицо триггеру ПС смотрит, когда едет.[/QUOTE]
"Рыбаки ловили рыбу,
А поймали рака.
Целый день они искали
Где у рака срака!" :rofl:
Это из народных частушек. Сто баллов! За "хоть и симметрично выхлядит, имеет свой зад и перед." Ржал до опупения!.. А общем методом тыка придется...

TRam_ 05.02.2011 01:20

[QUOTE]Рыбаки ловили рыбу,
А поймали рака.
Целый день они искали
Где у рака срака![/QUOTE]если я правильно помню курс 7 класса по биологии, то выделительная система у рака на морде.

[QUOTE]"хоть и симметрично выхлядит, имеет свой зад и перед."[/QUOTE]в одной из версий он был сдвинут в сторону (?), тогда можно было бы определять.

Kompozitor 05.02.2011 02:04

[QUOTE=NickLon;239118]А общем методом тыка придется...[/QUOTE]
Дык создай триггер с другой мешью, чтоб было ясно, куда он смотрит.
А меня можешь в оффтопе АПа занести в соответствуюшую хохмотему.
На память, так-скать. :p

[QUOTE]в одной из версий он был сдвинут в сторону (?), [/QUOTE]
О, точно - тег trackside поменять.

DonCapone 05.02.2011 05:45

[QUOTE]Видимо, направление триггера. Триггер, хоть и симметрично выхлядит, имеет свой зад и перед. Вот в этом смысле, наверно - в спину или в лицо триггеру ПС смотрит, когда едет.[/QUOTE]
Этож надо так смысл переврать! "[B]train[/B] is [B]heading[/B] forward/backward inti the trigger". Выделенный текст не наводит ни на какие мысли? :)
У триггера нет зада и переда, он симметричен. Зад и перед есть у маркера.
Сие означает "Срабатывать если поезд проезжает триггер передом/задом". То есть, грубо говоря, вперёд едет поезд, или реверсом.

[QUOTE]Реализовать бы еще появление вагонов.. впринципе дать команду маневровому, чтоб он выкатил состав и уехал обратно в портал.[/QUOTE]
Так и делается: в портале сразу создаётся нужный состав, в голове у него маневровый. Машинисту маневрового сразу задаются команды после вывода вагонов загрузить их, отцепиться, уехать в портал.
[QUOTE]Но выкатывать до бесконечности он не может[/QUOTE]
Это ещё почему? Выкатили состав - те его взял, и уехал. Пока ты уехал - выкатывают новый состав туда же. Ты его потом опять цепляешь. Так до бесконечности. А там, куда ты привёз состав - выезжает другой маневровый, уже без вагонов, и загоняет в портал привезённый состав.
[QUOTE]Он их будет ставить и ставить, а я не буду успевать их вывозить)[/QUOTE]
А, вот что. Ну так ты выводи составы не по времени, а по условям, используя CPC:Emit train.
Это, в общем-то, и было частью концепции моей бесконечной сессии, но всё споткнулось об один момент: портал жрёт поезда и передом и задом, поэтому при прицепке состава портал, предназначенный для пожирания маневрового поезда может съесть и тебя.

[QUOTE]Перед конечной, тупиковой станцией нужно убрать по маркеру все команды и заменить на другие. Так сказать, прибытия на конечною станцию. Есть такое правило, но там нужно указать машиниста конкретного.[/QUOTE]
Можно менять команды тем же ScheduleAtTrackmarok, в связке с триггерчеком с временным срабатыванием. Я уже выше объяснил, как это.

Dublin 06.02.2011 22:08

[QUOTE=DonCapone;239200]А там, куда ты привёз состав - выезжает другой маневровый, уже без вагонов, и загоняет в портал привезённый состав.[/QUOTE]
[QUOTE=DonCapone;239200]А, вот что. Ну так ты выводи составы не по времени, а по условям, используя CPC:Emit train.[/QUOTE]

А можно в этих моментах поподробнее? Я не силен в правилах:(
И какое все таки правило давать маневровому, что бы забрал состав когда я его привезу? По идее если указать номер вагона, маневряк будет ждать его появления "на свет" из портала, а затем он за этим вагоном должен поехать!?

Kompozitor 06.02.2011 23:06

[B]Dublin[/B], возьми еще пачку правил и команд с ДЛС. Там есть интересные команды для прицепки к ПС независимо от имени вагона. Это важно, например, если вагон из портала.
Поосто можно указать, за каким маркером или сигналом цепляться.
[url]http://rghost.ru/3264886[/url]

Dublin 07.02.2011 01:44

А можно сделать как то проще, чем боту прописывать каждое название станции? А если это электричка, так этих станций вообще с ху тучу:confused:

Kompozitor 07.02.2011 02:31

[B]Dublin[/B], "как-то проще" - это, допустим, выполнять запакованные "Shedule Library", например, чтоб не прописывать одни и те же задания всем ботам. На трамвайных и метрошных картах это повсеместно применяется.
Как бы полаконичней - допустим, в нем указано, что должен делать машинист между Харьковом и Киевом. И не важно, откуда и куда поезд - из Москвы или до Львова. бот приехал в определенную точку, выполнил "Copy command" из библиотеки, а дальше другую библиотеку выполнит. И потом, это удобно, когда в бесконечной сессии хочешь взять у бота управление на себя. выкинул мышкой запакованное "Shedule Library" и сам рули. А дальше отдал лок боту и он уже следующий план распакует и выполнит.

Dublin 07.02.2011 02:45

Это стандартная команда или из пака команд с ДЛС?

Kompozitor 07.02.2011 02:53

Это из пака Js-Trf, где path Control. А по поводу тех, что я выложил, там много неясностей. Вроде и куиды все, только не ясно, что с чем надо употреблять.

зы: "Shedule Library" - это не команда, а правило. Команды - "Copy commands".
[QUOTE]А если это электричка[/QUOTE]
Отож-бо для них это самое удобное. Один раз насоздавал командный список, и пущай выполняют все.

Dublin 07.02.2011 03:03

WaitUntilNotRed
А это правило что творит?

TRam_ 07.02.2011 03:11

Поезд будет стоять и выполнять эту команду до тех пор, пока на светофоре красный. Когда будет жёлтый или зелёный, команда выполнится и поезд будет выполнять следующую.

Dublin 07.02.2011 03:17

Так а смысл. Бот и так на красный не проедет

TRam_ 07.02.2011 03:18

стрелки бот лишний раз дёргать не будет.

Dublin 08.02.2011 00:40

Вобщем составил я маршруты в path control, поставил в задании машиниста этот контрол+автодрайв(к какому то трэкмарку). Когда зашел в игру - вроде все нормально, поезд потихоньку выкатывается из портала, в списке заданий почему то пропал path control...И когда поезд подъезжал к стрелке - остановился, ждал освобождения состава, потому что стрелка была переведена не в его направление. Что я не так сделал? Стрелки сам бот не переводит!:mad:

TRam_ 08.02.2011 00:43

Нельзя заходить из-под редактора при использовании path control. Надо выходить из него и загружать миссию отдельно.


Текущее время: 20:45. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim