Макросы

Киллаура, иксрей, флай (нет)

Если вы уже смотрели чей-то код на языке Skript то вы уже наверняка замечали такой блок как Options.

В изучаемом нами языке нету постоянных значений, называемых константами (в дословном переводе постоянная), но есть макросы.

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

То есть это не просто какие-то постоянные значения, это целые строки кода, давайте посмотрим на применение:

options:
  PI: 3.14

on load:
  broadcast "PI is {@PI}"
  broadcast "sin(PI) ~ %sin({@PI})%"

Мы обозначили макрос с именем PI и задали ему значение в виде 3.14 Если вам до сих пор не ясно, как это работает, то вот пояснение с примерами из жизни:

представьте, что вам дали какой-либо текст и вам необходимо по шаблону заменить какие-то слова или фрагменты текста на другой фрагмент или слово, блок options выполняет аналогичную функцию, он ищет перед моментом обработки кода выражения из блока options внутри основного кода и заменяет {@название} на значение этого параметра. Больше примеров для понимания:

options:
  message: "Вы разрушили блок %event-block%"
  block for pay: stone
  money name: руб
  money amount: 50
on break:
  send {@message}
  if event-block is {@block for pay}:
    send "Получено {@money amount} {@money name}"

Если будет сломан любой блок, то игроку будет выведено ‘Вы разрушили блок %имя блока%’, но если сломанный блок - Stone (камень) будет еще написано, что ‘Получено 50 руб’

Вы возможно задаетесь вопросом, почему бы это все не задать в переменные?

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