Переменные: различия между версиями

Материал из ML WIKI
(Отмена правки 333, сделанной Quasari (обсуждение))
Метка: отмена
м (Quasari переименовал страницу Участник:Quasari/Переменные в Переменные)
 
(не показаны 2 промежуточные версии этого же участника)
Строка 56: Строка 56:
 
*Обозначение снаряда в векторном оружии;
 
*Обозначение снаряда в векторном оружии;
 
*Использование как косметику.
 
*Использование как косметику.
 +
 
== Динамическая переменная ==
 
== Динамическая переменная ==
'''Динамическая переменная''' - переменная, которая является не просто заранее указанным значением, а условной "коробкой", содержимое (значение) которого можно оперативно менять. Динамическая переменная является неотъемлемой частью кода профессионально созданных игр, которая служит хранилищем кастомных значений игрока, частью таймеров, псевдомассивов и других очень важных механик игры.
+
'''Динамическая переменная''' - переменная, которая является не просто заранее указанным значением, а условной "коробкой", содержимое (значение) которого можно оперативно менять.
 
=== <big>Изменение значения динамической переменной</big> ===
 
=== <big>Изменение значения динамической переменной</big> ===
 
Динамической переменной в игре изначально не существует, и чтобы она появилась, необходимо присвоить ей значение с помощью блока-функции "Присвоить переменную". Только после получения значения, динамическая переменная появится в игре и будет служить хранилищем данных.
 
Динамической переменной в игре изначально не существует, и чтобы она появилась, необходимо присвоить ей значение с помощью блока-функции "Присвоить переменную". Только после получения значения, динамическая переменная появится в игре и будет служить хранилищем данных.
Строка 79: Строка 80:
 
**Изменить одно из значений координаты.
 
**Изменить одно из значений координаты.
 
Чтобы динамическая переменная не потеряла своё значение после остановки игры, её необходимо сохранить. Для этого нужно взять динамическую переменную в руки и нажать '''ШИФТ + ПКМ''', после чего, у динамической переменной появится статус "'''СОХРАНЕНО'''"
 
Чтобы динамическая переменная не потеряла своё значение после остановки игры, её необходимо сохранить. Для этого нужно взять динамическую переменную в руки и нажать '''ШИФТ + ПКМ''', после чего, у динамической переменной появится статус "'''СОХРАНЕНО'''"
[[Файл:Сохр. динамическая переменная.png|мини|396x396пкс|Динамическая переменная после сохранения]]
+
 
 +
[[Файл:Сохр. динамическая переменная.png|безрамки|396x396пкс]]
 
=== <big>Типы динамических переменных</big> ===
 
=== <big>Типы динамических переменных</big> ===
 
В зависимости от наличия плейсхолдера и его типа, динамическая переменная получит один из двух типов:
 
В зависимости от наличия плейсхолдера и его типа, динамическая переменная получит один из двух типов:
Строка 93: Строка 95:
  
 
<code>Событие игрока — Убийство игрока -> Присвоить переменную — Прибавить (+=) - %player%_kills += 1 (Число)</code>
 
<code>Событие игрока — Убийство игрока -> Присвоить переменную — Прибавить (+=) - %player%_kills += 1 (Число)</code>
====Лидерборд====
 
Код статистики можно дополнить лидербордом, который будет показывать игрока с самым большим количеством убийств. После убийства, статистика игрока сравнивается со статистикой игрока, у которого больше всего убийств. Если статистика игрока-убийцы больше, то он становится на место того, с кем сравнивался.
 
  
<code>Событие игрока - Игрок убил игрока -> Если значение - Сравнить числа (Облегчённая версия) - %player%_kills > top_1_kills -> Присвоить переменную - Установить (=) - top_1_kills = %player%_kills -> Присвоить переменную - Установить (=) - top_1_nickname = %player%_nickname</code>
+
После обновления лидера по убийствам, можно спавнить NPC, имя которого будет обозначать никнейм лидера, а созданная голограмма под именем - количество убийств.
 +
== Массив ==
 +
'''Массив''' простыми словами - список с уникальным именем, в котором у каждого значения свой номер, именуемый индексом, по которому можно брать из массива значение и использовать его в коде.
  
После обновления лидера по убийствам, можно спавнить NPC, имя которого будет обозначать никнейм лидера, а созданная голограмма под именем - количество убийств.
+
У массива есть два типа сохранения:
 +
* '''Временный''' - массив, который пропадает после остановки мира.
 +
* '''Постоянный''' - массив, который не пропадает после остановки мира.
 +
=== Изменение и использование массива ===
 +
Изменить массив можно действием создания с заранее заданными значениями или действиями добавления новых:
 +
* Очистить / Создать массив;
 +
* Вставить / Заменить элемент массива;
 +
* Добавить в конец массива.
 +
После создания или изменения массива, в последующим необходимым будет использование его значений. Чтобы взять из массива значение, необходимо знать его индекс и использовать действие "Получить элемент массива". Взятое значение будет сохранено в отдельную динамическую переменную.
 +
=== Примеры использования массива в коде ===
 +
==== Лидерборд ====
 +
Используя добавление в массив, его сортировку и выборку по количество убийств.
 +
==== Очистка мира ====
 +
Используя добавление координат в массив, а позже рекурсивной фунцией устанавить пустой блок на каждую координату в массиве.

Текущая версия на 23:13, 23 апреля 2022

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

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

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

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

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

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

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

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

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

Также этой переменной можно установить звуковой ID, который можно воспроизвести Действием игрока "Воспроизвести звук".

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

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

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

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

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

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

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

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

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

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

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

Зелье

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сохр. динамическая переменная.png

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

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

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

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

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

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

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

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

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

Массив

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

У массива есть два типа сохранения:

  • Временный - массив, который пропадает после остановки мира.
  • Постоянный - массив, который не пропадает после остановки мира.

Изменение и использование массива

Изменить массив можно действием создания с заранее заданными значениями или действиями добавления новых:

  • Очистить / Создать массив;
  • Вставить / Заменить элемент массива;
  • Добавить в конец массива.

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

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

Лидерборд

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

Очистка мира

Используя добавление координат в массив, а позже рекурсивной фунцией устанавить пустой блок на каждую координату в массиве.