Функция

## Что такое функции?

Функция и Вызвать функцию - два блока кодинга, позволяющих создавать и вызывать функции.

Блок Функции всегда ставиться на первую строку. Для простоты, эту строку можно назвать "Строкой функции". При помощи блока Вызвать функцию - эту строку можно потом где-то в кодинге использовать. Например, если в строке Функции мы напишем код с Действием игрока "Отправить сообщение 123", то потом, когда мы эту функцию где-то используем (вызовем) - нам будет отправляться сообщение 123. Тоесть когда мы вызываем строку функции - мы используем код который в ней написан.

## Зачем они нужны

Функции это очень удобный иструмент кодинга. Если мы в строке функции напишем код, то потом мы можем вызвать эту строку в любом месте кодинга. Зачем это нужно? Давайте представим что вы делаете магазин в сундуке.

Для магазина в сундуке нам понадобиться сундук в игровом мире, это будет инвентарь магазина. Положим туда 5 предметов которые мы хотим сделать продаваемыми, и назовём этот сундук "Shop" (в наковальне). Вот, как это будет выглядить:

Теперь давайте поставим Событие игрока "Клик в инвентаре" и напишем код, который будет работать так: Когда игрок кликнул в инвентаре и имя инвентаря равно "Shop", Когда слот в котором игрок кликнул равен "0" (тоесть меч), Когда игрок имеет 10 золота - Забрать у игрока 10 золота, Выдать игроку меч. Выглядит он так:

Это очень много само по себе, целых 5 блоков - 3 условия и 2 действия. Но нам это надо еще написать 5 раз! И это только в таком магазине, а в некоторых может быть и 10, и 25, и 50 предметов. А еще этих магазинов может быть несколько. А еще все сундуки тут нужно заполнять. Что бы немного облегчить себе задачу, тоесть уменьшить количество блоков которые нужно ставить - можно воспользоваться Функцией. Если мы ею воспользуемся, то нам не надо будет каждый раз писать "Имя инвентаря равно" - это уже сократит наш код в разы, так как нам его прийдеться копировать несколько раз.

Давайте немного изменим этот код. Поставим Событие игрока "Клик в инвентаре" и условие "Имя инвентаря равно". Теперь поставим Функцию, и в строке функции уже напишем 5 раз этот код для каждого предмета (уже без Имя инвентаря равно). Когда мы продублировали его 5 раз для каждого предмета, вызовем эту Функцию в нашей первой строке, после "Имя инвентаря равно". Получиться как то так:

Кажеться, это всё равно много. Но представьте что этот код был бы длинне из-за того, что нам каждый раз пришлось бы писать условие "Имя инвентаря равно". А так, благодаря функции, мы написали его только один раз, потому что имя инвентаря всегда одно и тоже, зачем его повторять, а вот те условия и действия которые дублируются в функции - не одни и те же, и мы их просто вызываем после того как игрок кликнул в инвентаре Shop.

## Настройка и вызов функции

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

Что бы потом этот код вызвать, воспользуйтесь блоком "Вызвать функцию". Поместите этот блок туда, где вам нужно вызвать код функции, и кликните по его табличке. В нём - выберите название функции которую нужно вызвать.