# Переменные

### **Синтаксис**

Обращение к переменным происходит при помощи символа `$`, который пишется перед названием переменной.

Допустим, мы хотим изменить кол-во lovepoint'ов Химицу, которые хранятся в глобальной переменной `lp_hi`:

```
# прибавляет единицу к значению глобальной переменной lp_hi
$lp_hi += 1
```

Или проверить кол-во очков:

```
if ($lp_hi >= 10)
{
  hi "Условие выполнено!"
}
```

Также мы можем просто написать переменную отдельной строкой, в таком случае игра выведет её значение в текстовом окне:

```
$lp_hi
```

Переменные работают при помощи интерпретатора JavaScript, поэтому с ними можно проводить любые манипуляции, поддерживаемые JS (за исключением использования функций и присваиваний внутри текста).

Допустим, можно вывести значение переменной внутри текста при помощи [интерполяции строки](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals "Template literals (Template strings)"):

```
$lp_hi += 10
`У вас ${$lp_hi} очков!`
```

<p class="callout danger">Весь текст внутри файлов сценариев, за исключением текста внутри кавычек, приводится к нижнему регистру. Внутри интерполируемых строк регистр учитывается — используйте только нижний регистр, когда обращаетесь к переменным.  
</p>

### **Виды переменных**

Переменные в игре делятся на 3 типа:

- Глобальные переменные
- Persistent переменные (постоянные)
- Runtime переменные (временные)

#### **Глобальные переменные**

Глобальные переменные — переменные, определённые заранее в игре или в файле ресурсов мода. Эти переменные доступы в любой точке сценария и их значения сохраняются при переходе на следующий сценарий и в файлах сохранений.

#### **Persistent переменные**

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

Отличие в том, что они не определяются нигде заранее и их значения доступны между разными модами.

Чтобы воспользоваться persistent-переменной, достаточно просто обратиться к ней, написав `$persistent.` перед её именем:

```
# задаёт значение 10 persistent-переменной some_value
$persistent.some_value = 10

if ($persistent.some_value == 10)
{
    "Условие выполнено"
}
```

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

#### **Runtime** **переменные**

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

Они определяются при помощи команды `var`:

```
var some_variable
```

При определении также можно указать значение переменной:

```
var some_variable = true
```

После определения, она будет доступна также, как и любая другая переменная:

```
var some_variable = true

# можно также записать как if ($some_variable)
if ($some_variable == true)
{
  "Условие выполнено!"
}
```

### **Условия**


Для различных проверок в игре используются условия.

Поддерживаются следующие команды:

- `if`
- `else if`
- `else`

Примеры:

```
# lp_hi - глобальная переменная, определённая в игре. В ней хранятся лавпоинты (очки) Химицу.

if $lp_hi >= 10
{
  "У вас достаточно лавпоинтов Химицу!"
}
else if $lp_hi >= 5
{
  "У вас не хватает 5 лавпоинтов Химицу!"
}
else
{
  "У вас слишком мало лавпоинтов Химицу."
}
```

### **datetime**

Это вспомогательная переменная, которая позволяет получить информацию о текущей дате на устройстве игрока.

<p class="callout danger">Для вызова этой переменной **не** нужно ставить символ `$`.</p>

У неё есть следующие свойства:

- `date`
- `day`
- `month`
- `year`
- `hour`
- `minute`
- `second`

Доступ к любому из них можно получить при помощи `.` после названия переменной:

```
datetime.date
datetime.day
datetime.month
datetime.year
datetime.hour
datetime.minute
datetime.second
```

Пример вывода:

[![image.png](https://docs.lmr.su/uploads/images/gallery/2023-08/scaled-1680-/bDpDbAMAkV6fxYUT-image.png)](https://docs.lmr.su/uploads/images/gallery/2023-08/bDpDbAMAkV6fxYUT-image.png)