Переменные

Материал из ML WIKI

Переменная — значение, которым настраиваются блоки-функции путём установки переменных в нужные слоты.

Установка значения в переменную

Чтобы установить значение переменной, необходимо:

  • Держать переменную в руке и написать нужное значение в чат. (Книга и Число)
  • Кликнуть переменной ПКМ и выбрать из данных. (Зелье, Игровое значение и Частица)

Значение таким переменным, как Местоположение и Динамическая переменная, устанавливаются иначе:

  • С помощью блока-функции "Присвоить переменную", можно установить значение Динамической переменной:
    • Общие действия установки значения;
    • Математические действия;
    • Действия с текстами;
    • Действия с координатами.
  • Чтобы установить значение переменной "Местоположение", необходимо перейти в основной мир:
    • ЛКМ - Телепортироваться в обычный мир/Телепортироваться в код.
    • ПКМ - Сохранить в переменную текущую координату игрока.
    • Шифт + ЛКМ - Телепортироваться к сохранённой координате.
    • ПКМ по блоку - Сохранить в переменную координату кликнутого блока.

Список переменных

Текстовая переменная

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

Также этой переменной можно установить звуковой ID, который можно воспроизвести специальным действием.

Примеры использования

  • Создание обучающего сообщения, голограммы или скорборда;
  • Проверка имён, сообщений и других текстовых значений;
  • Установка в текстовую переменную звуковых ID для дальнейшего воспроизведения.

Числовая переменная

Числовая переменная поддерживает только цифры и используется для настройки числовых параметров, типа времени в мира или установки урона игроку. При написании "P" или "E", числовая переменная принимает значение соответствующих чисел π и e.

В настройках времени чаще всего используются не секунды, а тики (1 секунда = 20 тиков). Для экономии времени, числовая переменная поддерживает использование "число+s-m-h (second-minute-hour)", что сразу конвертирует указанное время в тики.

Примеры использования

  • Настройка числовых параметров игрока и мира;
  • Установка счёта строки в скорборде;
  • Установка задержки в действиях "Ждать", "Отправить диалог" и других.

Местоположение

Местоположение способно хранить в себе координаты и направление взгляда. Необходимая вещь в действиях с блоками, а также для создания GUI.

Примеры использования

  • Установка двух координат для выделения и последующего заполнения, копирования и т.д;
  • Установка координаты для создания GUI;
  • Проверка местонахождения игрока, ломаемого блока, блока на месте взгляда и т.п.

Зелье

Данная переменная способна хранить в себе любые зелья, даже не создаваемые. Присутствует возможность настраивать силу и длительность эффекта. Чтобы указать длительность, необходимо взять переменную в руки и написать в чат "m+s (4:20), а чтобы указать силу, нужно сделать то же самое, но уже написав обычное число, которое и будет обозначать силу эффекта.

Примеры использования

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

Игровое значение

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

Примеры использования

  • Информационный скорборд со статистикой игры;
  • Кастомный чат со значением "Сообщение игрока";
  • Наблюдение за нагрузкой кода с помощью "Счётчика выполненных действий".

Эффект частицы

Более 50 частиц помогут разнообразить игру, добавив следы убийства, ходьбы и т.д.

Примеры использования

  • Следы различных действий игрока;
  • Обозначение снаряда в векторном оружии;
  • Использование как косметику.

Динамическая переменная

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

Изменение значения динамической переменной

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

На данный момент, у динамической переменной 4 вида присвоения значения:

  • Общая (прямая) установка значения:
    • "Установить" (=) и "Установить предмет";
    • "Установить количество/количество/название...";
    • "Установить случайное значение" из заранее заготовленных.
  • Математические действия:
    • Умножить, поделить, вычесть, сложить;
    • Прибавить или убавить;
    • Сгенерировать случайное число между двумя числами.
  • Действия с текстом:
    • Объединить тексты;
    • Узнать длину строки в символах;
    • Парсить число. (Превратить текст с числовым значением в числовую переменную)
  • Действия с координатами:
    • Узнать расстояние между двумя координатами;
    • Взять одно из трёх значений указанной координаты;
    • Изменить одно из значений координаты.

Чтобы динамическая переменная не потеряла своё значение после остановки игры, её необходимо сохранить. Для этого нужно взять динамическую переменную в руки и нажать ШИФТ + ПКМ, после чего, у динамической переменной появится статус "СОХРАНЕНО"

Типы динамических переменных

В зависимости от наличия плейсхолдера и его типа, динамическая переменная получит один из двух типов:

  • Глобальная переменная - динамическая переменная, в названии которой отсутствует плейсхолдер и которая существует одна на весь мир.
  • Локальная переменная - динамическая переменная, в названии которой присутсвует плейсхолдер и значение которой зависит от него. Возьмём три разных плейсхолдера: %player%, %victim% и %selected%:
    • %player% - чаще всего используется в строчках кода без выборки, в которых присвоить переменную надо обычному игроку, от лица которого сработало событие кода. При изменении динамической переменной "%player% var", изменится динамическая переменная 'Player1 var'.
    • %victim% - плейсхолдер меняется в зависимости от того, кого бьёт игрок в событиях нанесения урона. Если взять событие "Игрок нанёс игроку урон" и в нём присваивать значение переменной "%victim% var", то будет меняться значение динамической переменной жертвы.
    • %selected% - плейсхолдер, который может хранить в себе не только 1 сущность. Если выбрать всех игроков с помощью блока-функции "Выбрать объект", то при присваивании значения переменной "%selected% var", у переменных всех выбранных игроков поменяется значение.

Использование динамических переменных

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

Статистика игрока

Когда игрок совершает какое-либо действие, например, убийство, к его локальной динамической переменной "%player% kills" прибавляется единица, которая значит одно совершённое действие. Подобную статистику можно отобразить разными способами коммуникации, но самым распространённым является скорборд.

Событие игрока — Игрок убил игрока -> Присвоить переменную — Прибавить (+=) - %player% kills += 1

Лидерборд

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

Событие игрока - Игрок убил игрока -> Если значение - Сравнить числа (Облегчённая версия) - %player% kills > top 1 kills -> Присвоить переменную - Установить (=) - top 1 kills = %player% kills -> Присвоить переменную - Установить (=) - top 1 nickname = %player% nickname

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