Найти в Дзене
Zap's Notes

Как создать свою мини-игру в Minecraft: Обучение DF - Часть 1: Основы скриптов

Привет. В этой серии публикаций я расскажу, как любой из вас, кто любит Minecraft, сможет создавать собственные мини-игры внутри проекта DiamondFire (Далее: DF). Этот сервер предоставляет удобную механику для создания скриптов, в которой вы сможете реализовать свои фантазии в жизнь. Данные статьи нацелены на людей, знакомых с механиками игры Minecraft, понимающих, как играть на публичных серверах, и понимающих английский язык хотя бы на уровне 5-6 класса школы. Без данных знаний эти статьи будут для вас сложны к пониманию В качестве одного из интересных примеров можно представить мини-игру «Super Power Training», в которой реализована система своеобразного «Кликера», с улучшениями, возвышениями и прочими присущими жанру механиками. И все это - внутри Minecraft! А главное - для создания подобного вам не понадобятся знания программирования! (Хотя, они не будут лишними, и с ними ваше изучение работы местных скриптов будут проще). Стоит обратить внимание, что игра на этом сервере требует л

Привет. В этой серии публикаций я расскажу, как любой из вас, кто любит Minecraft, сможет создавать собственные мини-игры внутри проекта DiamondFire (Далее: DF). Этот сервер предоставляет удобную механику для создания скриптов, в которой вы сможете реализовать свои фантазии в жизнь. Данные статьи нацелены на людей, знакомых с механиками игры Minecraft, понимающих, как играть на публичных серверах, и понимающих английский язык хотя бы на уровне 5-6 класса школы. Без данных знаний эти статьи будут для вас сложны к пониманию

В качестве одного из интересных примеров можно представить мини-игру «Super Power Training», в которой реализована система своеобразного «Кликера», с улучшениями, возвышениями и прочими присущими жанру механиками. И все это - внутри Minecraft! А главное - для создания подобного вам не понадобятся знания программирования! (Хотя, они не будут лишними, и с ними ваше изучение работы местных скриптов будут проще).

"Super Power Training"
"Super Power Training"

Стоит обратить внимание, что игра на этом сервере требует лицензионного аккаунта Minecraft! Однако, кроме лицензии, этот сервер не требует ни установки модов, ни отдельных лаунчеров. Вам необходимо просто зайти по актуальному IP на требуемой версии Minecraft (Необходимую по этому поводу информацию вы можете найти здесь: https://mcdiamondfire.com/about/), и вы получите доступ к множеству мини-игр, созданных креативным сообществом игроков DF.

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

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

Пустая территория
Пустая территория

Будучи владельцем территории, вы можете находиться в ней в трех разных режимах. Режим игрока активируется командой /play. В этом режиме ваши права на территории приравниваются к правам обычного гостя вашей мини-игры. Все скрипты, расположенные на территории, начинают влиять на вас. В этом режиме вы можете проверять работу ваших скриптов и просто веселиться с другими игроками. Режим строителя активируется командой /build. В нем скрипты не влияют на ваш геймплей, и вы можете свободно, в режиме креатива, изменять основную часть территории. Однако, в этом режиме невозможно как-либо изменить скриптовую зону. Режим разработчика - самый богатый на возможности. Активируется он командой /dev. В нем вы не только получаете возможности режима строителя, но и возможность изменять скриптовую зону. Перейдите в режим разработчика, сейчас мы напишем свой первый скрипт.

У вас в инвентаре появится множество предметов. Давайте кратко рассмотрим их, чтобы изгнать из вас неконтролируемую панику. 14 различных видов блоков, сгруппированных слева в вашем инвентаре - функциональные блоки, из которых и будут состоять ваши скрипты. Предметы справа - сверху вниз: книга с подсказками по созданию скриптов; стрела инверсии, с помощью которой вы сможете, так скажем, поменять «Да» на «Нет», и «Нет» на «Да», об этом расскажу подробнее позже; и меню значений, из которого вы сможете доставать значения для скриптов.

Стартовый инвентарь разработчика
Стартовый инвентарь разработчика

Давайте, наконец, начнем создание скрипта. Возьмите в руки алмазный блок. Он - блок события - блок, с которого может начинаться скрипт и который активируется из-за определенного события в мини-игре. Алмазный блок отвечает за события, вызываемые игроком. К примеру: если игрок зайдет на вашу территорию; если игрок нажмет правую кнопку мыши; если игрок погибнет и многое другое. Расположите его на скриптовой зоне. Около него автоматически появятся блок табличка и блок камня. С помощью таблички вы сможете изменить свойства блока события, а блок камня показывает, куда можно расположить следующий функциональный блок.

Блок события в скриптовой зоне
Блок события в скриптовой зоне

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

"События движения"
"События движения"

Выберите в выпавшем списке событие «При прыжке игрока».

"Если игрок прыгнет..."
"Если игрок прыгнет..."

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

Откуда "Jump"? А мы знаем)
Откуда "Jump"? А мы знаем)

Давайте наградим потенциального игрока за прыжок, выдав ему яблоко. «Если игрок прыгнет, то ему выдадут одно яблоко». Поставим справа от блока камня блок булыжника. Он - блок действия - блок, который непосредственно что-то изменяет в мини-игре. Скрипт не может начинаться с этого типа блоков. Булыжник отвечает за действия, связанные непосредственно с игроком: он может написать сообщение игроку; нанести урон или исцелить его; добавить что-то или убрать что-то из инвентаря и прочее. Помимо привычных нам таблички и блока камня, на булыжнике появится сундук. Это - сундук атрибутов - место, в котором располагаются атрибуты - свойства функционального блока, представленные в формате значений - различных переменных определенного типа.

"Блок действия"
"Блок действия"

В первую очередь, мы должны описать свойства блока действия. Для этого нажмем правой кнопкой мыши по табличке и выберем категорию «Управление предметами». В ней мы должны будем выбрать действие «Выдать предмет», но, сперва обратим внимание на описание этого действия. В нем мы можем увидеть абзац «Параметры сундука». В нем описывается, что, и в каком порядке нужно расположить в сундуке атрибутов. В данном случае, начиная с первого слота (нумерация идет слева направо и сверху вниз) нужно расположить значение (или значения, т.к. в обозначении типа значения стоит приписка (s), намекающая на возможность добавить несколько атрибутов данного типа) типа «Предмет», а после этих значений есть возможность (не обязательная к выполнению из-за приписки *, обозначающую необязательность добавления этого атрибута) расположить значение типа «Число». Эти атрибуты будут олицетворять то, какой предмет или предметы будут выданы игроку, и в каком количестве соответственно.

"Управление предметами"
"Управление предметами"
"Выдать предмет"
"Выдать предмет"

Выберем это действие и достанем из креативного меню яблоко. Положим его в первый слот сундука атрибутов. Теперь наш скрипт полностью готов. Мы можем проверить его работоспособность, перейдя в режим игрока (/play) и прыгнув. Скрипт из воздуха выдаст вам яблоко. Прыгните еще, и вам выдадут еще яблоко. Еще прыжок - еще яблоко. Поздравляю, вы сделали свой первый скрипт.

"...то ему выдадут яблоко"
"...то ему выдадут яблоко"

Давайте изменим этот скрипт, поменяв атрибуты блока действия игрока. Допустим, мы захотим выдать, в дополнение к яблоку еще и жемчуг Края, да еще и в другом количестве. Положим во второй слот сундука атрибутов жемчуг, а количество яблок в первом слоту поменяем на 2. Теперь скрипт выдаст за прыжок игрока два яблока и один жемчуг. Значит, количество предметов в значении типа «Предмет» влияет на этот блок действий. О том, как именно работают значения, будет рассказано в следующий раз.

"...и жемчуг?"
"...и жемчуг?"

Но, что делать, если мы хотим выдать игроку больше стака предметов? Одним из решений будет дальнейшее наполнение сундука атрибутов яблоками, однако, в нем не помещаются больше 27 стаков предметов. Можно поставить следующий блок действия после первого блока действия игрока, но это решение неудобное. Можно воспользоваться вторым атрибутом этого действия. Так как оно принимает в качестве второго атрибута значение типа «Число», которое олицетворяет количество выдаваемых предметов, нам нужно как-то поместить в третий, следующий слот число. Но, как? Очень просто: для этого нужно воспользоваться командой /number “значение”, где значение - то число, которое мы хотим задать. Напишем команду /number 80. После ее активации вам выдадут шарик слизи с названием «80». Этот предмет - значение типа «Число» со значением 80. Поместим его в третий слот сундука аргументов, войдем в режим игрока и прыгнем.

Наколдуем себе число...
Наколдуем себе число...
Дадим же числу работу
Дадим же числу работу

Скрипт выдаст нам 160 яблок и 80 жемчуга Края. Но, почему именно так? Ответ: второй атрибут действия «Выдача предметов» олицетворяет, сколько раз будут выданы предметы, описанные в первом атрибуте. Поэтому, число 80 умножается на 2 яблока, расположенных в первом атрибуте, и на выходе получаются 160 яблок.

ZapdosGuy29 богатый!
ZapdosGuy29 богатый!

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

Блок события и два блока действия
Блок события и два блока действия

Зайдем в свойства свежепоставленного блока действия и выберем категорию “Коммуникация”. В нем обратим внимание на действие «Отправить сообщение». Оно требует атрибут или атрибуты типа «Текст», олицетворяющие выводимое сообщение, а также, ниже в описании, расположена пометка «# 2 Tags». Это значит, что в сундуке атрибутов, в последних слотах появятся два тега - атрибута, которые могут принимать одно из предписанных ему значений.

"Коммуникация"
"Коммуникация"
"Отправить сообщение"
"Отправить сообщение"

Создадим переменную типа «Текст». Для этого введем команду /text “значение”, где значение - любой необходимый тебе текст. Я введу команду «/text You are jumped!», которая выдаст книгу с названием «You are jumped!». Это - значение типа «Текст» со значением «You are jumped!». Кстати, значения невозможно создать, переименовав книгу или кусочек слизи из креативного меню на наковальне. Их можно создать лишь специальными командами или через меню значений. О последнем я расскажу тогда, когда это понадобится.

Ты прыгнул. Поздравляю.
Ты прыгнул. Поздравляю.

Откроем сундук атрибутов действия «Отправить сообщение». В нем будут лежать два тега в 26 и 27 слоту. Первый из них определяет, будет ли располагаться пробел между атрибутами типа «Текст», а второй - будет ли центрироваться сообщение. Изменить их значения можно, нажав на них любой кнопкой мыши. Положим готовое значение типа «Текст» в первый слот сундука атрибутов и изменим теги: центрируем текст и отключим установку пробелов между атрибутами. Войдем в режим игрока и прыгнем. Если все сделано правильно, вам выдадут выдаваемые ранее скриптом яблоки и жемчуг, а также будет отправлено сообщение в чат. По умолчанию, его увидит лишь игрок, который прыгнул. О том, как сделать так, чтобы каждый игрок в мини-игре увидел это сообщение, будет рассказано в следующий раз.

Я работаю, и значение тоже должно!
Я работаю, и значение тоже должно!
Результат!
Результат!

На этом успехе можно и завершить сегодняшнее обучение. За время этого урока мы изучили:

- Как создать свою территорию и из чего она состоит;

- Режимы игрока: режимы игрока, строителя и разработчика;

- Структуру скрипта: «Блок события» -> «Блок(и) действия»;

- Что такое атрибуты и какими они бывают: одиночные; многочисленные; необязательные; теги;

- Основы некоторых типов значений: типа «Предмет», «Число», «Предмет».

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

- Какие еще типы значений существуют и какие у них есть свойства и тонкости - значения типа «Частицы», «Звуки», «Переменная» и т.д.;

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

- О целях и текстовых кодах, помогающих оптимизировать скрипты;

- О методах, тонкостях и хитростях при программировании на DF.

P.S: Тонкости DF: Атрибуты в сундуке атрибутов будет корректно расположить и таким образом:

Магия фотошопа в образовательных целях!
Магия фотошопа в образовательных целях!

#minecraft #туториал #обучение #программирование #скрипт #для новичков #для всей семьи #логика #онлайн-обучение #майнкрафт