Перейти к содержанию
Admin

Заказ №30: "Маршрутизация метро"

Рекомендуемые сообщения

Основное направление разработки на данный момент:

Описание на GitHub | Вспомогательная таблица

 

 


 

 

Добавил новый заказ.
Планируется передать проработку маршрутов и написание конкретных команд - на аутсорс игрокам.

 

Оплата за схему развязок = 6 стеков изумрудных блоков

Оплата за подготовку отдельной развязки = 1 стек изумрудных блоков

 

Список станций тут.

 

В качестве награды, как минимум - CSLf8v7.png

 

Схема линий, станций и развязок:

efkBknA.jpg

 

 

Развязки, маршруты, команды:

Спойлер

 

При текущем подходе [для экономии командных блоков при проверке проезжающего игрока] используется "маршрут по умолчанию = на спаун": это означает, что все стрелки по умолчанию ведут на спаун.

Из-за этого необходимо выполнять сброс стрелки после проезда игрока.

 

 

При подготовке команд:

  • сначала идут команды в командных блоках: последовательность - сверху (от нажимных рельс) вниз
  • в конце должна быть команда сброса конкретной стрелки в исходное положение

 

Коды направлений рельс:

  • 0: Север-Юг (Юг-Север)
  • 1: Запад-Восток (Восток-Запад).
  • 6: Юг-Восток (Восток-Юг).
  • 7: Юг-Запад (Запад-Юг).
  • 8: Север-Запад (Запад-Север).
  • 9: Север-Восток (Восток-Север).

 

Последний вариант с деревом квадрантов

Спойлер

 

Про КБ выдачи названия станции в чат и ассоциации номер -> адрес в отдельную группу КБ  тут

Список развязок и станций с адресами  тут

Схема дерева квадрантов и станций и развязок на нем  тут

 

У нас 61 развязка и 43 станции (не считая новый спаун)

Глубина вложенности дерева - 5 уровней.

Но я немного читерил - те развязки, которые находятся близко, но у самой границы квадранта, я разносил в разные ячейки, дабы не увеличивать глубину дерева. 

 

C1Q34ep.png

Описание команд развязки тут

 

 

 

 

Старый вариант

Спойлер

 

 

1b8YBqs.jpg

 

Стрелка 1



/execute @p[r=20,score_MetroSt_min=2,score_MetroSt=2] ~ ~ ~ /setblock 44 33 -100 rail 0
/execute @p[r=20,score_MetroSt_min=7,score_MetroSt=15] ~ ~ ~ /setblock 44 33 -100 rail 0
/execute @p[r=20,score_MetroSt_min=24,score_MetroSt=26] ~ ~ ~ /setblock 44 33 -100 rail 0
/execute @p[r=20,score_MetroSt_min=32,score_MetroSt=42] ~ ~ ~ /setblock 44 33 -100 rail 0

/setblock 44 33 -100 rail 7 

Стрелка 3



/execute @p[r=20,score_MetroSt_min=1,score_MetroSt=43] ~ ~ ~ /setblock 41 33 -91 rail 9

/setblock 41 33 -91 rail 0 

 

Стрелка 2



/execute @p[r=20,score_MetroSt_min=1,score_MetroSt=1] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=3,score_MetroSt=6] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=16,score_MetroSt=23] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=27,score_MetroSt=31] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=43,score_MetroSt=43] ~ ~ ~ /setblock 41 33 -96 rail 8

/setblock 41 33 -96 rail 0  

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, гемор-гемор, а можно где-нибудь ознакомиться с алгоритмом / воплощением существующей схему? Техдокументацию гони)), в общем, вдруг да осилим на основе существующей, а? А то разговоры идут, а даже оценить, насколько это осуществимо лично мне до сих пор не удалось. Что у нас, инженеров-программистов нету? Политех тут уже обсуждали, вроде не только я оттуда.

Ну, если тебе правда это интересно, то по этой теме предлагаю переместиться в тему заказа по модернизации метро.

 

А вкратце:

  • схему пультов станций можно глянуть, скачав фрагмент карты
  • схему развилок можно посмотреть также или попробовать проникнуть в действующие: например, вроде бы, Плотник делал по новому принципу ближайшую развязку к станции ЦБ - попробуй туда проникнуть

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

 

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

 

Повторюсь. На новой версии у меня пока не работает фордж, который нужен загрузчику карты. Я пробую с этим бороться, но пока не сильно активно, ибо то времени нет, то голова не работает. Так что самостоятельно загрузить нужные куски я пока не могу. Если у тебя есть, то можно скинуть их архивами на мыло?

 

И еще вопрос - вы там сразу все наживую делали, что ли? Без плана))? То есть, по-идее, в голове или на бумажке был алгоритм, переменные, константы)). Или я неправильно представляю себе программирование в майне, спрошу еще у товарищей)))). Я пока в целом принцип работы не понимаю. Но мне интересно).

 

Но если что - ты меня из тюрьмы вынешь?))))

 

ЗЫ. Если болтовня наводит на мысль, то ее можно перенести в соответствующую тему :Р, обычно это не проблема

ЗЗЫ. Пойду еще раз эту тему перечитаю

Мне так нравится метро прямоугольным, я так лучше понимаю)). Возможно, не помешало бы сделать большую карту на станции метро Спаун /мне так очень нравится эта идея/, да и мое давнее предложение сделать уже прописанный, но на самом деле не существующий слой на карте - "метро", причем не только со станциями, но и с туннелями - мне кажется актуальным)).

 

Вопрос знатокам: Что означает "дюпать рельсы" и как это делается? Или это уже неактуально из-за изменений на сервере?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

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

 

Без скачивания фрагментов карты не получится смотреть команды в кб.

Я никогда не умел качать фрагменты карт. Может, кто из других игроков поделится старыми закачками? Или может Оцелот качнёт тебе станцию спаун и развязку

 

"Программирование" пультов выбора станции и развязок - это не совсем программирование.

 

Вот так запрограммирован выбор станции (в текущей версии изменения касаются только количества блоков в конце, ну и немного более плотно размещены блоки в начале схемы).

 

Развилки сейчас запрограммированы не оч. хорошо (что-то я не нашёл версию Плотника - не помню, где смотреть, что он переделал)

Но в общем смысл такой:

  • игрок должен подъехать к развязке и проехаться по нажимным рельсам
  • сигнал от нажимных рельсов должен поступить на кб проверки значения переменной игрока (MetroSt)
  • в зависимости от значения переменной должны включиться нужные повороты
  • после проезда развилки все повороты можно сбросить в стандартное состояние, а можно не сбрасывать (мы изначально решили сделать маршрутом по умолчанию - на спаун = если не нажимать кнопок на пульте управления, то игрок всегда едет на спаун)

 

Ну, а как это реализовать - уже дело конкретных вариантов...

 

Вот так сейчас выглядит схема управления первой развязкой со станции спаун:

 

lr3Crqt.png

 

Вот такие команды вбиты в кб:

/testfor @p[42,34,-95,r=14,score_MetroSt=2,score_MetroSt_min=2]

/testfor @p[42,34,-95,r=14,score_MetroSt=1,score_MetroSt_min=1]

/testfor @p[42,34,-95,r=14,score_MetroSt=6,score_MetroSt_min=3]

/testfor @p[42,34,-95,r=14,score_MetroSt=0,score_MetroSt_min=0]

Каждый кб отвечает за свою стрелку: в зависимости от значения переменной - стрелка включается в нужном направлении.

Номера станций можно посмотреть в теме метро, в разделе геймплей.

 

Ну, вот, нужно:

  1. продумать принципиальную схему развилок (я бы хотел отказаться от генераторов, но не уверен, что это возможно): может, вообще без схем обойтись, а тупо перед каждой стрелкой ставить нажимные рельсы, под которыми будут 2 кб - один будет командой setblock спаунить стрелку в одном направлении, а другой - в другом? Таким образом, даже сбрасывать ничего не надо будет...
  2. нужно для каждой развязки продумать и наиболее оптимальные маршруты движения к каждой станции и в соответствии с этими предположениями закодить условия...
  3. сделать схему для каждой развязки (кстати, если получится откзаться от идеи со схемой и обойтись просто нажимными рельсами с кб, то можно вообще всё прописать на бумаге, а админы потом просто вобьют это - если получится новый подход, то можно будет протестить на какой-нибудь действующей развилке - модернизировать её и провести тест)

 

Кроме того, если мы правда сможем отказаться от схемы и сможем переключать каждую стрелку индивидуальной проверкой, то решится ещё одна теоретическая проблема: в теории при одновременном проезде несколькими игроками одной стрелки - она может адски сглючить и никого никуда не пустить или пустить обоих по одному маршруту. А в случае индивидуального переключения стрелок - всё будет ок )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мы тут с Оцелотом покумекали немного над развязками...

В итоге Оцелот всё забраковал и сказал, что сделает супер-схему развязки: модульную, простую и понятную.

 

Нам только будет нужна помощь с продумыванием маршрутов: нужно будет подготовить кучу циферок для 50+ развязок и 30+ станций - коды станций, координаты, id и т.д...

Оцелот ближе к делу скажет всё точно, когда продумает всё.

Затем Оцелот загонит эти циферки в прогу и скрипт сам нафигачит нужные нам команды для развязок.

 

Дальше мы с Оцелотом просто будем размещать стандартные схемы на развязках и вбивать уже готовые команды :)

 


 

А мне всё-таки кажется, что нужно делать тупо:

  • перед каждой стрелкой ставить нажимные рельсы со своим кб, который будет переключать её

 

Вот такая простая штука сделана на ближайшей к ЦБ развилке:

 

WOyasSf.png

 

 

tdnccDp.png

 

 

В такой кб надо вписать всего одну команду такого рода:

/testfor @p[42,34,-95,r=14,score_MetroSt_min=3,score_MetroSt=6]

Таким образом, каждая стрелка будет переключаться по факту проверки своим кб, который будет проверять значение переменной у игрока:

  • примерно половина значений будет переключать стрелку и нам нужно вписать эти диапазоны
  • другая половина не будет требовать переключения и вагонетка проедет по стрелке в положении по умолчанию

 

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

/testfor @p[score_MetroSt_min=3,score_MetroSt=6]

* при выполнении этой команды стрелка переключит направление движения только для тех игроков, которые едут на 3-6 станции 

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

А админы уже всё переделают и просто впишут эти команды.

 

 

Основная сложность подготовки в том, чтобы:

  • посчитать и записать все развилки (возможно отметить на карте или схеме метро)
  • продумать направления движения на развилках для каждой стацнии назначения
  • для каждой развилки указать и пронумеровать каждую стрелку
  • для каждой стрелки прописать условия для переключения стрелки для части станций назначения
Изменено пользователем Admin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Велвет, ты представляешь что с ростом системы метро, с добавлением 1 станции например, нам прийдётся все развязки (прям вот вообще все, все, все) переделывать.

И так каждый раз. Оно нам надо?

Изменено пользователем Grig_Kosilov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

1) Центральная ветка расти почти не будет. Для роста - новые ветки.

2) Добавление новой станции само по себе сложное мероприятие: для настройки маршрутов надо будет облететь все развязки и иногда менять одну-две циферки.

Я считаю, что других вариантов решения проблемы маршрутизации вообще нет.

Разубедите? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Итого, что могу сделать я? Взять карту метро и циферки расставить? Или вы сами? Нумерацию станций оставляем существующую, как я понимаю, чтобы не заморачиваться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Итого, что могу сделать я?

  1. наверное, сначала надо взять любую действующую развилку, например, ближайшую к спауну и переделать её на новый лад с действующими маршрутами (6 станций)\
  2. если эксперимент пройдёт успешно, то переписать её на бумаге для всех запланированных станций
  3. если это окажется реально, то переделать все действующие развязки под все запланированные станции
  4. если всё получится, то постепенно добавлять по одной станции за раз и делать для этого все необходимые развязки

Как-то так :)

Если сможешь помочь, то будет здорово )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переделывать развязки - это же кб двигать? И ты сам сказал, что там бедрок. Я, конечно, вечером схожу, посмотрю...

 

(кста, перекресток возле Фазенды Бресса глючит, всех отправляет на фазенду, не важно, куда собираешься)

Это схема "работающей" части метро.

4f33254cc529.jpg

 

или то же, но с картой (видно хуже, но может быть понятнее)

b3ad4cf691c9.jpg

 

Тогда согласно обозначениям, выходит в первой итерации так:

44aa08ab0d79.jpg

 

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

Изменено пользователем JinenryokuFu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Переделывать развязки - это же кб двигать? И ты сам сказал, что там бедрок. Я, конечно, вечером схожу, посмотрю...

 

Ну, вот от игроков не требуется ничего делать: достаточно посмотреть на стрелки конкретной развязки, прикинуть на карте (в голове) маршруты и расписать все необходимые маршруты и команды.

 

Вот ты уже накидал схему развилок. Возможно, для каждой нужно будет пронумеровать стрелки и прописать для них команды.

 

 

(кста, перекресток возле Фазенды Бресса глючит, всех отправляет на фазенду, не важно, куда собираешься)

Вот из-за подобных непонятных глюков, которых быть не должно, я и хочу переделать всё несколько по-другому - так, чтобы каждая стрелка отдельно проверяла проезжающего игрока.

Дальше нужно смотреть на положения стрелок и уточнять по каждой стрелке каждого перекрестка, в смысле вкл/выкл (1/0). Правильно? Надо только как-нибудь договориться, как обозначать стрелки перекрестка, чтобы потом удобно программировать было,

Схемы норм. Можно попробовать попросить Плотника поделиться его схемой, которую он уже делал. Или подготовить схему всех развилок метро (на основе схемы станций) и пронумеровать каждую развилку (хоть буквами, чтобы от станций отличались).

 

Далее, ты всё правильно понял, только я тебе предлагаю сначала проработать одну первую развязку, а не все сразу:

  1. сделай скрин развязки и прям на нём пронумеруй стрелки
  2. для каждой стрелки укажи значение/направление по умолчанию и переключение на действующие станции
  3. прикинь - получится ли переключать все стрелки индивидуальным кб (тут необходимо принципиальное понимание и можно без конкретики; или прям попробуй скопировать развилку и расставить блоки и ред, чтобы понять это)
  4. пропиши команды для командного блока каждой стрелки на основе моих примеров ранее

Норм такой вариант?

 

Если получится проработать и модернизировать одну развязку для действующих станций, то сразу переделаем её под все планируемые и модернизируем таким образом все остальные действующие развязки. Затем будем сразу подключать новые станции по одной за раз, настраивая все необходимые развязки к ней.

 

Считаю, что таким образом мы достаточно быстро сможем запустить новые станции. С твоей помощью, естественно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тогда возьму перекресток "b" как самый большой, остальные можно считать частным случаем)), они все на три направления. И попробую сделать, как ты сказал: скрин-нумерация-умолчания и пространственные возможности управления, тут проблем быть не должно, я смогу. Вопрос с командой. Если у нас один промежуток, то все круто - можно списать готовую команду. Меня постоянно сбивает тема с "разорванными множествами")), как мы поступим, если переключение должно произойти при значениях 2, 4, 5, 8, например? Четыре кб, как в сигналке? Тоже можно, но команда-то не одна, получается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Я может что-то не понимаю, но всё должно поместиться в один кб для каждой отдельной стрелки - просто указывай диапазоны, например:

/testfor @p[score_MetroSt_min=3,score_MetroSt=6,score_MetroSt_min=8,score_MetroSt=8,score_MetroSt_min=11,score_MetroSt=16,score_MetroSt_min=25,score_MetroSt=25]
Я себе это представляю так и надеюсь, что это будет работать :)

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

При желании можешь потестить что-нибудь подобное локально или может Оцелот нас проконсультирует )))

Или я опять что-то путаю и несколько разных диапазонов указывать нельзя, т.к. все условия должны выполняться одновременно?

Недавно вроде обсуждали подобный вопрос про охранные системы - тут...


Ладно, я понял...

Опять я забыл, что нельзя логическое "ИЛИ" использовать в одном кб...

Может, Оцелот что умное посоветует?

Или тупо несколько кб юзать для нескольких диапазонов?

Как их лучше разместить компактнее так, чтобы при срабатывании хотя бы одного из них подавался сигнал на выход?


Кстати, т.к. маршрутизация в текущем виде это ад, возможно нам поможет смена номеров и кодов станций?

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

Если это нам позволит в дальнейшем элементарно кодить развилки, то проще один раз переделать систему, чем каждый раз гемороиться с каждой развилкой.

Например, вдруг возможно для каждой отдельной стрелки проверять тупо - попадает ли значение переменной в верхнюю или в нижнюю часть карты? Если попадает, то стрелку переключить. Если нет, то продолжить движение в направлении по умолчанию.

Мне почему-то кажется, что такой подход - с разделением нумерации всего на два сектора - уже рабочий и позволит обойтись всего одним кб (одним диапазоном) на каждой стрелке.

Правда, разделение станций всего на два сектора не всегда позволит выбирать оптимальный маршрут и перепробеги могут быть гигантскими. Кроме того, в случае нахождения развилки в центре сегмента - нифига не понятно, куда ехать... Тут могут помочь четыре сегмента = сторонам света. Но всё равно не получается нормальная маршрутизация внутри сегмента со станцией назначения в этом сегменте...

Что скажешь?

Какие ещё варианты могут быть?

Оцелот хотел что-то замутить, Плотник уже что-то делал...

Я бы остановился на варианте управления каждой стрелкой отдельно.


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

А если он сработает, то как нам переключить стрелку его срабатыванием?

В общем, нам бы из цепочки кб получить логическое "или" :)

Тогда можно хоть столбиком размещать несколько кб под нажимными рельсами, которые будут переключать стрелку ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем, чтобы не читать весь предыдущий бред, можно просто помочь с гениальным способом настройки развязок :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я как раз сижу над стрелками). На перекрестке с четырьмя направлениями у нас 8 стрелок, причем они довольно близко друг к другу. При размещении кб столбиком появляется проблема передачи сигнала вниз (вроде бы наверх работает, через красные факела), получается громоздко, да и нам требуется скорость, я так понимаю, чтобы стрелка не переключалась после вагонетки. Я думаю над этим.

 

При разделении на квадранты, что изначально напрашивается, канешн, мы не можем выбирать оптимальный маршрут. Вот у меня в схеме выше разгружена верхняя горизонталь, когда надо проехать "по главной диагонали", при "программировании" каждой стрелки это можно сделать, а при выборе "направления" это сделать нет(.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

При размещении кб столбиком появляется проблема передачи сигнала вниз (вроде бы наверх работает, через красные факела), получается громоздко, да и нам требуется скорость, я так понимаю, чтобы стрелка не переключалась после вагонетки. Я думаю над этим.

Если я не ошибаюсь, то в 1.9 новые типы кб позволяют передавать сигналы без реда в любых направлениях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сегодня тоже в голову пришла идея разделения карты на сектора. Сначала была идея делить на 4, но потом подумал, что, наверное, было бы удобнее на 16 (то есть саму карту на 4, и каждый из них ещё на 4). В итоге пришёл к варианту разделения всей карты на 256 квадратов, в каждом из которых не может быть более одной станции. Получается, каждая из четырёх частей карты делится на 4, потом ещё на 4, и ещё на 4. Номера имеют сами квадраты, а номер станции соответствует квадрату, в котором находится либо конкретно выход из метро, либо то место, куда приезжают игроки. Наверное, это звучит муторно и сложно, но, как подсказывает логика, такая система будет более удобна, чем существующая.

Суть такая, что номера станций имеют вид 1xxyy, где xx - номер сектора, а yy - сам номер станции. Единица в начале чтобы игра не отбрасывала нули, а то как-то не очень (например: 0102 превратится в 102, а это как-то не очень).

Так, с этим, вроде, понятно должно быть, я позже подробнее попробую расписать.

 

С переключением стрелок - я предлагаю использовать /execute.

Пример:

/execute @p[score_MetroSt_min=10518,score_MetroSt=10536] ~ ~ ~ /setblock x y z rail поворот

Если по стрелке проезжает игрок, который едет на одну из станций в промежутке 18-36 в квадрате 05 (цифры с потолка, не смотрите на них особо).

Значения "поворот" и соответствующие им направления рельс могу описать позже, их не очень много.

 

Только я не очень понимаю, как менять это всё при расширении карты, но на данный момент могу предложить именно такой вариант, а там уж как получится.

  • Плюс 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Только я не очень понимаю, как менять это всё при расширении карты, но на данный момент могу предложить именно такой вариант, а там уж как получится.

По идее, это не нужно менять при расширении. т.к. предполагается, что центральная ветка будет в существующих границах самой себя = станции будут добавляться только внутри.

Новые территории будут заполняться новыми ветками, имеющими по одной станции на спауне и на конечной станции в своём направлении, а основная масса станций будет на новых территориях = для каждой ветки - своя территория.

 

Остальную идею нужно как-то более внятно продемонстрировать :)

Вроде, мысль интересная, но не очень очевидно, что это прям крутая тема - проще остальных )

 

Например, не очень понятно, чем подобный диапазон - score_MetroSt_min=10518,score_MetroSt=10536 - отличается от текущих диапазонов с номерами станций? Ведь, всё равно придётся несколько кб на стрелку пихать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще идея с несколькими цифрами - первое, что мне лично пришло в голову, но не было уверенности, что это можно обработать. Мы можем брать только первые цифры числа для обработки, а потом только вторую часть, например? Грубо говоря, стрелка проверяет сначала, находимся ли мы в нужном квадранте, если да, то проверяем дальше, если нет, то сразу идем на "выход" из квадранта без последующих заморочек. Но так как уже два условия, то все равно используем несколько кб, как и было сказано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Мне кажется, что подобная проверка возможна с помощью арифметических операций, доступных ССИС.
Но это жесть - проще обрабатывать нужное количество диапазонов текущей нумерации :)

Может, попробуем оставить всё как есть и к каждой стрелке прикрутим свою проверку кучей кб (по сути, сейчас так и есть, только запитано от генераторов, а не от нажимных рельс)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можем ли мы для каждой стрелки строить такую простую цепочку кб?

Нужно, чтобы:

  • цепочка активировалась только по факту подъезда вагонетки к стрелке
  • сигнал подавался на все кб сразу
  • срабатывал только один кб, диапазон которого совпадает со значением переменной игрока
  • по факту проверки переключать стрелку, вероятно, командой /execute по прмеру Оцелота

 

Это будет работать?
Если да, может нафиг все остальные переделки? Будем тупо просчитывать маршруты для каждой развязки и прописывать команды для каждой стрелки? Кондово, зато чётко.

 

id18jPY.png

 


 

Оцелот в игре сказал, что всё ок.

Джинен, может для чёткости создадим новую тему, где будем обсуждать только настройку развязок и пульты выбора станций?

 

Я предлагаю в эту отдельную тему закинуть схему развязок, наложенную на схему станций.
Пронумеровать развязки и начать работу с каждой развязкой отдельно.

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

 

Далее - для каждой стрелки прописывать её реакцию на маршурт игрока и соответсвующие команды в кб - в той последовательности, в которой они будут размещены в подобной цепочки кб.

 

 

Если всё ок и это не бред, то предлагаю действовать на тестовой развязке "b" :)

Изменено пользователем Admin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Например, не очень понятно, чем подобный диапазон - score_MetroSt_min=10518,score_MetroSt=10536 - отличается от текущих диапазонов с номерами станций? Ведь, всё равно придётся несколько кб на стрелку пихать?

Нет, суть в том, что кол-во блоков увеличивается только при приближении к конкретной станции. Пока диапазон достаточно большой (в районе нескольких подквадратов (1/16 от карты или 1/4 от квадрата)), на каждое направление нужен 1 КБ. У меня не очень получается объяснить, как это всё работает. Но пока диапазон станций при проезде по развилке широкий, на него нужен минимум КБ.

 


 

Значение "направление" в моей команде.

 

0. Север-Юг (Юг-Север)
1. Запад-Восток (Восток-Запад).
6. Юг-Восток (Восток-Юг).
7. Юг-Запад (Запад-Юг).
8. Север-Запад (Запад-Север).
9. Север-Восток (Восток-Север).
Изменено пользователем OcelotJungle

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Ну, хз...
На каждой стрелке будут "близкие/конкретные" станции = много кб...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Джинен, может для чёткости создадим новую тему, где будем обсуждать только настройку развязок и пульты выбора станций?

было бы не лишне, да

 

Давайте попробуем!

 

По развязкам. Сразу говорю, я нуб, поэтому задам идиотский вопрос (прошу прощения за качество схемы, только пейнт под рукой был)

3196b927314d.png

 

Восемь стрелок. Но те, которые отмечены зеленым - они как бы всегда в одну сторону направляют, вне зависимости от того, с какой из двух других сторон к ним подъезжают. Нужно ли им для этого переключаться? Если нет, то тогда мы имеем сразу в два раза меньше стрелок на перекрестке.

Тогда мы можем сразу после "зеленой" стрелки поставить активирующие рельсы (вторая картинка, серый прямоугольник) и у нас есть некоторое место для цепочки кб в центре схемы. Белым кругом обозначена стрелка, которой мы должны управлять. Получится так?

Изменено пользователем JinenryokuFu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Восемь стрелок. Но те, которые отмечены зеленым - они как бы всегда в одну сторону направляют, вне зависимости от того, с какой из двух других сторон к ним подъезжают. Нужно ли им для этого переключаться? Если нет, то тогда мы имеем сразу в два раза меньше стрелок на перекрестке.

Вот, меня тоже интересует этот вопрос - можно ли настроить некоторые стрелки так, чтобы по ним можно было всегда с двух разных направлений ехать в одну сторону?

Вроде, можно - хоть факелом фиксировать, хоть спаунить их в определённом формате.

 

Оцелот, что скажешь? :)

 + предлагаю отмечать только те стрелки, которые надо переключать.

 

 

Я тут решил попробовать сам продумать диапазоны маршрутов.

Исходя из предположения что нам нужно в 2 раза меньше стрелок, я взял первую развилку после спауна и отметил три нужные нам стрелки:

 

GyfAL31.png id18jPY.png

Ну, вот я прикинул, что первую стрелку можно по умолчанию сделать, например, налево (по ходу движения).

* кстати, предлагаю по умолчанию выбирать маршрут на спаун, как это сделано сейчас...

** понятие "маршрут по умолчанию" подразумевает сброс всех стрелок в первоначальное сосотяние: либо задержкой после выполнения команды, либо по факту проезда нажимной плиты после развилки

 

Тогда для её переключения потребуются следующие станции:

  • 2, 7-15, 24-26, 32-42 = всего 4 диапазона.

 

Если мы захотим сделать проезд по этой стрелке по умолчанию прямо, то переключать будем другими диапазонами:

  • 0-1, 3-6, 16-23, 27-31, 43 = 5 диапазонов.

 

Напоминаю, что 2 значения рядом - это диапазон.

 


 

К сожалению, для каждой стрелки нужна отдельная проверка.

 

Для переключения второй стрелки при движении по умолчанию - прямо (на спаун):

  • 1, 3-6, 16-23, 27-31, 43 = 5 диапазонов

 


 

Для переключения третьей стрелки (при движении по умолчанию на спаун):

  • 1-43 = 1 диапазон :)

 

По-моему, продумывание маршрутов выглядит не сложным.

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

 

Всё - маршруты и диапазоны для отдельно взятой развилки готовы (всего развилок около 50-ти).

 

Остаётся только прописать конкретные команды в кб, которые штампуются по образу и подобию.

 

Вот команды для 1 стрелки:

/execute @p[r=20,score_MetroSt_min=2,score_MetroSt=2] ~ ~ ~ /setblock 44 33 -100 rail 0
/execute @p[r=20,score_MetroSt_min=7,score_MetroSt=15] ~ ~ ~ /setblock 44 33 -100 rail 0
/execute @p[r=20,score_MetroSt_min=24,score_MetroSt=26] ~ ~ ~ /setblock 44 33 -100 rail 0
/execute @p[r=20,score_MetroSt_min=32,score_MetroSt=42] ~ ~ ~ /setblock 44 33 -100 rail 0

/setblock 44 33 -100 rail 7        // Сброс в начальное положение

Вот команды для 2 стрелки:

/execute @p[r=20,score_MetroSt_min=1,score_MetroSt=1] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=3,score_MetroSt=6] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=16,score_MetroSt=23] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=27,score_MetroSt=31] ~ ~ ~ /setblock 41 33 -96 rail 8
/execute @p[r=20,score_MetroSt_min=43,score_MetroSt=43] ~ ~ ~ /setblock 41 33 -96 rail 8

/setblock 41 33 -96 rail 0          // Сброс в начальное положение

Вот команды для 3 стрелки:

/execute @p[r=20,score_MetroSt_min=1,score_MetroSt=43] ~ ~ ~ /setblock 41 33 -91 rail 9

/setblock 41 33 -91 rail 0        // Сброс в начальное положение

По-моему, это прям не сложно:

  • смотришь на схему конкретной развязки с пронумерованными стрелками
  • смотришь на схему станций метро с циферками
  • прописываешь диапазоны (творческий процесс - нужно продумать наиболее оптимальный маршрут и исключить глюки и несоответствия с другими развязками)
  • заполняешь команды

 

И так - для каждой развилки.

Даже при цене 1 стек изумрудных блоков за развилку можно за день-два срубить дабл изумрудных блоков ))))

Админам тоже работы не много - по 10 минут на каждую развилку: суммарно это конечно дохрена времени, но всё-таки это прям не сложно, если игроки помогут всё подготовить.


 

Оцелот и Джинен, что скажете?

Неужели это такая прям плохая версия?

 

Мне кажется, что подобный вариант намного проще двоичной системы кодирования выбора станции и передачи её по проводам с подтверждением сигнала, как это было реализовано до версии 1.5 - первое метро (предыдущая карта), шифры станций :)

Изменено пользователем Admin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По идее, чем проще и модульнее (каждая стрелка/перекресток отдельно), тем лучше. Потому что такая система подкупает, имхо, тем, что можно в любой момент отвлечься, а потом продолжить с того же места. Да, по времени, возможно, долго, да, надо делать аккуратно, но в голове слишком много удерживать не надо. Имхо. Так что если такая схема работает, то я за.

А перекрестки всегда брать "по карте", то есть север наверх, и есть надежда не запутаться с нумерацией и не накосячить с "юг-восток")))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×