Форум PentaCraft

Введение в macro keybind mod

macro keybind mod
Из себя этот мод представляет дополнение, которое поможет игрокам,знающим упрощенный синтаксис этого мода, писать некоторые скрипты, добавлять собственные бинды на клавиши и обрабатывать ивенты (события) игры. Наверное, это было не совсем понятно,но давайте разберем на примерах возможности этой модификации:
Для того,чтобы создать новый обработчик событий или добавить скрипт на кнопку клавиатуры, жмём Shift + ~ (тильда) или переходим в Настройки->Управление,и дальше ищем вкладку, как на скриншоте:


Открываем Macro Settings…

В самом верху мы видим надпись “переопределение: клавиши” и стрелки. Этот блок меню отвечает за переключение между настройками биндов на клавиши, события и доп. экран,куда мы сможем добавить свои кнопки.Чаще всего мы будем пользоваться именно первой вкладкой,отвечающий за кнопки и их использование,поэтому сперва рассмотрим её:
Как мы видим,все кнопки обозначены цветами
Красный означает,что кнопка уже занята (используется) и мы не сможем добавить на неё доп. действие
Серый цвет обозначает,что клавиша свободна,и что мы можем добавить на неё собственный скрипт
Желтый же значит,что на этой клавише уже висит добавленный игроком скрипт

  1. Бинд на клавиши
    Чтобы добавить нашу собственную функцию на клавишу, мы выбираем любую свободную и жмем ПКМ по ней, после чего откроется окно,в котором мы и будем настраивать эту клавишу.
    По-сути нас интересует исключительно нижнее текстовое поле, обозначенное как “Редактировать макрос для [выбранная вами клавиша]”.


    В это текстовое поле мы будем добавлять функции.
    Самое простое использование-автоматический ввод определенных команд при нажатии клавиши. К примеру,мы хотим телепортироваться домой по нажатию клавиши B, для этого в нижнее поле добавляем текст “/home”,и эта команда будет вводиться в чат при нажатии кнопки.image

  2. Использование доп. кнопок на странице чата
    Открываем чат кнопкой T, жмем по любой области чата ПКМ, и видим открывающееся меню,состоящее из 3 пунктов:
    image
    Нас интересует последний пункт, выделенный желтым цветом. После нажатия этой клавиши увидим сетку на вкладке чата и 3 кнопки снизу-слева. Удаление,редактирование,и добавление объектов на ячейки сетки.


    Давайте добавим кнопку:
    Жмем третью слева кнопку, которая выглядит как плюсик,и добавляем кнопку
    image
    После определяем место для добавление кнопки и назначаем определенные параметры этой кнопке: название, текст,который будет отобжраться и т.д. После создания, она будет серойimage
    Жмем по ней ЛКМ и видим знакомое меню добавления команды на кнопку.
    image
    Как вы заметили,я уже назначил другую команду, нежели просто /home,но по-сути это будет то же самое действие,просто по-разному записанное.

  3. Ивенты


    Перейдём во вкладку ивентов. Это самый малоиспользуемый пункт мода,но он позволяет выполнять скрипт в тот момент,когда что-либо в игре изменилось. Каждый раздел проименован по-английски очевидным образом. Теперь как это может использоваться на примере:
    Используя ивент OnHealthChange (когда изменился показатель здоровья), мы можем сделать автоматическую телепортацию домой. Это поможет вам остаться в живых,когда вы начинаете получать урон. однако,зная этот мод получше,мы уже можем начать анализировать ситуацию более глубинно, и,например, телепортироваться домой только при попадании в лаву, добавим на этот ивент очень коротенький скриптик:

Скрипт

$${
GETID(%XPOS%,%YPOS%,%ZPOS%,&idblock);
IF(%&idblock%=“lava”)
ECHO("/home");
ENDIF
IF(%&idblock%=“flowing_lava”)
ECHO("/home");
ENDIF
}$$

Скрипт с комментариями

$${ //открыть блок функции
GETID(%XPOS%,%YPOS%,%ZPOS%,&idblock);//получить айди блока,в котором вы стоите
IF(%&idblock%=“lava”)//сравнить название блока с лавой,если это лава,то
ECHO("/home");//выполнить команду /home
ENDIF//конец блока проверки
IF(%&idblock%=“flowing_lava”)//такой же блок,который сравнивает блок с текущей лавой
ECHO("/home");//тпшнуться домой
ENDIF//закрыть блок сравнивания
}$$//закрыть блок функции

Скрипты

  • правила создания
    Все скрипты могут храниться как в отдельных файлах, так и быть написано напрямую в текстовом поле макроса, однако первый вариант предпочтителен для длинных и/или сложных программ, где легко запутаться в синтаксисе и пропустить ошибку. И так,приступим:
    Все скрипты хранятся по пути: C:\Users%USER%\Pentacraft\updates%SERVER%\liteconfig\common\macros
    Записываются они в текстовые файлы с расширением .txt , например, lava.txt
    И чтобы запустить выполнение скрипта, мы прописываем $$<script.txt> на кнопку или эвент
    image
    Синтаксис прост донельзя: начало обозначается двумя знаками доллара и открытой фигурной скобкой,конец закрытой фигурной скобкой и так же двумя знаками доллара.
    То есть самый короткий скрипт,что мы можем создать,но который при этом,очевидно,не будет нести смысловой нагрузки,выглядит так: $${}$$; Весь ваш код помещается между этими фигурными скобками,а используемые функции (или команды,как это проименованно в моде) разделяются точкой с запятой.

  • Функции
    Список всех доступных функций с кратким пояснением на английском языке вы можете найти по ссылке: Функции (Click me!)
    Этим функциям мы должны передать определенные параметры,общий вид:
    FUNCTION(parameter1, parameter2, и т.д.);
    Все функции пишутся заглавными буквами, не забудьте про это при написании.
    Например:
    $${
    LOG(here a client-side chat message);
    }$$
    выдаст нам в клиентский лог сообщение “here a client-side chat message”, выглядеть это будет так:
    image
    Функция LOG пишет исключительно в ваш клиент,то есть этот текст не отправляется в общий чат сервера,его видите только вы.

  • Переменные
    Список всех переменных с кратким пояснением на английском языке вы можете найти по ссылке: Переменные (Click me!)
    Есть как глобальные,которые хранят какие-либо переменные игры, так и локальные, которые доступны исключительно из родительского скрипта. Если вы объявите переменную,то и использовать её вы сможете исключительно в том скрипте,который вы объявили. Те,что перечислены на сайте,ссылку на который вы видите выше,являются глобальными и отражают какие-либо игровые параметры.
    Если вы хотите хранить какие-то данные,то создать их можно следующим образом:

  • Текстовая переменная - обозначается как: &имя_переменной - предназначена для хранения текста, значение переменной обозначается в кавычках " "

  • Числовая переменная - обозначается как: #имя_переменной - предназначена для хранения чисел

  • Логическая переменная - обозначается просто: имя переменной - данная переменная может принимать либо значение true (истина), либо false (ложь).

  • Массивы - объекты для хранения переменных, обозначается массив перечислением всех его элементов, т.е. имя_массива[]=значение

  • Ивенты/События
    Список всех ивентов с кратким пояснением на английском языке и списком уникальных переменных вы можете найти по ссылке: Ивенты (Click me!)

9 Симпатий