[Гайд][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)

  • Просмотров: 2 058
  • Комментариев: 8
Рекомендуемое для Вас:

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

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


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

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


  3. XXXL ПХЛ
    Зарегистрирован: 2.07.2012
    Репутация
    (+174.7168-6.7)
    Райкон | Пользователь offline | (14 апреля 2015 09:17) | Комментариев: 266 | Новостей: 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
    Репутация
    (+8.47,6-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) | Комментариев: 31 | Новостей: 6 |
    • 0

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


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

    Одним словом: гро-моз-дко
    -----------------------------------------------------------------------------
    Набор в строительную команду карт на прохождение! Лучшая карта от русских разработчиков!
    Мой Ютуб канал - TrioCraft

    Цитата: Astron
    Залезть обратно я имел ввиду в собачье гавно глист картавый

    Цитата: Astron
    я просто прошу тебя засунуть все свои гавно слова себе в анальное отверстие где то на см так 10 и при каждом их выходе запихивать обратно



  8. Олдфаги
    Зарегистрирован: 16.03.2014
    Репутация
    (+268.1224,1-44.0)
    DieDrachenJager | Пользователь offline | (30 апреля 2015 09:57) | Комментариев: 318 | Новостей: 0 |
    • +1

    Пять.
    -----------------------------------------------------------------------------
    РЕПУБЛИКА СРПСКА КРАJИНА ЗАУВЕК



 
Ваше Имя:
  • the-manvitalyapumbapekagustaololoshapokerface
    ololoshanikoloskrovjopagoritgopnikcreepy-troll
    bombanuloanatoliyjewishbadumtssbatrollface
    bayandudecomeonmemefemaleseriouslyneveralonenothingtodohere
    numbsadfsadtrollfacetrolldadwinthistimeclear
    yesmingfupizdynaxezmetall
    pacanypeka-facepikap-masterpoker-face2redface
    rzhakacat-lolDa-nu-nafigfrayna-uchi
    OhGodoh-god-whyponimaeshShto-zaso-close
    so-much-winsurprised-cattrue-storyWTF2voobscheto
    pticapleasepetrosyanpacanohfuck
    irodidisudaheystopityouGTFOefacepalm
    dosvidaniyableayouthful-fearten-guyrage-no-whyyy
    NewspaperGuyTearNewspaperGuyHighhappy-dolangonna
    geniusCerealGuySquintCerealGuyAngryAww-Yeahchallenge-failed
    Determlesqueemisc-alloh_godoh-stop-it-you
    omega-troll-faceotdubpedobearpoker-facerainbow-face
    sincere-trollSlowpokeruka-licopfffnudaeIII
    nikolosneutralmBinimposhappyf
    begomaccepted-drunkbad-poker-facecereal-guycereal-guy-spitting
    chanconcentrateddance-jumpevil-smilefap
    flipfreddie-mercurygreat-scotthappyherp-derp
    jesuslied-lightme-gusta-creepymichelle-not-badnerd
    non2no-whyyyover-heresad-cryingseriously
    staresurprised-kidsurprised-omgwatching-uyou-did-there
    3a_4tokrutoymiloMother_of_godNoris
    not_badot_kompaparkerpovarprelest
    spravedlivomil2big trollbuueeedefault
    fack yeahforever alone2krainyaa stepenkrasnie glazaLOL2
    nravitsaokeyreshitelentrollxD
    zanyatmilanonimbrezguetdefault2
    default3forever aloneHmmmegafffuuumegayeah
    ololoshaOMGshok trollwomen trollwomen
    zadumalsya
Докажи, что не робот:*

 

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

Название темы Автор Статистика Последнее сообщение
Форумный чат

Тема в разделе: Чат флудилка

3JIou_Kpunep

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

Ответов: 104062

Автор: PIXhedgie

Сегодня, 22:46

Проблема с созданием сервера

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

yarosss

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

Ответов: 0

Автор: yarosss

Сегодня, 21:47

Помогите

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

Astron

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

Ответов: 18

Автор: Dezertir009

Сегодня, 21:33

Краш майнкрафта 1.7.10

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

vlastik55

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

Ответов: 1

Автор: Dezertir009

Сегодня, 21:27

Что думаете об игре Prey? (2017)

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

Vlados360rus3

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

Ответов: 5

Автор: gamerch

Сегодня, 19:16