# Возможности

Sanny Builder как среда программирования предоставляет пользователю следующие возможности.

## Интеграция с Sanny Builder Library <a href="#integration-with-sanny-builder-library" id="integration-with-sanny-builder-library"></a>

Sanny Builder Library - это портал, наполняемый сообществом, который ставит перед собой задачу задокументировать все известные скриптовые команды, используемые в GTA III, Vice City и San Andreas. Вы можете найти его по адресу <https://library.sannybuilder.com/>.

Начиная с версии 3.8.0 Sanny Builder использует файлы библиотеки, чтобы дополнить функцию [Показ различной информации об опкоде](/ru/editor/features.md#pokaz-razlichnoi-informacii-o-tekushem-opkode) кратким описанием того, что делает этот опкод. Пути к файлам библиотеки контролируются новым параметром `<library>` в [конфигурации режима редактирования](/ru/edit-modes.md#library).

Если выбранный режим редактирования использует документацию из библиотеки, в нижней панели будет отображаться её версия , например `SBL v0.119`. Версия может отличаться в разных режимах.

![](/files/-MgEMCcgZ5iZtOfqPzdl)

При клике по версии в нижней панели будет показано всплывающее меню, из которого можно проверить наличие новых обновлений и скачать их. Если включить опцию `Обновлять автоматически при запуске`, Sanny Builder будет проверять обновления и скачивать их автоматически при каждом запуске.

## Темы оформления <a href="#color-themes" id="color-themes"></a>

Внешний вид Sanny Builder может быть изменен при помощи тем оформления. Они задают цвета и стиль элементов интерфейса и правила подсветки синтаксиса. Текущую тему можно сменить в [опциях](/ru/editor/options/editor.md#tema-oformleniya) программы.

{% hint style="info" %}
Если запустить Sanny Builder v3.8.0 с файлом `settings.ini` из предыдущей версии программы, настройки подсветки синтаксиса будут сконвертированы в пользовательскую тему оформления (файл `themes\custom.ini`).
{% endhint %}

Также в Sanny Builder имеется [встроенный редактор](/ru/editor/options/theme-editor.md) для быстрой модификации существующих тем.

## Быстрый переход по тексту <a href="#bookmarks-quick-jump" id="bookmarks-quick-jump"></a>

Текущую строку можно запомнить, если поставить закладку нажатием `Ctrl+Shift+0..9`, а затем вернуться к ней нажатием `Ctrl+0..9`. \
Удалить все закладки можно через меню `Правка -> Удалить закладки`.

Также можно перейти к строке по ее номеру через опцию `Перейти...`. Она вызывается комбинацией `Ctrl+G`. Введите порядковый номер нужной строки, и редактор быстро переместит Вас к ней.

## Переход к определению <a href="#navigate-to-symbol" id="navigate-to-symbol"></a>

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

Чтобы перейти к строке, обозначенной меткой (например, `:MyLabel`), поместите курсор на ссылку на эту метку (`@MyLabel`) и нажмите `Alt+Вправо`. Если такая метка существует, редактор немедленно переместит на неё курсор.

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

Чтобы вернуться обратно, нажмите `Alt+Влево`. Продолжайте нажимать, если переходов было несколько.

Сочетания клавиш для этой функции можно изменить в [настройках](/ru/editor/options/hotkeys.md).

## Показ различной информации о текущем опкоде

При включенной [опции](/ru/editor/options/editor.md#nastroiki) `Показывать информацию об опкодах` в нижней панели редактора выводится:

* количество параметров для опкода;
* ID модели, когда курсор находится над [ее именем](/ru/coding/data-types.md#imena-modelei) и `IDE` файлы для текущего [режима редактирования](/ru/edit-modes.md#ide) загружены;
* значение [константы](/ru/coding/constants.md), когда курсор находится над именем константы и [языковая служба](/ru/editor/language-service.md) включена;
* краткое описание того, что делает эта команда (из [Sanny Builder Library](/ru/editor/features.md#integration-with-sanny-builder-library)).

## Поиск нужного опкода

Используйте программу [поиска опкодов](/ru/editor/opcode-search-tool.md), чтобы найти нужный опкод.

## Изменение координат и угла разворота игрока

Нажмите `Ctrl+Alt+1`, когда запущена игра, и появится окно менеджера. Здесь вы можете установить новые координаты и угол разворота игрока и скопировать текущие. В верхнем поле ввода вы можете указать сразу 3 координаты, разделив их пробелом или `,`. Также вы можете быстро вставить координаты игрока в редакторе комбинацией `Ctrl+Shift+C`. Вставка угла разворота (`z_angle`) в редакторе производится нажатием `Ctrl+Shift+E`.

## Запись и воспроизведение нажатий кнопок

Можно записывать последовательность нажатия клавиш (макрос) и воспроизводить ее позднее. Например, есть следующий код:

```
$Actor = Actor.Create(CivMale, #MALE01, 100.0, 100.0, 10.0)
$ActorWithGun = Actor.Create(CivMale, #MALE01, 110.0, 100.0, 20.0)
$Gang01 = Actor.Create(CivMale, #MALE01, 120.0, 100.0, 30.0)
$Gang02 = Actor.Create(CivMale, #MALE01, 130.0, 100.0, 40.0)
$Killer = Actor.Create(CivMale, #MALE01, 140.0, 100.0, 50.0)
$ActorWithoutGun = Actor.Create(CivMale, #MALE01, 150.0, 100.0, 60.0) 
```

Допустим, нужно обменять переменные в каждой паре строк (поставить вместо `$Actor` `$ActorWithGun`, а вместо `$ActorWithGun` - `$Actor` и т.д.).

Поставьте курсор на первую строку и нажмите `Ctrl+M`. С этого момента редактор запоминает все нажатия клавиш, так что будьте осторожны.

1. Зажмите `Ctrl` и нажмите один раз `стрелку вправо`. `Ctrl` нужен так как строки разной длины.&#x20;
2. Теперь нажмите `Shift+Home` и `Ctrl+Ins`.&#x20;
3. Нажмите `стрелку вниз`. Курсор должен оказаться на второй строке, при этом глобальная переменная будет в буфере обмена.&#x20;
4. Нажмите `Ctrl+стрелка вправо` и `Shift+Ins`.
5. Нажмите `Ctrl+стрелка влево`, `Shift+Home`, `Ctrl+Ins` и кнопку `Delete`
6. Нажмите `стрелку вверх`
7. Нажмите `Ctrl+Shift+стрелка вправо` и `Shift+Ins`
8. Нажмите кнопку `Home`.

Теперь первые две строки выглядят так:

```
$ActorWithGun = Actor.Create(CivMale, 100.0, 100.0, 10.0)
$Actor = Actor.Create(CivMale, 110.0, 100.0, 20.0)
```

и курсор стоит в начале первой строки. Теперь нажмите `Ctrl+M`. Макрос записан. Теперь можно воспроизводить записанную последовательность комбинацией `Ctrl+P`. Установите курсор на третью строку, нажмите `Ctrl+P`, и переменные `$Gang01` и `$Gang02` поменяются местами.

Во время записи макроса можно поставить/снять запись на паузу нажатием `Ctrl+P`.

## Замена номеров миссий на их названия

Sanny Builder допускает использовать имя миссии в команде `start_mission`. Именем миссии явлется ее метка, которая определена в блоке `DEFINE MISSION`.

Например, у вас есть&#x20;

```
DEFINE MISSION 10 AT @MYMISSION
```

Вы можете использовать вместо `start_mission 10` команду `start_mission MYMISSION`.

Также существует [опция](/ru/editor/options/general.md#zamenyat-nomera-missii) `Заменять номера миссий`. Когда она включена, дизассемблер автоматически заменяет все номера миссий в коде на их имена. Эта опция дает возможность безболезненно удалять миссии, не заботясь о переименовывании номеров в коде.

Для дополнительного удобства после команды `start_mission` можно вызвать список имен миссий нажатием `Ctrl+пробел`.

См. также [Быстрый переход к миссии](/ru/editor/features.md#navigate-to-symbol).

## Использование оригинальных имен миссий

Начиная с версии 3.2.0 Sanny Builder поддерживает оригинальные названия миссий для каждого [режима редактирования](/ru/edit-modes.md). Названия содержатся в файле `missions.txt`. Этот файл используется при дизассемблировании, чтобы добавить название миссии как комментарий рядом командой определения (`DEFINE MISSION`) или вызова миссии (`start_mission`).&#x20;

При дизассемблировании `main.scm` с измененными миссиями, отредактируйте соответствующий файл `missions.txt`, чтобы названий миссий соответствовали скрипту.

## Многоязычный интерфейс

Sanny Builder обладает интерфейсом, переведенным на 15 языков. Переключить язык можно в [опциях](/ru/editor/options/general.md#yazyk-interfeisa) (`F10`). Информацию по созданию или изменению переводов можно найти на [sannybuilder/translations](https://github.com/sannybuilder/translations).

## Меню внешних приложений

<figure><img src="/files/PXR8WMhKYf0Vnnd8qmHE" alt="" width="375"><figcaption><p>Интерфейс настройки внешних приложений</p></figcaption></figure>

Вы можете добавить в меню `Инструменты` до `9` внешних приложений и запускать по мере необходимости. Каждому приложению можно присвоить комбинацию горячих клавиш и параметры, необходимые для запуска.

Для передачи в запускаемое приложение пути к открытому в редакторе файлу используйте специальное слово: `$SB_FileName`.

Начиная с версии 3.7.0 также можно использовать переменные `@sb:` и `@game:`, которые представляют директорию Sanny Builder и директорию текущей игры соответственно, в параметрах вызываемого приложения:

```
Параметры:
--cwd=@sb: --game-dir=@game:
```

## Проверка обновлений

Sanny Builder может проверить, доступна ли новая версия программы. Чтобы использовать эту возможность, пройдите в меню `Справка->Проверить обновления...`. Программа подключится к серверу обновлений и предложит скачать и установить обновление, если оно найдено.&#x20;

Sanny Builder может автоматически проверять наличие обновления при запуске, если вы включите соответствующую опцию в окне меню обновлений.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sannybuilder.com/ru/editor/features.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
