Гайд по коду

25 Ноябрь 2017
681
194
43
#1
Из за того, что многие не знают, как делать той, или иной код, я попытаюсь рассказать вам как это делать.

Тема будет обновляться, поэтому, следите за ней.

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

Разделы темы:
Основа кода
Построение кода
Различные коды


Перед самими блоками, хочу сначала познакомить с переменными.
Переменные можно получить, если нажать по слитку железа (по умолчанию 9-й слот).
Там есть переменные такого типа:
Текст
Число
Местоположение
Эффект зелья
Динамическая переменная
Игровое значение
Эффект частиц


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

Ко всему этому, хочу добавить следующее:
На сервере разрешён IIE;
В dev-мире есть 23 места для создания кодов;
В dev-мире разрешёно ставить наковальню;
Команды для работы: /run (/play), /dev, /build, /world. Чтобы выдать игроку доступ к Билду/Коду, надо написать "/dev (/build) <ник игрока". К примеру: /dev zVorobeyz | /build zVorobeyz.

Событие игрока
1603384920732.png
этот блок ставится только в начале строки (то бишь его нигде нельзя поставить, кроме как на голубом стекле).
Информация о блоке:
Этот блок относится к категории Событие;
Именно из за него будет активироваться строка кода;

Допустим я хочу, чтобы код активировался, когда я нажимаю ПКМ. Для этого надо поставить алм. блок (Событие игрока) и найти там "Игрок кликает
правой кнопкой". Теперь при нажатии ПКМ код будет срабатывать. Однако этот код ещё надо сделать.

Если игрок
1603385847238.png
Информация о блоке:
Этот блок относится к категории Условие;
Именно из за него будет зависеть, продолжиться ли активация кода;

Думаю уже из названия понятно, что этот блок делает. Однако лучше показать на примере.
Допустим я хочу, чтобы когда я нажимал ПКМ и Крался, то мне выдавался 1 золотой слиток. Этот код будет строится таким образом:
Событие игрока Игрок кликает правой кнопкой --> Если игрок Крадётся --> Действие игрока Выдать предмет. Теперь, если я буду красться и нажимать ПКМ, то мне будет выдаваться золотой слиток. Если я буду просто нажимать ПКМ, то ничего происходить не будет.

!ВАЖНО! если вы поставите Действие игрока в самом условии, то код будет работать. Если вы поставите Действие игрока или иной блок за условием, то это будет считаться как новый код.

Действие игрока
1603386547713.png
Информация о блоке:
Этот блок относится к категории Действие;
Этот блок может манипулировать игроком;

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

Игровое действие
1603387583402.png
Этот блок относится к категории Действие;
Фактически, это управление самой игрой;

К примеру я хочу выключить PvP в определённой зоне. Для этого надо сделать такой код:
Событие игрока Игрок нанёс урон игроку --> Если игрок Находится рядом (в сундук Местоположение + можно положить радиус (по умолчанию радиус 5 блоков)) --> Игровое действие Отменить событие.

Функция
1603388756596.png
этот блок ставится только в начале строки (то бишь его нигде нельзя поставить, кроме как на голубом стекле).
Информация о блоке:
Этот блок относится к категории Событие;
Этот блок запоминает строку кода, которая идёт после этого блока и с помощью Вызвать функцию воспроизводит его;

Самый простой пример. Я хочу, чтобы, если я кликал правой и левой кнопками мыши и держал красный краситель, то мне высвечивалось в чате сообщение "Привет!".
Для этого надо сделать такой код:
Функция Любое название (возьмите переменную текст, напишите в чат название и кликните ПКМ по табличке с функцией) --> Если игрок Держит предмет Красный краситель --> Действие игрока Отправить сообщение Привет!
Событие игрока Игрок кликает ПК --> Вызвать функцию (нажмите ПКМ по табл. и найди название вашей функции).
Событие игрока Игрок кликает ЛК --> Вызвать функцию (нажмите ПКМ по табл. и найди название вашей функции).

Вызвать функцию
1603391257177.png
Этот блок относится к категории Действие;
Воспроизводит код, который заключён в Функции;

Фактически объяснения по нему в Функции.

ПРОДОЛЖЕНИЕ НИЖЕ ↓
 
Последнее редактирование:
25 Ноябрь 2017
681
194
43
#2
Если игра
1608463582094.png
Информация о блоке:
Этот блок относится к категории Условие;
Именно из за него будет зависеть, продолжиться ли активация кода;

Допустим я хочу, чтобы в определённое место можно было поставить все блоки, кроме определённых. В таком случае мне надо создать такой код:
Событие игрока Поставил блок --> Если игра Блок равен --> Игровое действие Отменить событие --> Действие игрока Сообщение; (это всё надо делать между поршнями).
Вот, как это выглядит:

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

Информация о блоке:
Этот блок относится к категории Условие;
Именно из за него будет зависеть, продолжиться ли активация кода;

Допустим я хочу, чтобы в определённом месте Житель не получал урон, когда я его бью. В таком случае мне надо создать такой код:
Событие игрока Урон по мобу --> Если существо Рядом --> Игровое действие Отменить событие --> Действие игрока Диалог.
Вот, как это выглядит:

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

Информация о блоке:
Этот блок относится к категории Действие;
Этот блок может манипулировать над сущностями;

Допустим я хочу, чтобы при написании команды "@start", все игроки, которые находятся в мире телепортировались в определённую точку. В таком случае мне надо создать такой код:
Событие игрока Событие чата --> Если игрок Сообщение равно --> Выбрать объект Все игроки --> Действие игрока Телепортация.
Вот, как это выглядит:

Иначе
1608475245601.png

Информация о блоке:
Этот блок относится к категории Условие;
Именно из за него будет зависеть, продолжиться ли активация кода;


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

Блок цикла
1608475566510.png

этот блок ставится только в начале строки (то бишь его нигде нельзя поставить, кроме как на голубом стекле).
Информация о блоке:
Этот блок относится к категории Событие (цикл);
Благодаря нему можно легко делать те же проверки;

Допустим я хочу, чтобы при написании команды "@Gold" я получал каждые 0.5 секунд (полсекунды) 1 золотой самородок и сообщение в чат "Золотце.". В таком случае мне надо создать такой код:
1 строка: Событие игрока Событие чата --> Если игрок Сообщение равно --> Игровое действие Начать цикл.
2 строка: Блок цикла --> Действие игрока Выдать предметы --> Действие игрока Сообщение.
В видео я показал, как правильно построить код.
Вот, как это выглядит:

Установить переменную
1609792068285.png
Информация о блоке:
Этот блок относится к категории Действие;
Благодаря нему можно делать много интересных и полезных вещей (всю красоту этого блока описать слишком сложно).

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

Динами́ческая переме́нная — переменная в программе, место в оперативной памяти под которую выделяется во время выполнения программы. По сути, она является участком памяти, выделенным системой программе для конкретных целей во время работы программы. (согласно Wiki)

Да-да, для многих это непонятно, однако, сейчас попытаюсь более простыми словами.
Допустим, у нас есть коробка, которую я назвал "Альфа". В неё я положил 1 яблоко. Теперь, коробка "Альфа" содержит предмет Яблоко.
Допустим, я хочу узнать, что хранится в этой коробке. Для этого я могу использовать Действие игрока Сообщение (и ему подобное) или же Скор Борд (есть и другие варианты, но эти самые популярные в использовании) и увидеть своё яблоко.
Переменные работают +- вот так.
Если ещё проще, то Переменные, это что-то, что может содержать какую то информацию и при надобности показывать её.

Где можно увидеть это в применении?
К примеру топ по киллам. Там, за каждое убийство я получаю одно очко (допустим, 1 очко = 1 яблоко). Затем, в скорборде показывается эта коробка с его содержимым и количеством яблок.

Казалось бы, такое простое свойство, однако, его можно использовать не только так.
К примеру, с помощью переменных можно построить паркур (когда игрок падает ниже определённого Y, то его будет тп на точку), TnT Run, Топы, Калькулятор и т.д.

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

Скор Борд
Ниже есть гайд. Там +- понятно.

Parkour
Здесь оно может помочь тем, что, когда игрок падает, он сразу же телепортируется на определённую точку.

Сам код:
1 строка: Событие игрока Передвижение --> Если игрок Рядом --> Игровое действие Начать цикл -> |ОТДЕЛЬНО| --> Если игрок Рядом НЕ --> Игровое действие Остановить цикл
2 строка: Блок цикла --> Установить переменную Получение значения Y из местоположения --> Если переменная = --> Действие игрока Телепорт


1 строка: Событие игрока Передвижение --> Если игрок Рядом | В сундук переменную Местоположение и переменную Число (Число будет отвечать за радиус) --> Игровое действие Начать цикл | В сундук название цикла --> |ОТДЕЛЬНО| --> Если игрок Рядом НЕ | В сундук тоже самое, что и в прошлый такой же --> Игровое действие Остановить цикл | Название цикла.
2 строка: Блок цикла | По нему надо нажать переменной Текст с названием (взять переменную текст в руку, ввести в чат название и кликнуть по табличке. Дальше эту книгу положить в сундуки из первой строки) --> Установить переменную Получение значения Y из местоположения | В сундук положить динамическую переменную с названием %player%_pos и Игровое значение Текущее местоположение --> Если переменная = | В сундук положить динамическую переменную %player%_pos и Y --> Действие игрока Телепорт | В сундук переменную Местоположение.

Вопросы и ответы:
*Для чего надо "Если игрок Рядом НЕ --> Игровое действие Остановить цикл"?
На самом то деле, это лишь моё дополнение. Если у Вас построен паркур высоко и на одной высоте, то это не очень обязательно делать.
*Что за " Y " в "Если переменная = | В сундук положить динамическую переменную %player%_pos и Y"?
Y - координата мира. Её можно узнать, если нажать F2 (или Fn и F2).
Y отвечает за высоту объекта. В сундук надо положить переменную Число с Y, при котором игрок будет телепортироваться (достаточно просто встать на блок, где игрок должен уже телепортироваться. У меня этот Y равен 4 1609796678848.png )

*Какую здесь роль играет переменная?
Переменная получает твой Y, сравнивает его с допустимым и уже при необходимости телепортирует тебя.
*Зачем вообще цикл, если можно запихнуть все переменные в первую строчку?
На самом то деле, изначально, я так и хотел сделать, однако, этот код не слишком удобен. Игрок спокойно сможет стоять на блоке, однако с помощью цикла, он сможет простоять лишь 1/4 секунды на нём.

В видео есть строение и полный обзор.

Также, вот темы с объяснениям переменных:
https://forum.mineland.net/ru/index.php?threads/gajd-po-peremennym.6314/
https://forum.mineland.net/ru/index.php?threads/kak-polzovatsja-peremennymi.5456/#post-37855 (надо почитать комментарии)

Вопросы и ответы.
*Может ли переменная иметь 2 значения? Например Текст "Привет" и число "1"?
Да, спокойно может.
*Можно ли в сундук "Установить переменную" или "Если переменная" класть 2 переменных?
Увы, но нет. Будет работать лишь одна переменная.
*Можно ли сохранить данные, которые находятся в динамической переменной, даже, если игрок покинул мир?
Да, можно. Для этого надо взять в руку Динамическую переменную, нажать Shift и кликнуть правой кнопкой мыши. В Динамической переменной должна появится такая надпись:
1610477720434.png
*Как можно посмотреть нынешнее значение переменной?
Способов много, однако, они будут отличатся местом показа. Самый лёгкий код: Событие игрока Событие чата --> Если игрок Сообщение равно | я обычно пишу @var --> Действие игрока Сообщение | В сундук надо положить саму переменную. Теперь, если написать @var, то увидим значение переменной.
1610232945797.png
*Как сделать систему уровней? Допустим, если игрок прошёл уровень 2, то он уже не сможет телепортироваться/пройти уровень 1.
Достаточно легко. Просто, когда игрок будет достигать третий уровень, надо присваивать ему переменную. То бишь, допустим, я на первом уровне. В таком случае, у меня должна быть переменная, допустим, "1". Когда я пройду этот уровень и попаду на второй уровень, то надо присвоить переменную "2". Когда я пройду второй уровень, надо присвоить переменную "3".
Теперь, надо лишь добавить "Если переменная" и всё.
Вот, как будет выглядеть код, если я буду на первом уровне: Событие игрока Передвижение --> Если игрок Находиться рядом --> Если переменная НЕ | В сундук переменную и число "1" --> Действие игрока Телепортировать | Куда-то. Например, если он уже прошёл первый уровень, то его должно тп на второй лвл.
Такой код можно продолжать то бесконечности. Просто надо менять в "Если переменная" число.
*Учитывается ли регистр в названии переменной?
Да. Если у вас будет в "Установить переменную" переменная с названием "test", а в "Действие игрока" "Test", то ничего не сработает.
 
Последнее редактирование:
25 Ноябрь 2017
681
194
43
#3
Информация
Допустим, если я ударю игрока, то мне покажется его Ник, Пинг, Здоровье, ID плота. Можно узнать и местоположение, уровень сытости и т.д.

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

Событие игрока Игрок наносит урон по игроку --> Если игрок Держит | Предмет (я выбрал книгу) --> Выбрать объект Игрок по условию Имя равно | В сундук переменную Текст " %victim% " --> Присв. переменную Установить переменную | В сундук Динамическую переменную и игровое значение. Переменная под названием ping, а игровое значение "Пинг игрока" --> Присв. переменную Установить переменную | Динамическую переменную с названием id_plot и игровое значение "айди плота" --> Присв. переменную Установить переменную | Динамическую переменную с названием nick и игровое значение "текущее имя" --> Присв. переменную Установить переменную | Динамическую переменную с названием health и игровое значение "текущее здоровье" --> Действие игрока Сообщение Тот, кто наносит урон | Переменную Текст "Ник игрока: " и динамическую переменную nick --> Действие игрока Сообщение Тот, кто наносит урон | Переменную Текст "Пинг игрока: " и динамическую переменную ping --> Действие игрока Сообщение Тот, кто наносит урон | Переменную Текст "Здоровье игрока: " и динамическую переменную health --> Действие игрока Сообщение Тот, кто наносит урон | Переменную Текст "ID плота: " и динамическую переменную id_plot --> Игровое действие Отменить событие.

На словах код адский. Однако, в реале он лёгкий.
Собственно вот, как он выглядит:
1610236413279.png

В видео я показал работоспособность кода и как его построить.


Если переменная
1610298349388.png
Информация о блоке:
Этот блок относится к категории Условие;
Именно из за него будет зависеть, продолжиться ли активация кода;

Уже из названия +- всё понятно, однако, вот маленькое объяснение:
Допустим, у нас есть заведение, в котором есть дресс код. Входить в него разрешено только лишь, если ты одет в чёрное.
Если ты будешь одет в зелёное - не пройдёшь, в чёрное - скатертью тебе доорожка.

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

Допустим, я хочу, чтобы ломать блок травы могли игроки только, если у них есть переменная "Admitted". В таком случае, мне надо создать такой код:
Событие игрока Игрок ломает блок --> Если переменная Переменная = НЕ --> Игровое действие Отменить событие.
| В сундук Если переменная надо положить Динамическую переменную и Число 2 |

Применения кода примитивное, хоть и полезное. Думаю, примеров не надо, т.к. Если переменная достаточно легка для понимания и я уже показывал несколько примеров выше (в других блоках)...
Вот одно из возможных применений: https://forum.mineland.net/ru/index.php?threads/kak-sdelat-bolshe-mesto-v-sundukax.11059/ (достаточно прочитать лишь вопрос от Amy337 (первое сообщение) и мой второй ответ).

О блоках и их функциях поговорили, а значит, можно приступать к <Построение кода>.
Используйте любое место с умом. Каждое пустое место драгоценно. Делайте коды в одной строчке, используйте укомплектованные коды, сокращайте их максимально, но так, чтобы работоспособность не ухудшалась.

Событие игрока/Блок цикла/Функция ставятся всегда вначале кода (на голубом стекле);
После Событие игрока можно ставить любой блок (Кроме Блока цикла и Функции), то бишь Событие игрока - первое условие. К примеру: Событие игрока Передвижение --> Действие игрока Выдать предмет;
Если игрок/Если переменная/Если существо/Если игра/Иначе - являются "отдельными" под-кодами. То бишь, если создать такой код: Событие игрока Событие чата --> Если игрок Сообщение равно --> | ОТДЕЛЬНО | (то бишь за поршнем) --> Действие игрока Сообщение = такой код правильно работать не будет.
1610301801590.png

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

Условие может быть в условии, однако, оно должно быть внутри другого условия. То бишь, вот возможный вариант: Событие игрока Игрок ломает блок --> Если игрок Держит --> Если игрок Смотрит на --> Игровое действие Отменить событие.
1610302357906.png
Здесь, условие Смотрит на в условии Если игрок Держит. Если поставить отдельно, то неважно будет, какой предмет игрок держит;

Куда можно пихать Игровое действие Отменить событие?
Его надо ставить только туда, где ты хочешь, чтобы событие отменялось. Неважно, после какого блока ты поставишь, то бишь, его можно поставить хоть сюда: 1610302519953.png

хоть сюда:
1610302548478.png

Игровое действие отменяет лишь Событие игрока, а если быть точнее, то вот эти:
Событие урона
Поставил блок
Сломал блок
Поднял предмет
Выбросил предмет
Потребляет предмет
Смена рук
Сменил слот
Клик мышкой
Смена голода
Событие чата
1610302685612.png

На все другие функции ему, грубо говоря, плевать.

Иначе ставится лишь после поршня, то бишь:
1610302876091.png

Одно условие может содержать в себе бесконечное количество условий/функций.
То бишь, можно создавать такие коды: 1610303054607.png
*разбор кода*
Первое условие - Имя равно,
╛Второй условие - Сообщение равно,
╛Третье условие - Сообщение равно.

То бишь, второе и третье условия подсоединены к первому условию.
Последующие условия надо ставить сюда:
1610303193508.png
(Если поставить следующее условие (к примеру, Сообщение равно) туда, где стрелка, то это будет как новое Под-условие. Написав определённую команду, определённый игрок получит что-то).
Теперь, при выполнении разных команд определённых игроков, будет срабатывать код.
 
Последнее редактирование:
25 Ноябрь 2017
681
194
43
#5
Применение кодов.

Здесь будут показаны различные коды, а вскоре и режимы.

Что можно здесь найти:
Скорборд
Магазин
Префикс
PVE
GUI меню

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

Возвращение игрока при входе в мир на место, в котором вышел из мира
Тюрьма (вечный бан)
 
Последнее редактирование:
25 Ноябрь 2017
681
194
43
#6
Скорборд
Скорборд это панель, которая находится справа посередине.

На креативе её можно сделать как статистикой, так и информативной панелью и эти два варианта я сегодня покажу.

Для создания скорборда необходим Skilled.

Пожалуй начну с самого простого. Информативная панель.
1610305583086.png

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

В Игровое действие Создать скорборд надо положить 2 книги. Первая книга: динамическое название скорборда. Вторая книга: название скорборда, которое будет показываться в мире. В моём случае первую книгу я назвал SB (её можно назвать как захотите), а вторую Статистика.

В Игровое действие Выставить очки надо положить 2 книги и 1 число. Первая книга это динамическое название скорборда. Вторая книга это то, что будет высвечиваться. Моя первая строка пробел. Его можно сделать, если взять в руку книгу и ввести &1, &2, &3, &l, &r и т.д. Число можно положить под конец создания кода. Я же выставил 9.

Дальше просто повторяете эту процедуру, однако меняя вторую книгу и число.

ВНИМАНИЕ. Если после /run у вас ничего не появилось, то пропишите ещё раз. Если появится, то вы правильно сделали код. Если нет, то пересмотрите его.

Теперь скорборд со статистикой.
Я сделаю самый простой код, а именно: Если игрок умирает, то ему выдаётся 1 очко.
Вот у меня 0 очков
1610305633937.png
Я умер и мне добавилось очко
1610305644427.png

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

Первая строка: Событие игрока Вход --> Игровое действие Создать скорборд | Надо положить 2 книги. Первая: дин. название (я положил score). Вторая: название скорборда, которое будет видно в мире (я положил Top). --> Действие игрока Показать скорборд | Сюда надо положить дин. название (я положил score).
Вторая строка: Событие игрока Смерть --> Присв. переменную Прибавить | Сюда надо положить динамическую переменную и число. Это всё можно взять в железном слитке (по умолчанию 9-й слот). Дин. переменную я назвал %player%_kills, а число 1 (это число будет прибавляться после каждой смерти. Если поставить 10, то после смерти мне добавится 10 очков). --> Игровое действие Выставить очки | 2 книги + дин. переменная. Первая книга дин. название скорборда. Вторая %player%. Дин. переменная такая же, которая лежит в Присв. переменную.
Третья строка: Событие игрока Передвижение --> Действие игрока Показать скорборд | дин. название скорборда (у меня score).

Если вы хотите сделать статистику по тем же убийствам, то просто вместо "Событие игрока Смерть" поставьте "Игрок убил Игрока".

Если вы хотите, чтобы после выхода из плота все очки сохранялись, то просто возьмите в руку дин. переменную, нажмите шифт + ПКМ. В описании дин. переменной должно добавиться СОХРАНЕНО. Если вы уже написали название переменной, то просто положите её в сундук. Если нет, то напишите название и положите в сундук.

Магазин
Магазины бывают двух типов. 1 - через предметы, где валюта определённый предмет 2 - через переменную, где валюта очки.

Разберём сначала первый тип.

Делается он проще некуда. Допустим, я хочу, чтобы если у меня было 2 золотых слитка, то я мог купить алмаз. Если у меня их нет, то высвечивалось сообщение "У Вас недостаточно слитков".
Событие игрока Правый клик --> Если игрок Имеет все предметы | 2 золотых слитка --> Если игрок Смотрит на | Местоположение --> Действие игрока Удалить предметы | 2 золотых слитка --> Действие игрока Выдать предметы | Алмаз | ДАЛЬШЕ ОТДЕЛЬНО ОТ ЭТИХ ДВУХ УСЛОВИЙ (после поршней) | Если игрок Имеет предмет НЕ | 2 золотых слитка --> Если игрок Смотрит на | Местоположение --> Действие игрока Сообщение | У Вас недостаточно золотых слитков.

Второй тип.

Событие игрока Правый клик --> Если игрок Смотрит на | Местоположение --> Если переменная Переменная = | В сундук динамическую переменную и, допустим, " 1 " --> Установить переменную Отнять | В сундук ту же Динамическую переменную и число 1 --> Действие игрока Выдать предметы | Алмаз | ДАЛЬШЕ ОТДЕЛЬНО ОТ ЭТИХ ДВУХ УСЛОВИЙ (после поршней) | Если переменная Переменная равно НЕ | В сундук ту же динамическую переменную и Число " 1 " --> Если игрок Смотрит на | Местоположение --> Действие игрока Сообщение | У Вас недостаточно очков.
 
Последнее редактирование:
25 Ноябрь 2017
681
194
43
#7
Префикс

! Перед тем, как покажу код, ВАЖНО помнить, что запрещены префиксы, нарушающие правила сервера (К примеру: Admin, Moder, Builder, Collector и т.д. и т.п.) !

Для создания префикса необходим Skilled.

Что такое префикс в майнкрафте? Префикс, это слово перед ником (в моём случае "Птица").
1610305973297.png

Сам код:

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

Событие игрока Событие чата --> Если игрок Имя равно | В сундук положить переменную Текст с вашим ником --> Игровое действие Отменить событие --> Действие игрока Сообщение ВСЕ | В сундук переменную Текст и переменную Игровое значение Сообщение игрока. В текст я написал: &6&lПтица &9&lzVorobeyz_work &8»&r (&6, &l, &9 и т.д. это просто цвет чата (/colors). Форма: <префикс> <ник> » &r ("&r" если делаете цветной префикс/ник. Чуть больше информации в следующем абзаце).

1610305988860.png

Как можно сделать цветной чат, имея друга Skilled или выше?
В прошлом абзаце уже сказал о "&r". Вот это просто надо заменить на цвет, который ты хочешь (/colors). К примеру, я хочу себе синий, жирный чат. В переменную текст я напишу: &6&lПтица &9&lzVorobeyz_work &8»&9&l .
Минусы данного кода:
1. Не работают упоминания;
2. Имея данный код нельзя писать другим цветом. Будет вот такое:
1610305996531.png

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

Код крайне простой, но для него нужен Skilled или выше.

Сам код:

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

Событие игрока Игрок нанёс урон по игроку --> Если игрок Рядом | В сундук переменную Местоположение (надо взять в руки переменную, кликнуть ЛКМ (Вас перенесёт в мир), там дойти до точки (если хотите выключить пвп на спавне, то никуда не надо идти) и кликнуть ПКМ). Таким образом, вы получите центр вашей PVE зоны. Ну и по желанию Число (Если положить просто Местоположение, то радиус PVE зоны будет 5 блоков. Его можно как и уменьшить, так и увеличить (можно хоть во всём мире выключить PvP) --> Игровое действие Отменить событие.

1610306008008.png

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

Как сделать так, чтобы PvP можно было только в определённой точке (к примеру на PvP-арене)?

Код:

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

Событие игрока Получил урон --> Если игрок Находиться рядом НЕ | В сундук положить переменную Местоположение (надо взять Местоположение, тепнутся в мир, подлететь к PvP-арене и кликнуть на блок, который по середине)
1610306033207.png
и по желанию переменную Число (она будет в качестве радиуса) --> Игровое действие Отменить событие.

1610306068685.png

Опять же, Событие игрока "Получил урон" означает, что урон невозможно будет получить, если игрок не в зоне PvP-арены. Если вы хотите выключить PvP, а игроки смогут получать урон (от того же падения с высоты, лавы, огня и т.д.), то вместо "Получил урон" надо поставить "Игрок нанёс урон игроку". Дальше код не менять, только это.
 
25 Ноябрь 2017
681
194
43
#8
GUI меню
Немного о том, что это такое.
GUI меню в майнкрафте - это менюшка, где можно прочесть ту или иную информацию. Для миров с сюжетом или чем-то иным, GUI меню хорошо подойдёт. А учитывая, сколько разработчики дали нам прав и возможностей, то это очень упростит многие задачи.

Сам код:

Для создания GUI меню необходим Skilled.

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

Событие игрока Правый клик (можно и другое событие) --> Если игрок Держит (можно и другое условие) | В сундук положить предмет, с помощью которого при нажатии ПКМ будет высвечиваться GUI меню --> Действие игрока Открыть копию инвентаря блока из мира (есть и другие действия, однако о них в конце) | В сундук положить местоположение сундука/печки и т.д.


Теперь, когда ты будешь кликать ПКМ по определённому предмету, у тебя будет высвечиваться то, что находиться в сундуке/печке и т.д.

К примеру:
Вот то, что у меня находиться в сундуке.
1610306171232.png

Теперь, когда я нажимаю по предмету, то у меня высвечивается этот сундук:
1610306179136.png
Кстати говоря, на втором скрине нет названия блока "Chest", что тоже прикольно.

Как открыть инвентарь игрока?
Код:
1 строка: Событие игрока Игрок нанёс урон игроку --> Если игрок Держит --> Выбрать объект Игрок по условию Имя равно --> Присв. переменную Установить (=) --> Действие игрока Открыть инвентарь сущности из мира Игрок по умолчанию --> Отменить действие.

1 строка: Событие игрока Игрок нанёс урон игроку --> Если игрок Держит | В сундук положить предмет, с помощью которого, если вы ударите игрока, откроется инвентарь --> Выбрать объект Игрок по условию Имя равно | В сундук переменную Текст %victim% --> Присв. переменную Установить (=) | В сундук динамическую переменную с названием %player%_inv и Игровое значение Текущее местоположение --> Действие игрока Открыть инвентарь сущности из мира Игрок по умолчанию (Игрок по умолчанию можно получить, если нажать шифт и кликнуть ПКМ по табличке) | В сундук динамическую переменную --> Отменить действие.
1610306214257.png
Теперь, если ты ударишь определённым предметом по игроку, то игрок урона не получит, а ты откроешь его инвентарь.


Немного по вопросам и ответам.
* Можно ли открыть двойной сундук?
На данный момент - нет.
* В чём разница "Открыть инвентарь блока из мира" от "Открыть копию инвентаря блока из мира"?
Разница в том, что в "Открыть инвентарь блока из мира" все твои действия будут сохраняться. То бишь, ты открыл GUI меню и положил туда булыжник. Этот булыжник там и останется. Таким способом, это будет очень хороший способ обмена (правда, для этого надо постараться над кодом. Возможно я напишу такой код). Такое же и с сущностями.
 
25 Ноябрь 2017
681
194
43
#11
Set
Set - по факту, это заполнение определённым блоком выбранную область.

К примеру:
У меня есть стенка из дуба,
1610306695763.png
однако, я хочу сделать стенку из камня. Для этого я прописываю определённую команду
1610306701029.png
и воля, я получаю стенку из камня.
1610306706229.png

Для создания данного кода необходим Skilled.

Сам код:
1 строка: Событие игрока Левый клик --> Если игрок Держит --> Игровое действие Отменить событие --> Установить переменную Установить (=) --> Действие игрока Сообщение.
1610306723175.png
2 строка: Событие игрока Правый клик --> Если игрок Держит --> Установить переменную Установить (=) --> Действие игрока Сообщение.
1610306737267.png
3 строка: Событие игрока Событие чата --> Если игрок Имя равно --> Если игрок Сообщение равно --> Игровое действие Поставить блок.
1610306756266.png

1 строка: Событие игрока Левый клик --> Если игрок Держит | В сундук предмет, при котором ты будешь выделять территорию (я положил Деревянный топор) --> Игровое действие Отменить событие --> Установить переменную Установить (=) | В сундук динамическую переменную и Игровое значение. Дин. переменную желательно назвать %player%_loc1, а в Игровом значении выбрать Местоположение целевого блока --> Действие игрока Сообщение | В сундук переменную Текст "Точка 1 установлена".
2 строка: Событие игрока Правый клик --> Если игрок Держит | В сундук предмет, при котором ты будешь выделять территорию (я положил Деревянный топор) --> Установить переменную Установить (=) | В сундук динамическую переменную и Игровое значение. Дин. переменную желательно назвать %player%_loc2, а в Игровом значении выбрать Местоположение целевого блока --> Действие игрока Сообщение | В сундук переменную Текст "Точка 2 установлена".
3 строка: Событие игрока Событие чата --> Если игрок Имя равно | Сюда переменную Текст со своим ником (в моём случае "zVorobeyz") --> Если игрок Сообщение равно | Сюда команду, при которой будет срабатывать код. На камень я сделал "@set 1" --> Игровое действие Поставить блок | В сундук блок и 2 динамических переменных. В моём случае я положи туда Камень и Дин. переменные (%player%_loc1 и %player%_loc2).
1610306763887.png


Вопросы и ответы:
* Можно ли сделать set 0 (воздух)?
Да, конечно. Надо сделать третью строчку и вместо Игровое действие "Поставить блок" надо поставить "Удалить блок\область". Туда просто положить 2 динамических переменных (В моём же случае, это: %player%_loc1 и %player%_loc2).
* Можно ли сделать несколько сетов в одной строчке?
Да, можно. Просто надо поставить "Если игрок ..." и "Игровое действие ..." между поршнями и так вести код хоть до конца.
Сюда надо поставить следующий код:
1610306774813.png
И вот, как это будет выглядеть:
1610306798810.png
* Почему у меня не работает код?
Вероятнее всего, ты что-то сделал не так ИЛИ находишься в гм 2 (приключенческий). Код работает во всех режимах, однако в гм2 ты не сможешь выделять точки, если расстояние между тобой и блоком 3-4 блока.


Вот, как это всё выглядит:
.




Отдельная благодарочка @_Finder_.
1610306813316.png
 
25 Ноябрь 2017
681
194
43
#12
Смена игрового режима
Под этим названием, я имею ввиду Изменение игрового режима для игрока на Творческий/Приключенческий/Обычный/Наблюдательный и т.д. режим*

Есть много вариантов, как можно это осуществить, однако, покажу лишь самые популярные:

Для создания Смены игрового режима необходим Skilled (за исключением нескольких кодов).

Смена Режима с помощью чата.
Это означает, что, если игрок напишет "gm 1", то ему выдастся Творческий режим.
Сам код:
Событие игрока Событие чата --> Если игрок Имя равно --> Если игрок Сообщение равно --> Действие игрока Режим игры - Творческий.

Это весь код.
Для продолжения кода, надо ставить последующие "Если игрок Сообщение равно" внутри условия "Если игрок Имя равно", то бишь сюда:
1610476130975.png

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


Для продолжения кода, надо сделать также, как и с помощью чата.

Смена Режима с помощью блоков.
Это означает, что, если игрок кликнет по блоку, то ему выдастся определённый игровой режим.
Сам код:
Событие игрока Игрок кликает правой (можно и левой) кнопкой --> Если игрок Имя равно --> Если игрок Смотрит на --> Действие игрока Режим игры - Творческий.

Для продолжения кода, надо сделать также, как и в прошлых способах.

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

Для продолжения кода, надо сделать также, как и в прошлых способах.

Полный обзор кода делать не стал (то бишь: Положите в сундук ваш ник, а в тот сундук...), т.к. всё предельно просто. Не понятно? Просто прочитай описание каждой функции, которую я здесь упомянул.

Вопросы и ответы:
*Можно ли убрать "Если игрок Имя равно"?
Да. Тогда любой игрок сможет изменить свой режим.
*Можно ли выдавать игроку определённый режим не внося в "Если игрок Имя равно" его ник?
Да, можно. Увы, но это можно сделать только лишь через "Событие игрока Игрок нанёс урон игроку". То бишь через "Событие игрока Событие чата" сделать нельзя (от силы через длинный код, но это не в наших интересах).
Сам код:
Событие игрока Игрок нанёс урон игроку --> Если игрок Имя равно --> Если игрок Держит предмет --> Игровое действие Отменить событие (это не обязательно) --> Действие игрока Режим игры - Творческий Жертва (жертву можно поставить, если нажать Shift и кликнуть по табличке).
*Можно таким способом включать/выключать флай?
Да, конечно. Просто в Действие игрока надо выбрать "Включить/выключить полёт".

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

Сам код:
1 строчка: Событие игрока Вход --> Действие игрока Загрузить инвентарь.
2 строчка: Событие игрока Выход --> Действие игрока Сохранить инвентарь.

Код простой, но очень полезный.

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

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

Вопросы и ответы:
*Как получить Сохранённую динамическую переменную? :/
Надо взять в руки динамическую переменную, нажать Shift и ПКМ.
*Что будет, если положить не "Сохранённую" Динамическую переменную?
Код просто не будет работать (вернее будет, но не так, как задумывалось).

Тюрьма (вечный бан)
*Объяснение:
Если определённый игрок ударит по игроку, то жертву телепортирует в тюрьму, где он уже ничего не сможет сделать. Это полезно для миров, где запрещено гриферить и т.д.

Сам код:
1 строка: Событие игрока Игрок нанёс урон игроку --> Если игрок Имя равно --> Если игрок Держит предмет --> Игровое действие Отменить событие --> Выбрать объект Если игрок Имя равно | В сундук переменную Текст %victim% --> Действие игрока Телепортация --> Установить переменную Установить = | В сундук Сохранённую Динамическую переменную и переменную Число " 1 ".
2 строка: Событие игрока Сломал блок --> Если игрок Находиться рядом --> Игровое действие Отменить событие.
3 строка: Событие игрока Поставил блок --> Если игрок Находиться Рядом --> Игровое действие Отменить событие.
4 строка: Событие игрока Передвижение --> Если переменная Переменная = | В сундук Сохранённую Динамическую переменную (такую же, как и в Установить переменную и Число " 1 " --> Если игрок Находиться рядом НЕ --> Действие игрока Телепортация.

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

Объяснения по "Если игрок Имя равно" делать не стал, т.к. там всё крайне просто (на крайний случай, перечитайте мой гайд и/или описание функции, которая здесь была упомянута).

Вопросы и ответы:
*Как можно выпустить из тюрьмы игрока?
Для этого надо создать такой код:
Событие игрока Игрок нанёс урон игроку --> Если игрок Имя равно --> Если игрок Держит предмет --> Игровое действие Отменить событие --> Выбрать объект Если игрок Имя равно | В сундук переменную Текст %victim% --> Установить переменную Установить = | В сундук ту же сохранённую переменную и переменную Число со значением " 0 ".
*Можно ли как то усовершенствовать данный код?
Да, конечно. Я дал лишь основу. Можно сделать много чего, например сообщения, префикс, невозможность писать что-либо в чат и т.д. (конечно же, нарушать правила не стоит. К примеру: нельзя блоком цикла каждые 0.25 секунд убивать игрока, нельзя выдавать игроку нереально большое количество/большие уровни эффектов, тот же префикс не должен нарушать правила сервера (К примеру: оскорбительные префиксы и другие)).
Вот мой пример:
1 строка: Событие игрока Игрок нанёс урон игроку --> Если игрок Имя равно --> Если игрок Держит предмет --> Игровое действие Отменить событие --> Выбрать объект Если игрок Имя равно | В сундук переменную Текст %victim% --> Действие игрока Телепортация --> Установить переменную Установить = | В сундук Сохранённую Динамическую переменную и переменную Число " 1 " --> Действие игрока Титл | "&4&lТы был посажен в тюрьму!" --> Действие игрока Сохранить инвентарь --> Действие игрока Очистить инвентарь.
2 строка:
Событие игрока Сломал блок --> Если игрок Находиться рядом --> Игровое действие Отменить событие --> Действие игрока Титл | "&c&lНельзя".
3 строка:
Событие игрока Поставил блок --> Если игрок Находиться Рядом --> Игровое действие Отменить событие --> Действие игрока Титл | "&c&lНельзя".
4 строка:
Событие игрока Передвижение --> Если переменная Переменная = | В сундук Сохранённую Динамическую переменную (такую же, как и в Установить переменную и Число " 1 " --> Если игрок Находиться рядом НЕ --> Действие игрока Телепортация --> Действие игрока Титл | "&c&lНе сбежишь!".
5 строка:
Событие игрока Событие чата --> Если переменная Переменная = --> Игровое действие Отменить событие --> Действие игрока Сообщение Все | "&4&lГрифер &r&l%player% &8» &8"
*Как можно сделать префикс "Заключённый", "Грифер" или другой?
Уже делал гайд выше, но вот код:
Событие игрока Событие чата --> Если переменная Переменная = --> Игровое действие Отменить событие --> Действие игрока Сообщение Все.

Событие игрока Событие чата --> Если переменная Переменная = | В сундук ту же сохранённую динамическую переменную и переменную Число " 1 " --> Игровое действие Отменить событие --> Действие игрока Сообщение Все | В сундук переменную Текст и Игровое значение Сообщение игрока. В переменную Текст надо написать: &4&lГрифер &r%player% &8» &r. Можно использовать и другие цвета, но эти самые хорошие.
Форма префикса: <префикс> <ник> » &r ("&r" если делаете цветной префикс/ник).
*Как можно попросту запретить игроку писать что либо в локальный чат?
Для этого надо создать такой код:
Событие игрока Событие чата --> Если переменная Переменная = | В сундук ту же Динамическую переменную и переменную Число " 1 " --> Игровое действие Отменить событие.
*Что будет, если создать код без переменных?
Дичь. Делать только с переменными.
*Что будет, если создать код без "Сохранённых" переменных?
Игрок сможет выйти из мира, зайти и играть дальше.
*Можно ли с помощью кода забрать у игрока вещи, пока он в тюрьме, а после выхода из тюрьмы выдать их?
Да, вот код:
Событие игрока Игрок нанёс урон игроку --> Если игрок Имя равно --> Если игрок Держит предмет --> Игровое действие Отменить событие --> Выбрать объект Если игрок Имя равно | В сундук переменную Текст %victim% --> Установить переменную Установить = | В сундук Сохранённую Динамическую переменную и переменную Число " 1 " --> Действие игрока Сохранить инвентарь --> Действие игрока Очистить инвентарь.
Если надо вернуть игроку инвентарь и выпустить его, то делаем как в первом ответе на вопрос (*Как можно выпустить из тюрьмы игрока? ) и в конце добавляем "Действие игрока Загрузить инвентарь".

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

Под этим "способом", я имею ввиду мгновенный кик из мира (настолько быстрый, что там вот так будет: 1610488115768.png
)

1. Способ: с помощью переменных
Для этого надо создать такой код:
1 строка: Событие игрока Игрок нанёс урон игроку --> Если игрок Имя равно --> Если игрок Держит предмет --> Игровое действие Отменить событие --> Выбрать объект Если игрок Имя равно | В сундук переменную Текст %victim% --> Установить переменную Установить = | В сундук Сохранённую Динамическую переменную и переменную Число " 1 " --> Действие игрока Кикнуть игрока из мира.
2 строка: Событие игрока Вход --> Если переменная Переменная = --> Действие игрока Кикнуть игрока из мира.

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

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