Index.php?title=Курс для новичков

Материал из ML WIKI
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

«Курс для новичков» будет полезен людям, делающим первые шаги в Редакторе игр. Здесь собраны самые базовые темы, которые необходимы для создания самых примитивных режимов, к примеру: PvP-Parkour, MagmaBlock, Parkour, SkySurvival и прочее.

Внешний вид игры

Внешний вид игры делится на 3 подпункта:

  • World example.png
    Название игры должно вкратце описывать саму игру. Чем индивидуальнее и красочнее название игры, тем больше внимания она будет привлекать. Для украшения игры можно использовать Unicode символы и различные цвета (посмотреть список всех доступных цветов можно командой /colors)
  • Описание игры должно описывать игру. Отфильтруйте слова-паразиты и оставьте только самое важное. Создать вторую, третью... строку можно с помощью \n в конце предложения.
  • Иконка игры играет немаловажную роль. Чем ярче и необычнее иконка, тем больше внимания она будет привлекать.

Описание блоков-функций

Блоки-функции можно разделить на 3 класса:

Категории

Событие

Данную категорию имеют 3 блока-функций: Событие игрока, Блок цикла, Функция. Важная особенность этих блоков в том, что они ставятся только вначале строки, т. е. исключительно на голубое стекло.

Условие

Данную категорию имеют 5 блока-функций: Если игрок, Если переменная, Если существо, Если игра, Иначе. Данные блоки ставятся только на серое стекло.

Действие

Данную категорию имеют 5 блока-функций: Действие игрока, Игровое действие, Установить переменную, Выбрать объект, Вызвать функцию. Данные блоки ставятся только на серое стекло.

Функционал

Событие игрока

Категория: Событие

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

Если игрок

Категория: Условие

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

Действие игрока

Категория: Действие

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

Игровое действие

Игровое действие.png

Категория: Действие

Игровое действие ещё можно назвать Управление миром. Оно позволяет создавать голограммы, менять игровое время, спавнить мобов/NPC/предметы, создавать эффекты, менять/создавать/убирать блоки и т.д.

Присвоить переменную

Категория: Действие

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

Если переменная

Категория: Условие

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

Если существо

Если существо.png

Категория: Условие

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

Выбрать объект.png

Выбрать объект

Категория: Действие Выбрать объект позволяет выбрать определённый объект и работать с ним. Выбирать можно игроков, мобов, NPC, снаряды, предметы, которые валяются на земле. Чтобы произвести какое-либо действие над объектом, сразу после Выбрать объект надо поставить само действие. К примеру, для телепортации выбранного игрока, после Выбрать объект надо поставить Действие игрока Телепортация.

Если игра

Категория: Условие

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

Иначе

Категория: Условие

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

Вызвать функцию

Вызвать функцию.gif

Категория: Действие

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

Функция

Функция.png

Категория: Событие

Функция может хранить в себе код также, как и Событие игрока или Цикл, однако в неё нельзя поставить Событие игрока или Цикл. Код, написанный в Функция, может быть вызван с помощью Вызвать функцию.

Цикл

Категория: Событие

Цикл.png

Цикл повторяет один и тот же код с определённым промежутком. Промежуток можно отрегулировать с помощью кликов по табличке. ПКМ по табличке - увеличивает промежуток на 1 тик; Шифт и ПКМ - уменьшает промежуток на 1 тик.

1 секунда = 20 тиков. Если взять Переменную Число, ввести в неё число и нажать по табличке, то промежуток станет идентичен числу Переменной Число. Максимально минимальный промежуток - 5 тиков.

Синтаксис

Синтаксис это правильная расстановка блоков-функций, то-есть что за чем идёт и как оно идёт.

1. Блоки-функции с категорией "Событие" всегда ставятся только вначале (на голубое стекло);

2. Блоки-функции с категорией "Условие" и "Действие" ставятся только на светло-серое стекло;

3. Поршни - пределы условия. Если Действие нужно выполнять только при достижении определённого условия, то Действие нужно поставить между поршнями;

4. Условий может быть много, главное, чтобы при установки Условия ставилось 2 поршня (то-есть ставились пределы условия);

5. Код, который идёт после Выбрать объект, будет выполняться над выбираемым объектом;

6. Блок-функция Иначе ставится только после поршня Условия;

Вспомогательные функции

Переменные

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

  • Текст - переменная, позволяющая хранить текст. Ею можно называть предметы/сущности, выводить сообщения/титлы и прочее.
  • Число - данная переменная может хранить лишь числа (в том числе число Pi и e). Если нужно установить в блок-функцию число, к примеру, в функцию Действие игрока Урон, то следует использовать переменную число. Если положить переменную Текст, то код работать не будет.
  • Местоположение - позволяет хранить в себе местоположение чего-либо. Если нажать ПКМ по пустоте, то запишутся координаты, на которых Вы стоите. Если нажать ПКМ по блоку, то запишутся координаты блока. ЛКМ позволяет перемещаться между dev-миром и игровым миром. Шифт + ЛКМ телепортирует к сохранённому местоположению.
  • Эффекты зелья - позволяет выбрать зелье. Продолжительность зелья можно менять, если взять в руку выбранное зелье и написать в чат, к примеру, "4:30". Силу зелья можно изменить, если написать в чат число, к примеру, 3. Таким образом можно получить зелье с продолжительностью в 4 минуты 30 секунд и силой 3.
  • Динамическая переменная - позволяет хранить в себе текстовые и числовые данные. Крайне часто используется используется с плейсхолдерами, благодаря чему позволяет хранить в себе количество смертей, убитых игроков, очков, деньги и прочее. Посмотреть на все переменные можно командой /plot vars. Динамическую переменную можно разделить на 2 типа - глобальная и локальная.
    • Глобальная - единственная в своём роде. Позволяет хранить количество игроков онлайн, проголосовавших за игру, уникальных посетителей и прочее.
    • Локальная - используется с плейсхолдерами. Позволяет хранить количество смертей, убитых игроков, очков и т.д.
  • Игровое значение - тип переменной, которую нельзя изменить. Она изменяется в зависимости от параметров игры и игроков в ней. Игровое значение имеет 3 функции - Значения сущности, Значение события, Значение игры.
    • Значения сущности - позволяет получить какие-либо данные об игроке - пинг, здоровье, уровень голода, местоположение, текущее значение опыта и т.д.
    • Значение события - позволяет получить данные о событие дамага, сообщении игрока, локации блока, транзакции, товары, связанные с MineLand Studio и т.д.
    • Значение игры - позволяет получить информацию о количестве игроков онлайн, лайков, уникальных посетителей, ID игры и т.д.
  • Эффект частиц - даёт возможность выбрать эффект для дальнейшего использования.

Утилиты разработка

  • Стрелка НЕ - используется как дополнение ко всем блокам-функций с категорией Условие и с Выбрать объект. Позволяет изменить условие в противоположном направлении от его первоначальной формы. Применяется кликом по табличке.
  • Перемещатель кода 3000 - позволяет сдвинуть код на 1 единицу.
  • Добавить уровень для кода - добавляет дополнительный этаж для кода (максимально количество этажей - 10).
  • Настройки игры - позволяет изменить настройки самой игры (права, флаги, название, описание и т.д.).

Плейсхолдеры

Плейсхолдер (от англ. Placeholder «Заменитель») - функция, позволяющая держать определённую информацию об определённом игроке. Плейсхолдер используется для сохранения количества убийств, смертей, пройденных блоков, сделанных действий и т.д.

Плейсхолдеры можно поделить на 2 типа.

  1. Интегрированный - вшит в саму блок-функцию. Достаточно зажать Shift и нажать ПКМ по табличке Действие игрока или Если игрок.
  2. Внешний - создаётся с помощью Динамической переменной или Текст. Всего есть 10 плейсхолдеров:
    1. %player% - Выбор игрока от которого исполняется код
    2. %damager% - Выбор игрока который ударил какую либо сущность
    3. %victim% - Жертва, кого ударил %damager%
    4. %killer% - Убийца из события
    5. %selected% - Выборка которая выбирает игроков по отдельности (игрок1: = числу2. игрок2: = числу 2. И т.д.)
    6. %selection% - работает как %selected%, но создаёт отдельную переменную с никами игроков в выборке. (игрок1, игрок2, игрок3: = числу 4)
    7. %shooter% - Тот, кто стрельную из лука в какую либо сущность
    8. %default% - заменяется на имя моба или игрока который стоит там "по умолчанию"
    9. %entity% - выбирает имя энтити
    10. %random% - выбирает рандома

Самые популярные и нужные плейсхолдеры - %player% и %victim%. Другие же используются в более продвинутом кодинге.

Создание кодов

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

PvP-Parkour

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

Выдача предметов

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

Событие игрока Правая кнопка --> Если игрок Смотрит на --> Действие игрока Выдать предметы.

Более детально: Событие игрока Правая кнопка [запускает код, если игрок нажмёт ПКМ] --> Если игрок Смотрит на | блок или местоположение [данное условие будет проверять блок, на который нажал игрок] --> Действие игрока Выдать предметы | в сундук положить предметы, которые игрок получит [выдаёт предметы].

Важный момент, связанный с Если игрок Смотрит на.

  1. Блок функция Действие игрока должна быть внутри Если игрок Смотрит на, то-есть между поршнями, иначе игрок будет получать предметы при каждом нажатии ПКМ вне зависимости от блока;
  2. В верхние слои сундука Если игрок Смотрит на можно положить только блоки, а в нижние только Местоположение. Если положить блок, то, вне зависимости от местонахождения блока (проще говоря - на любой блок одинакового типа), код будет срабатывать. Если положить Местоположение, то игрок будет получать предметы только, если нажмёт ПКМ на тот самый выделенный блок.

Код, который выше, является основой всех PvP-Parkour.

Выдача предметов определённым игрокам

Теперь надо сделать особенный блок, кликнув на который только владелец игры/выбранные им игроки смогут получать предметы.

Событие игрока --> Если игрок Смотрит на --> Если игрок Имя равно --> Действие игрока Выдать предметы.

Более детально: Событие игрока Правая кнопка [запускает код] --> Если игрок Смотрит на | блок или местоположение [проверка блока] --> Если игрок Имя равно | в сундук положить Текст со своим ником/ником игрока, который будет иметь доступ [проверяет, кто именно выполняет действие. В случае совпадения ников - продолжает код, в случае несовпадения - ничего не делает] --> Действие игрока Выдать предметы | в сундук положить предметы, которые игрок получит [выдаёт предметы].

Вывод сообщения в чат

Если игрок заходит в игру, то приятно будет сказать ему "Привет, приятной игры!".

Событие игрока Вход --> Действие игрока Сообщение.

Более детально: Событие игрока Вход [запускает код, когда игрок заходит в игру] --> Действие игрока Сообщение | в сундук Текст с названием "Привет, приятной игры!" [выводит сообщение в чат].

Данное сообщение увидит только тот игрок, который зашёл в мир. Также можно использовать разные цвета (список всех цветов: /colors). К примеру: "&6&lПривет, приятной игры!".

Сохранение вещей при выходе из мира

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

Событие игрока Выход --> Действие игрока Сохранить инвентарь;

Событие игрока Вход --> Действие игрока Загрузить инвентарь;

Более детально: Событие игрока Выход [запускает код, когда игрок выходит из игры] --> Действие игрока Сохранить инвентарь [сохраняет нынешние предметы, которые находятся у игрока в инвентаре];

Событие игрока Вход [запускает код, когда игрок заходит в игру] --> Действие игрока Загрузить инвентарь [выдаёт игроку предметы, которые у него были при выходе из мира];

Сохранение вещей при смерти

Событие игрока Вход --> Действие игрока Включить сохранение инвентаря;

Более детально: Событие игрока Вход [запускает код, когда игрок заходит в игру] --> Действие игрока Включить сохранение инвентаря [включает функцию сохранения инвентаря при смерти].

Выдача предметов за голосование

Голосование (/like) позволяет продвигать игру в топе, а также даёт 1 золото владельцу игры.

Если игрок написал /like:

Событие игрока (Игрок лайкает игру) -> Действие игрока (Выдать предметы)

Детальнее:

  1. Событие игрока (Игрок лайкает игру) - запускает код, когда игрок пишет команду /like.
  2. Действие игрока (Выдать предметы) - выдаёт предметы в сундуке.

Повторная выдача предметов за /like (игрок перезашёл в мир):

Событие игрока (Вход) -> Если игрок (Голосовал) -> Действие игрока (Выдать предметы)

Детальнее:

  1. Событие игрока (Вход) - запускает код, когда игрок заходит в игру.
  2. Если игрок (Голосовал) - проверяет, голосовал ли уже игрок.
  3. Действие игрока (Выдать предметы) - выдаёт предметы из сундука.

MagmaBlock

Не менее нашумевшая игра, которая собирала множество посетителей. Суть данной игры - ломать Магму и получать ресурсы, дальше уже сражаться/строить базу из полученных ресурсов. Аналоги MagmaBlock - LuckyBlock, Ломай землю, чтобы выжить и т.д.

Выдача рандомных предметов

Выдача рандомных предметов при ломании определённого блока (к примеру, магму) - основа сей игры.

Событие игрока Сломал блок --> Если игрок Смотрит на --> Действие игрока Выдать рандомные предметы;

Более детально: Событие игрока Сломал блок [запускает код, когда игрок ломает любой блок] --> Если игрок Смотрит на | в сундук: блок (к примеру, магму) или Местоположение(я) --> Действие игрока Выдать рандомные предметы | в сундук: предметы, которые игрок будет получать при ломании блока [выдаёт рандомные предметы].

Изменение игрового режима на Creative, Survival, Adventure, Spectating

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

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

Через чат:

Событие игрока Событие чата --> Если игрок Сообщение равно --> Действие игрока Установить режим игры;

Более детально: Событие игрока Событие чата [запускает код, когда игрок отправляет любое сообщение в чат] --> Если игрок Сообщение равно | в сундук: Текст с любым названием, после которого будет изменятся игровой режим (обычно используют @gm 1, @gm 0, @gm 2, @gm 3. Собачка ( @ ) обязательно должна присутствовать вначале) [проверяет содержимое сообщения] --> Действие игрока Установить режим игры | в сундуке выбрать желаемый режим (Выживание, Творческий, Приключенческий, Наблюдательный) [меняет игровой режим].

Через предмет:

Событие игрока Правая кнопка --> Если игрок Держит предмет --> Если игрок Имя равно --> Действие игрока Установить режим игры;

Более детально: Событие игрока Правая кнопка [запускает код, когда игрок нажимает ПКМ] --> Если игрок Держит предмет | в сундук предмет, нажав на который будет изменятся игровой режим [проверяет держащий в руке предмет] --> Если игрок Имя равно | в сундук: Текст с никами игроков, у которых будет доступ к изменению игрового режима [проверяет, кто именно выполняет действие. В случае совпадения ников - продолжает код, в случае несовпадения - ничего не делает] --> Действие игрока Установить режим игры | в сундуке выбрать желаемый режим (Выживание, Творческий, Приключенческий, Наблюдательный) [меняет игровой режим].

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

Событие игрока Вход --> Если игрок Имя равно | в сундук: Текст с никами игроков, у которых будет доступ к изменению игрового режима --> Действие игрока Выдать предметы | в сундук: предмет, изменяющий игровой режим.

Изменение игрового режима при входе в игру

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

Событие игрока Вход --> Действие игрока Установить режим игры;

Более детально: Событие игрока Вход [запускает код, когда игрок заходит в игру] --> Действие игрока Установить режим игры | в сундуке выбрать желаемый режим (Выживание) [меняет игровой режим].

Отключение PvP на спавне

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

Событие игрока Получил урон --> Игровое действие Отменить событие;

Более детально: Событие игрока Получил урон [запускает код, когда игрок получает любой урон] --> Игровое действие Отменить событие [отменяет событие].

SkySurvival

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

Бесконечная добыча ресурсов

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

Событие игрока Сломал блок --> Если игрок Смотрит на --> Игровое действие Отменить событие --> Действие игрока Выдать предметы;

Более детально: Событие игрока Сломал блок [запускает код, когда игрок сломал любой блок] --> Если игрок Смотрит на | в сундук положить блок, при ломании которого будут выдаваться предметы. К примеру: дуб [данное условие проверяет, какой блок сломал игрок] --> Игровое действие Отменить событие [отменяет событие. Блок не сломается] --> Действие игрока Выдать предметы | в сундук положить предметы, которые будут выдаваться. К примеру: 1 дуб [выдаёт предметы].

Выдача рандомного количества предметов

Дополнение к Бесконечная добыча ресурсов. Данный код будет особенно полезен для Алмазов, Редстоуна, Лазурита, Эмеральдов.

Событие игрока Сломал блок --> Если игрок Смотрит на --> Игровое действие Отменить событие --> Действие игрока Выдать рандомный предмет;

Более детально: Событие игрока Сломал блок [запускает код, когда игрок сломал любой блок] --> Если игрок Смотрит на | в сундук положить блок, при ломании которого будут выдаваться предметы. К примеру: лазурит [данное условие проверяет, какой блок сломал игрок] --> Игровое действие Отменить событие [отменяет событие. Блок не сломается] --> Действие игрока Выдать рандомный предмет | в сундук положить разное количество предметов, то-есть в первый слот, к примеру, 1 лазурит, во второй слот 2 лазурита, в третий 3 лазурит и так далее. Шансы выпадения можно регулировать. Если положить одинаковое количество лазурита, к примеру 3 лазурита, в разные слоты, то шанс выпадения трёх лазурита будет выше, чем у других.

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

Лазурит Стандарт рандом.png
Лазурит Не стандарт рандом.png

Префикс

Префикс позволяет выделить игрока словом перед его ником. Обычно подобное выдают сами себе владельцы игр или донатеры, которые купили привилегию в игре. Донаты Gamer, Skilled, Expert ... тоже являются префиксами и отлично выделяют игроков.

Событие игрока Событие чата --> Если игрок Имя равно --> Игровое действие Отменить событие --> Действие игрока Сообщение ВСЕ;

Событие игрока Событие чата [запускает код, когда игрок написал что-либо в чат] --> Если игрок Имя равно | в сундук ник(и), у кого будет префикс [сверяет ники] --> Игровое действие Отменить событие [отменяет событие (сообщение не отправиться в чат)] --> Действие игрока Сообщение ВСЕ | в сундук: Текст с префиксом и ником, к примеру, Owner SwiftAdviser » и Игровое значение Сообщение игрока. Рекомендуется использовать цвета для префикса и ника (/colors), таким образом можно достичь следующего результата: &c&lOwner &6SwiftAdviser &8» &f.

SwiftAdviser Prefix.png



&f с пробелом после &8» нужно для того, чтобы текст сообщения был белого цвета и был отступ между &8» и текстом.