[Гайд][1.5+] Ограничение времени на прохождение уровня

Всем привет! Сегодня я хочу показать вам механизм, предназначенный для испытаний, связанных с ограничением времени на прохождение каких-либо отрезков карты. Суть его заключается в том, что он отсчитывает время в обратную сторону, а по достижении нуля перемещает вас обратно, если вы не успеете добраться до финиша. Я являюсь создателем двух карт под названием Speed, и там как раз возникла необходимость в данном механизме. Итак, я предлагаю вам гайд по созданию механизма, ограничивающего время перемещения из точки A в точку B.

Вы можете посмотреть действие этого механизма.


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

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

[Гайд][1.5+] Ограничение времени на прохождение уровня

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

Этап 1. Инициализация

Инициализация механизма сопровождается чередой событий. Для каждого поставим командный блок. То, чем будем заполнять командные блоки:
- Создадим scoreboard с названием “time”: /scoreboard objectives add time dummy Time. Он будет отвечать за оставшееся время.
- Создадим scoreboard с названием “finished”: /scoreboard objectives add finished dummy. Он будет отвечать за обработку события в случае успешного финиширования уровня.
- Дадим эффект скорости: /effect @a 1 1000 5. В своем примере я выбрал пятый уровень скорости длительностью в 1000 секунд. Продолжительность эффекта особого значения не имеет. Главное, чтобы хватило времени на прохождение отрезка карты. В принципе, использование эффекта скорости необязательно.
- Выведем scoreboard “time” на экран: /scoreboard objectives setdisplay sidebar time, чтобы мы видели время.
- Присвоим значение нашего времени: /scoreboard players set @a time 15. Количество секунд подбирается и подгоняется экспериментальным путем.
По желанию можно вставить абсолютно любые дополнительные команды (время суток, эффекты зелий, точку спавна и т.д.).
Сразу же подключим наш механизм. Результаты на скриншоте ниже.

[Гайд][1.5+] Ограничение времени на прохождение уровня
Обратите внимание: командные блоки с выводом и установкой времени отделены повторителем, чтобы избежать конфликтов. В ином случае команды с выводом времени или присваиванием значения могут не сработать.

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

[Гайд][1.5+] Ограничение времени на прохождение уровня

Этап 2. Работа

На этом этапе будет происходить непосредственно работа механизма: вычитывание времени, проверка на достижение нуля, а также проверка на завершение уровня.
Создадим таймер. Введем в командный блок команду: /scoreboard players remove @a time 1. Эта команда будет убавлять по одной секунде за такт.

[Гайд][1.5+] Ограничение времени на прохождение уровня
Как видите, таймер должен быть деактивирован по умолчанию.

Теперь создадим условие завершения работы механизма: достижение нуля. Вводим команду в командный блок: testfor @p[score_time=0]. Также добавим командный блок с командой: testfor @p[score_finished_min=1], которая будет проверять возникновение события успешного финиширования. Scoreboard “finished” здесь играет роль логической (булевой) переменной. 0 – если финиширования не было и 1 – если финиширование произошло.

[Гайд][1.5+] Ограничение времени на прохождение уровня
[Гайд][1.5+] Ограничение времени на прохождение уровня
Обратите внимание на наличие генераторов коротких импульсов. Они нужны обязательно! К ним мы вернемся чуть позже.

Этап 3. Завершение

И, наконец, последний этап, в котором мы производим отключение механизма с предварительным удалением scoreboard’ов и очищением эффектов.
Итак, поставим три командных блока и введем в них команды:
- /scoreboard objectives remove time (удаление scoreboard’а “time”);
- /scoreboard objectives remove finished (удаление scoreboard’а “finished”);
- /effect @a 1 0 (отключение эффекта скорости).
От генератора коротких импульсов, идущего от проверки на финиширование, ведем редстоун к этим блокам, а от них к триггеру. Этот сигнал и будет отключать механизм.

[Гайд][1.5+] Ограничение времени на прохождение уровня

В принципе, механизм уже работает, однако нужно сделать так, чтобы игрока телепортировало на старт в случае, если он не успеет.
Для этого запомним координаты старта (см. на скриншоте) и вставим их в командный блок. В моем случае это команда “/tp @a -224 9 -1702”. Далее проведем сигнал от второго генератора коротких импульсов к предыдущему сигналу, как показано на одном из скриншотов ниже.

[Гайд][1.5+] Ограничение времени на прохождение уровня
[Гайд][1.5+] Ограничение времени на прохождение уровня

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

Осталось совсем немного! К финишному натяжному механизму подключим два командных блока с командами:
- /scoreboard players set @a finished 1. Эта команда и является генератором события успешного завершения уровня. После ее выполнения механизм завершит свою работу.
- /scoreboard objectives remove time. Удаление scoreboard’а “time”. Это нужно для того, чтобы не было задержки между пересечением финишной черты и завершением работы, так как для его выполнения потребуется время длиной в целый такт.

[Гайд][1.5+] Ограничение времени на прохождение уровня

Механизм готов! Наверное, вам может это показаться очень сложным, но его достаточно построить всего один раз, а дальше можно просто копировать с помощью mcedit или прочих редакторов и менять необходимые параметры. Однако для его использования нужно понимать его устройство, для этого я и написал эту статью. Как вы понимаете, использовать лимитирование времени можно в каких угодно обстоятельствах. Например, тот же самый скоростной бег:
Speed
Speed: Heart of Desert

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


Голосуй за новость:
(+4.514,510.00)
  • Просмотров: 4 288
  • Комментариев: 8
Рекомендуемое для Вас:

  1. Олдфаги
    Зарегистрирован: 30.09.2014
    Репутация
    (+159.643-116.6)
    Brigson | Пользователь offline | (14 апреля 2015 07:28) | Комментариев: 600 | Новостей: 28 |
    • +1

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


  2. Олдфаги
    Зарегистрирован: 19.03.2015
    Репутация
    (+121.5102,3-19.2)
    =_Bemep_= | Пользователь offline | (14 апреля 2015 08:40) | Комментариев: 360 | Новостей: 35 |
    • +1

    5 и плюс в репу, всё отлично.


  3. Олдфаги
    Зарегистрирован: 2.07.2012
    Репутация
    (+184.2177,5-6.7)
    Райкон | Пользователь offline | (14 апреля 2015 09:17) | Комментариев: 265 | Новостей: 4 |
    • 0

    5 поставил, до главной недалеко
    -----------------------------------------------------------------------------
    На аватарке новец.


  4. Посетители
    Зарегистрирован: 28.02.2015
    Репутация
    (+17.9-1,1-19.0)
    frp_MASTER | Пользователь offline | (14 апреля 2015 10:09) | Комментариев: 55 | Новостей: 6 |
    • 0

    В краткой сократить
    В полной в споилер поместить.
    -----------------------------------------------------------------------------
    Макайте курочку в Соус, будете здоровы



  5. Просто хорошие люди
    Зарегистрирован: 5.12.2013
    Репутация
    (+9.78,9-0.8)
    vitalik891 | Пользователь offline | (14 апреля 2015 16:54) | Комментариев: 45 | Новостей: 5 |
    • 0

    Команды в тексте никак не выделены. Если бы картинок не было, то читать, а уж тем более пытаться понять, что для чего предназначено было бы неудобно.
    4


  6. Посетители
    Зарегистрирован: 28.04.2014
    Репутация
    (+11.811,4-0.4)
    TDEDETD | Пользователь offline | (14 апреля 2015 17:09) | Комментариев: 30 | Новостей: 6 |
    • 0

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


  7. ТруЪ Олдфаги-с
    Зарегистрирован: 9.11.2013
    Репутация
    (+251.6187,8-63.8)
    golovorez3000 | Пользователь offline | (22 апреля 2015 01:54) | Комментариев: 849 | Новостей: 23 |
    • 0

    Одним словом: гро-моз-дко
    -----------------------------------------------------------------------------
    Набор в строительную команду карт на прохождение! Лучшая карта от русских разработчиков!
    Группа проекта выше со скринами - https://vk.com/flame_rpg


  8. Дедушки
    Зарегистрирован: 16.03.2014
    Репутация
    (+825.9773,1-52.8)
    O.D. | Пользователь offline | (30 апреля 2015 09:57) | Комментариев: 300 | Новостей: 1 |
    • +3

    Пять.
    -----------------------------------------------------------------------------

    BLAM HONEY — Industrial Gender Unit — ERREGER-schön Zwilling

    жяу реорле

    отбрктрн

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

Последние сообщения с форума

Название темы Автор Статистика Последнее сообщение
Ищу АКТЕРА для съмок ВИДЕО по майнкрафту.

Тема в разделе: Новости

Junkie16

Просмотров: 51

Ответов: 0

Автор: Junkie16

Вчера, 22:10

Видео/Стримы канал Ritterydam

Тема в разделе: Флудильня

ritterydam

Просмотров: 110881

Ответов: 531

Автор: ritterydam

Вчера, 21:43

Загружается мир до 100% и все 1.16.5

Тема в разделе: Техническая поддержка сайта

Romanov_2

Просмотров: 62

Ответов: 0

Автор: Romanov_2

Вчера, 20:20

Помогите со сборкой на версии 1.7.10

Тема в разделе: Ваши вопросы по Minecraft

Zelsovich8321

Просмотров: 227

Ответов: 5

Автор: egg2003

Вчера, 15:06

Крутой сервер 1.20.4

Тема в разделе: Игры

Ytenok

Просмотров: 105

Ответов: 0

Автор: Ytenok

Вчера, 13:06