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

# Динамическая переменная - объяснение

Динамическая переменная - это одна из переменных, но особенная.

Думаю, если вы дошли до того что хотите знать про Динамическую переменную, то уже знаете про такие переменные как Текст, Число, Местоположение, и так далее. Они предназначены для чего-то конкретного. Текст может быть использован для отправки сообщений, Число для установки времени, Местоположение для телепортации. Собственно, про это и говорят их названия. Но зачем нужна "Динамическая переменная"?

Эта переменная может хранить в себе любое значение - хоть текст, хоть число, хоть координаты - вообще всё. Но так как эти все значения можно задать и другим переменным, то по факту Динамическая переменная хранит в себе другую переменную. Тоесть, если мы в Динамическую переменную **abc** поместим Текст "**kavun**", то когда мы положим **abc** в действие "Отправить сообщение" - нам отправиться "**kavun**", так как **abc** хранит в себе переменную Текст "**kavun**".

Тоесть в буквальном смысле Динамическая переменная может быть любой другой обычной переменной, например Текстом, Числом, Местоположением, Игровым значением и так далее. Но зачем это надо? Для этого давайте еще раз про то, что такое "переменная".

## Что такое переменная?

Вы уже не раз что то делали с обычными переменными, такими как Текст, Число, Местоположение, и так далее. Но почему они называются "переменными"? Если мы возьмем математику (она тут только для примера), то в ней есть 2 понятия - переменные и константы. Константа - это что то неизменное. Просто все математики решили что у такой-то константы будет какое-то там определенное значение, и оно не будет меняться. Самой известной является число ПИ, его значение 3.14 - это радиус круга. И это значение всегда будет 3.14. Переменная же в свою очередь меняться может. например, если мы сделаем переменную "a", то мы можем ей задать абсолютно любое значение, хоть 10, хоть 20, хоть 100. Но причем тут это к нашим переменным в кодинге?

Все дело в том, что обычные переменные, такие как Текст, Число и Местоположение - немного константы. Если мы возьмем к примеру переменную Текст, зададим ей значение "Добро пожаловать в мир", и положим в действие - то потом мы её можем взять и задать ей какое-то другое значение, например "Привет, игрок". Но есть одно но - мы её можем изменять только в кодинге, и только мы сами. В этом нет проблемы до тех пор, пока нам не надо будет сделать, допустим, счётчик киллов.

Например нам надо сделать так, что бы когда игрок убивал кого-то, то ему в чат отправлялось то, сколько киллов он уже сделал. Тоесть каждый килл будет прибавлять +1 к общему количеству киллов. Но как это сделать с переменной Число? Как к ней прибавлять +1 после каждого убийства? Мы же не будем вручную это делать - смотреть в мире что игрок убил игрока, заходить в код, и прибавлять к этой переменной число. Тут нам и поможет Динамическая переменная

## Как менять Динамическую переменную?

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

Менять Динамическую переменную можно при помощи блока "Установить переменную". Давайте сделаем такой простой код: При входе игрока поставим блок Установить переменную. И в этом блоке выберем, как ни странно, действие "Установить переменную". Это самое базовое действие которое позволит нам установить Динамической переменной какое-то значение.

Теперь, давайте возьмем саму Динамическую переменную. Ей надо имя - оно ни на что не влияет, оно нужно лишь для того, что бы мы могли с ней дальше что то делать. Что бы задать ей имя, возьмите её в руку и напишите имя в чат. К примеру "Hello". Всё, теперь её можно положить в блок Установить переменную - в первый слот.

Затем, возьмем например переменную Текст. Тут вы знаете как ей устанавливать значение. Например, пускай она будет "Привет, добро пожаловать в мир!". И теперь её тоже можно положить в блок Установить переменную - во второй слот.

Впринципе, наш код готов. Теперь при входе игрока в мир - Динамической переменной **Hello** установится значение того Текста, который мы положили в сундук. Тоесть - "Привет, добро пожаловать в мир!". Осталось проверить, будет ли это работать. Сразу после блока Установить переменную можно поставить Действие игрока "Отправить сообщение". В это отправить сообщение и поместите эту Динамическую переменную **Hello**. Теперь зайдите в /play. Если вы всё получилось - то вам отправится сообщение "Привет, добро пожаловать в мир!".

## На практике, и про личные переменные

Теперь давайте при помощи Динамической переменной попробуем создать счётчик киллов, который будет работать по такому принципу: Когда игрок кого-то убивает, то к его убийствам прибавляется +1.

Для начала сделаем основу кода - поставим Событие "Игрок убил игрока", после него блок Установить переменную, и Действие игрока "Отправить сообщение". В блоке Установить переменную найдите действие "**+=**". Не перепутайте его просто с "**+**", потому что просто плюс работает как калькулятор, а не как прибавление.

Теперь давайте сделаем Динамическую переменную. И тут надо рассказать про то, что такое Личная и Общая переменная. Общая переменная это та, которая у всех игроков одинаковая. Например, если я переменной **kills** установлю значение 1 и отправлю в чат, то у каждого игрока эта переменная будет 1. И это не подходит для счетчика киллов, потому что у каждого игрока должно быть свое количество убийств. Поэтому нам нужна Личная переменная - это та, которая у каждого игрока своя. Делается она очень легко - просто добавьте в названии слово %player%. Получится так: **%player%kills**. Теперь, если мы к этой переменной %player%kills будем добавлять +1, то она добавится только тому игроку, который убил, и это количество убийств будет только у него.

Теперь поместите эту переменную %player%kills в сундук, а так-же Число 1, оно будет каждый раз прибавляться (так как у нас выбрано действие +=). В действие игрока тоже положите эту переменную - так нам каждый раз при убийстве будет отправляться количество наших убийств.

Так-же немного про сохранение переменных. По стандарту, когда мы выйдем из мира то наша переменная сбросится. Если она личная - то сбросится сразу же как только игрок выйдет из мира, если она общая - то сбросится после того как мир закроется, тоесть когда выйдут все игроки. Что-бы этого не было, тоесть результат например счетчика киллов сохранялся, нужно сохранить переменную - для этого возьмите её в руку, нажмите шифт и кликните. Теперь, если вы зайдете в инвентарь и наведете курсор на неё - у вас будет розовая надпись "СОХРАНЕНО".

# Установить переменную

Установить переменную - это блок, позволяющий делать с Динамической переменной разные действия. Например задать ей значение, изменить в ней координаты, прибавить или отнять число, и так далее. Значение - это любая другая переменная, например Текст, Число, Местоположение, Игровое значение. **Значением так-же может быть и другая Динамическая переменная**.

### Установить переменную

Это действие позволяет установить Динамической переменной определенное значение. В первый слот необходимо поместить Динамическую переменную, а во второй слот - любое значение. **D** = **v**

### Установить (+)

Это действие позволяет приплюсовать два числа между собой и записать результат в Динамическую переменную. Так-же этим действием можно склеить два текста между собой. В первый слот необходимо поместить Динамическую переменную в которую будет записан результат. Во второй и третий слот - Числа, которые нужно приплюсовать между собой (либо Тексты, которые нужно склеить). Если во втором слоте Текст будет, а в третьем слоте не будет - то Текст будет прибавляться к Динамической переменной. При попытке сложить Тексты в которых находяться только числа - произойдёт ошибка (смотрите действие Парсить число). **D** = **n** + **n** или **D** = **t** + **t**

### Установить (-)

Это действие позволяет отминусовать одно число от другого и записать результат в Динамическую переменную. В первый слот необходимо положить Динамическую переменную в которую будет записан результат. Во второй слот - Число, от которого будет отниматься. В третий слот - Число, которое будет отниматься. При попытке сложить Тексты в которых находяться только числа - произойдёт ошибка (смотрите действиеи Парсить число). **D** = **n** - **n**

### Установить(∗)

Это действие позволяет умножить два числа между собой и записать результат в Динамическую переменную. В первый слот необходимо положить Динамическую переменную в которую будет записан результат. Во второй и третий слот - числа, которые нужно умножить между собой. **D** = **n** \* **n**

### Установить (/)

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

### Остаток от деления (%)

Это действие позволяет поделить одно число на другое, и записать остаток деления в Динамическую переменную. Остаток - это число, которое "не влезло". Например, если мы возьмем пример **6 : 2**, то в результате получим **3**, это число без остатка. Но если мы сделаем **7 : 2**, то у нас не получится ровное число, у нас получится **3.5**, и остатком у нас будет число **1**. Остаток получается при делении в столбик. В первый слот необходимо положить Динамическую переменную в которую будет записан остаток. Во второй слот - число, которое будет делиться. В третий слот - число, на которое первое число будет разделено. **D** = **n** % **n**

### Прибавить (+=)

Это действие позволяет прибавить к Динамической переменной число. В первый слот необходимо положить Динамическую переменную к которой будет прибавляться число. Во второй слот - Число, которое будет прибавляться. **D** += **n**

### Уменьшить число (-=)

Это действие позволяет отнять от Динамической переменной число. В первый слот необходимо положить Динамическую переменную от которой будет отниматься число. Во второй слот - Число, которое будет отниматься. **D** -= **n**

### Парсить число

Это действие позволяет преобразовать Текст в Число. Все дело в том, что в кодинге есть два типа переменных - это "Текстовая" и "Числовая". Эти типы принадлежат к переменной Текст и переменной Число соответственно. И например если мы в переменной Текст напишем "123" - то она не станет числовой, она по прежнему будет текстовой. А с текстовым типом переменных мы не можем делать некоторых действий, например прибавить их. Тоесть если мы прибавим в блоке "Установить переменную" Текст 1 и Текст 2 - у нас не получится 3, нам просто выдаст ошибку. Для этого и существует действие "Парсить число". Оно может сделать текстовую переменную числовой. Тоесть по факту если мы совершим парсинг Текста 1, то это станет Числом 1, которое мы уже сможем приплюсовывать с другими числами. Это полезно, например, для калькулятора - если игрок отправит сообщение "1" и мы занесем его в Динамическую переменную, то это будет текстовой переменной (потому-что это сообщение игрока), и при помощи Парсинга мы сможем её сделать числовой. В сундуке, в первый слот нам необходимо положить Динамическую переменную в которую будет записана новая числовая переменная, созданная из текстовой. Во второй слот - Текст, который нужно преобразовать в Число. Это так-же может быть и Динамической переменной содержащей Текст. **D** = **t**

### Установить рандомное число

Данное действие позволяет установить случайное число из диапазона чисел. Например диапазон между 5 и 10 - это 5, 6, 7, 8, 9, и 10. В первый слот необходимо положить Динамическую переменную в которой будет установлено рандомное число. Во второй слот - первое число из диапазона. В третий слот - последнее число из диапазона. **D** = **n**first to **n**second

### Получить координатупо X

Данное действие позволяет установить в Динамическую переменную координату **X** из Местоположения. В первый слот необходимо положить Динамическую переменную в которую будет записана координата **X**. Во второй слот - Местоположение из которого эта координата будет взята. **D** = p

### Получить координату по Y

Данное действие позволяет установить в Динамическую переменную координату **Y** из Местоположения. В первый слот необходимо положить Динамическую переменную в которую будет записана координата **Y**. Во второй слот - Местоположение из которого эта координата будет взята. **D** = **p**

### Получить координату по Z

Данное действие позволяет установить в Динамическую переменную координату **Z** из Местоположения. В первый слот необходимо положить Динамическую переменную в которую будет записана координата **Z**. Во второй слот - Местоположение из которого эта координата будет взята. **D** = **p**

### Получить угол поворота экрана

Данное действие позволяет установить текущую координату ширины локации взгляда. Если вы нажмёте F3, то сможете найти пункт Facing. Повертите голову. Эти координаты изменятся. Они указывают на то, в какую сторону игрового мира игрок смотрит. Именно не на блок, а на сторону игрового мира. Он трёхмерный, тоесть как куб, и эти координаты показывают в какую сторону в кубе игрок смотрит. Первая координата - это ширина. Вторая координата - высота. В первый слот необходимо положить Динамическую переменную в которую будет установлена ширина. Во вторую - Игровое значение "Текущая локация взгляда". **D** = **g**

### Получить высоту поворота экрана

Данное действие позволяет установить текущую координату высоты локации взгляда. Если вы нажмёте F3, то сможете найти пункт Facing. Повертите голову. Эти координаты изменятся. Они указывают на то, в какую сторону игрового мира игрок смотрит. Именно не на блок, а на сторону игрового мира. Он трёхмерный, тоесть как куб, и эти координаты показывают в какую сторону в кубе игрок смотрит. Первая координата - это ширина. Вторая координата - высота. В первый слот необходимо положить Динамическую переменную в которую будет установлена высота. Во вторую - Игровое значение "Текущая локация взгляда". **D** = **g**

### Получить расстояние

Данное действие позволяет получить расстояние от одного блока до другого (расстояние в блоках). Если представить расстояние в символах, то получится так: @ # # # # # @. Собачки - это местоположения. Решетки - это то, какое расстояние в блоках получиться. Но на самом деле, к этому расстоянию по какой-то причине добавляется 1. Так-же вычисление расстояние работает корректно только при ровных линиях. Если линия будет под углом - получиться куча цифр. В первый слот необходимо положить Динамическую переменную в которую будет занесено расстояние. Во второй слот - первую точку из линии, в третий слот - вторую точку из линии. **D** = **p**first **p**second

### Изменить координаты

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

### Изменить локацию взгляда

Данное действие позволяет изменить локацию взгляда у игрока. Если вы нажмёте F3, то сможете найти пункт Facing. Повертите голову. Эти координаты изменятся. Они указывают на то, в какую сторону игрового мира игрок смотрит. Именно не на блок, а на сторону игрового мира. Он трёхмерный, тоесть как куб, и эти координаты показывают в какую сторону в кубе игрок смотрит. Первая координата - это ширина. Вторая координата - высота. Это действие позволяет именно прибавить и отнять ширину и высоту. В первый слот необходимо положить Динамическую переменную в которую будут занесены измененные координаты ширины и высоты. Второй и Третий слоты - это слоты для Чисел. Числа это то, насколько будет прибавляться/отниматься координата. Первой идет ширина, второй - высота. В той координате, котоую изменять не нужно, поставьте Число 0 (иначе ничего не сработает). В той координате которую надо изменять, поставьте то число, на которое её нужно прибавить. Если её наоборот нужно отнять - поставьте отрицательное число, тоесть с минусом. Последним, в четвертом слоте - нужно поставить Игровое значение "Локация взгляда". Например, вот как это может выглядеть: Динамическая переменная | 0 | -3 | Локация взгляда. В таком случае от координаты высота отнимется 3, а ширина останется такой же.

### Установить локацию взгляда

Данное действие позволяет установить локацию взгляда у игрока. Если вы нажмёте F3, то сможете найти пункт Facing. Повертите голову. Эти координаты изменятся. Они указывают на то, в какую сторону игрового мира игрок смотрит. Именно не на блок, а на сторону игрового мира. Он трёхмерный, тоесть как куб, и эти координаты показывают в какую сторону в кубе игрок смотрит. Первая координата - это ширина. Вторая координата - высота. В первый слот необходимо положить Динамическую переменную в которую будут занесены измененные координаты ширины и высота. Второй и Третий слоты - это слоты для Чисел. Числами будут новые координаты ширины и высоты. Первой идет ширина, второй - высота. Например, вот как это может выглядеть: Динамическая переменная | 64.8 | -7.0 | Локация взгляда. В таком случае координаты локации взгляда установятся на 64.8 / 7.0

### Получить длинну текста (variable\_get\_text\_length)

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

### Разделить текст (variable\_split\_text)

Данное действие позволяет разделить текст на две части. В первый слот необходимо положить Динамическую переменную в которую будет записан разделенный текст. Во второй слот - Текст. В третий слот - символ по которому будет разделен текст. Разделение текста работает очень странно. Например, если мы разделем Текст **garbuz** по символу **r**, то по итогу получим такое: **[ga, rbuz]**. Если вы знаете, как правильно пользоваться разделением текста, напишите об этом.

### Получить символ по индексу

Данное действие позволяет получить определенный символ из текста по номеру символа. Например, в тексте "Mouse" - символ **u** находиться под номером **3**. В первый слот необходимо положить Динамическую переменную в которую будет записан символ по номеру. Во второй слот - Текст. В третий слот - Число с номером символа. К сожалению, это действие работает некорректно, оно каждый раз дает первый символ из Текста.

### Заменить текст в тексте (variable\_replace\_text)

Данное действие позволяет заменить определенный текст в тексте другим текстом. Например, в "Добро пожаловать в мир", при помощи этого действия можно заменить "мир" на "плот", и получиться "Добро пожаловать в плот". В первый слот необходимо положить Динамическую переменную в которую будет записан новый получившийся текст. Во второй слот - Текст, который нужно изменить. В третий слот - Текст, который будет изменён в этом тексте. В четвертый слот - Текст, на который будет заменён этот текст. Например так: Динамическая переменная | Привет игрок | игрок | посетитель. В данном случае в тексте "Привет игрок" - "игрок" будет заменено на "посетитель".

### Очистить цвета текста (variable\_clear\_text\_colors)

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

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

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

### Переменная существует

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

### Переменная равна

Данное условие позволяет определить, равна ли Динамическая переменная определенному значению. Например, равна ли Динамическая переменная **abc** Тексту "**Hi**" (или другими словами содержит ли она в себе определенную переменную).

### Не равно

Данное условие позволяет определить, не равна ли Динамическая переменная определенному значению. Вместо этого условия так-же можно использовать "Стрелку НЕ" вместе с условием "Переменная равна". Таким образом получится "Переменная НЕ равна"

### Больше

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

### Больше или равна

Данное условие позволяет определить, больше или равна Динамическая переменная определенному числу. Тоесть, если в этом условии будет цифра 4 - то что бы код в поршнях сработал нужно что бы Динамическая переменная была либо 4, либо больше.

### Меньше

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

### Меньше или равна

Данное условие позволяет определить, меньше или равна Динамическая переменная определенному числу. Тоесть, если в этом условии будет цифра 4 - то что бы код в поршнях сработал нужно что бы Динамическая переменная была либо 4, либо меньше.

### Если текст равен

Данное условие позволяет определить, равна ли переменная определенному Тексту. Отличается от "Переменная равна" тем, что тут не важно, в каком регистре был написан текст - в верхнем или нижнем. Тоесть если например Динамическая переменная **abc** будет равна "HyNeo", то этому условию не важно, будет написано "HYNEO", или "hyneo", или "HyNeO" - оно все равно засчитает это.

### Если текст содержит

Данное условие позволяет определить, содержит ли Динамическая переменная определенный текст. Например, если мы проверим, содержит ли Динамическая переменная **abc** со значением "abcdefg" текст "cde" - то да, она содержит.