[Гайд] CommandBlock Journal (1): стартовый

CommandBlock Journal

Выпуск первый: стартовый

В данной рубрике будут публиковаться все выпуски нового журнала на сайте, получившего название «CommandBlock Journal». Как несложно догадаться, это — своеобразная газета, сборник новостей, интересных приёмов, а также ответы на вопросы, заданные в комментариях к предыдущему выпуску. Задумка в том, чтобы каждый узнает для себя что-то новое или освежит уже имеющиеся у него знания.

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

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

Операции с системой счёта событий

Для начала взглянем на краткие характеристики данного раздела:

Сложность освоенияСсылка на первоисточникВерсия для применения
СредняяMinecraft WIKI (английский)1.8 («Bountiful Update»)

История системы счёта игровых событий (scoreboard) начинается в версии 1.5. И на тот момент это было действительно революционное нововведение. Раньше хранить и анализировать данные можно было максимум в опыте игрока. Никаких других возможностей, по сути. Оставались лишь механические конструкции, громоздкие счётчики и модули памяти... И вдруг стало возможным хранить и проверять любую информацию о любом игроке, ещё и привязывая её к определённым игровым событиям. Потрясающе! Великолепно! Это было невероятно удобно и просто. Давайте для примера создадим некоторую статистику:

/scoreboard objectives add RedTeam dummy (*)

А теперь ещё одну, словно притворившись, что мы затеяли создать некую игру с несколькими командами — красной и синей:

/scoreboard objectives add BlueTeam dummy

Просто замечательно! Теперь у нас его две команды и, например, по два игрока в каждой из них. Скажем, в красной будут находиться игроки Bob и Peter, а в синейStephan и Alex. Зададим им некоторые очки по итогам игры:

/scoreboard players set Bob RedTeam 12
/scoreboard players set Peter RedTeam 13
/scoreboard players set Stephan BlueTeam 14
/scoreboard players set Alex BlueTeam 15

И вроде как у нас всё прекрасно. Мы храним все необходимые нам данные, можем их проверять, выводить... Но как определённым данным взаимодействовать друг с другом? Как, например, сложить все очки у игроков из одной команды и затем сравнить результаты? Не хватало в версии 1.5 только возможностей выполнять различные операции с определёнными целями в рамках системы счёта игровых событий (scoreboard). Но в 1.8 эту проблему устранили полностью, добавив нам операторы. Рассмотрим синтаксис:

/scoreboard players operation <цельПервая> <статистикаЦелиПервой> <операция> <цельВторая> <статистикаЦелиВторой>

Естественно, Вы заметили, что мы не указываем выходную цель. К сожалению, возможны лишь операции с присвоением (присвоением первой цели), которые не всегда удобны. Однако, никто не запрещаем нам использовать некоторую третью, временную переменную, которая будет заменять нам буфер обмена. Теперь было бы хорошо рассмотреть все возможные операторы:

НазваниеОписание
1+=Сложить значения
2-=Вычесть значения
3*=Умножить значения
4/=Разделить значения
5%=Установить остаток от деления
6=Присвоить значение
7<Присвоить в случае, если счётчик второй цели меньше счётчика первой цели
8>Присвоить в случае, если счётчик второй цели больше счётчика первой цели
9><Поменять значения местами

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

Кодовый замок на рамке

Для начала взглянем на краткие характеристики данного раздела:

Сложность освоенияСсылка на первоисточникВерсия для применения
СредняяСобственная идея и видео Кронда1.9 («Combat Update»)

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

Итак, в чём заключается задача? Имеется рамка с некоторым предметом внутри. Игрок может свободно её поворачивать. Установив предмет в рамке в правильном положении, игрок нажимает на кнопку подтверждения. Это положение предмета — словно цифра в коде. Мы продолжаем «набирать его», а затем, после достижения необходимого количества составляющих кода, механизм либо выполняет некоторое действие (если код правильный), либо сбрасывает попытку ввода (в противоположном случае). Что можно придумать для решения такой задачи?

Первое, что приходит в голову — выдавать теги. Т. е. тег pos0 в случае, если у предмета в рамке NBT-тег поворота ItemRotation равен 0b. Но возникает несколько вполне логичных проблем: мы не можем ввести одно составляющее кода два раза, мы не можем определить порядок ввода.

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

/testfor @e[x=0,y=0,z=0,r=1,type=ItemFrame] {ItemRotation:0b}
/testfor @e[x=0,y=0,z=0,r=1,type=ItemFrame] {ItemRotation:1b}
... (*)

После этого от каждого такого командного блока должен идти условный командный блок в режиме цепочки, который установит на определённые координаты, скажем, одну из вариаций глины:

/setblock 0 0 0 minecraft:stained_hardened_clay 0
/setblock 0 0 0 minecraft:stained_hardened_clay 1
...

А куда мы устанавливаем блоки глины? В то место, откуда они мгновенно, вместе с предыдущими блоками глины будут перемещены на один блок по одной из осей координат. В итоге мы получим четыре блока глины. Последний из них активирует цепочку, которая сразу проверит соответствие получившегося кода эталону, выполнит в этом случае определённые действия... А в самом конце, вне зависимости от исхода проверки, сбросит нашу попытку ввода, убрав пользовательские блоки глины. Попробуйте разобраться самостоятельно:

Google Drivehttps://drive.google.com/open?id=0By4WSCPS0ESfRENudlNoeTlibkU.

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

Ответы на вопросы

Увы, это — только первый выпуск журнала «CommandBlock Journal», вопросов пока нет. Впрочем, это не отменяет того факта, что их можно совершенно свободно задавать в комментариях.

Оставляйте оценки! На этом всё, удачи! Пока!



Голосуй за новость:
(+26.3326,13-0.20)
  • Просмотров: 5 095
  • Комментариев: 16
Рекомендуемое для Вас:

  1. Просто хорошие люди
    Зарегистрирован: 7.08.2015
    Репутация
    (+63.059,3-3.7)
    MrMaga | Пользователь offline | (26 июля 2016 19:45) | Комментариев: 87 | Новостей: 17 |
    • 0

    оформлено прекрасно! 5 мем
    -----------------------------------------------------------------------------



    IP: mc.vanilla-craft.ru



  2. Просто хорошие люди
    Зарегистрирован: 30.01.2014
    Репутация
    (+25.421,4-4.0)
    etojeVadosk | Пользователь offline | (26 июля 2016 20:24) | Комментариев: 127 | Новостей: 8 |
    • +2

    Самая красивая новость за всю историю румине
    -----------------------------------------------------------------------------




  3. Модератор
    Зарегистрирован: 2.06.2013
    Репутация
    (+1366.21350,9-15.3)
    Капут-противогаз | Пользователь offline | (26 июля 2016 21:05) | Комментариев: 1 960 | Новостей: 100 |
    • +2

    Фомин?

    5 мем
    -----------------------------------------------------------------------------

    Портфолио с моделями


    MALOVODSK - Тайны маленького города[1.15.2]

    667



  4. Олдфаги
    Зарегистрирован: 16.10.2012
    Репутация
    (+650.0607,8-42.2)
    frendly herobrin rus | Пользователь offline | (26 июля 2016 21:11) | Комментариев: 507 | Новостей: 13 |
    • +1

    Сила HTML, 5 мем


  5. Дедушки
    Зарегистрирован: 26.09.2012
    Репутация
    (+2322.82271,3-51.5)
    Allexx | Пользователь offline | (26 июля 2016 21:21) | Комментариев: 646 | Новостей: 49 |
    • +3

    Если проводить ассоциацию с группами на сайте, то обычные новости из бездны это посетители-ПХЛ, хорошие, приятные глазу новости эт олдфаги-журналисты(по идее). Ну а такая новость тянет на самого ГР или модерака в конце концов. rainbow-face
    -----------------------------------------------------------------------------
    Сразу могу тебе сказать (гребеш на себя) Может, нужно разобраться.


  6. Главные редакторы
    Зарегистрирован: 11.06.2013
    Репутация
    (+2421.42308,3-113.1)
    3JIou_Kpunep | Пользователь offline | (26 июля 2016 22:03) | Комментариев: 1 309 | Новостей: 102 |
    • +1

    Изумительно.


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

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


  8. Посетители
    Зарегистрирован: 1.06.2016
    Репутация
    (+0.2-1-1.2)
    sasha.0552 | Пользователь offline | (27 июля 2016 06:58) | Комментариев: 7 | Новостей: 0 |
    • 0

    НОРМ 5 мем


  9. Просто хорошие люди
    Зарегистрирован: 5.02.2016
    Репутация
    (+231.6225,9-5.7)
    Ruslanzh | Пользователь offline | (27 июля 2016 07:01) | Комментариев: 313 | Новостей: 12 |
    • -2

    great-scott без слов,5 мем.


  10. Журналисты-олдфаги
    Зарегистрирован: 7.03.2016
    Репутация
    (+248.3248,1-0.2)
    Alokey | Пользователь offline | (27 июля 2016 07:10) | Комментариев: 217 | Новостей: 32 |
    • +2

    Дельный гайд для тех, кто собирается учиться строить системы из командных блоков.
    Оформление минималистичное, но в меру, что придаёт новости лаконичность, как по мне.
    И да, HTML - сила.

    5 memes.


  11. Посетители
    Зарегистрирован: 6.07.2016
    Репутация
    (+3.63,4-0.2)
    mindplayer | Пользователь offline | (27 июля 2016 09:22) | Комментариев: 17 | Новостей: 1 |
    • 0

    Прекрасная новость. Безусловно пятый рейдж и плюс в репу.
    -----------------------------------------------------------------------------
    Прошу обратить особое внимание на мою первую новость: The Golden Chalice of Kurast
    Цитата: Капут-противогаз
    А вообще ньюфаги пи**ры, но я не хотел никого обидеть.



  12. Олдфаги
    Зарегистрирован: 15.07.2015
    Репутация
    (+111.5107,2-4.3)
    JvonlinsMage | Пользователь offline | (27 июля 2016 10:14) | Комментариев: 390 | Новостей: 20 |
    • 0

    5 мем и плюс в репутацию, новость просто идеальна.
    Только вот зачем отдельный акк создавать специально для журнала?


  13. Дедушки
    Зарегистрирован: 27.03.2016
    Репутация
    (+585.4579,1-6.3)
    5 0 0 0 | Пользователь offline | (27 июля 2016 12:53) | Комментариев: 78 | Новостей: 0 |
    • +1

    фомин залогинься
    -----------------------------------------------------------------------------
    "I don't want to go to the penis restaurant" - patrick
    ластфм
    gay people


  14. Модератор
    Зарегистрирован: 26.06.2016
    Репутация
    (+581.9572,1-9.8)
    Voknehzyr | Пользователь offline | (27 июля 2016 20:18) | Комментариев: 207 | Новостей: 21 |
    • 0

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



  15. Посетители
    Зарегистрирован: 11.07.2013
    Репутация
    (+7.87,3-0.5)
    LightMage | Пользователь offline | (28 июля 2016 10:59) | Комментариев: 24 | Новостей: 0 |
    • 0

    5 мем.


  16. Картоделы
    Зарегистрирован: 6.12.2014
    Репутация
    (+16.313-3.3)
    TVS___ | Пользователь offline | (30 июля 2016 08:18) | Комментариев: 65 | Новостей: 4 |
    • 0

    Идеально, все очень понятно описано. Хотелось бы еще узнать о /scoreboard players tag - что это вообще такое и как с этими тэгами работать. 5 рэйдж.
    -----------------------------------------------------------------------------
    Карта "RPG - моб арена"

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

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

Название темы Автор Статистика Последнее сообщение
Видео/Стримы канал Ritterydam

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

ritterydam

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

Ответов: 527

Автор: ritterydam

Вчера, 22:20

Мод Minecraft 1.12.2

Тема в разделе: Моддинг

Alolik

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

Ответов: 0

Автор: Alolik

Вчера, 20:08

[Help] Вопросы по моддингу.

Тема в разделе: Моддинг

saxalin

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

Ответов: 382

Автор: Alolik

Вчера, 19:48

Крашиется мир 1.12.2

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

Romanov_2

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

Ответов: 2

Автор: Romanov_2

Вчера, 17:34

Разработка модов на Forge

Тема в разделе: Проекты

Sirius06

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

Ответов: 6

Автор: Sirius06

Вчера, 17:15