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

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 использует файлы библиотеки, чтобы дополнить функцию [Показ различной информации об опкоде](#pokaz-razlichnoi-informacii-o-tekushem-opkode) кратким описанием того, что делает этот опкод. Пути к файлам библиотеки контролируются новым параметром `<library>` в [конфигурации режима редактирования](https://docs.sannybuilder.com/ru/edit-modes#library).

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

![](https://2633643746-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MgEIntK5yxcKAwAmuV6%2F-MgEMCcgZ5iZtOfqPzdl%2Fsbl-update-popup-ru.PNG?alt=media\&token=ffccb91a-c2c3-4bc1-8b55-eb77e42c97e5)

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

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

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

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

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

## Быстрый переход по тексту <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+Влево`. Продолжайте нажимать, если переходов было несколько.

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

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

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

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

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

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

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

Нажмите `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`.

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

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

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

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

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

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

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

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

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

<figure><img src="https://2633643746-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0dALM7uq5_eDYhSBjl-1508421016%2Fuploads%2FhY1vZmifdMAroumDB8tL%2Fusertools.PNG?alt=media&#x26;token=aeb46ea1-41e9-4c03-a64c-801462bd3a46" 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 может автоматически проверять наличие обновления при запуске, если вы включите соответствующую опцию в окне меню обновлений.
