> For the complete documentation index, see [llms.txt](https://docs.sannybuilder.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sannybuilder.com/ru/coding/constants.md).

# Константы

**Константа** представляет собой имя, которому соответствует определенное значение. Имя переменной должно быть уникальным в текущем контексте компилирования (основной файл и все [подключенные](/ru/coding/directives.md#usdinclude) файлы).

При компиляции имя константы заменяется на то значение, которое ей было присвоено, например число или строку. В отличие от переменных значение константы не может меняться.

Костанты объявляются статически или динамически. Каждый [режим редактирования](/ru/edit-modes.md) может загрузить статические определения констант из внешнего файла при помощи параметра `<constants>` в `modes.xml`. Динамические определения создаются в скрипте при помощи синтаксиса, описанного ниже.

## Объявление констант

Чтобы объявить в коде новую константу, используйте ключевое слово `const`:

```pascal
const <имя константы> = <значение>
```

Именем константы может быть любая комбинация букв, цифр и `_`, которая не повторяет зарезервированные компилятором имена, такие как `Continue`, `Break`, `And` (см. файл `compiler.ini`). \
\
Значением константы может быть число (а также [имя модели](/ru/coding/data-types.md#imena-modelei) или [метка](/ru/coding/data-types.md#metki)), [строковый литерал](/ru/coding/data-types.md#strokovye-literaly), [переменная](/ru/coding/variables.md) (а также [свойство класса](/ru/coding/classes.md#svoistva)), другая константа.

Например,

```pascal
const x = 5
```

Чтобы объявить несколько констант сразу, разделите определения запятой:

```pascal
const a = 1, b = 2, c = 3
```

Если вы предпочитаете многострочные определения, используйте конструкцию `CONST..END`:

```pascal
const
    a = 1
    b = 2
    c = 3
end
```

Более сложный пример:

```pascal
var
   $PLAYER_CHAR: Player
end

const
    MoneyRequired = 30
    PlayerMoney = $PLAYER_CHAR.Money
end

if
    PlayerMoney > MoneyRequired
then
    PlayerMoney += -1
end
```

Во время компиляции константа `MoneyRequired` будет заменена на число `30`, а `PlayerMoney` на `$PLAYER_CHAR.Money`.

Если [языковая служба](/ru/editor/language-service.md) включена, список констант можно увидеть при нажатии `Ctrl+пробел`.
