# Введение

**Sanny Builder** - это среда разработки новых миссий и скриптов для серии игр GTA 3D.&#x20;

В комплект входит дизассемблер, который переводит игровые скрипты в текстовый формат; компилятор, который переводит скрипт в формат, читаемый игрой, и удобный редактор со множеством [вспомогательных функций](/ru/editor/features), таких как подсветка синтаксиса, чтение координат игрока в игре, быстрое перемещение по участкам кода и многое другое. Добавьте к этому быструю скорость работы и настраиваемый синтаксис кода (через [классы](/ru/coding/classes) и [ключевые слова](/ru/coding/keywords)) и вы получите представление о программе.

## Установка и обновление

Запустите инсталлятор и следуйте его инструкциям. Во время установки вы можете дополнительно указать папку с игрой, с которой будете работать, ассоциировать файлы с расширением `.scm` с Sanny Builder, установить [библиотеку CLEO](https://cleo.li/ru). Все эти [опции](/ru/editor/options) вы можете потом изменить в самой программе.

Для полного удаления программы запустите файл `unins000.exe` в директории программы.

Свежие версии и обновления программы всегда можно найти на официальном сайте [sannybuilder.com](https://sannybuilder.com/)

## Контактная информация

[Discord](https://sannybuilder.com/discord)\
[Sanny Builder на GitHub](https://github.com/sannybuilder/dev/issues)\
[Sanny Builder в **𝕏**](https://twitter.com/SannyBuilderDev)

Используйте программу на свой страх и риск. Делайте резервные копии всех редактируемых файлов.

© 2005-2023 Seemann


# Благодарности

## Участники проекта

Автор и разработчик **Sanny Builder** - [Seemann](https://github.com/x87). Проекту также помогали:

Alexander Blade, Barton Waterduck, BG\_ASM, Capushon, CyQ, Demarest, JernejL, Hammer83, koPPP, listener, MatiDragon, Midnightz, OrionSR, pdescobar, PLPynton, San'OK, Sergey81, spaceeinstein, Silent, Vital, wmysterio, XMDS, Y\_Less, ZAZ, и многие другие.

**Особая благодарность за помощь выражается yelmi и Xieon.**

## Авторы переводов

Y\_Less, tomworld10, -Shadow-Link, Mordecki, Silent, WordsBG, FunGt, Wesser, Mobster, Jost\_Vice, Thomazu, Balint, Ridvan and Tuna (RT), Mega GTAшnik, SHooZ, Yi Yangyijk, VCT team, Alex5526, Marek Simsa, Syping/Hulkkiller, IMasterFX, MINE, MatiDragon, wmysterio, forms55, XMDS, NicusorN5, Sdas50, Bloodriver the Conqueror.

## Программы и компоненты

Delphi 7 © Borland Software Corp\
[http://www.borland.com](http://www.borland.com/)

SynEdit © Команда разработчиков SynEdit\
[http://synedit.sourceforge.net](http://synedit.sourceforge.net/)

Inno Setup © Jordan Russell, Martijn Laan\
<https://jrsoftware.org/isinfo.php>


# История изменений

## v. 4.0.0 - 04.08.2024

* [functions support](https://docs.sannybuilder.com/language/functions) (`function..end`)
* [CLEO 5 modules](https://docs.sannybuilder.com/language/import-export) support
* [new SBL edit modes](/ru/edit-modes#available-modes)
* [debugger](https://docs.sannybuilder.com/editor/scm-debugger) for main.scm scripts
* [`switch..end`](https://docs.sannybuilder.com/language/control-flow/switch)
* binary number format (`0b101010`)
* new tabs
* other improvements and fixes

See the [complete list of changes](https://github.com/sannybuilder/dev/issues/277). Visit [SannyBuilder Discord](https://sannybuilder.com/discord) for additional information and support.

{% hint style="info" %}
This release won't be possible without great feedback and testing from Sanny Builder community as well as support from my [Patreon](https://www.patreon.com/seemann).
{% endhint %}

## v. 3.9.1 - 18.09.2023

* имя массива в выражениях без опкодов  может быть константой [#250](https://github.com/sannybuilder/dev/issues/250)&#x20;
* декомпилятор использует Alloc для глобальных переменных, если они отличаются от CustomVariables.ini [#251](https://github.com/sannybuilder/dev/issues/251)&#x20;
* опция "[Регистр букв](/ru/editor/options/formats#registr-bukv)" по умолчанию установлена в "Как есть" [#256](https://github.com/sannybuilder/dev/issues/256)
* исправлена ошибка, возникающая при компиляции опкода 0B17 [#254](https://github.com/sannybuilder/dev/issues/254)&#x20;
* исправлена ошибка, из-за которой редактор не предлагал использовать исходный код скрипта [#258](https://github.com/sannybuilder/dev/issues/258)&#x20;
* исправлены некоторые проблемы, связанные с объявлением строковых переменных [#259](https://github.com/sannybuilder/dev/issues/259), [#265](https://github.com/sannybuilder/dev/issues/265)

## v. 3.9.0 - 09.09.2023

* названия команд, используемые в JSON файлах [Sanny Builder Library](https://library.sannybuilder.com), могут использоваться в качестве [ключевых слов](/ru/coding/keywords)
* улучшения [HEX..END](/ru/coding/hex..end#byte-repetition) (многократное повторение байтов, подключение бинарных файлов)
* упрощенное объявление [констант](/ru/coding/constants#obyavlenie-konstant) и [переменных](/ru/coding/variables#declaring-a-variable-type) (`const x = 1, y = 2`, `float x, y, z`)
* новые [операторы](/ru/coding/operators#pobitovye-operacii) (побитовые, `=@`, `=#`)
* [директива](/ru/coding/directives) `{$INCLUDE_ONCE}`
* новые [режимы редактирования](/ru/edit-modes) могут быть добавлены простым копированием в папку `data`, файла `modes.xml` больше нет&#x20;
* исправления ошибок и другие улучшения

👏 Спасибо всем, кто помогал и участвовал в этом релизе, а так же большое спасибо тем, кто поддерживает меня на [Patreon](https://patreon.com/seemann).

{% hint style="info" %}
Некоторый ошибочный код, который компилировался в предыдущих версиях, теперь будет вызывать ошибку. См. примеры такого кода [тут](https://github.com/sannybuilder/dev/issues/231#issuecomment-1627984136).
{% endhint %}

[Полный список изменений](https://github.com/sannybuilder/dev/issues/231)

## v. 3.8.5 - 22.02.2023

* исправлен баг [#216](https://github.com/sannybuilder/dev/issues/216)

## v. 3.8.4 - 17.02.2023

* при запуске программы с файлом (опция Открыть с помощью...) ранее открытые файлы должны быть доступны [#151](https://github.com/sannybuilder/dev/issues/151)
* [новая опция](/ru/editor/cli#decompile) командной строки `--decompile`&#x20;
* исправлены баги [#212](https://github.com/sannybuilder/dev/issues/212), [#213](https://github.com/sannybuilder/dev/issues/213), [#180](https://github.com/sannybuilder/dev/issues/180)
* исправлены некоторые проблемы компиляции классов с аргументами в виде строковых литералов

## v. 3.8.3 - 08.01.2023

* исправлены баги [#210](https://github.com/sannybuilder/dev/issues/210), [#204](https://github.com/sannybuilder/dev/issues/204), [#168](https://github.com/sannybuilder/dev/issues/168)
* исправлен [баг](https://github.com/sannybuilder/GetObjectID/issues/1) в поиске моделей
* плагин CLEO+ обновлен до [1.1.3](https://github.com/JuniorDjjr/CLEOPlus/releases/tag/v1.1.3)

## v. 3.8.2 - 08.09.2022

* исправлены баги [#200](https://github.com/sannybuilder/dev/issues/200), [#187](https://github.com/sannybuilder/dev/issues/187)

## v. 3.8.1 - 01.09.2022

* добавлена поддержка большего количества команд, завершающих выражение с несколькими условиями [#133](https://github.com/sannybuilder/dev/issues/133)&#x20;

```
    if and
        0AB0: is_key_pressed 9
	0AB0: is_key_pressed 10
    0AA0: gosub_if_false @label // раньше не работало, теперь компилируется
```

* новые и обновленные [переводы](https://github.com/sannybuilder/translations) (испанский, украинский, румынский, армянский языки)
* [новые темы оформления](https://github.com/sannybuilder/themes), созданные и присланные пользователями
* [большое обновление](https://github.com/MatiDragon-YT/help-system) локальных справочных материалов
* новый [режим редактирования](/ru/edit-modes) для GTA SA PS2 с поддержкой команд PS2 CLEO
* обновлены файлы [CLEO](https://cleo.li/) и плагины:&#x20;
  * CLEO для San Andreas 4.4.1&#x20;
  * CLEO для GTA III и Vice City 2.0.0.6&#x20;
  * плагин [CLEO+ 1.1.2](https://github.com/JuniorDjjr/CLEOPlus/releases/tag/v1.1.2)&#x20;
* исправлены баги [#172](https://github.com/sannybuilder/dev/issues/172), [#189](https://github.com/sannybuilder/dev/issues/189)&#x20;

👏 Спасибо тем, кто участвовал в создании этой версии: [NicusorN5](https://github.com/NicusorN5), [Junior\_Djjr](https://github.com/JuniorDjjr), [wmysterio](https://github.com/wmysterio), [MatiDragon](https://github.com/MatiDragon-YT), [DanielSant0s](https://github.com/DanielSant0s), [JaggerJam69](https://github.com/JaggerJam69), [Vital](https://github.com/VitalRus95), [Sdas50](https://github.com/Sdas50), [nick7](https://github.com/nick7)

[Полный список изменений](https://github.com/sannybuilder/dev/issues/182)

## v. 3.8.0 - 04.08.2021

* [интеграция с Sanny Builder Library](/ru/editor/features#integration-with-sanny-builder-library): новым порталом с документацией по всем известным опкодам
* добавлено 16 [новых тем оформления](https://github.com/sannybuilder/themes)
* дизассемблер теперь выводит содержимое блока `hex..end` как строку, если оно является последовательностью ASCII символов, завершающейся нулевым байтом [#33](https://github.com/sannybuilder/dev/issues/33)
* [новая отладочная опция](/ru/editor/console#skip_extra_info), которая позволяет дизассемблеру игнорировать блок с доп. информацией в конце скрипта
* [новый параметр командной строки](/ru/editor/cli#option) для запуска Sanny Builder с определенными настройками
* [пользовательские шаблоны кода](/ru/edit-modes/code-templates#adding-a-new-template) теперь сохраняются в отдельный файл, чтобы обновления их не перезаписывали
* сочетания [горячих клавиш](/ru/editor/hotkeys), которые использовали цифровую клавиатуру (Numpad), были изменены (Размер текста: Ctrl + +/- and Переход к метке и обратно: Alt + Right/Left)
* плагин [CLEO+](https://github.com/JuniorDjjr/CLEOPlus) обновлен до версии 1.0.8
* обновлены переводы на венгерский, испанский, украинский и китайский языки
* [исправлено 16 багов](https://github.com/sannybuilder/dev/issues/130#issue-805022048)

👏 Спасибо тем, кто помогал с этим релизом: [forms55](https://github.com/forms55), [MatiDragon](https://github.com/MatiDragon-YT), [Vital](https://github.com/VitalRus95), [wmysterio](https://github.com/wmysterio), [XMDS](https://github.com/XMDS)

[Полный список изменений](https://github.com/sannybuilder/dev/issues/130)

## v. 3.7.0 - 30.01.2021

* объявленные [константы](/ru/coding/constants) теперь подсвечиваются ([#28](https://github.com/sannybuilder/dev/issues/28))
* список автодополнения показывает объявленные константы ([#40](https://github.com/sannybuilder/dev/issues/40))
* для каждой вкладки в редакторе можно выбирать свой [режим редактирования](/ru/edit-modes) ([#87](https://github.com/sannybuilder/dev/issues/87))
* новый режим VC Mobile с опкодами CLEO Android ([sannybuilder/data#11](https://github.com/sannybuilder/data/pull/11))
* в режим VC PC добавлены опкоды из [Opcode Restoration project](https://github.com/cleolibrary/opcodes-restoration-project) (автор spaceeinstein)
* сообщения об ошибке теперь содержат ссылку на переведенную документацию, если таковая имеется ([#101](https://github.com/sannybuilder/dev/issues/101))
* конфигурация [внешних приложений](/ru/editor/features#menyu-vneshnikh-prilozhenii) поддерживает переменные **@sb:** и **@game:** ([#72](https://github.com/sannybuilder/dev/issues/72))
* плагин [CLEO+](https://github.com/JuniorDjjr/CLEOPlus) обновлен до версии 1.0.7
* исправлены баги: [#103](https://github.com/sannybuilder/dev/issues/103) [#114](https://github.com/sannybuilder/dev/issues/114) [#120](https://github.com/sannybuilder/dev/issues/120)

{% hint style="info" %}
Узнать больше о подсветке констант можно в статье [Языковая служба](/ru/editor/language-service).
{% endhint %}

[Полный список изменений](https://github.com/sannybuilder/dev/issues/90)

👏 Спасибо [XMDS](https://github.com/XMDS) за вклад в этот релиз.

## v. 3.6.2 - 29.11.2020

* исправлен баг с метками, отсутствующими в дизассемблированных CLEO скриптах [#99](https://github.com/sannybuilder/dev/issues/99)

## v. 3.6.1 - 27.11.2020

* обновлен перевод на украинский язык
* обновлен плагин CLEO+ до версии 1.0.4
* обновлены описания и ключевые слова для CLEO опкодов [#95](https://github.com/sannybuilder/dev/issues/95)
* исправлены баги в компиляторе [#96](https://github.com/sannybuilder/dev/issues/96), [#98](https://github.com/sannybuilder/dev/issues/98)
* небольшие изменения и исправления (см. [полный список](https://github.com/sannybuilder/dev/issues/91))

👏 Спасибо [wmysterio](https://github.com/wmysterio/) и [XMDS](https://github.com/XMDS) за их вклад в это обновление.

## v. 3.6.0 - 11.11.2020

* поддержка [перечисляемых типов](/ru/coding/classes#class-constants) в классах
* новые [типы](/ru/edit-modes/opcodes-list-scm.ini#parameter-types) параметров опкодов: [`m%`](https://github.com/sannybuilder/dev/issues/10) and [`k%`](https://github.com/sannybuilder/dev/issues/21)
* начальная поддержка [расширений](/ru/edit-modes/extensions)
* улучшена интеграция с библиотекой CLEO:
  * обновлены пакеты в папке `tools`:
    * CLEO v4.4
    * SCRLog v2020.2
    * добавлен [плагин CLEO+](https://github.com/sannybuilder/dev/issues/71) для GTA SA с 250+ новыми опкодами
  * скомпилированные скрипты для CLEO Android (`*.csa`, `*.csi`) теперь [распознаются](https://github.com/sannybuilder/dev/issues/64)
  * компилятор использует CLEO опкоды `0A9E`, `0A9F`, `0A90`, `0A91` [в определенных выражениях без опкода](https://github.com/sannybuilder/dev/issues/58#issuecomment-723376464)
  * унифицированы описания и кейворды для CLEO опкодов среди различных режимов редактирования
* добавлены [кейворды](/ru/coding/keywords) для всех опкодов в режиме GTA SA SCR
* слово *thread* было заменено на *script* в описаниях опкодов и кейвордах ([см. почему](https://gtamods.com/wiki/Talk:Script#Thread-%3EScript%29.))
* обновления IDE:
  * директория игры теперь не является обязательной для запуска компиляции ([#48](https://github.com/sannybuilder/dev/issues/48))
  * папка для "Компилировать и сделать копию" теперь конфигурируется ([#9](https://github.com/sannybuilder/dev/issues/9))
  * обновлены переводы на испанский и итальянский языки
  * добавлена возможность ассоциировать Sanny Builder с расширениями `*.csa` и `*.csi` (скрипты для CLEO Android).

[Полный список изменений и исправлений](https://github.com/sannybuilder/dev/issues/61)

👏 Спасибо [MatiDragon](https://github.com/MatiDragon-YT) и [Wesser](https://gtaforums.com/profile/172776-wesser/) за обновленные переводы.

## v. 3.5.1 - 21.08.2020

* исправлен баг с компиляцией скриптов LCS и VCS ([#56](https://github.com/sannybuilder/dev/issues/56))
* массивы в LCS and VCS теперь получают собственные имена из файлов `CustomVariables.ini` и `CustomArrays.ini` ([#53](https://github.com/sannybuilder/dev/issues/53))

👏 Спасибо [darkdraggy](https://gtaforums.com/profile/1097463-darkdraggy/) за обнаружение первого бага и помощь в тестировании.

## v. 3.5.0 - 18.08.2020

* изменения в [интерфейсе командной строки](/ru/editor/cli)
  * Unix-подобный синтаксис с дефисами ([#42](https://github.com/sannybuilder/dev/issues/42))
  * новые опции [`-x`](/ru/editor/cli#x), [`--game`](/ru/editor/cli#game), [`--mode`](/ru/editor/cli#mode)
* улучшения [режимов редактирования](/ru/edit-modes)
  * `games.xml` переименован в `modes.xml`, обновлена [внутренняя структура](/ru/edit-modes#format-faila)
  * режимы могут [наследовать](/ru/edit-modes#extends) свойства других режимов (полезно для поддержки различных версий одной игры)
  * новый режим для SA v2.0 (использует [`CustomLabels_v2.ini`](/ru/edit-modes/customlabels.ini))
  * раздельные режимы для VCS PSP и VCS PS2 ([#41](https://github.com/sannybuilder/dev/issues/41))
  * поддержка [собственных IDE/DAT файлов](/ru/edit-modes#ide)
  * "горячая" перезагрузка режимов редактирования ([#15](https://github.com/sannybuilder/dev/issues/15))
  * увеличено пространство для имени режима в углу экрана ([#8](https://github.com/sannybuilder/dev/issues/8))
* обновлены описания опкодов LCS/VCS\*
* убран конвертер синтаксиса SAMB в SB ([#27](https://github.com/sannybuilder/dev/issues/27))
* исправлена [привязка файловых расширений](/ru/editor/options/general#privyazka-failovykh-rasshirenii) к Sanny Builder ([#43](https://github.com/sannybuilder/dev/issues/43#issuecomment-670219723))
* исправлен баг с компиляцией скриптов LCS и VCS ([#49](https://github.com/sannybuilder/dev/issues/49), [#0053](http://bugs.sannybuilder.com/view.php?id=53), [#0064](http://bugs.sannybuilder.com/view.php?id=64))
* исправлена проблема, при которой окно [Opcode Search Tool](/ru/editor/opcode-search-tool) было недоступно после сворачивания ([#35](https://github.com/sannybuilder/dev/issues/35))

{% hint style="warning" %}
Новые описания опкодов для GTA LCS и GTA VCS несовместимы с предыдущими версиями. Вы должны заново дизассемблировать `main.scm` этих игр прежде чем делать какие-то изменения.
{% endhint %}

👏 Спасибо [marcelo\_20xx](https://gtaforums.com/profile/95582-marcelo_20xx/) и [fastman92](https://gtaforums.com/profile/423631-fastman92/) за их вклад в этот релиз.

## v. 3.4.1 - 06.08.2020

* исправлено неверное количество параметров у опкода `04E3` в `VCSSCM.INI`
* исправлена проблема в дизассемблере, которая приводила к игнорированию опции "Писать опкоды" и генерации невалидного кода

## v. 3.4.0 - 04.08.2020

* добавлена поддержка компиляции `SCM` в GTA: Vice City Stories ([#2](https://github.com/sannybuilder/dev/issues/2))
* добавлена возможность [объявлять](/ru/coding/variables#korotkaya-forma-obyavleniya-peremennykh) локальные переменные с собственными именами ([#32](https://github.com/sannybuilder/dev/issues/32))
* добавлен упрощенный синтаксис для вызова подпрограмм, используя [имя метки](/ru/coding/data-types#metki): если после имени метки стоит `()` это представляет команду`gosub`
* больше конфигураций для [режимов редактирования](/ru/edit-modes):
  * путь к `GXT` файлу, который использует дизассемблер ([#7](https://github.com/sannybuilder/dev/issues/7))
  * путь к `opcodes.txt` ([#5](https://github.com/sannybuilder/dev/issues/5))
  * эксклюзивные [шаблоны кода](/ru/edit-modes/code-templates)
* добавлен новый туториал о высокоуровневых конструкциях в языке Sanny Builder (на английском), лежит в папке `help\examples`
* обновления IDE:
  * `Запуск San Andreas` из меню теперь проверяет наличие файла `gta-sa.exe` (Steam)
  * новый пункт меню для быстрого создания CLEO скрипта (см. примечание внизу статьи [Шаблоны кода](/ru/edit-modes/code-templates))
  * ссылки на новый портал с документацией в меню и сообщениях об ошибках
* небольшие изменения:
  * обновлены определения некоторых опкодов (player money += в SA, award\_achievement в SA Mobile, `0479` в VCS)
  * в файле `CustomVariables.ini` для GTA III переменные `script_controlled_player` и `flag_player_on_mission` переименованы в `PLAYER_ACTOR` и `ONMISSION` соответственно ([#3](https://github.com/sannybuilder/data/issues/3))
  * возвращена старая версия файлов в папке `help\GXT Strings` ([#25](https://github.com/sannybuilder/dev/issues/25))
  * файл `macroes.txt` переименован `templates.txt`
* [обновления переводов](https://github.com/sannybuilder/translations/milestone/1)

👏 Спасибо [OrionSR](https://gtaforums.com/profile/213525-orionsr/), [ZAZ](https://gtaforums.com/profile/67506-zaz/), [XMDS](https://gtaforums.com/profile/1034872-xmds), и [Wesser](https://gtaforums.com/profile/172776-wesser/) за их вклад в этот релиз.

## v. 3.3.3 - 20.10.2019

* исправлен [баг](http://bugs.sannybuilder.com/view.php?id=52), вызывавший неправильную компиляцию внешних скриптов

## v. 3.3.2 - 19.10.2019

* исправлены баги [#0036](http://bugs.sannybuilder.com/view.php?id=36), [#0050](http://bugs.sannybuilder.com/view.php?id=50)
* исправлен опкод `059C` в режиме `Vice City`

## v. 3.3.1 - 14.09.2019

* исправлен баг [#0048](http://bugs.sannybuilder.com/view.php?id=48)
* добавлен файл `constants.txt,` который отсутствовал для режима `GTA SA`

## v. 3.3.0 - 08.09.2019

* добавлена поддержка для компиляции `SCM` Liberty City Stories
* добавлены алиасы для [переменных-таймеров](/ru/coding/variables#peremennye-taimery): TIMERA and TIMERB
* опция [Проверка переменных](/ru/editor/options/general#proverka-peremennykh) теперь применяется и к глобальным переменным

## v. 3.2.4 - 04.08.2019

* исправлены баги [#0031](http://bugs.sannybuilder.com/view.php?id=31), [#0032](http://bugs.sannybuilder.com/view.php?id=32), [#0033](http://bugs.sannybuilder.com/view.php?id=33), [#0040](http://bugs.sannybuilder.com/view.php?id=40), [#0044](http://bugs.sannybuilder.com/view.php?id=44)
* исправлен дефект предыдущей версии, когда CHM справка не открывалась
* обновлены описания опкодов для GTA 3 и Vice City
* в IDE добавлена поддержка CLEO 2.0 для III и VC

## v. 3.2.3 - 07.07.2019

* улучшена поддержка версии GTA San Andreas для Wi﻿nStore, Xbox 360 и P﻿S3
* исправлена ошибка с неправильной декомпиляцией опкодов `09A4` и `0A18` в режиме `SA_Mobile`

## v. 3.2.2 - 05.07.2014

* добавлен перевод на корейский язык (спасибо MINE)
* улучшена работа конструкции [HEX..END](/ru/coding/hex..end)
* исправлен баг [#0000028](http://bugs.sannybuilder.com/view.php?id=28)

## v. 3.2.1 - 04.05.2014

* добавлен перевод на индонезийский язык (спасибо IMasterFX)
* обновлены CLEO для GTA III и CLEO для Vice City (спасибо Silent)
* исправлены баги [#0000026](http://bugs.sannybuilder.com/view.php?id=26), [#0000027](http://bugs.sannybuilder.com/view.php?id=27)

## v. 3.2.0 - 22.03.2014

* добавление собственных [режимов редактирования](/ru/edit-modes) возможно путем изменения файла `games.xml`
* новый режим редактирования `GTA SA SCR`
* переменные [могут быть объявлены](/ru/coding/variables#korotkaya-forma-obyavleniya-peremennykh) при помощи указания типа перед именем переменной
* CLEO обновлена до версии 4.3.16
* добавлен [моментальный поиск](/ru/editor/features#momentalnyi-poisk) в тексте (ранее эта возможность называлась "переход к метке")
* [оригинальные названия миссий](/ru/editor/features#ispolzovanie-originalnykh-imen-missii) могут быть изменены через файл missions.txt
* улучшена [ассоциация](/ru/editor/options/general#associaciya-failovykh-rasshirenii) расширений скриптовых файлов с Sanny Builder
* при указании директории игры Sanny Builder проверяет только существование этой директории и не проверяет наличие дополнительных файлов в ней
* небольшие улучшения в функции проверки обновлений
* изменена иконка Sanny Builder и иконки в меню
* исправлен баг [#0000024](http://bugs.sannybuilder.com/view.php?id=24)

## v. 3.1.4 - 22.02.2014

* CLEO обновлена до версии 4.3.14
* исправлены некоторые ошибки в интерфейсе на высоких разрешениях экрана
* обновлены переводы на немецкий, польский, китайский, украинский языки

## v. 3.1.3 - 22.12.2013

* добавлена [поддержка](/ru/edit-modes) iOS и Android версий GTA: San Andreas
* значение [глубины просмотра](/ru/editor/options/editor#glubina-prosmotra-koda) теперь используется при построении списка констант
* обновлены переводы на китайский и немецкий языки

## v. 3.1.2 - 06.10.2013

* добавлен перевод на чешкий язык
* добавлены [опции](/ru/editor/options/general#associaciya-failovykh-rasshirenii) ассоциации файлов `.cs` и `.cm` с Sanny Builder.
* исправлены баги [#0000011](http://bugs.sannybuilder.com/view.php?id=11), [#0000020](http://bugs.sannybuilder.com/view.php?id=20)

## v. 3.1.1 - 22.09.2013

* добавлена новая директива [$OPCODE](/ru/coding/directives#usdopcode) для регистрации нового опкода через скрипт
* скорректировано поведение директивы [$INCLUDE](/ru/coding/directives#usdinclude) при поиске файла
* исправлены баги [#0000005](http://bugs.sannybuilder.com/view.php?id=5), [#0000019](http://bugs.sannybuilder.com/view.php?id=19)

## v. 3.1.0 - 14.09.2013

* в `VCSCM.ini` добавлены опкоды из мобильной версии GTA VC и отмечены неподдерживаемые опкоды
* при включенной опции [Добавлять доп. информацию в SCM](/ru/editor/options/general#dobavlyat-dopolnitelnuyu-informaciyu-v-scm), Sanny Builder запоминает игру, для которой был скомпилирован скрипт, чтобы включить нужный [режим редактирования](/ru/edit-modes) при декомпиляции
* при включенной опции `Добавлять доп. информацию в SCM`, Sanny Builder добавляет исходный код в тело скрипта (только при наличии директивы [$EXTERNAL](/ru/coding/directives#usdexternal) или [$CLEO](/ru/coding/directives#usdcleo))
* добавлена новая директива [$NOSOURCE](/ru/coding/directives#usdnosource), чтобы запретить добавление исходного кода в тело скрипта
* некоторые горячие клавиши могут быть изменены [в опциях](/ru/editor/options/hotkeys)
* добавлена возможность автоматически проверять наличие обновления при запуске программы
* директивы [$VERSION](/ru/coding/directives#usdversion) и [$VERSION\_RESTORE](/ru/coding/directives#usdversion_restore) устарели (компилируются, но не имеют эффекта)
* обновлены перевод на испанский и китайский языки
* [Менеджер координат](/ru/editor/features#izmenenie-koordinat-i-ugla-razvorota-igroka) может изменять угол поворота игрока в GTA VC
* в комплектацию Sanny Builder добавлен [CLEO плагин SCRLog](http://www.gtagarage.com/mods/show.php?id=23846) от LINK/2012 (можно найти в папке tools)
* исправлены баги [#0000010](http://bugs.sannybuilder.com/view.php?id=10), [#0000014](http://bugs.sannybuilder.com/view.php?id=14), [#0000015](http://bugs.sannybuilder.com/view.php?id=15), [#0000016](http://bugs.sannybuilder.com/view.php?id=16)

## v. 3.09 - 28.07.2013

* в Sanny Builder добавлено лицензионное соглашение вида Freeware/Donationware
* добавлена возможность сообщать о найденных багах в [официальный баг-трекер](http://bugs.sannybuilder.com/)
* добавлена возможность проверять наличие обновления для Sanny Builder
* [Менеджер координат](/ru/editor/features#izmenenie-koordinat-i-ugla-razvorota-igroka) теперь поддерживает все известные версии GTA3, VC и SA (спасибо Silent)
* добавлена обновленная версия перевода на китайский язык
* исправлены баги [#0000002](http://bugs.sannybuilder.com/view.php?id=2), [#0000003](http://bugs.sannybuilder.com/view.php?id=3), [#0000004](http://bugs.sannybuilder.com/view.php?id=4), [#0000006](http://bugs.sannybuilder.com/view.php?id=6), [#0000009](http://bugs.sannybuilder.com/view.php?id=9)
* небольшие изменения дизайна

## v. 3.08 - 05.07.2013

* добавлен [Silent's ASI Loader](http://www.gtagarage.com/mods/show.php?id=21709) v1.1 для CLEO 3 и CLEO 4
* добавлен перевод на китайский язык
* добавлены классы `File` и `Audiostream` для обратной совместимости с CLEO 4 от Alien

{% hint style="info" %}
`File.Open`, `Audiostream.Load`, `Audiostream.Load3D` были [методами](/ru/coding/classes#metody) в CLEO 4. Теперь они [свойства](/ru/coding/classes#svoistva). Это означает, что если вы получаете ошибку при компиляции старых скриптов, где использовались эти команды, измените их синтаксис следующим образом:

```
переменная = File.Open(имя_файла, режим_открытия)
переменная = Audiostream.Load(имя_файла)
переменная = Audiostream.Load3D(имя_файла)
```

{% endhint %}

* компилятор теперь может принимать строковую константу в качестве параметра в свойстве класса

{% hint style="info" %}
Существует [ограничение](/ru/coding/classes#svoistva) на использование пробелов в таком параметре.
{% endhint %}

* компилятор больше не компилирует строки без начальной кавычки, например `text1"text2"` или `text1'text2'`
* компилятор может компилировать символы комментария внутри строки `"{text1}text2"`
* точка с запятой `;` больше не может использоваться для закомментирования строки
* изменен синтаксис параметра [\debug](/ru#parametry-komandnoi-stroki)
* добавлены иконки флагов для доступных языков перевода в [опциях](/ru/editor/options/general#yazyk-interfeisa)
* исправлены некоторые ошибки в декомпиляции для VCS

## v. 3.06 - 17.06.2013

* добавлены [новые операторы ++ и --](/ru/coding/built-in-commands)
* добавлена поддержка [блочных комментариев](/ru/editor/features#kommentirovanie-koda) /\* \*/
* `SASCM.INI` обновлен при помощи [базы GTAG](https://gtagmodding.com/opcode-database/)
* [свойства](/ru/coding/classes#svoistva) `Actor.Armour` и `Actor.Car` заменены на корректные версии `Actor.AddArmour`, `Actor.MissionCar`
* добавлено новое свойство `Actor.CurrentCar` для опкода `03C0` в скриптовых классах для игр SA и VC
* добавлены [новые комбинации клавиш](/ru/editor/hotkeys) `Ctrl+Num+` и `Ctrl+Num-` для быстрого изменения размера шрифта в редакторе
* Sanny Builder запоминает число закрытых файлов для опции [Открывать все закрытые файлы](/ru/editor/options/editor#nastroiki)
* исправлена ошибка при компиляции скрипта с большим числом вставок [HEX..END](/ru/coding/hex..end)
* исправлена ошибка версии 3.05, когда программа зависала при запуске, пытаясь открыть файл, переданный в качестве параметра

## v. 3.05 - 05.06.2013

* добавлены новые языки перевода (финский, польский, венгерский, украинский, турецкий)
* библиотека CLEO обновлена до версии 4.1.1.30f (CLEO 4 от Alien)
* добавлена возможность установить CLEO для GTA III и для Vice City (автор - Alien)
* [файлы опкодов](/ru/edit-modes/opcodes-list-scm.ini) (\*\*SCM.ini, opcodes.txt) замененены на файлы из комплекта CLEO 4.
* добавлен новый параметр запуска программы [\nosplash](/ru#parametry-komandnoi-stroki)

## v. 3.04 - 04.08.2008

* в редактор кода добавлены возможности конвертации чисел из 16-чной системы счисления в 10-чную и наоборот (`Ctrl+H`), а также конвертировать имя модели в ID и обратно (`Ctrl+Alt+H`)
* убрано сообщение о невозможности изменить `script.img` при компиляции CLEO-скриптов
* отчет о компиляции показывает размер CLEO-скрипта (пункт `Largest Script`)
* исправлена ошибка при компиляции массива с числовыми индексами
* инсталлятор не требует прав администратора

## v. 3.03 - 17.11.2007

* предыдущая версия CLEO была с ошибкой
* мелкие исправления (положение панели инструментов теперь сохраняется)

## v. 3.02 - 16.11.2007

* новая версия CLEO
* панель инструментов можно передвигать
* `F7` при компиляции `SCM` без заголовка (c директивами [$E](/ru/coding/directives#usdexternal), [$CLEO](/ru/coding/directives#usdcleo)) не делает копию
* при компиляции файла с директивой `$CLEO` нажатием `F6` файл создается в той же папке, нажатием `F7` дополнительно создается копия в папке CLEO (по аналогии с компиляцией `main.scm`)
* новый язык перевода - итальянский, португальский

## v. 3.01 - 06.08.2007

* обновление, исправляющее некоторые ошибки

## v. 3.00 - 04.08.2007

* интегрирована библиотека [CLEO 3](https://cleo.li/ru)
* возможность декомпиляции `main.scm` Vice City Stories
* поддержка [констант](/ru/coding/constants)
* новые директивы [$INCLUDE](/ru/coding/directives#usdinclude), [$EXTERNAL](/ru/coding/directives#usdexternal), [$CLEO](/ru/coding/directives#usdcleo)
* запись [дополнительной информации](/ru/editor/options/general#dobavlyat-dopolnitelnuyu-informaciyu-v-scm) в конец `main.scm`
* задание [собственных массивов](/ru/editor/options/formats#sobstvennye-imena) при декомпиляции
* [возможность декомпилировать](/ru/editor/console#skip_scm_header) файлы `main.scm` без заголовка
* можно использовать внешний скрипт с именем AAA
* новый [параметр командной строки](/ru#parametry-komandnoi-stroki) `\compile`
* в цикле [FOR](/ru/coding/loops#for-end) можно использовать дробные значения счетчика
* команды `WriteMem` и `ReadMem` больше не поддерживаются
* поддержка поиска по тексту с использованием регулярных выражений
* возможность сохранять исходник в формат RTF или HTML
* возможность [пропускать заставки](/ru/editor/options/general#bystraya-zagruzka-igry) при запуске San Andreas
* новая комбинация клавиш: [Ctrl+Enter](/ru/editor/hotkeys)
* обновленный [SASCM.INI](/ru/edit-modes/opcodes-list-scm.ini)

## v. 2.99e - 01.01.2007

* справлена ошибка с пропаданием части кода при декомпиляции в режиме отладки внутри конструкции [HEX..END](/ru/coding/hex..end)
* конструкция HEX..END может принимать [тип aDMA](/ru/coding/hex..end#ispolzovanie-tipa-adma) для записи чисел и [строки](/ru/coding/data-types#strokovye-literaly)
* к цикле [FOR](/ru/coding/loops#for-end) можно использовать имена моделей в качестве значений счетчика

## v. 2.99d - 03.12.2006

* убран Memory Hacker (он стал [отдельной программой](http://sannybuilder.com/downloads))
* исправлена одна ошибка в декомпиляторе

## v. 2.99c - 30.11.2006

* добавлен плагин Memory Hacker
* возможность декомпиляции main.scm Liberty City Stories
* поддержка [числовых констант в качестве индекса](/ru/editor/console#constant_indexes) глобального массива
* при декомпиляции переменные заменяются на тип [ADMA](/ru/coding/data-types#peremennye), если не делятся на `4`
* при компиляции при отсутствии заголовка выставляются значения по умолчанию
* возможность открывать файлы в редакторе методом Drag\&Drop
* новые препроцессорные директивы: [{$VERSION}](/ru/coding/directives#usdversion), [{$VERSION\_RESTORE}](/ru/coding/directives#usdversion_restore)

{% hint style="info" %}
Если при компиляции вы получаете сообщение об ошибке в заголовке (`Неизвестная команда DEFINE OBJECTS`) переместите строку `{$VERSION xxxx}` в любое место после заголовка, например перед комментарием `//-------------MAIN---------------`
{% endhint %}

## v. 2.99 - 27.09.2006

* добавлены две новые команды WriteMem и ReadMem
* поддержка чисел в шестнадцатиричном формате
* конструкция [HEX..END](/ru/coding/hex..end) может принимать значения меток и глобальных переменных
* поддержка типа данных & для [массивов](/ru/coding/arrays), а также в выражениях без опкодов: `&57 += &120(&231,4i)`
* возможность давать [собственные имена меткам](/ru/editor/options/formats#sobstvennye-imena)
* возможность [выбирать регистр букв](/ru/editor/options/formats#registr-bukv) для собственных имен меток и переменных, а также стринговых переменных
* добавлена [консоль](/ru/editor/console) для специальных опций SB
* поддержка `GXT` файлов GTA III, GTA VC
* [поддержка символьных констант](/ru/coding/data-types#strokovye-literaly) в длинных строках
* информация об авторе и версии [INI](/ru/edit-modes/opcodes-list-scm.ini) файла
* поддержка классами `INI` с оригинальным порядком следования параметров (как SASCM.INI от PLPynton)
* [опция](/ru/editor/options/editor#nastroiki) подтверждения выхода
* возможность быстро переключать режим редактирования
* конвертация отдельного, выделенного участка кода
* возможность передавать во [внешнее приложение](/ru/editor/features#menyu-vneshnikh-prilozhenii) в качестве параметра имя текущего открытого файла
* исправлены некоторые ошибки в конфигурационных файлах
* убрана автоматическая конвертация числа в тип `Float`, если переменная была объявлена как `Float`, а в нее записывалось целое число. Теперь опкод выбирается только в зависимости от типа числа
* чтение/изменение Z\_angle игрока в [Coord Manager](/ru/editor/features#izmenenie-koordinat-i-ugla-razvorota-igroka); возможность вставки значения угла в скрипт нажатием `Ctrl+Shift+E` (для SA)

## v. 2.98 - 04.08.2006

* Sanny Builder полностью [русифицирован](/ru/editor/options/general#yazyk-interfeisa)
* добавлено [меню внешних приложений](/ru/editor/features#menyu-vneshnikh-prilozhenii)
* в SB встроена специальная версия [Opcode Search Tool](/ru/editor/opcode-search-tool)
* проверка математических выражений при декомпиляции с выключенной опцией [Писать опкоды](/ru/editor/options/general#ispolzovat-opkody)
* возможность выбирать `IMG` файл самостоятельно, если таковой не найден в папке с `main.scm`(опция [Ручной выбор IMG-файла](/ru/editor/options/general#ruchnoi-vybor-img-faila))
* возможность добавлять новые [фрагменты кода](/ru/editor/features#pereispolzovanie-fragmentov-koda) прямо из редактора; добавлены описания макросов
* список моделей можно сортировать по алфавиту/по значению (`Alt+S`, когда активен список)
* минорные исправления и изменения

## v. 2.97 - 11.06.2006

* новый [тип данных](/ru/coding/data-types#peremennye): `&`
* минорные изменения

## v. 2.96 - 01.04.2006

* расширена [опция прохода по меткам](/ru/editor/features#momentalnyi-poisk)
* добавлена возможность вызвать список [фрагментов кода](/ru/editor/features#pereispolzovanie-fragmentov-koda)
* добавлена [опция замены](/ru/editor/options/general#zamenyat-nomera-missii) номеров миссий на их имена
* исправлены некоторые ошибки

## v. 2.9f - 18.02.2006

* новые модели автоматически добавляются в список `DEFINE OBJECTS` (этот список можно вообще не использовать)
* добавлены блочные комментарии: `{}`
* добавлена запись [макросов](/ru/editor/features#zapis-i-vosproizvedenie-nazhatii-knopok)
* минорные исправления и добавления

## v. 2.9 - 15.12.2005

* добавлены [дополнительные команды](/ru/coding/built-in-commands)
* добавлен оператор `IN`
* добавлена конструкция [IF..THEN..ELSE..END](/ru/coding/conditions#vysokourovnevye-konstrukcii)
* добавлены [циклы](/ru/coding/loops) `WHILE`, `REPEAT`; добавлена возможность использования вложенных циклов
* добавлена команда [ALLOC](/ru/coding/built-in-commands#alloc)
* новый стиль комментариев: `//`
* позиции маркеров и курсора запоминаются для закрытых файлов

## v. 2.6 - 05.11.2005

* добавлена поддержка форматов Vice City и GTA3
* добавлена возможность [объявления](/ru/coding/classes#obyavlenie-ekzemplyarov-klassa) переменных и массивов как экземпляров класса
* добавлен показ списка переменных и меток
* добавлена поддержка циклов ( оператор [FOR](/ru/coding/loops#for-end) )
* миссии можно запускать по их имени (`start_mission MYMISSION`), где `MYMISSION` - это имя стартовой метки (`DEFINE MISSION 100 at @MYMISSION` )
* доступен список импортируемых моделей (`DEFINE OBJECTS`) по `Ctrl+пробел`
* новый [оператор](/ru/coding/conditions#operatory-sravneniya) `<>`
* если при декомпиляции не найден `script.img`, используется оригинальный файл
* для [массивов](/ru/coding/arrays) добавлен тип `handle`
* возможность отключения предупреждения об использовании `IMG` игрой

## v. 2.5 - 10.10.2005

* добавлена поддержка [свойств](/ru/coding/classes#svoistva) классов
* добавлена поддержка [фрагментов кода](/ru/editor/features#pereispolzovanie-fragmentov-koda)
* добавлена конструкция [VAR..END](/ru/coding/variables#konstrukciya-var-end) для эффективного управления переменными
* описаны все возможные математические опкоды: `0004..008B`
* новые операторы `<` и `<=`
* добавлена возможность автоподбора необходимого значения для оператора `IF`
* добавлена поддержка [текстовых названий](/ru/coding/classes#konstanty-klassa) параметров
* добавлен показ списка моделей
* минорные добавления и исправления

## v. 2.0 - 18.09.2005

* добавлена поддержка [классов](/ru/coding/classes)
* добавлена поддержка [ключевых слов](/ru/coding/keywords)
* добавлена возможность писать некоторые математические команды без опкодов
* для опкода `00D6` по умолчанию устанавливается параметр `0`, если иное не установлено (`if` = `if 0`)
* добавлена [опция выбора](/ru/editor/options/formats#imena-metok) различных видов меток
* добавлены [константы](/ru/coding/constants) `True` и `False`, которые обозначают `1` и `0` соответственно
* добавлена конструкция [HEX..END](/ru/coding/hex..end) для записи шестнадцатиричных значений прямо в `SCM`

## v. 1.1 - 07.09.2005

* добавлен [Coord Manager](/ru/editor/features#izmenenie-koordinat-i-ugla-razvorota-igroka)
* исправлены некоторые ошибки

## v. 1.0 - 04.09.2005

* новый формат [меток](/ru/coding/data-types#metki)
* добавлен конвертор из синтаксиса BW's SA Mission Builder
* при декомпиляции в исходник добавляются названия моделей и содержимое `american.gxt`
* добавлены новые опции
* пофиксены некоторые ошибки

## v. 0.8 - 20.08.2005

* добавлена возможность ассоциировать `SCM` файлы с программой
* теперь при декомпиляции имя выходного файла изменяется, если такой файл уже существует (например, если уже существует `main.scm.txt`, то имя нового файла будет `main.scm[0].txt`)
* сообщения об ошибках стали более информативными
* добавлена проверка на дублирование [меток](/ru/coding/data-types#metki)
* пофиксены некоторые ошибки

## v. 0.7 - 10.08.2005

* увеличено число опций для работы с текстом
* добавлена возможность работать с несколькими файлами одновременно
* добавлена функция поиска опкодов через `F1` (beta)

## v. 0.6 - 04.08.2005

* полная декомпиляция `SCM` файлов San Andreas
* компиляция скриптов в `SCM` файл (SA) и `IMG`файл
* доступны минимальные опции работы с текстом


# Типы данных

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

## Переменные

Если перед именем переменной (комбинация букв, цифр, и `_`) стоит знак `$` - это [глобальная переменная](/ru/coding/variables#globalnye-peremennye).

```
0004: $MyVar = 100
```

Именем [локальной переменной](/ru/coding/variables#lokalnye-peremennye) может быть только число, после которого стоит `@`.  Это число является индексом в списке локальных переменных, [выделенных](/ru/scm-documentation/gta-limits) для текущего скрипта или миссии.

```
0006: 100@ = 10
```

Переменная `ADMA` (**A**dvanced **D**irect **M**emory **A**ccess, усовершенствованный доступ к памяти) - это указатель на определенный адрес внутри файла `main.scm`. Они используются так же как глобальные переменные, но в отличие от них `ADMA` могут читать и писать значения по любому адресу в пределах `main.scm`.&#x20;

```
$myVar = &0 // прочитать первые 4 байта main.scm и записать значение в $myVar
&57 += &120(&231,4i) // также могут использоваться как элементы массива
```

`ADMA` переменные не влияют на размер буфера для глобальных переменных, выделенного в заголовке `main.scm`.

## Метки

Метки указывают на определенную строку кода и используются в условных (опкод `004D`) и безусловных переходах (опкоды `0002`, `0050`). Имя метки состоит из букв, цифр и `_` и всегда начинается с `:`

```
:MyLabel
```

Чтобы использовать такую метку в опкоде замените `:` на `@`

```
0002: jump @MyLabel
```

Если имя метки написано как самостоятельное выражение с парой скобок в конце, это представляет собой вызов подпрограммы командой `gosub`:

```
// следующие выражения эквивалентны
MyLabel()
gosub @MyLabel
```

## Строковые литералы

Текст,  обрамленный одинарными кавычками `' '`, - это короткий строковый литерал (до `15` символов).

```
03A4: script_name 'MAIN'
```

Текст,  обрамленный двойными кавычками `" "`, - это длинный строковый литерал (максимальная длина определяется опкодом).

Если внутри литерала используется кавычка, она должна быть заэкранирована при помощи обратного слэша`\`

```
0662: write_debug_message "Hello, \"world\"! \n 'Here we go!'"
```

Допускается использование пустых строк `''` или `""`.

## Строковые переменные

Глобальные переменные, содержащие короткий строковый литерал, начинаются с `s$`.

```
05A9: s$MyString = 'GLOBAL'
```

Локальные переменные, содержащие короткий строковый литерал, заканчиваются на `@s`.&#x20;

```
05AA: 1@s = 'LOCAL'
```

Глобальные переменные, содержащие длинный строковый литерал, начинаются с  `v$`.&#x20;

```
06D1: v$MyString = "LONG_GLOBAL"
```

Локальные переменные, содержащие длинный строковый литерал, заканчиваются на `@v`.&#x20;

```
06D2: 1@v = "LONG_LOCAL"
```

## Имена моделей

Вместо ID моделей из `.ide` файлов могут использоваться их имена, перед которыми стоит `#`&#x20;

```
0247: request_model #CELLPHONE
```

## Числа в 16-ричном формате <a href="#hex-numbers" id="hex-numbers"></a>

`0x` - число в шестнадцатиричном формате\
`-0x` - отрицательное число в шестнадцатиричном формате

```
0004: $var = -0xBB08
```

Разрешенный диапазон шестнадцатиричных чисел лежит между `-80000000` и `7FFFFFFF`.


# Константы

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

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

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

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

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

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

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


# Переменные

Переменная - это именованная область памяти со значением, которое может быть многократно прочитано и/или изменено. Существует два вида переменных - *глобальные* и *локальные*.

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

Глобальная переменная начинается со знака `$`, после которого следует комбинация латинских букв, цифр и `_`:

`$variable1`\
`$100`\
`$____`

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

### **Сохраняемые переменные**

Сохраняемые переменные - это особый вид глобальных переменных, добавленный в `LCS` и `VCS` [режимах](/ru/edit-modes). Перед их именем стоит `$_`, например `$_var`. Значение такой переменной восстанавливается при загрузке сохраненной игры. Глобальные переменные, которые начинаются только с `$` (например, `$var`), не сохраняют свое значение и обнуляются при загрузке сохранения в LCS или VCS.

### DMA переменные

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

Глобальная переменная, чье имя состоит из цифр, называется`DMA`-переменная (**D**irect **M**emory **A**ddress - прямой доступ к памяти). Это имя и будет индексом, который использует игра.

См. [Alloc](/ru/coding/built-in-commands#alloc).

## Локальные переменные

Именем локальной переменной служит число, после которого стоит знак `@`.

```pascal
0@ 
999@ 
56@
```

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

{% hint style="warning" %}
Количество локальных переменных в одном скрипте/миссии строго [ограничено](/ru/scm-documentation/gta-limits).
{% endhint %}

### Переменные-таймеры

Каждый скрипт или миссия также имеют две особые локальные переменные, которые называются `TIMERA` и `TIMERB`. Значение переменной-таймера постоянно увеличивается с ходом игры, поэтому они обычно используются, чтобы измерять время, пройденное с определенного момента (сброса таймера).

```pascal
0006: TIMERA = 0 // сброс таймера

:WAIT_2S
0001: wait 0 ms
00D6: if
0019:   TIMERA > 2000 // если таймер увеличился до 2000, т.е. прошло 2 секунды
004D: jump_if_false @WAIT_2S
0662: printstring "2 seconds has passed" // показать текст
```

{% hint style="info" %}
Имена `TIMERA`и`TIMERB`доступны начиная с Sanny Builder v3.3.0. В более ранних скриптах таймеры использовались как обычные локальные переменные `16@, 17@` (в GTA3 и VC) либо `32@, 33@` (SA).
{% endhint %}

## Объявление типа переменной <a href="#declaring-a-variable-type" id="declaring-a-variable-type"></a>

Переменные обычно используются в арифметических или условных выражениях. Если в выражении правая часть является числом, опкод указывать не обязательно:

```pascal
$var = 0
$myarray($index, 10i) >= 150
```

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

Например, существует два опкода, которые складывают значения двух переменных: `0058` для целых чисел и `0059` для дробных.

```pascal
0058: $Var1 += $Var2 // (целые числа)
0059: $Var1 += $Var2 // (дробные числа)
```

Если убрать опкод, как скомпилировать такое выражение?

```pascal
$Var1 += $Var2 // ??
```

Чтобы сообщить компилятору тип переменной, используется ключевое слово `var`.

```pascal
var <переменная>: <тип>
```

`Переменная` - это любая допустимая глобальная или локальная переменная (см. выше).

`Тип` может быть одним из нижеперечисленных значений:

* `Integer`, `Int` - целые числа
* `Float` - дробные числа
* `String`, `ShortString` - переменная, содержащая [короткий строковый литерал](/ru/coding/data-types#strokovye-literaly) (используется только при объявлении массивов, для одиночных переменных используются префикс `s$` или суффикс `@s`)
* `LongString` - переменная, содержащая [длинный строковый литерал](/ru/coding/data-types#strokovye-literaly) (используется только при объявлении массивов, для одиночных переменных используются префикс `v$` или суффикс `@v`)
* `<Имя класса>` - переменная или массив переменных [членов класса](/ru/coding/classes#chleny-klassa)

Пример:

```pascal
var $size: integer
```

Можно объявить несколько переменных в одной строке, разделяя их запятой:

```pascal
var $x: float, $y: float, $z: float    
```

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

```pascal
var
   $x: float
   $y: float
   $z: float
end
```

Когда обе переменные имеют известный компилятору тип, выражение компилируется без опкода:

```pascal
var
    $Var1 : Integer
    $Var2 : Integer
end
$Var1 += $Var2 // здесь будет опкод 0058
```

{% hint style="info" %}
Как только тип переменной объявлен, он используется везде ниже по коду. Тип переменной может быть изменен, если она используется по-другому:

```
script_name 'Food'
var
    10@ : Float
    $Var : Float
end
$var = 1
10@ = $Var
end_thread

thread 'Loop'
var
    10@ : Int
    $Var : Int
end
$var = 1
10@ = $Var
end_thread
```

В скрипте`'Food'` `10@` является дробной переменной. В скрипте`'Loop'` `10@` уже целочисленная переменная.

Тип переменной может быть переобъявлен многократно.
{% endhint %}

## Короткая форма объявления переменных

Начиная с версии 3.2.0 можно объявлять переменные, используя только имя типа (доступно для типов `Int`, `Float`, `String`, `LongString`).

Синтаксис:

```pascal
<type> <variable name>
```

Пример:

<pre class="language-pascal"><code class="lang-pascal"><strong>int 0@ // 0@ объявлена как целочисленная переменная
</strong></code></pre>

Начиная с версии 3.4.0 появилась возможность объявить переменную с собственным именем:

```pascal
int a
float distance
string name

a = 1
distance = 15.5
name = 'CJ'
```

Одновременно с объявлением такой переменной можно присвоить ей начальное значение, чтобы уменьшить количество строк кода:

```pascal
int a = 1
float distance = 15.5
string name = 'CJ'
```

Компилятор связывает каждое имя с новой локальной переменной. В примере выше код будет скомпилирован примерно следующим образом:

```pascal
0006: 0@ = 1 
0007: 1@ = 15.5 
05AA: 2@ = 'CJ'
```

{% hint style="info" %}
Из-за [архитектурных ограничений](https://github.com/sannybuilder/dev/issues/32) эта возможность доступна только в CLEO скриптах.
{% endhint %}

## Начальное значение переменной

Одновременно с объявлением переменной можно задать ей начальное значение. Для этого напишите `=` и значение:

```pascal
var $fVar: float = 1.0
```

или

```pascal
float $fVar = 1.0
```

Теперь переменная `$fVar` объявлена как `Float`, и компилятор добавит в скрипт опкод `0005`:

```pascal
0005: $fVar = 1.0
```

Инициализация доступна только для переменных, но не массивов.


# Массивы

**Массивы** представляют собой последовательный набор элементов одного типа (тип массива). К каждому элементу массива можно обратиться используя его индекс (порядковый номер элемента в массиве). Нумерация элементов начинается с нуля. Массивы доступны в San Andreas, LCS и VCS.

## Общий синтаксис

San Andreas:

```pascal
<имя массива>(<индекс>,<размер><тип>)
```

`<имя массива>`: локальная или глобальная [переменная](/ru/coding/variables)\
`<индекс>`: локальная или глобальная переменная, содержащая индекс элемента, который нужно прочитать или изменить\
`<размер>`: целое число от 1 до 255 (включительно)\
`<тип>`: одна из букв `i` `f` `s` `v`:

| Буква | Тип элемента      | Размер элемента (в байтах) |
| ----- | ----------------- | -------------------------- |
| i     | целое число       | 4                          |
| f     | дробное число     | 4                          |
| s     | строковый литерал | 8                          |
| v     | строковый литерал | 16                         |

Пример:

```pascal
$index = 0
$array($index,10i) = 1
```

Liberty City Stories, Vice City Stories:

```pascal
<имя массива>(<индекс>,<размер>)
```

В LCS и VCS длина элементов массивов может быть только 4 байта. Поэтому нет необходимости указывать тип массива при обращении к его элементам.

Пример:

```pascal
$index = 0
$array($index,10) = 1
```

## Объявление массивов <a href="#array-declaration" id="array-declaration"></a>

Массивы, как и отдельные [переменные](/ru/coding/variables), могут быть объявлены при помощи ключевого слова `var`:

```pascal
var <имя массива>: array <размер> of <тип>
```

Пример:

```pascal
var $FloatArray: array 10 of Float
```

Массивы с элементами примитивного типа могут быть объявлены при помощи короткой записи вида:

```pascal
<тип> <имя массива>[<размер>]
```

Допустимыми типами в таком объявлении являются `Int`, `Float`, `String`, `LongString`:

```pascal
int intArray[10]
float floatArray[10]
string stringArray[10]
longstring longStringArray[10]
```

### Обращение к элементам массива после объявления <a href="#accessing-array-elements" id="accessing-array-elements"></a>

После объявления массива можно обращаться к его элементам, используя квадратные скобки:

```pascal
var $FloatArray: array 10 of Float

$index = 0

// увеличить значение первого элемента на 100
$FloatArray[$index] += 100.0

// аналогично
$FloatArray[0] += 100.0
```

С массивами, содержащими [строковые литералы](/ru/coding/data-types#strokovye-literaly), можно работать используя [строковые переменные](/ru/coding/data-types#strokovye-peremennye): &#x20;

```pascal
// задаем значения для первых трех элементов массива $strings
s$strings[0] = 'str1'
s$strings[1] = 'str2'
s$strings[2] = 'str3'
```

Массив может быть объявлен как коллекция [экземпляров класса](/ru/coding/classes#ekzemplyary-klassa), его методы будут доступны для каждого элемента:

```pascal
var $players: array 2 of Player

$players[0].Build 
```

{% hint style="info" %}
По умолчанию в [режиме](/ru/edit-modes) `GTA SA` дизассемблер выводит элементы массива с целочисленными константами. В LCS и VCS эта возможность присутствует, но по умолчанию выключена. [Отладочная опция](/ru/editor/console#constant_indexes) `CONSTANT_INDEXES` позволяет включить или выключить эту возможность.&#x20;
{% endhint %}


# Операторы

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

В связи с особенностями языка, разные типы данных требуют разных опкодов. Например, в операции сложения двух целых чисел используется опкод, отличный от аналогичной операции с дробными числами. В некоторых случаях это требует предварительного [объявления типа](/ru/coding/variables#declaring-a-variable-type) переменных, участвующих в выражении.

Большинство поддерживаемых операций в Sanny Builder используют лишь два операнда: один слева от оператора (**LHS**), и один - справа (**RHS**).

### Присваивание

* `LHS = RHS` - операция присваивания. `RHS` - число, переменная или строка. В присваивании `LHS` всегда является переменной.
* `LHS += RHS` - операция сложения с присваиванием. `LHS` и `RHS` должны быть одного типа, целого или дробного. Значение `LHS` увеличивается на соответствующее значение `RHS`.
* `LHS -= RHS` - операция вычитания с присваиванием
* `LHS *= RHS` - операция умножения с присваиванием
* `LHS /= RHS` - операция деления с присваиванием

Нижеперечисленные операции требуют [расширения](/ru/edit-modes/extensions) CLEO (`{$USE CLEO}` или `{$CLEO}`).

* `LHS = value1 + value2` - сложить два целых числа и записать результат в `LHS`
* `LHS = value1 - value2` - вычесть одно целое число из другого и записать результат в `LHS`
* `LHS = value1 * value2` - перемножить два целых числа и записать результат в `LHS`
* `LHS = value1 / value2` - разделить одно целое число на другое и записать результат в `LHS`

### Сравнение

* `LHS == RHS` - операция "равно". Стороны должны иметь одинаковое значение, чтобы результат был истиной (true).
* `LHS > RHS` - операция "больше чем"
* `LHS >= RHS` - операция "больше либо равно"
* `LHS < RHS` - операция "меньше чем"
* `LHS <= RHS` - операция "меньше либо равно"
* `LHS <> RHS` - операция "не равно". Стороны должны иметь разные значения, чтобы результат был истиной (true).

{% hint style="info" %}
В языке нет отдельного типа Boolean. Результат каждого сравнения имеет значение только в пределах текущего [условного выражения](/ru/coding/conditions).
{% endhint %}

### Побитовые операции

Игра не поддерживает побитовые операции, поэтому для их использования нужен особый [плагин CLEO](https://library.sannybuilder.com/#/sa/bitwise). Кроме того, в исходном коде при помощи директивы `{$USE bitwise}` должно быть подключено соответствующее [расширение](/ru/edit-modes/extensions).

| Операция                      | Опкод | Пример        |
| ----------------------------- | ----- | ------------- |
| AND                           | 0B10  | 0@ = 1@ & 2@  |
| OR                            | 0B11  | 0@ = 1@ \| 2@ |
| XOR                           | 0B12  | 0@ = 1@ ^ 2@  |
| NOT                           | 0B13  | 0@ = \~1@     |
| MOD                           | 0B14  | 0@ = 1@ % 2@  |
| Shift Right                   | 0B15  | 0@ = 1@ >> 2@ |
| Shift Left                    | 0B16  | 0@ = 1@ << 2@ |
| AND (с  присваиванием)        | 0B17  | 0@ &= 1@      |
| OR (с присваиванием)          | 0B18  | 0@ \|= 1@     |
| XOR (с присваиванием)         | 0B19  | 0@ ^= 1@      |
| NOT (унарный)                 | 0B1A  | \~0@          |
| MOD (с присваиванием)         | 0B1B  | 0@ %= 1@      |
| Shift Right (с присваиванием) | 0B1C  | 0@ >>= 1@     |
| Shift Left (с присваиванием)  | 0B1D  | 0@ <<= 1@     |

### FPS-независимое сложение и вычитание

Игра поддерживает операции сложения и вычитания, которые не зависят от FPS. Прочитайте [статью](https://gtamods.com/wiki/SCM_language#Operators) на GTAMods.com чтобы узнать больше.

| Команда                                    | Опкод | Пример          |
| ------------------------------------------ | ----- | --------------- |
| ADD\_TIMED\_VAL\_TO\_FLOAT\_VAR            | 0078  | $var +=@ 5.0    |
| ADD\_TIMED\_VAL\_TO\_FLOAT\_LVAR           | 0079  | 0@ +=@ 5.0      |
| ADD\_TIMED\_FLOAT\_VAR\_TO\_FLOAT\_VAR     | 007A  | $var1 +=@ $var2 |
| ADD\_TIMED\_FLOAT\_LVAR\_TO\_FLOAT\_LVAR   | 007B  | 0@ +=@ 1@       |
| ADD\_TIMED\_FLOAT\_VAR\_TO\_FLOAT\_LVAR    | 007C  | 0@ +=@ $var     |
| ADD\_TIMED\_FLOAT\_LVAR\_TO\_FLOAT\_VAR    | 007D  | $var +=@ 1@     |
| SUB\_TIMED\_VAL\_FROM\_FLOAT\_VAR          | 007E  | $var -=@ 5.0    |
| SUB\_TIMED\_VAL\_FROM\_FLOAT\_LVAR         | 007F  | 0@ -=@ 5.0      |
| SUB\_TIMED\_FLOAT\_VAR\_FROM\_FLOAT\_VAR   | 0080  | $var1 -=@ $var2 |
| SUB\_TIMED\_FLOAT\_LVAR\_FROM\_FLOAT\_LVAR | 0081  | 0@ -=@ 1@       |
| SUB\_TIMED\_FLOAT\_VAR\_FROM\_FLOAT\_LVAR  | 0082  | 0@ -=@ $var     |
| SUB\_TIMED\_FLOAT\_LVAR\_FROM\_FLOAT\_VAR  | 0083  | $var -=@ 1@     |

### Конвертация типов

Некоторые значения могут быть сконвертированы в другой тип. Игра поддерживает перевод между типами `Integer` и `Float`.

{% hint style="info" %}
Использование оператора `=#` требует, чтобы тип обеих переменных был [объявлен](/ru/coding/variables#declaring-a-variable-type) заранее.
{% endhint %}

| Команда                          | Опкод | Пример   |
| -------------------------------- | ----- | -------- |
| CSET\_VAR\_INT\_TO\_VAR\_FLOAT   | 008C  | $i =# $f |
| CSET\_VAR\_FLOAT\_TO\_VAR\_INT   | 008D  | $f =# $i |
| CSET\_LVAR\_INT\_TO\_VAR\_FLOAT  | 008E  | 0@ =# $f |
| CSET\_LVAR\_FLOAT\_TO\_VAR\_INT  | 008F  | 1@ =# $i |
| CSET\_VAR\_INT\_TO\_LVAR\_FLOAT  | 0090  | $i =# 1@ |
| CSET\_VAR\_FLOAT\_TO\_LVAR\_INT  | 0091  | $f =# 0@ |
| CSET\_LVAR\_INT\_TO\_LVAR\_FLOAT | 0092  | 0@ =# 1@ |
| CSET\_LVAR\_FLOAT\_TO\_LVAR\_INT | 0093  | 1@ =# 0@ |


# Условия

Оператор `IF` объединяет одно или несколько условий и создает новое ветвление в коде.

## Общий синтаксис условных выражений

`00D6: if <N>`\
&#x20; `<условие 1>`\
&#x20; `<условие 2>`\
`...`\
&#x20; `<условие N+1>`\
`004D: jump_if_false <метка>`

`N` означает общее кол-во условий внутри выражения `IF` и логическую связь между ними:

| N      | Кол-во условий | Логический оператор                                                                |
| ------ | -------------- | ---------------------------------------------------------------------------------- |
| 0      | 1              | нет (выражение истинно, если условие в нем истинно)                                |
| 1..7   | 2..8           | `И` (все условия должны быть истинны, чтобы все выражение было истинно)            |
| 21..27 | 2..8           | `ИЛИ` (хотя бы одно условие должен быть истинно, чтобы все выражение было истинно) |

{% hint style="info" %}
В одном выражении `IF` может объединяться до 8 условий.&#x20;
{% endhint %}

{% hint style="info" %}
Sanny Builder позволяет не указывать`0` после `IF. IF 0` и  `IF` эквивалентны.
{% endhint %}

`<метка>`- имя [метки](/ru/coding/data-types#metki), на которую переходит скрипт, если выражение `IF` ложно.\
`<условие>` - любой условный опкод, который возвращает `true` или `false`&#x20;

Если [опция](/ru/editor/options/general#proverka-uslovii)  `Проверка условий` включена, после `IF` можно писать ключевые слова `AND` или `OR`. Компилятор будет рассчитывать правильное значение самостоятельно:

```
if and 
    $var > 0
    $var2 == 10.0
jf @anywhere
```

В данном примере компилятор запишет вместо `and` число  `1`.

`IF AND` - условия, объединенные логическим оператором `И` (замена `if 1..7`)\
`IF OR` - условия, объединенные логическим оператором `ИЛИ` (замена `if 21..27`)

## Высокоуровневые конструкции

Для облегчения работы с условными выражениями существуют высокоуровневые конструкции, для которых не нужны дополнительные метки в коде:

`IF <N>/AND/OR`\
&#x20; `<условие 1>`\
&#x20; `<условие 2>`\
&#x20; `...`\
&#x20; `<условие N+1>`\
`THEN`\
&#x20; `<команды при истинности условия>`\
`END`&#x20;

`IF <N>/AND/OR`\
&#x20; `<условие 1>`\
&#x20; `<условие 2>`\
&#x20; `...`\
&#x20; `<условие N+1>`\
`THEN`\
&#x20; `<команды при истинности условия>`\
`ELSE`\
&#x20; `<команды при ложности условия>`\
`END`

Условное выражение создается по [общим правилам](/ru/coding/conditions#obshii-sintaksis-uslovnykh-vyrazhenii). После ключевого слова `THEN` указываются опкоды, которые должны выполняться, если условие истинно. После `ELSE` указываются опкоды, которые выполняются, если условие ложно.&#x20;

Выражение `IF` завершается ключевым словом `END`.

```
if $var == 5
then
    Inc($var)
else
    Dec($var)
end
```

{% hint style="info" %}
[Опция](/ru/editor/options/general#proverka-uslovii) `Проверка условий` должна быть включена.
{% endhint %}

{% hint style="info" %}
Допускаются конструкции IF, вложенные друг в друга.
{% endhint %}

## Операторы сравнения

* a **`==`** b - a равно b&#x20;
* &#x61;**`>=`** b - a больше либо равно b&#x20;
* a **`>`** b - a больше b&#x20;
* a **`<`** b - a меньше b&#x20;
* a **`<=`** b - a меньше либо равно b&#x20;
* a **`<>`** b - a не равно b

`a` и `b` называются операндами. Компилятор может самостоятельно определить нужный опкод, если один из операндов является числовой константой, [строковым литералом](/ru/coding/data-types#strokovye-literaly) или [тип](/ru/coding/variables#konstrukciya-var-end) обеих переменных известен.


# Циклы

**Цикл** - это конструкция, позволяющая выполнять последовательность команд неоднократно. Sanny Builder поддерживает несколько видов циклов: [for](/ru/coding/loops#for-end), [while](/ru/coding/loops#while-end), [repeat](/ru/coding/loops#repeat-until).

## FOR..END

В цикле `FOR` количество повторений (итераций) определено заранее.

Синтаксис:\
`FOR <имя переменной> = <начальное значение> TO/DOWNTO <конечное значение> [шаг = 1]`\
&#x20; `<тело цикла>`\
`END`

`имя переменной` - [переменная](/ru/coding/variables), которая используется для подсчета количества итераций (счетчик)\
`начальное значение` - значение счетчика перед первой итерацией (любое число, включая [имя модели](/ru/coding/data-types#imena-modelei))\
`TO` или `DOWNTO` - указывает на то, увеличивается или уменьшается значение счетчика после каждой итерации\
`конечное значение` - значение счетчика, при котором цикл завершается (любое число, включая [имя модели](/ru/coding/data-types#imena-modelei))\
`шаг` - необязательный параметр, который определяет на сколько изменяется значение счетчика после каждой итерации. По умолчанию равен `1`\
`тело цикла` - команды, которые выполняются при каждой итерации цикла; тело цикла может отсутствовать

```
var
    $value: int = 0
    $final: int = 100
end

FOR $MyCounter = 1 to $final step 2
    $value += $mycounter
end
```

Если тип счетчика не был [объявлен](/ru/coding/variables#konstrukciya-var-end) ранее, счетчик приобретает тип `Integer`. Если `начальное значение`, `конечное значение` или `шаг` цикла указаны в виде переменных, эти переменные будут автоматически объявлены с тем же типом, который есть у переменной цикла.

Для использования дробных чисел для счетчика итераций, счетчик должен иметь тип `Float`.

```
var
    $MyCounter: float
end

FOR $MyCounter = 1.0 to $final step 2.0

end

// переменные $MyCounter и $final имеют тип Float
```

## WHILE..END

Синтаксис:\
`WHILE <условие цикла>`\
&#x20; `<тело цикла>`\
`END`

`условие цикла` - любой условный опкод\
`тело цикла` - команды, которые выполняются при каждой итерации цикла; тело цикла может отсутствовать

```
while not #AK47.Available
    wait 0
end
```

Цикл `WHILE` работает до тех пор, пока условие цикла истинно. Условие цикла проверяется до первой итерации цикла. Поэтому если условие изначально ложно, цикл не отработает ни разу.

```
$var = 10

while $var > 11
    inc($var)
end

// условие цикла ложно, поэтому команда inc($var) никогда не выполнится
```

[Константы](/ru/coding/constants) `True` и `False` могут использоваться в качестве условия цикла.

```
while true
    <тело цикла>
end
```

Такой цикл будет выполняться бесконечно, пока в теле не выполнится команда`Break`.

```
while false
    <the loop body>
end
```

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

{% hint style="warning" %}
В текущей версии допускается только один опкод в качестве условия цикла. Если нужно скомбинировать несколько проверок, их можно поместить в начало цикла и использовать команды `Break` и `Continue`

```
while true
    if and
       $var >= 0
       $var <= 100
    then
       Break
    end

    // цикл выполняется, пока значение переменной $var 
    // находится в интервале [0...100]    
    <тело цикла>
end
```

{% endhint %}

## REPEAT..UNTIL

Синтаксис:\
`REPEAT`\
&#x20; `<тело цикла>`\
`UNTIL <условие цикла>`

`тело цикла` - команды, которые выполняются при каждой итерации цикла; тело цикла может отсутствовать\
`условие цикла` - любой условный опкод

Цикл `REPEAT..UNTIL` работает, пока условие цикла не будет истинно. Условие проверяется в конце итерации цикла, поэтому данный цикл будет иметь минимум одну итерацию.

Константы `True` и `False` могут быть использованы в качестве условия цикла.

```
repeat
  // цикл с одной итерацией
until true 
```

```
repeat
  // цикл работает бесконечно, пока не остановлен командой Break
until false
```

{% hint style="warning" %}
В текущей версии допускается только один опкод в качестве условия цикла. Если нужно скомбинировать несколько проверок, их можно поместить в конец цикла и использовать команды `Break` и `Continue`

```
repeat  
    <тело цикла>
    if and
       $var >= 0
       $var <= 100
    then
       Break
    end
  // цикл выполняется, пока значение переменной $var 
  // находится в интервале [0...100]  
until false
```

{% endhint %}

## Команды Continue и Break

Если необходимо пропустить текущую итерацию цикла и перейти к следующей, используйте команду `Continue`.&#x20;

Команда `Break` завершает цикл и передает управление на команду, следующую за  завершающим `end`.

Обе эти команды могут быть использованы как параметр в опкоде (например, `jf Continue`) или как отдельная команда.

```
while true
  if
    not $actor.dead
  jf Break // завершить цикл

  if
    $actor.dead
  then
    Continue // перейти на следующую итерацию
  end
end
```


# Классы

**Класс** - это группа команд, относящихся к какой-либо сущности в игре: игрокам, актерам, машинам и т.д. Например, класс `Player` объединяет опкоды, которые выполняются над игровым персонажем.

## Общий синтаксис

Синтаксис:\
`<имя класса>.<член класса>(параметры)`

`Имя класса` - название группы опкодов, которая определена в файле `classes.db` для текущего [режима редактирования](/ru/edit-modes)\
`Член класса` - одна из команд, входящих в класс\
`Параметры` - 0 и более [параметров](/ru/coding/data-types), разделенных запятой

```
Player.SetMinWantedLevel($PLAYER_CHAR, 2)
```

`Player` - имя класса\
`SetMinWantedLevel` - член класса \
`$PLAYER_CHAR, 2` - два параметра для команды `SetMinWantedLevel`

Существует 3 вида членов класса:

* условия
* методы
* свойства

### Условия&#x20;

Условные команды в списке, вызываемом нажатием `Ctrl+пробел`, обозначаются словом `Check`. Они используются в [условных выражениях](/ru/coding/conditions):

```
if
    Player.Defined($PLAYER_CHAR)
jf @anywhere
```

### Методы

Команды, которые используются для выполнения одиночного действия над экземплярами класса, называются методами. Например, перемещение объекта, взрыв машины и т.п.:

```
Object.PutAt($crate, 10.0, -25.5, 12.2)
Car.Destroy($car)
```

В списке членов класса они обозначаются словом `proc`.&#x20;

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

Sanny Builder допускает два эквивалентных друг другу варианта написать конструктор:

```
Player.Create($PLAYER_CHAR, #NULL, 2488.5601, -1666.84, 13.38)
```

```
$PLAYER_CHAR = Player.Create(#NULL, 2488.5601, -1666.84, 13.38)
```

### Свойства

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

Например, свойство `.Money` класса `Player` позволяет работать с количеством денег у игрока:

```
Player($PLAYER_CHAR).Money += 1000000 // добавить деньги
Player($PLAYER_CHAR).Money > 461@ // проверить счет игрока
4@ = Player($PLAYER_CHAR).Money // записать текущую сумму денег в переменную
```

{% hint style="warning" %}
В текущей версии существует ограничение на использование пробелов в [строковых литералах](/ru/coding/data-types#strokovye-literaly) в параметрах свойств. Компилятор игнорирует такие пробелы:

```
0@ = File.Open("file name","wb")
```

будет скомпилировано как:

```
0@ = File.Open("filename","wb")
```

{% endhint %}

## Экземпляры класса

Большинство классов в качестве первого параметра принимают переменную, которая хранит указатель на экземпляр класса - ту сущность в игре, над которой выполняется эта команда:

```
Player.Build($PLAYER_CHAR)
```

`$PLAYER_CHAR` - экземпляр класса.&#x20;

При этом некоторые внутриигровые элементы существуют в единственном экземпляре. Например, камера, которая определяет поле зрения игрока. Члены классов для таких сущностей не требуют экземпляра класса:

```
Camera.SetBehindPlayer()
```

### Объявление экземпляров класса

Переменные можно [объявлять](/ru/coding/variables#konstrukciya-var-end) с типом - именем класса:

```
var
    $PLAYER_CHAR: Player
end
```

Это указывает компилятору на то, что переменная `$PLAYER_CHAR` является экземпляром класса `Player`. Такую переменную можно использовать вместо имени класса:

```
if
    $PLAYER_CHAR.Defined
jf @anywhere
```

{% hint style="warning" %}
Если переменная используется вместо имени класса, она также компилируется как первый параметр, поэтому дублировать её в списке параметров не нужно:

```
$PLAYER_CHAR.SetClothes("PLAYER_FACE", "HEAD", Head)
```

эквивалентно:

```
Player.SetClothes($PLAYER_CHAR, "PLAYER_FACE", "HEAD", Head)
```

{% endhint %}

Переменные - экземпляры класса могут быть переобъявлены с другим типом.

### Класс `Model`&#x20;

[Имена моделей](/ru/coding/data-types#imena-modelei) являются экземплярами класса `Model`:

```
#AK47.Load
  
:loop
wait 0
if
  #AK47.Available
jf @loop
```

эквивалентно:

```
Model.Load(#AK47)

:loop
wait 0
if
    Model.Available(#AK47)
jf @loop
```

## Константы класса <a href="#class-constants" id="class-constants"></a>

Некоторые параметры в членах классов могут задаваться в виде [перечисляемого типа](/ru/edit-modes/enums.txt) (или перечисления). Это делает код более читаемым:

```
Player.SetClothes($PLAYER_CHAR, "VEST", "VEST", BodyPart.Torso)
```

Последний параметр (`BodyPart.Torso`) - это значение перечисления `BodyPart`, которое будет заменено на `0` при компиляции. Перечисления и их значения определены в [файле](/ru/edit-modes/enums.txt) `enums.txt`.

#### Константы класса (устаревшее)

Sanny Builder до версии 3.6 определял специальные константы для классов в файле `classes.db` . Такие параметры назывались `Extended`. Один член класса не мог иметь более одного параметра такого типа.&#x20;

Начиная с версии 3.6 классы могут использовать [перечисления](/ru/edit-modes/enums.txt) в качестве типов параметров, при этом допускается использование разных перечислений для разных параметров.&#x20;

Определенные ранее в файле `classes.db` параметры типа `Extended`  были заменены на перечисления и перемещены в раздел `DEPRECATED_ENUMS` для поддержания обратной совместимости  с существующими скриптами.


# Ключевые слова

**Ключевое слово** - это замена номеру опкода.&#x20;

Например, ключевое слово `WAIT` заменяет опкод `0001`. Таким образом,

```
wait 0
```

и

```
0001: 0
```

представляют собой идентичный код.&#x20;

Список ключевых слов содержится в файле `keywords.txt` (свой для каждого [режима редактирования](/ru/edit-modes)). В редакторе его можно вызвать нажатием `Ctrl+пробел`.


# Дополнительные команды

В компилятор встроено несколько дополнительных команд, которые позволяют [упростить](https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%81%D0%B0%D1%85%D0%B0%D1%80) некоторые конструкции.

## INC

Прибавляет к значению [переменной](/ru/coding/variables) (первый параметр) число (второй параметр):

```
Inc($IntVariable, $Value)
=
$IntVariable += $Value
```

Второй параметр по умолчанию равен `1`.

```
Inc(1@)
=
1@ += 1
```

Начиная с версии 3.06 можно использовать оператор инкремента `++`. Он пишется после имени переменной и увеличивает ее значение на `1`.

```
$var++
=
$var += 1
```

## DEC

Вычитает из значения [переменной](/ru/coding/variables) (первый параметр) число (второй параметр):

```
Dec($IntVariable, $Value)
=
$IntVariable -= $Value
```

Второй параметр по умолчанию равен `1`.

```
Dec(1@)
=
1@ -= 1
```

Начиная с версии 3.06 можно использовать оператор декремента `--`. Он пишется после имени переменной и уменьшает ее значение на `1`.

```
$var--
=
$var -= 1
```

## MUL

Умножает значение [переменной](/ru/coding/variables) (первый параметр) на число (второй параметр):

```
Mul($IntVariable, $Value)
=
$IntVariable = $IntVariable * $Value
```

Второй параметр по умолчанию равен `2`.

```
Mul(1@)
=
1@ = 1@ * 2
```

## DIV

Делит значение [переменной](/ru/coding/variables) (первый параметр) на число (второй параметр):

```
Div($IntVariable, $Value)
=
$IntVariable = $IntVariable / $Value
```

Второй параметр по умолчанию равен `2`.

```
Div(1@)
=
1@ = 1@ / 2
```

## ALLOC&#x20;

Эта функция задает адрес для [глобальной переменной](/ru/coding/variables#globalnye-peremennye), по которому она будет хранить свое значение. Значения переменных хранятся в начале файла `main.scm`.&#x20;

Применять эту команду следует только к переменным с текстовым именем (например, `$text`). Для переменных с числовым именем (т.н. [`DMA`-переменные](/ru/coding/variables#globalnye-peremennye)) их адрес определяется самим этим числом. Например, переменная `$40` хранит свое значение по смещению `160` (40\*4).

Первый параметр должен быть глобальной переменной, второй - целым числом больше либо равным нулю.

```
Alloc($MyVar, 40) - переменная $MyVar будет скомпилирована как $40
```

{% hint style="info" %}
См. также `help\examples\alloc.txt`
{% endhint %}

## SQR

Умножает переменную на саму себя

```
sqr($var) 
=
$var *= $var
```

{% hint style="info" %}
Тип переменной должен быть [объявлен](/ru/coding/variables#konstrukciya-var-end).
{% endhint %}

## RANDOM

Эта функция возвращает случайное число в заданном интервале:

```
$rnd = random(1, $high)
```

Может использоваться как для целых, так и для дробных чисел. Конечный опкод зависит от [типа](/ru/coding/variables#konstrukciya-var-end) переменной, в которую записывается результат (`$rnd`).


# HEX..END

Sanny Builder поддерживает запись произвольных значений в выходной файл без какой-либо обработки и проверки.

{% hint style="warning" %}
Используйте эту возможность только в том случае, если вы знаете, что делаете. Любые ошибки могут повредить файл и его невозможно будет прочитать в игре или в скриптовом редакторе.
{% endhint %}

## Синтаксис <a href="#syntax" id="syntax"></a>

`hex`\
`<последовательность байтов>`\
`end`

`последовательность байтов` - одна или несколько пар цифр в [шестнадцатиричном формате](/ru/coding/data-types#hex-numbers). Каждая пара представляет собой один байт, который будет записан в файл. Все пробелы игнорируются. Если число символов в последовательности нечетное, к последнему значению слева дописывается `0`:

```pascal
hex
    04 00 02 0800 04 1
end
```

Эта последовательность является бинарным представлением команды `0004: $2 = 1`. Игра сможет прочитать его и установит значение переменной `$2` в `1`.

В конструкции `HEX..END` также можно использовать [строковые литералы](/ru/coding/data-types#strokovye-literaly), [метки](/ru/coding/data-types#metki), [глобальные переменные](/ru/coding/variables#globalnye-peremennye), [имена моделей](/ru/coding/data-types#imena-modelei). Они компилируются без предшествующего байта, указывающего на тип данных.

```pascal
:get_offset
hex
    04 00 02 $PLAYER_CHAR 01 @get_offset
end
```

Это эквивалентно команде  `0004: $PLAYER_CHAR = @get_offset`

Строковые литералы, заключенные в двойные скобки, компилируются как последовательность символов:

```pascal
hex
    "This is a string"
end
```

## Экранированные последовательности <a href="#escape-sequences" id="escape-sequences"></a>

В строках допускается использование следующих управляющих символов:

| Имя                          | Последовательность | Вывод в файл |
| ---------------------------- | ------------------ | ------------ |
| пустой символ                | \0                 | 00           |
| возврат на один шаг          | \b                 | 08           |
| табуляция                    | \t                 | 09           |
| перевод каретки              | \n                 | 0A           |
| возврат каретки              | \r                 | 0D           |
| запись произвольного байта   | \x`nn`             | `nn`         |
| запись произвольного символа | \\`символ`         | `символ`     |

```
hex
    "\0\b\t\n\r\xDD"
end
```

В файл будет записана последовательность байтов `00 08 09 0A 0D DD`.

{% hint style="info" %}
В настоящее время несколько подряд идущих пробелов в строке конвертируются в один пробел. Например, строка `"This    is  a     string"` будет сконвертирована в `"This is a string"`. Используйте символ `\` чтобы добавить дополнительные пробелы в строку: `"This \ \ \ is \ a \ \ \ \ string"`.
{% endhint %}

## Ввод больших чисел <a href="#entering-large-numbers" id="entering-large-numbers"></a>

Для удобства записи больших чисел поставьте в начале знак `&`. Число после знака `&` может быть как положительным, так и отрицательным, в десятичном или шестнадцатиричном форматах.

```pascal
hex
    &1000 &-0xA33500 
end
```

В файл будет записана последовательность байтов `E8 03 00 CB 5C FF`.

## Повторение байтов <a href="#byte-repetition" id="byte-repetition"></a>

В случае, если один байт повторяется много раз, например, для создания пустого буфера, заполненного нулями, кол-во повторений можно задать, добавив `(n)` после байта, где `n` - это целое положительное число:

```pascal
hex
 00(10
end
```

Это будет эквивалентно:

```pascal
hex
  00 00 00 00 00 00 00 00 00 00
end
```

Повторения байтов можно использовать несколько раз в одном блоке, так же можно задать кол-во при помощи константы:

```pascal
const n = 25

hex
00(n) 01(3) 02(4)
end
```

## Добавление бинарных файлов <a href="#including-binary-files" id="including-binary-files"></a>

`hex..end` позволяет использовать директиву `{$INCLUDE}` для вставки содержимого бинарного файла в тело скрипта. Используется следующий синтаксис:

```
hex 
 {$INCLUDE <path>}
end
```

Путь к файлу определяется по правилам [директивы](/ru/coding/directives#usdinclude) `{$INCLUDE}`.


# Директивы

Препроцессорные **директивы** - это специальные слова, которые указывают компилятору на необходимое поведение в процессе компиляции. Они начинаются с символа `$` и заключены в фигурные скобки `{}`.

## $INCLUDE

Подключает внешний текстовый файл к исходнику. Когда компилятор находит указанную директиву, он открывает файл по пути, переданному в качестве параметра директивы и продолжает компиляцию того кода, который записан во внешнем файле. Когда компилятор достигает конца данного файла, он возвращается обратно в предыдущий файл.

Синтаксис:

```pascal
{$INCLUDE путь\к\файлу}
```

```pascal
{$INCLUDE loadwav.txt}
{$INCLUDE C:\dev\getarrayindex.txt}
```

Если указан относительный путь, компилятор ищет файл в следующем порядке:

1. папка, где находится файл, содержащий данную директиву
2. папка `data` для текущего режима редактирования
3. корневая папка Sanny Builder
4. корневая папка игры

Если компилятор не может найти файл относительно ни одной из указанных папок это вызовет ошибку.

Вы можете использовать данную директиву неограниченное число раз. Вкладываемые файлы могут также содержать в себе данную директиву.

{% hint style="info" %}
Короткая форма этой директивы `$I`.
{% endhint %}

## $INCLUDE\_ONCE

Действует как `{$INCLUDE}` с тем единственным отличием, что если файл уже был подключен, он не будет подключен еще раз, и директива будет проигнорирована.

## $EXTERNAL

Заставляет скомпилировать файл как внешний скрипт. Получившийся файл будет без заголовка и с локальными [метками](/ru/coding/data-types#metki) как `.scm` файл из `script.img`. Использование данной директивы подразумевает, что в файле содержится только один скрипт или одна миссия.

Аналогом использования данной директивы является [опция](/ru/editor/console#skip_scm_header) `SKIP_SCM_HEADER`. Данную опцию также можно переключить на главной панели инструментов.

Синтаксис:

```pascal
{$EXTERNAL}
```

{% hint style="info" %}
Короткая форма этой директивы `$E`.
{% endhint %}

## $CLEO

Является аналогом директивы `$E`, однако полученный файл автоматически копируется в директорию `игра\CLEO`, и получает расширение, указанное в директиве.

Синтаксис:

```pascal
{$CLEO <расширение файла>}
```

`расширение файла` - опциональный параметр, который определяет какое расширение получит скомпилированный файл. Начинается с `.`. По умолчанию равен `.cs`.

```pascal
{$CLEO .cm} // файл получит расширение .cm
{$CLEO} // файл получит расширение по умолчанию .cs
```

Эта директива предназначена максимально упростить создание CLEO скриптов.

{% hint style="info" %}
`{$CLEO}` включает в себя `{$USE CLEO}`
{% endhint %}

## $NOSOURCE

Запрещает компилятору добавлять в конечный файл исходный код скрипта.&#x20;

Если эта директива отсутствует, то при наличии директив `$EXTERNAL` или `$CLEO` и при включенной [опции](/ru/editor/options/general#dobavlyat-dopolnitelnuyu-informaciyu-v-scm) `Добавлять доп. информацию в SCM`, Sanny Builder добавит исходный код в конец файла для последующего использования при дизассемблировании.

Синтаксис:

```pascal
{$NOSOURCE}
```

## $OPCODE

Регистрирует новый опкод.&#x20;

Обычно описания всех опкодов содержатся в [специальном файле](/ru/edit-modes/opcodes-list-scm.ini), по одному для каждой игры. Но иногда необходимо добавить новый опкод для использования в текущем скрипте. Директива `$OPCODE` делает это возможным без редактирования оригинального списка опкодов.

Синтаксис:

```pascal
{$OPCODE <описание опкода>}
```

либо

```pascal
{$OPCODE <путь к файлу с описанием>}
```

либо

```pascal
{$OPCODE}
```

`описание опкода` - директива принимает описание опкода в том же [формате](/ru/edit-modes/opcodes-list-scm.ini#opkody), что и файл INI:

```pascal
{$OPCODE 0CCC=1,my_new_opcode %1d%}
```

`путь к файлу с описанием` - директива также принимает путь к файлу в качестве параметра. Этот файл должен содержать в себе только описания опкодов, которые будут загружены компилятором. Если указан относительный путь, компилятор ищет файл по тем же правилам, что и в директиве `$INCLUDE`.

```pascal
{$OPCODE additional_opcodes.ini}
```

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

```pascal
{$OPCODE}
```

{% hint style="info" %}
Короткая форма этой директивы `$O`.
{% endhint %}

## $USE

Разрешает компилятору использовать [дополнительный набор инструкций](/ru/edit-modes/extensions).

```pascal
{$USE CLEO+}
```

Допускается перечисление нескольких имен, разделяемых запятыми.

```pascal
{$USE ini, bitwise, CLEO+}
```

## $VERSION

{% hint style="warning" %}
Эта директива не используется начиная с версии v3.1.0
{% endhint %}

Устанавливает какая версия [опкодов](/ru/edit-modes/opcodes-list-scm.ini) будет использована во время компиляции.

Синтаксис:

```pascal
{$VERSION x.y.zzzz}
```

* `X`- ID [режима редактирования](/ru/edit-modes)
* `y` - порядок параметров
  * `0` - оригинальный, все параметры идут последовательно 0, 1, 2 и т.д.
  * `1` - модифицированный порядок, некоторые параметры переставлены
* `zzzz` - номер ревизии

По умолчанию компилятор загружает версию `<текущий режим>.1.0000`

## $VERSION\_RESTORE

{% hint style="warning" %}
Эта директива не используется начиная с версии v3.1.0
{% endhint %}

Восстанавливает версию, которая использовалась до директивы `$VERSION`.

Синтаксис:

```pascal
{$VERSION_RESTORE}
```


# Комментарии

Комментарии обозначаются в коде двумя слэшами `//`. Все, что идет после `//` до конца строки, игнорируется компилятором.

Для того чтобы закомментировать несколько строк сразу либо только часть строки (например в середине или начале), используйте блочные комментарии `{}`&#x20;

```
0001: wait  {это игнорируется} 0 ms
```

Начиная с версии 3.06 Sanny Builder поддерживает C++-подобные комментарии `/* */`.&#x20;

```
0001: wait /* комментарий */ 0 ms
```

Также вы можете закомментировать несколько строк, выделив их и нажав `Ctrl+Q` (это сочетание клавиш можно изменить в [опциях](/ru/editor/options/hotkeys)). Для раскоментирования выделите текст и нажмите `Ctrl+Q` еще раз.


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

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

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

![](/files/-MgEMCcgZ5iZtOfqPzdl)

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

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

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

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

Также в Sanny Builder имеется [встроенный редактор](/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+Влево`. Продолжайте нажимать, если переходов было несколько.

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

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

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

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

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

Используйте программу [поиска опкодов](/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`.

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

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

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

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

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

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

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

Sanny Builder обладает интерфейсом, переведенным на 15 языков. Переключить язык можно в [опциях](/ru/editor/options/general#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 может автоматически проверять наличие обновления при запуске, если вы включите соответствующую опцию в окне меню обновлений.


# Опции программы

Окно опций можно вызвать нажатием `F10`. Это окно разделено на 5 вкладок, каждая из которых содержит определенный вид настроек. По умолчанию открывается вкладка [общих настроек](/ru/editor/options/general).


# Общие настройки

Данная вкладка содержит общие настройки программы.

![](/files/-MgCsql-98iMo0cOSTII)

## Директория игры

![](/files/-M4Weq0Y-Od-JVl5ijkD)

Путь к папке, где установлена игра для текущего [режима редактирования](/ru/edit-modes). Путь можно ввести вручную или выбрать через диалог, появляющийся при нажатии кнопки.

## Язык интерфейса

![](/files/-MQhVNRbKdvpQ8VEYI_M)

Список доступных языков для интерфейса программы. Сами переводы находится в папке `lang`. Информацию о создании новых переводов можно найти на [sannybuilder/translations](https://github.com/sannybuilder/translations).

## Привязка файловых расширений

![](/files/-MQhUlQisxU8jc0Y3N8T)

Файлы с отмеченными расширениями по умолчанию открываются в Sanny Builder. Для отмены ассоциации, снимите галочку.

## Настройки

![](/files/-M4Wf3LJG3Fwa3SOfYw4)

### Перезапись выходного файла

Перезаписывать файл с результатом дизассемблирования, если файл с таким именем уже существует. Если опция не выбрана,  дизассемблер создаст новый файл, добавив к нему индекс (например, `main[0].txt`).

### Показывать прогресс

Отображать текущий прогресс при работе дизассемблера или компилятора. Без этой опции в статусбаре будут слова `Пожалуйста ждите…`.&#x20;

Показ прогресса немного замедляет процесс (де)компиляции.

### Показывать отчет

Отображать диалоговое окно с различной информацией о скомпилированном файле.

### Показывать предупреждение

Данная опция имеет значение только при компиляции скриптов San Andreas. Если игра запущена ко время компиляции, то файл `script.img`, содержащий часть скриптов, не может быть изменен, поскольку игра использует его. Компилятор покажет об этом предупреждение. Вы можете отключить показ предупреждения, выбрав данную опцию.

### Ручной выбор IMG-файла

При дизассемблировании `main.scm` в режиме `GTA SA` программа ищет файл `script.img`, содержащий часть игровых скриптов. Если файл не найден в одной папке с `main.scm` или в папке игры, то будет показана ошибка. Однако при выборе данной опции вы сможете выбрать `script.img` вручную.

### Быстрая загрузка игры

Sanny Builder способен пропускать начальные заставки при запуске San Andreas (`F8`). Если данная возможность вызывает ошибку в вашей версии игры, отключите данную опцию.

### Проверка условий

Данная опция имеет 2 значения. При дизассемблировании скриптов программа заменяет [количество условий](/ru/coding/conditions#obshii-sintaksis-uslovnykh-vyrazhenii) в `IF` на слова `AND` и `OR`. При компиляции появляется поддержка конструкции `IF..END`, а также возможность компилировать `IF` со словами `AND` и `OR`.

### Проверка переменных

Количество используемых глобальных и локальных [переменных](/ru/coding/variables) имеет свои [лимиты](/ru/scm-documentation/gta-limits). При включении данной опции компилятор будет проверять правильность их использования.

### Использовать опкоды

При выключении этой опции дизассемблер использует [классы](/ru/coding/classes) и [ключевые слова](/ru/coding/keywords), заменяя ими опкоды. Также не будут записываться опкоды для некоторых простых математических выражений.&#x20;

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

### Заменять номера миссий

При включении данной опции дизассемблер [заменяет](/ru/editor/features#zamena-nomerov-missii-na-ikh-nazvaniya) номера миссий в `start_mission` на их имена. Например, `start_mission INITIAL`. Имя миссии определяется по имени метки в заголовке файла. Еe также можно использовать для [быстрого перехода](/ru/editor/features#bystryi-perekhod-po-tekstu) к началу миссии.

### Вставлять оригинальные имена миссий

Когда данная опция включена, декомпилятор добавляет заранее определенные [имена миссий](/ru/editor/features#ispolzovanie-originalnykh-imen-missii) как комментарии к `start_mission`, а также к строке `DEFINE MISSION` в заголовке файла.

### Добавлять дополнительную информацию в SCM

При включении данной опции компилятор сохраняет информацию о скрипте в теле скомпилированного файла. Эта информация используется в дальнейшем при дизассемблировании для достижения максимального соответствия оригиналу:

* адреса конструкций [HEX..END](/ru/coding/hex..end)
* имена [глобальных переменных](/ru/coding/variables#globalnye-peremennye)
* оригинальный исходный код (см. также [$NOSOURCE](/ru/coding/directives#usdnosource))
* [режим редактирования](/ru/edit-modes)

{% hint style="info" %}
Скрипт, скомпилированный с дополнительной информацией, нельзя открыть в версиях Sanny Builder ранее v3.0 (кроме случая включения [опции](/ru/editor/console#ignore_unknown) `ignore_unknown`).

Начиная с версии 3.8.0, дизассемблер может [игнорировать дополнительную информацию](/ru/editor/console#skip_extra_info).
{% endhint %}


# Форматирование

На данной вкладке вы можете настроить имена для выходных файлов, форматы меток, регистры строковых литералов и т.д.

![](/files/-MgCtByfbztZV-FNkJhj)

## Имена файлов

Настройка для имен файлов, получаемых после дизассемблирования и компиляции.&#x20;

![](/files/-M4b900bDhGcodyO5rE4)

В верхнем поле указывается формат для текстового файла, в который записывается содержимое дизассемблированого скрипта. В нижних двух – форматы для бинарных файлов `SCM` и `IMG` (в [режиме](/ru/edit-modes) `GTA SA`), содержащих скомпилированные скрипты.&#x20;

Все поля имеют общий синтаксис. Можно использовать специальные слова, которые представляют часть имени исходного файла:

`$dir` – путь к исходному файлу \
`$name` – имя исходного файла\
`$ext` – расширение исходного файла

Например, если вы дизассемблируете файл `C:\MyDir\main.scm`, то

`$dir` это `C:\MyDir` \
`$name` это `main` \
`$ext` это `.scm`&#x20;

Если в верхнем поле указано `$dir\$name.txt`, то текстовый файл будет сохранен как `C:\MyDir\main.txt`

## Имена меток

Формат меток, который используется при дизассемблировании скриптов.

![](/files/-MQiKsmStrY2LybISHi_)

### Смещение от начала файла

Имена меток представляют собой адрес этих меток в исходном файле, например `@12345`.

### Имя скрипта+Смещение от его начала

Имена меток состоят из имени скрипта, в котором они находятся (определяется командой `name_thread`) и смещения от начала скрипта. Например, `@MAIN_12`.

### Имя скрипта+Смещение от начала файла

Имена меток состоят из имени скрипта, в котором они находятся (определяется командой `script_name`) и смещения от начала исходного файла. Например, `@MAIN_12345`.

{% hint style="info" %}
Для вывода смещений в 16-ричном формате, поставьте нижнюю галочку.&#x20;
{% endhint %}

## Собственные имена

Опции, которые указывают дизассемблеру использовать имена, определенные пользователем во внешних файлах.

![](/files/-M4b98-sgdenDbDORoy5)

Имена меток содержатся в файле [`CustomLabels.ini`](/ru/edit-modes/customlabels.ini). Файл представляет собой список имен меток и их смещений от начала файла. Если данная опция выбрана, дизассемблер при соответствии позиции метки в исходном файле одной из позиций в данном списке, назовет метку так, как указано в списке.&#x20;

Имена глобальных [переменных](/ru/coding/variables#globalnye-peremennye) содержатся в файле `CustomVariables.ini`.Файл представляет собой список оригинальных числовых имен глобальных переменных (`DMA`) и их текстовые эквиваленты. При включении данной опции дизассемблер будет называть переменные указанными именами.

Имена массивов содержатся в файле `CustomArrays.ini`. Формат файла следующий: первым числом на строке стоит оригинальное имя переменной – начало массива, затем через пробел количество элементов в массиве – размер, затем текстовое имя. Данная опция предназначена для того, чтобы дизассемблер распознавал [элементы массива](/ru/coding/arrays#ispolzovanie-celochislennykh-konstant).

{% hint style="info" %}
Содержимое файлов `CustomLabels.ini`, `CustomVariables.ini`, `CustomArrays.ini` в комплекте Sanny Builder составлено для оригинального`main.scm` версии 1.0
{% endhint %}

## Регистр букв

![](/files/-M4b9AXE5CZavwCzz_Oh)

Эта опция имеет 2 значения. Дизассемблер, используя данную опцию, будет именовать [глобальные переменные](/ru/coding/variables#globalnye-peremennye), [метки](/ru/coding/data-types#metki), [массивы ](/ru/coding/arrays)в указанном регистре букв. Компилятор будет записывать [строковые литералы](/ru/coding/data-types#strokovye-literaly) также в указанном регистре.


# Редактор

На данной вкладке вы можете изменить настройки IDE.

![](/files/-MgCtUl1njwnHv8TtH2E)

## Тема оформления

![](/files/-MgCthDgoKUKMqZAvRIq)

Здесь вы можете выбрать одну из готовых тем оформления, изменяющих внешний вид программы и правила подсветки синтаксиса. Кнопка Изменить запускает [Редактор тем](/ru/editor/options/theme-editor).

## Глубина просмотра кода

![](/files/-M4k8K1myJoL1r6Th7zK)

Значение глубины просмотра используется при построении списка [констант](/ru/coding/constants), [меток](/ru/coding/data-types#metki) и [переменных](/ru/coding/variables) после нажатия комбинации `Ctrl+пробел`. Это значение говорит редактору, как много строк кода нужно просмотреть в обе стороны от текущей строки. Если указано значение `0`, программа будет искать указанные элементы по всему файлу.

Если галочка внизу поставлена, список меток, моделей и переменных будет появляться автоматически после набора  `@`, `$`, `#`.

## Шрифт

![](/files/-M4k8NBDygh2YPjFjSeZ)

Здесь вы можете выбрать шрифт и его настройки для редактора. Sanny Builder поддерживает только [моноширинные шрифты](https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%BD%D0%BE%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D0%BD%D1%8B%D0%B9_%D1%88%D1%80%D0%B8%D1%84%D1%82). Строка `AaBbCcDd` отражает текущие настройки.

## Настройки

![](/files/-MgCtvUvyG_ErlEqN8UM)

`Показывать главную панель` – показать/спрятать панель с кнопками в главном окне редактора\
`Показывать информацию об опкодах` – отображать [различную информацию](/ru/editor/features#pokaz-razlichnoi-informacii-o-tekushem-opkode) в статусной строке внизу экрана \
`Показывать номера строк` – отображать номера строк в отступе в левой части редактора \
`Показывать границу отступа` – показать границу для отступа в левой части редактора. Отключите данную опцию, чтобы визуально увеличить пространство редактора\
`Открывать при запуске последний файл` – открывать при запуске программы последний закрытый файл, если таковой существует\
`Открывать все закрытые файлы` – открывать разом все закрытые файлы при запуске. Данная опция может быть выбрана только вместе с `Открывать при запуске последний файл`\
`Подтверждать выход` – включить подтверждение для закрытия программы. Полезно для предотвращения случайного выхода\
`Включить языковую службу` – управление [языковой службой](/ru/editor/language-service). При выключенной службе становится недоступной опция подсветки констант. Выключение службы не влияет на уже открытый файл.\
`Семантическая подсветка` – применять к константам такие же правила подсветки, как к их значениям. Правило для подсветки констант, заданное в [теме оформления](/ru/editor/options/theme-editor#code-elements), будет проигнорировано.


# Редактор тем оформления

**Редактор тем** - это встроенная утилита, которая заменяет вкладку настроек подсветки синтаксиса. Он может быть запущен из вкладки [Редактор](/ru/editor/options/editor#tema-oformleniya).

![](/files/-MgCzLQ8ER0ltdOVycqV)

Для кастомизации доступны цвета и стили некоторых элементов интерфейса и кода.

У таких элементов можно изменить 3 свойства: `Цвет`, `Фон`, `Стиль`. Некоторые свойства могут быть недоступны для определенных элементов.

Для комбинирования между собой доступны 3 варианта `стиля`: **B** – полужирный, **I** – курсив, **U** – подчеркнутый.

### Элементы интерфейса <a href="#interface-elements" id="interface-elements"></a>

* **Поле редактора** – цвет текста и фон основной области редактирования
* **Активная строка** – фон строки, на которой находится курсор
* **Отступ** – цвет текста и фон области слева от редактора
* **Нижняя панель** – цвет текста и фон панели под редактором
* **Граница нижней панели** – цвет границ отдельных секций в нижней панели

### Элементы кода <a href="#code-elements" id="code-elements"></a>

* [Комментарии](/ru/coding/comments) – текст после `//`, а также между `{}` или `/* */`
* [Метки](/ru/coding/data-types#metki) – идентификаторы, начинающиеся с `@`
* [Переменные](/ru/coding/variables) – идентификаторы, начинающиеся с `$` (глобальные переменные), или заканчивающиеся на `@` (локальные переменные)\
  Тип [aDMA](/ru/coding/data-types#peremennye) (начинается с `&`) и [массивы](/ru/coding/arrays) подсвечиваются как переменные.
* [Ключевые слова](/ru/coding/keywords) – специальные слова, записанные в файле `keywords.ini` (один для всех [режимов редактирования](/ru/edit-modes)) и `keywords.txt` (свой для каждого режима)
* Числа – целые и дробные числа
* Строковые литералы – текст между двойными `" "` или одинарными `' '` кавычками
* Модели – идентификаторы, начинающиеся с `#`
* [Классы](/ru/coding/classes) – имена классов (идентификатор перед `.`)
* Команды – члены класса (идентификатор после `.`), а также [функции](/ru/coding/data-types#metki)
* [Директивы ](/ru/coding/directives)– текст после комбинации символов `{$`
* [Константы](/ru/coding/constants) - идентификаторы, объявленные внутри конструкции `CONST..END`. См. также [Семантическая подсветка](/ru/editor/options/editor#nastroiki).

{% hint style="info" %}
Правила подсветки используются также при сохранении кода в формат `RTF` или `HTML`.
{% endhint %}


# Горячие клавиши

![](/files/-MgCuDcxdEO9cAl-bDGW)

Некоторые [горячие клавиши](/ru/editor/hotkeys) могут быть изменены для вашего удобства. Вы можете установить новые сочетания кнопок для вызова инструментов, действий редактора и некоторых других возможностей.


# Консоль

**Консоль** служит инструментом для переключения отладочных опций Sanny Builder. Многие из них относятся к возможностям дизассемблера и влияют на его работу.&#x20;

Окно консоли открывается нажатием `Ctrl+~`. Для запуска команды введите ее в верхнем поле и нажмите `Enter`. Консоль покажет результат.

## Доступные команды&#x20;

Все команды являются регистронезависимыми.

`help` – показать справку о консоли\
`clear` – очистить консоль\
`list` – показать список доступных команд\
`list options` – вывести все доступные отладочные опции\
`toggle <имя опции> [on/off]` – переключить [отладочную опцию](/ru/editor/console#otladochnye-opcii)

Команда `toggle` заканчивается либо словом `ON` (опция будет включена), `OFF` (опция будет выключена), или ни тем ни другим (опция будет переключена с `ON` на `OFF` или с `OFF` на `ON`).

{% hint style="info" %}
Перед включением отладочных опций включите общий режим отладки командой`toggle debug_mode ON`
{% endhint %}

## Отладочные опции

### CODE\_OFFSETS

Дизассемблер выводит для каждой команды ее адрес в файле (смещение от начала).

### VAR\_COUNTER

После компиляции в консоли содержится список [глобальных переменных](/ru/coding/variables#globalnye-peremennye), которые были использованы только один раз (неиспользуемые переменные, которые можно удалить или заменить на [локальные переменные](/ru/coding/variables#lokalnye-peremennye)).

### IGNORE\_UNKNOWN

Дизассемблер игнорирует ошибки в исходном коде (неизвестные опкоды, неверные типы данных, нарушения формата файла). Это помогает открыть большинство скриптов, которые были скомпилированы некорректно.

### CONSTANT\_INDEXES

Выводит элементы массива как глобальные переменные с индексом. Доступно для режимов `GTA SA`, `LCS`, `VCS`.&#x20;

Например, если в исходном файл был массив из трех элементов, начинающийся с `$10`, то при переключении этой опции переменные в дизассемблированном файле будут выглядеть следующим образом:

| `Без CONSTANT_INDEXES` | С `CONSTANT_INDEXES` |
| ---------------------- | -------------------- |
| $10                    | $10\[0]              |
| $11                    | $10\[1]              |
| $12                    | $10\[2]              |

### SKIP\_SCM\_HEADER

Дизассемблер пропускает чтение заголовка `.scm` файла. Это позволяет открывать скрипты в которых заголовка нет (например, скрипты из файла `script.img` или CLEO скрипты).

Также при включении этой опции Sanny Builder компилирует `.scm` файлы без заголовка (альтернативно использованию [директивы](/ru/coding/directives#usdexternal) `{$EXTERNAL}`).

### SKIP\_EXTRA\_INFO

Дизассемблер игнорирует секцию с [дополнительной информацией](/ru/editor/options/general#dobavlyat-dopolnitelnuyu-informaciyu-v-scm) в конце скрипта. Эта секция будет рассматриваться как набор SCM инструкций, поэтому рекомендуется дополнительно включить опцию `IGNORE_UNKNOWN`.

## Альтернативные способы включения

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

### Запуск с параметром --`debug`

Запуск программы через командную строку с [параметром](/ru/editor/cli#debug) `--debug` является способом одновременно переключить несколько опций. Запустите `sanny.exe` с параметром `--debug X`, где `X` это последовательность `0` и `1`.  Каждая цифра в последовательности означает определенную опцию:

| Индекс | Отладочная опция  |
| ------ | ----------------- |
| 1      | CODE\_OFFSETS     |
| 2      | IGNORE\_UNKNOWN   |
| 3      | VAR\_COUNTER      |
| 4      | CONSTANT\_INDEXES |
| 5      | SKIP\_SCM\_HEADER |
| 6      | SKIP\_EXTRA\_INFO |

```
sanny.exe --debug 110000
```

Первая `1` включит опцию `CODE_OFFSETS`, вторая `1` включит режим `IGNORE_UNKNOWN`. Оставшиеся опции будут отключены.

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

Клик по самой правой кнопке на панели инструментов открывает выпадающее меню со списком опций:

<div align="left"><img src="/files/-M1HRE3cGyitdEkDsXK7" alt=""></div>

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


# Горячие клавиши

Sanny Builder поддерживает стандартные сочетания клавиш для операций с файлами и текстом (`Ctrl+N`, `Ctrl+Z`, и т.д.), а также собственные комбинации. Сочетания, отмеченные `*`, могут быть изменены в [настройках](/ru/editor/options/hotkeys).

| Клавиша/Комбинация                                                                                                                                                       | Действие                                                                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Главное меню**                                                                                                                                                         |                                                                                                                                                                     |
| `Ctrl`+`N`                                                                                                                                                               | Создать новый файл                                                                                                                                                  |
| `Ctrl`+`O`                                                                                                                                                               | Открыть файл                                                                                                                                                        |
| `Ctrl`+`W`                                                                                                                                                               | Закрыть текущий файл                                                                                                                                                |
| `Ctrl`+`Shift`+`T`                                                                                                                                                       | Открыть последний закрытый файл                                                                                                                                     |
| `F5`\*                                                                                                                                                                   | открыть файл как скрипт и дизассемблировать его                                                                                                                     |
| `F6`\*                                                                                                                                                                   | скомпилировать текст в редакторе в скриптовый файл                                                                                                                  |
| `F7`\*                                                                                                                                                                   | скомпилировать текст в редакторе в скриптовый файл, а затем скопировать его в директорию скриптов для [выбранной игры](/ru/editor/options/general#direktoriya-igry) |
| `F8`\*                                                                                                                                                                   | запустить игру для текущего [режима редактирования](/ru/edit-modes)                                                                                                 |
| `F10`                                                                                                                                                                    | открыть [окно опций](/ru/editor/options)                                                                                                                            |
| `F12`                                                                                                                                                                    | открыть документацию                                                                                                                                                |
| **Текст**                                                                                                                                                                |                                                                                                                                                                     |
| `TAB`, `Shift`+`TAB`                                                                                                                                                     | двигать выделенный блок текста влево/вправо                                                                                                                         |
| <p><code>Ctrl</code>+<code>Alt</code>+<code>A</code></p><p><code>Ctrl</code>+<code>Alt</code>+<code>D</code></p>                                                         | двигать выделенный блок текста влево/вправо (на один символ)                                                                                                        |
| <p><code>Ctrl</code>+<code>Alt</code>+<code>B</code></p><p><code>Ctrl</code>+<code>Alt</code>+<code>N</code></p><p><code>Ctrl</code>+<code>Alt</code>+<code>M</code></p> | различные режимы выделения текста: Обычный, По столбцам (аналог - выделение с зажатым `Alt`), По строкам                                                            |
| <p><code>Ctrl</code>+<code>Shift</code>+<code>U</code></p><p><code>Ctrl</code>+<code>Shift</code>+<code>L</code></p>                                                     | перевод выделенного слова в верхний/нижний регистр                                                                                                                  |
| `Ctrl`+`+`                                                                                                                                                               | увеличить размер шрифта в редакторе                                                                                                                                 |
| `Ctrl`+`-`                                                                                                                                                               | уменьшить размер шрифта в редакторе                                                                                                                                 |
| `Ctrl`+`T`                                                                                                                                                               | удалить слово                                                                                                                                                       |
| `Ctrl`+`Y`                                                                                                                                                               | удалить строку                                                                                                                                                      |
| `Ctrl`+`Shift`+`Y`                                                                                                                                                       | очистить строку                                                                                                                                                     |
| `Ctrl`+`/`\*                                                                                                                                                             | [закомментировать / раскомментировать](/ru/coding/comments) строку                                                                                                  |
| **Навигация**                                                                                                                                                            |                                                                                                                                                                     |
| `Ctrl`+`Shift`+`B`                                                                                                                                                       | перемещение между скобками: `{}`, `()`, `<>`, `[]`                                                                                                                  |
| <p><code>Ctrl</code>+<code>Вверх</code></p><p><code>Ctrl</code>+<code>Вниз</code></p>                                                                                    | прокрутить страницу на одну строку вверх/вниз                                                                                                                       |
| `Ctrl`+`колесо мыши вверх/вниз`                                                                                                                                          | страница вверх/вниз                                                                                                                                                 |
| `Ctrl`+`Shift`+`0..9`                                                                                                                                                    | добавить [закладку](/ru/editor/features#bookmarks-quick-jump)                                                                                                       |
| `Ctrl`+`0..9`                                                                                                                                                            | перейти на строку с [закладкой](/ru/editor/features#bookmarks-quick-jump)                                                                                           |
| `Ctrl`+`G`\*                                                                                                                                                             | переход к строке с номером                                                                                                                                          |
| `Alt`+`Вправо`\*                                                                                                                                                         | [переход к определению](/ru/editor/features#navigate-to-symbol) под курсором (метка, начало миссии или функции)                                                     |
| `Alt`+`Влево`\*                                                                                                                                                          | вернуть курсор на предыдущую позицию (откуда был вызван [переход к определению](/ru/editor/features#navigate-to-symbol))                                            |
| `Ctrl`+`Enter`                                                                                                                                                           | открыть файл по имени под курсором (см. очередность открытия [относительных путей](/ru/coding/directives#usdinclude))                                               |
| **Код**                                                                                                                                                                  |                                                                                                                                                                     |
| `Ctrl`+`пробел`                                                                                                                                                          | показать список классов / свойств / моделей / меток / переменных / миссий                                                                                           |
| `Ctrl`+`Shift`+`пробел`                                                                                                                                                  | показать подсказку для текущей команды класса                                                                                                                       |
| `Ctrl`+`Shift`+`C`\*                                                                                                                                                     | вставить [текущие координаты игрока](/ru/editor/features#izmenenie-koordinat-i-ugla-razvorota-igroka)                                                               |
| `Ctrl`+`Shift`+`E`\*                                                                                                                                                     | вставить [текущий угол поворота игрока](/ru/editor/features#izmenenie-koordinat-i-ugla-razvorota-igroka)                                                            |
| `F1`                                                                                                                                                                     | искать опкод со словом под курсором (без учета `_` и `.`)                                                                                                           |
| `Ctrl`+`F1`                                                                                                                                                              | искать опкод со словом под курсором (с учетом `_` и `.`)                                                                                                            |
| `F2`                                                                                                                                                                     | развернуть слово под курсором в [шаблон кода](/ru/edit-modes/code-templates) с таким названием                                                                      |
| `Ctrl`+`J`                                                                                                                                                               | показать список доступных [шаблонов кода](/ru/edit-modes/code-templates)                                                                                            |
| `Ctrl`+`M`                                                                                                                                                               | запись [последовательности нажатия клавиш](/ru/editor/features#zapis-i-vosproizvedenie-nazhatii-knopok) / остановка записи                                          |
| `Ctrl`+`P`                                                                                                                                                               | воспроизведение записанной [последовательности](/ru/editor/features#zapis-i-vosproizvedenie-nazhatii-knopok) / пауза во время записи                                |
| `Ctrl`+`H`\*                                                                                                                                                             | конвертировать число под курсором из десятичного формата в шестнадцатиричный (0x) и обратно                                                                         |
| `Ctrl`+`B`\*                                                                                                                                                             | конвертировать число под курсором из десятичного формата в двоичный (0b) и обратно                                                                                  |
| `Ctrl`+`Alt`+`H`\*                                                                                                                                                       | конвертировать [имя модели](/ru/coding/data-types#imena-modelei) под курсором в ID и наоборот                                                                       |
| **Разное**                                                                                                                                                               |                                                                                                                                                                     |
| `Ctrl`+`~`                                                                                                                                                               | открыть [консоль](/ru/editor/console)                                                                                                                               |
| `Alt`+`S`                                                                                                                                                                | (когда активен список моделей) - пересортировать список                                                                                                             |


# Поиск опкодов

Вызвать поиск опкодов можно нажатием `Ctrl+Alt+2` или выбрав меню `Сервис->Инструменты->Поиск опкодов`.

![](/files/-M1Hc_IPktY-wc4g49Eh)

Чтобы найти нужный опкод, впишите в верхнем поле слова, соответствующие ему, например `actor car`. В списке останутся команды, содержащие эти слова. Вписывайте уточняющие слова, пока нужный опкод не будет найден. При поиске можно пользоваться специальными операторами (подробнее о них ниже).

Если при открытии окна поиска в редакторе был выделен текст, он будет автоматически вставлен в строку поиска.

## Копирование результатов

Чтобы скопировать опкод в буфер обмена, выберите его и нажмите `Enter`.\
Чтобы добавить опкод к содержимому буфера обмена, нажмите `Shift+Enter`.\
Чтобы скопировать весь список опкодов, нажмите `F2`.

## Горячие клавиши

`Enter` - скопировать выбранный опкод в буфер обмена\
`Shift+Enter` - добавить выбранный опкод к содержимому буфера обмена\
`F1` - показать справочную информацию\
`F2` - скопировать весь список опкодов в буфер обмена\
`F3` - сортировать список по опкодам\
`F4` - сортировать список по алфавиту\
`F11` - очистить поле поиска, показать все опкоды\
`ESC` - закрыть программу

## Поисковые выражения

### Оператор И

Одиночный пробел между словами служит оператором `И`:

```
@ player
```

Найдет опкоды, в которых есть `@` и `player`.

### Оператор ИЛИ

Символ `|` служит оператором `ИЛИ`:

```
@ | player
```

Найдет опкоды, в которых есть `@` или `player`.

Если `|` стоит первым символом в поле поиска, программа применит оператор `ИЛИ` ко всем последующим словам:

```
| actor player car
```

Найдет опкоды, в которых есть хотя бы одно из слов `actor`, `player`, `car`.

### Оператор НЕ

Два дефиса перед словом исключают опкоды с этим словом:

```
car --actor
```

Найдет опкоды со словом `car`, но без `actor`.

Одиночный дефис может использоваться как оператор `НЕ` перед словами, либо перед `$` или `@`, но не перед числами:

```
-10 -@ -car ---1
```

Найдет опкоды с числом `-10`, но без `@`, `car`, `-1`

### Поиск среди условных опкодов

`^` - показать только условные опкоды\
`^word` - ищет `word` в условных опкодах:

```
^car ==
```

Найдет условные опкоды со словами `car` и `==`.

`-^` - исключить условные опкоды из результата:

```
player -^
```

Найдет все неусловные опкоды со словом `player`.

`-^word` - исключить условные опкоды со словом `word`:

```
player -^actor
```

Найдет опкоды со словом `player`, исключив условные опкоды со словом `actor`.

### Учет порядка слов

`%` - ищет опкоды с учетом заданного порядка слов:

```
% @ = @
```

Найдет опкоды, в которых символы `@` `=` `@` следуют в указанном порядке (между ними могут быть другие слова).


# Интерфейс командной строки

## --compile

`--compile <путь к исходному файлу> [путь к конечному файлу]` - скомпилировать `исходный файл` и закрыть программу

```
sanny.exe --compile C:\myscm.txt C:\myscm.scm
```

{% hint style="info" %}
Если `путь к конечному файлу` пропущен, компилятор использует [настройки форматирования](/ru/editor/options/formats#imena-failov).&#x20;
{% endhint %}

{% hint style="info" %}
Ошибки, возникшие во время компиляции, записываются в файл `compile.log`.
{% endhint %}

Краткая форма: `-c`

## --decompile

`--decompile <путь к исходному файлу> [путь к конечному файлу]` - декомпилировать `исходный файл` и закрыть программу

```
sanny.exe --decompile C:\myscm.scm C:\myscm.txt
```

{% hint style="info" %}
Если `путь к конечному файлу` пропущен, компилятор использует [настройки форматирования](/ru/editor/options/formats#imena-failov).&#x20;
{% endhint %}

{% hint style="info" %}
Ошибки, возникшие во время декомпиляции, записываются в файл `compile.log`.
{% endhint %}

Краткая форма: `-d`

**--use-source** - опциональный аргумент, который указывает на необходимость использования исходного кода в теле скрипта (если он есть). По умолчанию декомпилятор игнорирует его.

```
sanny.exe --decompile C:\1.cs --use-source
```

## --debug

`--debug` - переключает [отладочные опции](/ru/editor/console#otladochnye-opcii)

```
sanny.exe --debug 110000
```

## --game

`--game <game>` - выбирает [режим редактирования по умолчанию](/ru/edit-modes#type) для выбранной игры. Допустимые значения `game`:

* `gta3`
* `vc`
* `sa`
* `lcs`
* `vcs`
* `vc_mobile`
* `sa_mobile`

Краткая форма: `-g`

```
sanny.exe --game sa
```

## --mode

`--mode <id>` - выбирает режим редактирования с заданным [`id`](/ru/edit-modes#id). `id` режима можно узнать в соответствующем файле `mode.xml`.

Краткая форма: `-m`

```
sanny.exe --mode vcs_psp
```

## --no-splash

`--no-splash` - запускает Sanny Builder без загрузочного экрана

```
sanny.exe --no-splash
```

## -x

`-x` - перезагружает настройки [режимов редактирования](/ru/edit-modes) (полезно при тестировании изменений этих настроек)

```sh
sanny.exe -x
```

## --option

{% hint style="info" %}
Доступно, начиная с v3.8.0
{% endhint %}

`--option <имя опции> <значение>` - устанавливает значение определенной [опции](/ru/editor/options). Чтобы установить несколько опций сразу, перечислите их друг за другом:

`--option <имя 1й опции> <значение 1й опции> --option <имя 2й опции> <значение 2й опции> ... --option <имя N опции> <значение N опции>`&#x20;

Имя опции может принимать одно из следующих значений:

{% hint style="warning" %}
Данный список не окончательный и может меняться.
{% endhint %}

| Имя                                                                                                     | Допустимые значения | Вкладка в настройках |
| ------------------------------------------------------------------------------------------------------- | ------------------- | -------------------- |
| [Editor::ShowPanel](/ru/editor/options/editor#nastroiki)                                                | 0, 1                | Редактор             |
| [Editor::ShowOpcodeInfo](/ru/editor/options/editor#nastroiki)                                           | 0, 1                | Редактор             |
| [Editor::ShowLineNumbers](/ru/editor/options/editor#nastroiki)                                          | 0, 1                | Редактор             |
| [Editor::ShowGutterBorder](/ru/editor/options/editor#nastroiki)                                         | 0, 1                | Редактор             |
| [Editor::OpenLastFile](/ru/editor/options/editor#nastroiki)                                             | 0, 1                | Редактор             |
| [Editor::OpenAllClosedFiles](/ru/editor/options/editor#nastroiki)                                       | 0, 1                | Редактор             |
| [Editor::ConfirmExit](/ru/editor/options/editor#nastroiki)                                              | 0, 1                | Редактор             |
| [Editor::LanguageService](/ru/editor/options/editor#nastroiki)                                          | 0, 1                | Редактор             |
| [Editor::SemanticConstHighlighting](/ru/editor/options/editor#nastroiki)                                | 0, 1                | Редактор             |
| [Editor::IdentifiersListAuto](/ru/editor/options/editor#glubina-prosmotra-koda)                         | 0, 1                | Редактор             |
| [Editor::ScanDistance](/ru/editor/options/editor#glubina-prosmotra-koda)                                | 0..65535            | Редактор             |
| [Editor::Lang](/ru/editor/options/general#yazyk-interfeisa)                                             | номер локали        | Общие                |
| [Editor::QuickGameLoading](/ru/editor/options/general#bystraya-zagruzka-igry)                           | 0, 1                | Общие                |
| [Editor::ShowProgress](/ru/editor/options/general#pokazyvat-progress)                                   | 0, 1                | Общие                |
| [Editor::ShowReport](/ru/editor/options/general#pokazyvat-otchet)                                       | 0, 1                | Общие                |
| [Decompiler::OverwriteOutputFile](/ru/editor/options/general#perezapis-vykhodnogo-faila)                | 0, 1                | Общие                |
| [Decompiler::ManualIMGOpening](/ru/editor/options/general#ruchnoi-vybor-img-faila)                      | 0, 1                | Общие                |
| [Decompiler::HexadimalOffsets](/ru/editor/options/formats#imena-metok)                                  | 0, 1                | Общие                |
| [Decompiler::LabelsFormat](/ru/editor/options/formats#imena-metok)                                      | 0, 1, 2             | Общие                |
| [Decompiler::AlwaysWriteOpcodes](/ru/editor/options/general#ispolzovat-opkody)                          | 0, 1                | Общие                |
| [Decompiler::ReplaceMissionNumbers](/ru/editor/options/general#zamenyat-nomera-missii)                  | 0, 1                | Общие                |
| [Decompiler::InsertOriginalMissionNames](/ru/editor/options/general#vstavlyat-originalnye-imena-missii) | 0, 1                | Общие                |
| [Compiler::ShowIMGWarning](/ru/editor/options/general#pokazyvat-preduprezhdenie)                        | 0, 1                | Общие                |
| [Compiler::CheckConditions](/ru/editor/options/general#proverka-uslovii)                                | 0, 1                | Общие                |
| [Compiler::CheckLocalVariables](/ru/editor/options/general#proverka-peremennykh)                        | 0, 1                | Общие                |
| [Compiler::AddExtraInfo](/ru/editor/options/general#dobavlyat-dopolnitelnuyu-informaciyu-v-scm)         | 0, 1                | Общие                |
| [CustomNames::UseCustomLabels](/ru/editor/options/formats#sobstvennye-imena)                            | 0, 1                | Форматирование       |
| [CustomNames::UseCustomVariables](/ru/editor/options/formats#sobstvennye-imena)                         | 0, 1                | Форматирование       |
| [CustomNames::UseCustomArrays](/ru/editor/options/formats#sobstvennye-imena)                            | 0, 1                | Форматирование       |
| [CustomNames::Format](/ru/editor/options/formats#registr-bukv)                                          | 0, 1, 2             | Форматирование       |

{% hint style="info" %}
Опции, измененные через командную строку, не являются постоянными и применяются только в текущей сессии. После перезапуска Sanny Builder будет использовать значения из файла `settings.ini`.
{% endhint %}

Краткая форма: `-o`

```
sanny.exe -o Compiler::CheckConditions 0 -o Editor::LanguageService 1
```


# Языковая служба

**Языковая служба** - это часть функционала Sanny Builder, обеспечивающего комфортную работу пользователей. Она ответственна за постоянный сбор данных в текущем открытом документе и всех импортируемых файлах. Сбор информации происходит в отдельном потоке и реагирует на изменения в файле с определенной задержкой. В зависимости от конфигурации службы и объема текста для сканирования эта задержка может быть значительной. Если, по разным причинам, это мешает вам работать со скриптами, или вы не удовлетворены производительностью службы, ее можно отключить в [настройках](/ru/editor/options/editor#nastroiki) программы.

Для лучшей производительности языковая служба сканирует документ частично, а не весь файл целиком. Это управляется значением [глубины сканирования](/ru/editor/options/editor#glubina-prosmotra-koda) в настройках редактора. Чем выше значение, тем больше символов находит служба, но это также увеличивает время, необходимое на то, чтобы редактор отреагировал на изменения в документе. Если ваш компьютер недостаточно производителен, используйте значение по умолчанию `250` строк.

Начиная с версии 3.7.0 языковая служба способна находить [объявленные константы](/ru/coding/constants#obyavlenie-konstant) и их значения. Эта информация затем попадает в редактор для [подсветки](/ru/editor/features#color-themes) и [отображения значений ](/ru/editor/features#pokaz-razlichnoi-informacii-o-tekushem-opkode)констант.

```
const
    x = 10
end

x // x подсвечивается
```

Константы могут быть подсвечены двумя способами:

* все константы подсвечиваются одинаково
* каждая константа подсвечивается так же, как ее значение ("семантическая подсветка")

При включенной семантической подсветке в примере выше `x` было бы раскрашено как обычное число (по умолчанию бордовым цветом).

Языковая служба также служит источником данных для функции автодополнения, которая срабатывает при нажатии  `Ctrl+Space`. Она выводит список констант и их значения. При выключенной языковой службе константы не отображаются в списке.


# Режимы редактирования

Sanny Builder поддерживает разные игры и платформы в серии Grand Theft Auto. Для этого в его состав входит конфигурация для каждой поддерживаемой игры, которая называется **режимом редактирования**.

Режим редактирования определяет следующую информацию:

* целевая игра
* пути к игровым файлам
* пути к файлам со вспомогательной информацией (имена [меток](/ru/edit-modes#labels), [переменных](/ru/edit-modes#variables), [констант](/ru/edit-modes#constants))

Sanny Builder хранит настройки режимов в папке `data`. Если любая из папок в этой директории содержит файл `mode.xml`, этот файл автоматически загружается как новый режим редактирования.

{% hint style="info" %}
Версии Sanny Builder до 3.9 хранили настройки режимов редактирования в файле `data\modes.xml`. Начиная с версии 3.9 этот файл был разделен на отдельные XML файлы для каждого режима.
{% endhint %}

Режимы редактирования загружаются автоматически при старте Sanny Builder. В случае необходимости, они могут быть перезагружены путем запуска Sanny Builder с [опцией](/ru/editor/cli#x) `-x`.

Допускается изменение и расширение существующих режимов, а также создание новых.

## Формат файла

`mode.xml` - документ в формате `XML`, который может редактироваться в любом текстовом редакторе.

Файл начинается с объявления

```xml
<?xml version="1.0" encoding="UTF-8"?>
```

После него должен идти корневой элемент `<mode>`. В файле может быть только один корневой элемент.&#x20;

`<mode>` имеет как обязательные, так и необязательные атрибуты, описанные ниже. Содержимое `<mode>` представляет собой набор различных тэгов (элементов), определяющих пути к папкам и файлам.

### Атрибуты режима

#### id

`id` - это обязательный и неповторяющийся идентификатор режима. Sanny Builder использует его для сохранения некоторых пользовательских настроек режима, например выбранной [директории игры](/ru/editor/options/general#direktoriya-igry).

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

#### extends

Режим может наследовать свойства другого режима (родительский режим), чтобы уменьшить число повторяющихся параметров. Это полезно для разных версий одной игры, где большая часть конфигурации одинакова, за исключением некоторых параметров. Родительский режим может наследовать свойства другого режима.

Если в конфигурации режима отсутствует какой-то параметр, Sanny Builder рекурсивно проходит по всем родительским режимам, чтобы найти его значение.

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

#### title

`title` задает отображаемое имя режима. Из-за ограничений интерфейса избегайте длинных имен и используйте имена короче `24` символов.

#### game

Атрибут `game` определяет целевую игру для данного режима. Допустимыми значениями являются:

* `gta3`
* `vc`
* `sa`
* `lcs`
* `vcs`
* `vc_mobile`
* `sa_mobile`

Перед началом работы со скриптом, убедитесь что выбран правильный режим редактирования. Каждая игра имеет свой собственный формат скриптов, который несовместим с другими играми. Даже если компиляция прошла без ошибок, в игре может возникнуть ошибка при попытке чтения скрипта в неизвестном ей формате.

{% hint style="info" %}
В скомпилированном файле может [храниться информация](/ru/editor/options/general#dobavlyat-dopolnitelnuyu-informaciyu-v-scm) о целевой игре для данного скрипта. Перед началом дизассемблирования такого скрипта Sanny Builder предлагает переключить режим редактирования на нужный. Игнорирование такого предложения может привести к ошибке, т.к. формат скрипта может отличаться от того, что ожидает дизассемблер.
{% endhint %}

Для удобства пользователей Sanny Builder отображает иконку целевой игры напротив имени режима.&#x20;

#### type

Один из режимов для каждой целевой игры должен быть режимом по умолчанию. Это означает, что Sanny Builder использует его при запуске с [опцией](/ru/editor/cli#game) `--game`.

Допустимым значением атрибута является `default.` Не указывайте этот атрибут для остальных режимов.

### Параметры режима

#### arrays

путь к [`CustomArrays.ini`](/ru/coding/arrays)

#### classes

путь к [`classes.db`](/ru/coding/classes)

#### constants

путь к[`constants.txt`](/ru/coding/constants)

#### copy-directory <a href="#copy-directory" id="copy-directory"></a>

путь к директории, в которую нужно скопировать скрипт при запуске `Компилировать и сделать копию`:

Имеет обязательный атрибут `type`:\
`type="scm"` - применяется к обычным `.scm` скриптам \
`type="cleo"` - применяется к скриптам с [директивой](/ru/coding/directives#usdcleo)  `{$CLEO}`

#### data

путь к директории режима редактирования

**enums**

путь к [enums.txt](/ru/edit-modes/enums.txt)

#### ide

путь к `.ide` или `.dat` файлу:\
`.ide` файлы содержат [имена моделей](/ru/coding/data-types#imena-modelei) и их характеристики\
`.dat` файлы содержат пути к другим `.ide` файлам

Элемент `ide` имеет необязательный атрибут `base`, который задает папку, относительно которой расчитываются пути, определенные внутри `.dat` файла:

```xml
<ide base="@game:\">default.dat</ide>
```

Без `base` все пути расчитываются относительно папки с `.dat` файлом.

Режим редактирования может иметь несколько элементов `<ide>`.

#### keywords

путь к файлу со списком [ключевых слов](/ru/coding/keywords)

#### labels

путь к [`CustomLabels.ini`](/ru/edit-modes/customlabels.ini)

#### missions

путь к [`missions.txt`](/ru/editor/features#ispolzovanie-originalnykh-imen-missii)

#### `library`

путь к JSON файлу с определениями скриптовых команд, используемых в целевой [игре](/ru/edit-modes#game). доступен для скачивания в [Sanny Builder Library](/ru/editor/features#integration-with-sanny-builder-library),&#x20;

#### opcodes

путь к файлу со [списком опкодов](/ru/edit-modes/opcodes-list-scm.ini). может использоваться неоднократно для подключения нескольких файлов. является необязательным параметром, если используется **library** (см. выше).

#### templates

путь к файлу с [эксклюзивными шаблонами](/ru/edit-modes/code-templates)

Имеет обязательный атрибут `type`:\
`type="default"` - путь к файлу с шаблонами, включенными в состав Sanny Builder\
`type="custom"` - путь к файлу с пользовательскими шаблонами, [добавленными](/ru/edit-modes/code-templates#adding-a-new-template) из редактора

#### text

путь к `.gxt` файлу

`<text>` имеет обязательный атрибут: `format`. Допустимыми значениями являются:

`gta3`: `.gxt` с одной таблицей, текстовыми ключами, кодировкой ANSI\
`vc`: `.gxt` с несколькими таблицами, текстовыми ключами, кодировкой ANSI\
`sa`: `.gxt` с несколькими таблицами, зашифрованными ключами, кодировкой ANSI\
`sa_mobile`: `.gxt` с несколькими таблицами, зашифрованными ключами, кодировкой UTF-16

#### variables

путь к [`CustomVariables.ini`](/ru/coding/variables)

#### examples

путь к [`opcodes.txt`](/ru/editor/opcode-search-tool)

### Доступные переменные

Sanny предоставляет несколько переменных, которые могут использоваться в параметрах и атрибутах (там, где это применимо).

`@game:` - путь к [папке с игрой](/ru/editor/options/general#direktoriya-igry), которая выбрана в настройках\
`@sb:` - путь к папке Sanny Builder (где находится `sanny.exe`)

Оба пути не включают в себя завершающий слеш (`/`).

## Список режимов

Sanny Builder предлагает много различных режимов, их количество может меняться от версии к версии:

| Название                | Id          | Имена опкодов  | Порядок параметров | Игра                                                                                               |
| ----------------------- | ----------- | -------------- | ------------------ | -------------------------------------------------------------------------------------------------- |
| GTA III                 | gta3        | сообщество     | измененный         | все версии GTA III                                                                                 |
| GTA VC (SBL)            | vc\_sbl     | Rockstar       | первоначальный     | все версии Vice City                                                                               |
| ~~GTA VC~~              | ~~vc~~      | ~~сообщество~~ | ~~измененный~~     | <p>все версии Vice City<br>режим устарел, начиная с версии 4.0, используйте новый режим VC SBL</p> |
| GTA SA (v1.0 - SBL)     | sa\_sbl     | Rockstar       | первоначальный     | SA версия 1.0                                                                                      |
| ~~GTA SA v1.0~~         | ~~sa~~      | ~~сообщество~~ | ~~измененный~~     | <p>SA версия 1.0;<br>режим устарел, начиная с версии 4.0, используйте новый режим SA SBL</p>       |
| GTA SA v2.0             | sa\_v2      | сообщество     | измененный         | SA версия 2.0                                                                                      |
| ~~GTA SA (v1.0 - SCR)~~ | ~~sa\_scr~~ | ~~Rockstar~~   | ~~первоначальный~~ | <p>SA версия 1.0;<br>режим удален в версии 4.0, используйте новый режим SA SBL</p>                 |
| GTA LCS                 | lcs         | Rockstar       | первоначальный     | все версии Liberty City Stories                                                                    |
| GTA VCS (PSP)           | vcs\_psp    | Rockstar       | первоначальный     | VCS для PSP                                                                                        |
| GTA VCS (PS2)           | vcs\_ps2    | Rockstar       | первоначальный     | VCS для PS2                                                                                        |
| VC Mobile               | vc\_mobile  | сообщество     | измененный         | версия для Android и iOS                                                                           |
| SA Mobile               | sa\_mobile  | сообщество     | измененный         | версия для Android и iOS                                                                           |

Колонка `Имена опкодов` определяет способ именования опкодов. Первые имена неизвестным опкодам были даны в результате анализа игрового кода, проводимого сообществом скриптеров в течение многих лет. Так появились такие термины как "актёр" ("actor") или "поток" ("thread"). Альтернативой является оригинальная терминология, использованная разработчиками игры (соответственно, "персонаж" ("char") или "скрипт" ("script")). Эта терминология вместе со списком оригинальных названий всех опкодов оказались доступны в коде игры GTA SA: Mobile.  &#x20;

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

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

## Переключение режимов

Чтобы переключить режим редактирования, кликните в правом нижнем углу программы. Появится список доступных режимов. Выберите нужный и кликните по нему. Sanny Builder загрузит все требуемые файлы и вы сразу можете продолжить работу.

![](/files/-M11n8tgn2zH-yLlRZmJ)

Выбрать режим через командную строку можно с [опцией](/ru/editor/cli#mode) `--mode`. Чтобы выбрать режим по умолчанию для какой-либо игры, используйте [опцию](/ru/editor/cli#game) `--game`.

Запуск Sanny Builder с [опцией](/ru/editor/cli#x) `-x` перезагружает режимы редактирования и обновляет список доступных режимов.

{% hint style="info" %}
Вы можете зарегистрировать новое сочетание клавиш для быстрого обновления режимов редактирования без необходимости перезапуска Sanny Builder. Добавьте новый элемент в [меню внешних приложений](/ru/editor/features#menyu-vneshnikh-prilozhenii):

Путь: `sanny.exe`\
Параметры: `-x --no-splash`\
Shortcut: `<any combo of your choice>`

<img src="/files/rDJtGkfiFONxOLeokFOU" alt="" data-size="original">
{% endhint %}


# CustomLabels.ini

Вы можете присваивать меткам специфичные имена, которые не будут зависеть от [опций](/ru/editor/options/formats#imena-metok) дизассемблера. Такие имена содержатся в файле `CustomLabels.ini` (отдельный для каждого [режима редактирования](/ru/edit-modes#labels)).

## Формат файла

`<адрес метки>=<имя>`

Если в дизассемблируемом файле есть метка по указанному адресу, она получит присвоенное имя.

Узнать адрес метки можно, включив отладочную [опцию](/ru/editor/console#code_offsets) `CODE_OFFSETS`. После дизассемблирования число в начале каждой инструкции будет ее адресом.


# Enums.txt

**Перечисляемый тип** или **перечисление** - это набор констант (называемых *полями перечисления*), имеющих общее имя (*имя перечисления*).

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

**Enums.txt** - это текстовый файл, который содержит перечисления, доступные для [режима редактирования](/ru/edit-modes).

## Формат файла

Каждое перечисление задается следующим образом:

`enum <имя перечисления>`\
`<поля перечисления>`\
`end`

`имя перечисления` - это любая комбинация букв, цифр и `_` \
`поля перечисления` - одна или несколько строк в формате: &#x20;

`<имя поля> [= <значение поля>]`

`имя поля` - любая комбинация букв, цифр и `_` \
`значение поля` - число или строковый литерал, заключенный в двойные кавычки. Если отсутствует, компилятор присваивает [новую константу](/ru/edit-modes/enums.txt#format-faila) автоматически.

```
enum Town
  LS = 0
  SF = 1
  LV = 2
end
```

Поля перечисления могут разделяться переносом строки (как в примере выше) или запятой:

```
enum Town
  LS = 0, SF = 1, LV = 2
end
```

В одном файле может быть несколько перечислений. Каждое из них должно иметь уникальное имя.

{% hint style="warning" %}
Файл с перечислениями не может содержать комментарии или незнакомый синтаксис.
{% endhint %}

### Поля перечисления

Каждое поле перечисления представляет собой константу, которая присваивается явно либо неявно. Явным образом это происходит, если после имени поля стоит знак `=` и допустимая константа:

```
enum Town
  LS = 0
  SF = 1
  LV = 2
end
```

`Town.LS` представляет число `0`, `Town.SF` представляет число `1` и `Town.LV` представляет число `2`.

```
enum TicTacToe
   Player1 = "X"
   Player2 = "O"
end
```

`TicTacToe.Player1` представляет строковый литерал `X` и `TicTacToe.Player2` представляет строковый литерал `O`.

Если полю перечисления явным образом не присвоена константа, это происходит автоматически. Первому полю присваивается `0`, второму `1`, третьему `2` и т.д.:

```
enum Town
  LS
  SF
  LV
end
```

`Town.LS` представляет число `0`, `Town.SF` представляет число `1` и `Town.LV` представляет число `2`.

Если в одном перечислении используются и явное, и неявное присвоения, это происходит по следующим правилам:

* полю, которое следует за явно присвоенным числом, присваивается это число плюс 1:

```
enum E
  A = 10
  B
  C = 100
  D
  E
end
```

`E.A` = `10`, `E.B` = `11`, `E.C` = `100`, `E.D` = `101`, `E.E` = `102`

* полю, которое следует за явно присвоенным строковым литералом, присваивается литерал, дублирующий имя поля:

```
enum Month
  Jan = "January"
  Feb = "February"
  March
end
```

`Month.Jan` = `"January"`, `Month.Feb` = `"February"`, `Month.March` = `"March"`

{% hint style="warning" %}
Перечисление не может одновременно представлять числа и строковые литералы. Тип перечисления определяется по первой явно присвоенной константе:

```
enum Int
  X, Y // X = 0, Y = 1,
end
enum String
  X, Y = "Y" // X = "X", Y = "Y"
end
```

{% endhint %}


# Расширения

**Расширение** - это набор новых инструкций (опкодов), добавленных в игру. [Библиотека CLEO](https://cleo.li) и плагины к ней являются наиболее известным источником таких наборов.

Чтобы Sanny Builder знал о намерении использовать в скрипте нестандартные опкоды, скрипт должен иметь [директиву](/ru/coding/directives#usduse) `{$USE}`. Эта директива подключает дополнительный набор инструкций (см. ниже [список доступных расширений](/ru/edit-modes/extensions#extensions-list)):

```
{$USE CLEO}
{$USE ini}
{$USE CLEO+}
```

Каждый опкод, доступный в [INI файлах](/ru/edit-modes/opcodes-list-scm.ini) Sanny Builder, принадлежит к какому-либо расширению. Это сделано через файл `extensions.txt`.&#x20;

{% hint style="info" %}
См. [#74](https://github.com/sannybuilder/dev/issues/74) чтобы узнать о дальнейших планах по развитию расширений.
{% endhint %}

### Расширения по умолчанию

Стандартные игровые опкоды включены в расширение с именем `default`, которое доступно по умолчанию в каждом скрипте.  Использование директивы `{$USE default}` допускается, но является избыточным.

Использование [директивы](/ru/coding/directives#usdcleo) `{$CLEO}` также подразумевает   `{$USE CLEO}`, что делает стандартные CLEO опкоды доступными компилятору.

### Список расширений <a href="#extensions-list" id="extensions-list"></a>

Sanny Builder включает в себя общие и популярные расширения для различных режимов редактирования:

| Имя расширения                                                            | Источник                                                                           | Режимы, в которых доступно                                           |
| ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| <p><strong>CLEO</strong></p><p><code>{$USE CLEO}</code></p>               | <p>CLEO для GTA III <br>CLEO для Vice City</p><p>CLEO 4.4</p>                      | <p>GTA III</p><p>Vice City</p><p>GTA SA v1.0, v2.0, (v1.0 - SCR)</p> |
| <p><strong>ini</strong></p><p><code>{$USE ini}</code></p>                 | <p>плагин IniFiles.cleo<br>(поставляется с CLEO)</p>                               | <p>GTA III<br>Vice City</p><p>GTA SA v1.0, v2.0, (v1.0 - SCR)</p>    |
| <p><strong>file</strong></p><p><code>{$USE file}</code></p>               | <p>плагин FileSystemOperations<br>(поставляется с CLEO)</p>                        | <p>GTA III<br>Vice City</p><p>GTA SA v1.0, v2.0, (v1.0 - SCR)</p>    |
| <p><strong>bitwise</strong></p><p><code>{$USE bitwise}</code></p>         | <p>плагин IntOperations<br>(поставляется с CLEO4)</p>                              | <p>GTA III<br>Vice City</p><p>GTA SA v1.0, v2.0, (v1.0 - SCR)</p>    |
| <p><strong>clipboard</strong></p><p><code>{$USE clipboard}</code></p>     | плагин ClipboardControl                                                            | <p>GTA III<br>Vice City</p><p>GTA SA v1.0, v2.0, (v1.0 - SCR)</p>    |
| <p><strong>memory</strong></p><p><code>{$USE memory}</code></p>           | плагин MemoryModule                                                                | <p>GTA III<br>Vice City</p>                                          |
| <p><strong>CLEO+</strong></p><p><code>{$USE CLEO+}</code></p>             | плагин CLEO+                                                                       | GTA SA v1.0, v2.0, (v1.0 - SCR)                                      |
| <p><strong>newOpcodes</strong></p><p><code>{$USE newOpcodes}</code></p>   | плагин newOpcodes                                                                  | GTA SA v1.0, v2.0                                                    |
| <p><strong>vcmobile</strong></p><p><code>{$USE vcmobile}</code></p>       | Vice City на мобильных устройствах                                                 | Vice City                                                            |
| <p><strong>Restoration</strong></p><p><code>{$USE Restoration}</code></p> | [Opcode Restoration Project](https://gtamods.com/wiki/Opcodes_Restoration_Project) | Vice City                                                            |

Допускается использование опкодов из источников, не перечисленных выше, при этом компилятор не будет требовать использование директивы `{$USE}`.


# Список опкодов (SCM.INI)

{% hint style="success" %}
Документацию по опкодам можно найти в [Sanny Builder Library](https://library.sannybuilder.com/).
{% endhint %}

Основной файл, который обеспечивает компиляцию и дизассемблирование скриптов, – `INI` файл со списком опкодов. В Sanny Builder есть список опкодов для каждого [режима редактирования](/ru/edit-modes#opcodes).

{% hint style="info" %}
Начиная с версии 4.0 этот файл является необязательным для работы и может быть заменен определениями команд, доступными для скачивания в формате JSON в Sanny Builder Library. Новые режимы редактирования используют только файлы SBL.
{% endhint %}

| Игра                 | Имя файла  | Директория      |
| -------------------- | ---------- | --------------- |
| GTA III              | SCM.INI    | data\gta3       |
| Vice City            | VCSCM.INI  | data\vc         |
| San Andreas          | SASCM.INI  | data\sa         |
| Liberty City Stories | LCSSCM.INI | data\lcs        |
| Vice City Stories    | VCSSCM.INI | data\vcs        |
| VC Mobile            | VCSCM.INI  | data\vc\_mobile |
| SA Mobile            | SASCM.INI  | data\sa\_mobile |

## Формат файла

Строки, начинающиеся с `;`, игнорируются.

### Метаданные

Файл может иметь особые параметры, которые содержат метаданные о его текущей версии.

`VERSION` – номер версии. См. директиву [$VERSION](/ru/coding/directives#usdversion)\
`PUBLISHER` – автор изменений \
`DATE` – дата обновления\
\
Дизассемблер выводит эту информацию в комментарии на первой строке исходника.

### Опкоды

Каждая строка с опкодом имеет следующий формат:

`xxxx=N, yyyy` \
`XXXX` – номер опкода\
`N` – кол-во параметров\
`yyyy` – описание опкода

Не допускается редактирование первых двух значений (номер опкода и кол-во параметров). Описание опкода может меняться свободно.

Если в `INI` файле содержится несколько определений для одного и того же опкода, используется последнее.

Существует соглашение, по которому описание условного опкода всегда начинается с двух пробелов.

### Параметры опкодов

Параметры - это динамическая часть опкода. В описании опкода они начинаются и заканчиваются `%`&#x20;

```
0001=1,wait %1d% ms
```

Данная строка указывает дизассемблеру, что для опкода `0001` следует написать слова `wait` и `ms`, а между ними единственный параметр опкода:

```
0001: wait 10 ms
```

Определение параметра включает в себя его [порядковый номер](/ru/edit-modes/opcodes-list-scm.ini#poryadok-sledovaniya-parametrov) и [тип](/ru/edit-modes/opcodes-list-scm.ini#tipy-parametrov).

#### Порядок следования параметров

Число в параметре `%1d%` - его порядковый номер. Он нужен, потому что в некоторых опкодах параметры переставлены местами для улучшения читабельности кода.

```
0053=5,%5d% = create_player %1o% at %2d% %3d% %4d%
```

Для опкода `0053` дизассемблер поставит 5-й параметр в начале:

```
0053: $PLAYER_CHAR = сreate_player #NULL at 2488.562 -1666.865 12.8757 
```

Если бы параметры выводились в оригинальном порядке, опкод `0053` выглядел бы так:

```
0053: сreate_player #NULL at 2488.562 -1666.865 12.8757 $PLAYER_CHAR
```

{% hint style="warning" %}
Изменение порядка следования параметров должно быть крайней мерой, т.к. оно приводит к несовместимости старых скриптов с новым INI файлом.
{% endhint %}

{% hint style="info" %}
Порядок следования параметров может различаться от режима к режиму. Смотрите [сравнительную таблицу](/ru/edit-modes#available-modes), чтобы узнать больше.
{% endhint %}

#### Типы параметров

Буква после номера параметра обозначает его тип.

`d` - любое значение\
`p` - имя [метки](/ru/coding/data-types#metki)\
`o` - имя [модели](https://app.gitbook.com/s/-M0dALM7uq5_eDYhSBjl-1508421016/coding/data-types.md#imena-modelei) (включая объекты)\
`m` - имя модели из `.ide` файла (исключая объекты)\
`g` - ключ из [`.gxt`](/ru/edit-modes#text) файла\
`x` - ID внешнего скрипта\
`k` - строковый литерал фиксированной длины (128 байтов)<br>

{% hint style="info" %}
Типы параметров могут свободно меняться в случае необходимости.
{% endhint %}


# Шаблоны кода

Шаблоны - это заранее подготовленный код, которой вставляется в редактор, после ввода имени шаблона и нажатия `F2`. Вызвать список шаблонов можно комбинацией `Ctrl+J`.

Например, напишите`for` и нажмите `F2`. Редактор вставит следующий код:

```
for  =  to  // step 1

end // for
```

## Типы шаблонов

Существует два типа шаблонов: *общие* и *эксклюзивные*. Общие доступны во всех [режимах редактирования](/ru/edit-modes). Они содержатся в файле `data\templates.txt`. Эксклюзивные шаблоны разработаны под конкретный режим. Путь к файлу с эксклюзивными шаблонами задается через ключ [`template`](/ru/edit-modes#templates) в конфигурации режима редактирования:

```
<templates type="default">@sb:\data\gta3\templates.txt</templates>
```

Редактор объединяет общие и эксклюзивные шаблоны в один список. Эксклюзивный шаблон имеет приоритет над общим шаблоном с такими же именем.

## Синтаксис файла

Каждый файл шаблонов имеет следующий синтаксис:\
Имя шаблона пишется отдельной строкой. После имени должен стоять знак `=`. После `=` можно добавить краткое описание шаблона. Поддерживаются только однострочные описания. После строки с именем записывается содержимое шаблона, каждая строка начинается знаком `=`. Место, куда должен быть помещен курсор после вставки, обозначается символом `|`.

## Добавление новых шаблонов <a href="#adding-a-new-template" id="adding-a-new-template"></a>

Можно сохранить новый шаблон прямо из редактора. Для этого нужно выделить нужный кусок текста и выбрать меню `Сервис->Добавить шаблон`.&#x20;

![](/files/-MgCs2j-tManhUJwfPwl)

Введите имя шаблона, описание (необязательно), выберите тип шаблона и нажмите кнопку `OK`. Новый шаблон будет сразу же готов к использованию.

Пользовательские шаблоны сохраняются либо в файл `data\templates.custom.txt` (*общие пользовательские шаблоны*) либо в файл `data\<режим редактирования>\templates.custom.txt`(*эксклюзивные пользовательские шаблоны*). Путь к файлу с эксклюзивными пользовательскими шаблонами может быть изменен в [настройках](/ru/edit-modes#templates) режима редактирования.

{% hint style="info" %}
Сохранение шаблона только для текущего режима возможно, если файл `modes.xml`содержит тэг `<template type="custom">` с именем файла.
{% endhint %}

{% hint style="info" %}
Наличие шаблона с именем `CLEO` разблокирует пункт в главном меню "Новый CLEO скрипт...". Редактор использует этот шаблон для формирования содержимого нового файла.
{% endhint %}


# Скриптовые лимиты

|                                            | **GTA III**                                             | **Vice City**                                           | **San Andreas**                                                                                      | **SA Mobile**                                           | **LCS**                                                 | **VCS** |
| ------------------------------------------ | ------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------- |
| **размер main.scm (без миссий, в байтах)** | 131072                                                  | 225512                                                  | 200000                                                                                               | 270000                                                  |                                                         |         |
| **размер одной миссии (в байтах)**         | 32768                                                   | 35000                                                   | 69000                                                                                                | 69000                                                   |                                                         |         |
| **всего миссий**                           | 120                                                     | 120                                                     | 200                                                                                                  | 200                                                     |                                                         |         |
| **mission cleanup list**                   | 50                                                      | 50                                                      | 75                                                                                                   | 75                                                      |                                                         |         |
| **модели во 2-м сегменте main.scm**        | 200                                                     | 220                                                     | 395                                                                                                  | 395                                                     |                                                         |         |
| **запущенные скрипты**                     | 128                                                     | 128                                                     | 96                                                                                                   | 96                                                      | 128                                                     |         |
| **глобальные переменные**                  | 16381                                                   | 16381                                                   | 16381                                                                                                | 16381                                                   | 6653                                                    | 6397    |
| **локальные переменные**                   | 16+2 [таймера](/ru/coding/variables#peremennye-taimery) | 16+2 [таймера](/ru/coding/variables#peremennye-taimery) | <p>32+2 <a href="/pages/-M0k_lxhAUgPDAx00mdH#peremennye-taimery">таймера</a></p><p>1024 в миссии</p> | 40+2 [таймера](/ru/coding/variables#peremennye-taimery) | 96+2 [таймера](/ru/coding/variables#peremennye-taimery) |         |
| **макс. уровень вложенности gosub**        | 4                                                       | 6                                                       | 8                                                                                                    | 8                                                       |                                                         |         |
| **text draw**                              | 2                                                       | 48                                                      | 96                                                                                                   | 96                                                      | 96                                                      |         |
| **метки в jump table**                     | N/A                                                     | N/A                                                     | 75                                                                                                   |                                                         | N/A                                                     |         |
| **внешние скрипты**                        | N/A                                                     | N/A                                                     | 82                                                                                                   |                                                         | N/A                                                     |         |
| **external script attachments**            | N/A                                                     | N/A                                                     | 70                                                                                                   |                                                         | N/A                                                     |         |
| **парковки**                               | 160                                                     | 185                                                     | 500                                                                                                  |                                                         |                                                         |         |
| **метки на радаре**                        | 32                                                      | 75                                                      | 175                                                                                                  | 250                                                     |                                                         |         |
| **пикапы**                                 | 336                                                     | 336                                                     | 620                                                                                                  | 620                                                     |                                                         |         |
| **макс. опкод**                            | 0481                                                    | 05a8                                                    | 0a4e                                                                                                 | 0a90                                                    | 0678                                                    |         |
| **сферы**                                  | 16                                                      | 16                                                      | 16                                                                                                   |                                                         |                                                         |         |
| **типы гаражей, сохраняющих машины**       | 16..18                                                  | 16..18, 24..32                                          | 16..18, 24..32, 39..45                                                                               |                                                         |                                                         |         |

{% hint style="info" %}
Частично заимствовано из сообщения CyQ на [GTAForums.com](http://www.gtaforums.com/index.php?showtopic=213017\&view=findpost\&p=3145932)
{% endhint %}


# GTA III


# Иконки радара

```
02A7: 0@ = create_icon_marker_and_sphere <ID> at 892.75 -425.75 13.875
```

| ID | Иконка                           | Описание              |
| -- | -------------------------------- | --------------------- |
| 0  | ![](/files/-MEKBcdnfWXihL4IxeVe) | Розовая точка         |
| 1  | ![](/files/-MEKBqf_zPFfFe6-mRe7) | Асука Касен           |
| 2  | ![](/files/-MEKBvoFbkjNBtwzXELi) | Гараж для минирования |
| 3  | ![](/files/-MEKBz7u-MokhIQ_GzqG) | Каталина              |
| 4  | ![](/files/-MEKC2v9Q6U0EXRjSGeN) | Иконка игрока         |
| 5  | ![](/files/-MEKC7OMxW-K_EiCY6fc) | Полицейская машина    |
| 6  | ![](/files/-MEKC9QO9SooFPHkHJts) | Дональд Лав           |
| 7  | ![](/files/-MEKCC3v7qbvVwZzKEy8) | Лысый                 |
| 8  | ![](/files/-MEKCE_sr_LkWDWT8DNF) | Эль Бурро             |
| 9  | ![](/files/-MEKD5WWO7uWGzc55Ime) | Ди-Айс                |
| 10 | ![](/files/-MEKD7WjyI2MDAH9yYPR) | Джоуи Леоне           |
| 11 | ![](/files/-MEKD9Pz9YJXTIFDk4ak) | Кенджи Касен          |
| 12 | ![](/files/-MEKDClc7BMWS3Qvl-NI) | Король Куртни         |
| 13 | ![](/files/-MEKDEsLKtg2X3KtlB2c) | Луиджи Готерелли      |
| 14 | ![](/files/-MEKDHIP6CiZJ0pforfw) | Север карты           |
| 15 | ![](/files/-MEKDJ6Nie2dJ6rHN62x) | Рэй Мачовски          |
| 16 | ![](/files/-MEKDLmxjNeh4zQFeYLY) | Сальваторе Леоне      |
| 17 | ![](/files/-MEKDP3-fVDrXGtqJUvY) | Дом сохранения        |
| 18 | ![](/files/-MEKDQuDK0VrCUKh0xuJ) | Перекраска            |
| 19 | ![](/files/-MEKDTV30e_wQdeJWAKO) | Тони Сиприани         |
| 20 | ![](/files/-MEKDV0WiUP6sbhDwk_U) | Магазин оружия        |


# Типы пешеходов

```
009A: 0@ = create_actor <id> 0 at 0 0 0
```

| ID | Тип        |
| -- | ---------- |
| 0  | player1    |
| 1  | player2    |
| 2  | player3    |
| 3  | player4    |
| 4  | civmale    |
| 5  | civfemale  |
| 6  | cop        |
| 7  | gang1      |
| 8  | gang2      |
| 9  | gang3      |
| 10 | gang4      |
| 11 | gang5      |
| 12 | gang6      |
| 13 | gang7      |
| 14 | gang8      |
| 15 | gang9      |
| 16 | emergency  |
| 17 | fireman    |
| 18 | criminal   |
| 19 | *unused*   |
| 20 | prostitute |
| 21 | special    |


# Vice City


# Банды

| ID | Название                  |
| -- | ------------------------- |
| 0  | Cubans                    |
| 1  | Haitians                  |
| 2  | Street wannabees          |
| 3  | Columbians (Diaz's)       |
| 4  | Renta Cops (PIGs)         |
| 5  | Bikers                    |
| 6  | Vercetti (ваша)           |
| 7  | Golfers                   |
| 8  | Army (особая группировка) |


# Гаражи

| ID | Константа                                  | Описание                                                                                                                                             |
| -- | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1  | GARAGE\_MISSION                            | Placeholder garage (inactive garage)                                                                                                                 |
| 2  | GARAGE\_BOMBSHOP1                          | Bomb shop with timed detonator                                                                                                                       |
| 3  | GARAGE\_BOMBSHOP2                          | Bomb shop with engine ignition detonation                                                                                                            |
| 4  | GARAGE\_BOMBSHOP3                          | Bomb shop with remote-control detonator                                                                                                              |
| 5  | GARAGE\_RESPRAY                            | <p>Spray garage</p><p>It excludes Ambulance, Barracks, Bus, Coach, Enforcer, FBI Rancher, Firetruck, Police, Rhino</p>                               |
| 6  | GARAGE\_COLLECTORSITEMS                    | invalid garage                                                                                                                                       |
| 7  | GARAGE\_COLLECTSPECIFICCARS                | Car eater, functions similar to export garages but accepts any cars and gives no reward                                                              |
| 8  | GARAGE\_COLLECTCARS\_1                     | Sunshine Autos export garage 1                                                                                                                       |
| 9  | GARAGE\_COLLECTCARS\_2                     | Sunshine Autos export garage 2                                                                                                                       |
| 10 | GARAGE\_COLLECTCARS\_3                     | Sunshine Autos export garage 3                                                                                                                       |
| 11 | GARAGE\_FORCARTOCOMEOUTOF                  | unused garage, normally closed but if opened it will stay opened if anything is in the garage and will close itself if there's nothing in the garage |
| 12 | GARAGE\_60SECONDS                          | invalid garage                                                                                                                                       |
| 13 | GARAGE\_CRUSHER                            | invalid garage                                                                                                                                       |
| 14 | GARAGE\_MISSION\_KEEPCAR                   | unused garage, normally closed but if opened it will always close itself                                                                             |
| 15 | GARAGE\_FOR\_SCRIPT\_TO\_OPEN              | unused garage, normally closed but if opened it can't close                                                                                          |
| 16 | GARAGE\_HIDEOUT\_ONE                       | Save garage (El Swanko Casa)                                                                                                                         |
| 17 | GARAGE\_HIDEOUT\_TWO                       | Save garage (Hyman Condo 1)                                                                                                                          |
| 18 | GARAGE\_HIDEOUT\_THREE                     | Save garage (Hyman Condo 2)                                                                                                                          |
| 19 | GARAGE\_FOR\_SCRIPT\_TO\_OPEN\_AND\_CLOSE  | garage used in "Copland", normally closed and can be controlled normally                                                                             |
| 20 | GARAGE\_KEEPS\_OPENING\_FOR\_SPECIFIC\_CAR | unused garage, normally closed and can be controlled normally                                                                                        |
| 21 | GARAGE\_MISSION\_KEEPCAR\_REMAINCLOSED     | unused garage, normally closed but if opened it will always close itself                                                                             |
| 22 | GARAGE\_COLLECTCARS\_4                     | Sunshine Autos export garage 4                                                                                                                       |
| 23 | GARAGE\_FOR\_SCRIPT\_TO\_OPEN\_FOR\_CAR    | Army garage used in "Sir, Yes Sir!", normally closed and can be controlled normally                                                                  |
| 24 | GARAGE\_HIDEOUT\_FOUR                      | Save garage (Hyman Condo 3)                                                                                                                          |
| 25 | GARAGE\_HIDEOUT\_FIVE                      | Save garage (Ocean Heights Apartment)                                                                                                                |
| 26 | GARAGE\_HIDEOUT\_SIX                       | Save garage (Links View Apartment)                                                                                                                   |
| 27 | GARAGE\_HIDEOUT\_SEVEN                     | Save garage (Sunshine Autos 1)                                                                                                                       |
| 28 | GARAGE\_HIDEOUT\_EIGHT                     | Save garage (Sunshine Autos 2)                                                                                                                       |
| 29 | GARAGE\_HIDEOUT\_NINE                      | Save garage (Sunshine Autos 3)                                                                                                                       |
| 30 | GARAGE\_HIDEOUT\_TEN                       | Save garage (Sunshine Autos 4)                                                                                                                       |
| 31 | GARAGE\_HIDEOUT\_ELEVEN                    | Save garage (Vercetti Estate)                                                                                                                        |
| 32 | GARAGE\_HIDEOUT\_TWELVE                    | Save garage (unused)                                                                                                                                 |

<https://gtamods.com/wiki/Garage#Vice_City>


# Иконки радара

| ID | Иконка                                                          | Описание                |
| -- | --------------------------------------------------------------- | ----------------------- |
| 0  | <img src="/files/-MCUA0Kzh4ccJg0SBtRk" alt="" data-size="line"> | Small pink square       |
| 1  | <img src="/files/-MCUAVyW6EQTavovG_fn" alt="" data-size="line"> | Player position         |
| 2  | <img src="/files/-MCUAbKRC0wxyyopBc3v" alt="" data-size="line"> | Pink arrow              |
| 3  | <img src="/files/-MCUMptRTnJXSkXa5W19" alt="" data-size="line"> | North                   |
| 4  | <img src="/files/-MCUMtJGI4kdmoSQ6GVH" alt="" data-size="line"> | Avery Carrington        |
| 5  | <img src="/files/-MCUMwHy6bcgBCKswB8Y" alt="" data-size="line"> | Big Mitch Baker         |
| 6  | <img src="/files/-MCUN0bYqfAsIDhO9YBA" alt="" data-size="line"> | Colonel Cortez          |
| 7  | <img src="/files/-MCUN3WKJGF41D30Ugrz" alt="" data-size="line"> | Ricardo Diaz            |
| 8  | <img src="/files/-MCUN7U3cPll-Kuhd0Ie" alt="" data-size="line"> | Kent Paul               |
| 9  | <img src="/files/-MCUNBRKUcJM5j_X__kx" alt="" data-size="line"> | Lawyer (Ken Rosenberg)  |
| 10 | <img src="/files/-MCUNFVV258ZQcS3OpaX" alt="" data-size="line"> | Phil Cassidy            |
| 11 | <img src="/files/-MCUNINeR9hN4Dw8wbTa" alt="" data-size="line"> | Biker's Bar             |
| 12 | <img src="/files/-MCUNLZHfNJAyaKjAP7f" alt="" data-size="line"> | Boatyard                |
| 13 | <img src="/files/-MCUNU-OOGH86f_Ap-02" alt="" data-size="line"> | Malibu Club             |
| 14 | <img src="/files/-MCUNW_1bs-71eXnn1La" alt="" data-size="line"> | Cubans                  |
| 15 | <img src="/files/-MCUNYj7rWf7v0LpRFKD" alt="" data-size="line"> | Film Studio             |
| 16 | <img src="/files/-MCUNaqNTElaCgCaD8H0" alt="" data-size="line"> | Ammu-nation             |
| 17 | <img src="/files/-MCUNddBthoYD-ZYpAjn" alt="" data-size="line"> | Haitians                |
| 18 | <img src="/files/-MCUNinA0eRiBUVmBOxn" alt="" data-size="line"> | Toolshop                |
| 19 | <img src="/files/-MCUNl2jNTi8UNSdMNwy" alt="" data-size="line"> | Safe House              |
| 20 | <img src="/files/-MCUNoyfw71jkU9qr3bG" alt="" data-size="line"> | Pole Position Club      |
| 21 | <img src="/files/-MCUNriRKDi0J-1JqRo_" alt="" data-size="line"> | Cherry Poppers Factory  |
| 22 | <img src="/files/-MCUNv7HHHq_VAAlxj4O" alt="" data-size="line"> | Kaufman Cabs            |
| 23 | <img src="/files/-MCUNzj5S6zXHAxCvchE" alt="" data-size="line"> | Love Fist               |
| 24 | <img src="/files/-MCUO636Q7IGOga0kmwf" alt="" data-size="line"> | Print Works             |
| 25 |                                                                 | (no icon)               |
| 26 | <img src="/files/-MCUOCOVKJ3IqLFKzbIx" alt="" data-size="line"> | Sunshine Autos          |
| 27 | <img src="/files/-MCUOKEGfWe9ZJ8dSqt8" alt="" data-size="line"> | Pay 'n' Spray           |
| 28 | <img src="/files/-MCUOMgsHIv01gLNlSNQ" alt="" data-size="line"> | Clothes                 |
| 29 | <img src="/files/-MCUOP6ILDNTYuV0cTM_" alt="" data-size="line"> | Vercetti's Mansion      |
| 30 | <img src="/files/-MCUOUXHpiOLHr3fuGdq" alt="" data-size="line"> | Phone                   |
| 31 | <img src="/files/-MCUOW_A5vn40yzlWCvo" alt="" data-size="line"> | Wildstyle Radio station |
| 32 | <img src="/files/-MCUO_PX3Opal2tb8vfO" alt="" data-size="line"> | Flash Radio station     |
| 33 | <img src="/files/-MCUObegVEUDaxN3iWHj" alt="" data-size="line"> | KChat Radio station     |
| 34 | <img src="/files/-MCUOeBZVHZo3wDE9PyC" alt="" data-size="line"> | Fever Radio station     |
| 35 | <img src="/files/-MCUOgctMDeslpsrMtFW" alt="" data-size="line"> | VRock Radio station     |
| 36 | <img src="/files/-MCUOjDijscVd8nSRZWx" alt="" data-size="line"> | VCPR Radio station      |
| 37 | <img src="/files/-MCUOms9ELon5vWtHVdz" alt="" data-size="line"> | Espantoso Radio station |
| 38 | <img src="/files/-MCUOot4FXiPujrV8EcT" alt="" data-size="line"> | Emotion Radio station   |
| 39 | <img src="/files/-MCUOrIsFe1DVyU8sGxx" alt="" data-size="line"> | Wave Radio station      |


# Интерьеры

| ID | Описание           |
| -- | ------------------ |
| 0  | outside            |
| 1  | hotel              |
| 2  | mansion            |
| 3  | bank               |
| 4  | mall               |
| 5  | stripclub          |
| 6  | lawyers            |
| 7  | cafe robina        |
| 8  | concert            |
| 9  | studio             |
| 10 | shooting range     |
| 11 | apartment/bikerbar |
| 12 | policeHQ           |
| 14 | stadium1           |
| 15 | stadium2           |
| 16 | stadium3           |
| 17 | Malibu club        |
| 18 | Print Works        |


# Номера кнопок

```
00E1: key_pressed 0 <номер>
```

| Номер | Константа      | Пешком                    | В машине                         |
| ----- | -------------- | ------------------------- | -------------------------------- |
| 0     | LEFTSTICKX     | Left / Right              | Steer Left / Right               |
| 1     | LEFTSTICKY     | Forward / Backwards       | Steer Forward / Backward         |
| 2     | RIGHTSTICKX    | Special Ctrl Left / Right | Turret Left / Right              |
| 3     | RIGHTSTICKY    | Special Ctrl Up / Down    | Turret Up / Down, Lean Up / Down |
| 4     | LEFTSHOULDER1  | Action                    | Radio                            |
| 5     | LEFTSHOULDER2  | Previous Weapon           | Look Left                        |
| 6     | RIGHTSHOULDER1 | Aim                       | Handbrake                        |
| 7     | RIGHTSHOULDER2 | Next Weapon               | Look Right                       |
| 8     | DPADUP         | Forward                   |                                  |
| 9     | DPADDOWN       | Backward                  |                                  |
| 10    | DPADLEFT       | Strafe Left               | Steer Left                       |
| 11    | DPADRIGHT      | Strafe Right              | Steer Right                      |
| 12    | START          |                           |                                  |
| 13    | SELECT         | Change Camera             | Change Camera                    |
| 14    | SQUARE         | Jump / Zoom In            | Brake / Reverse                  |
| 15    | TRIANGLE       | Enter vehicle             | Exit vehicle                     |
| 16    | CROSS          | Sprint / Zoom Out         | Accelerate                       |
| 17    | CIRCLE         | Attack                    | Shoot                            |
| 18    | LEFTSHOCK      | Crouch                    | Horn                             |
| 19    | RIGHTSHOCK     | Look Behind               | Sub-mission                      |

<https://gtamods.com/wiki/00E1>


# Типы оружия

```
04B8: get_char_weapon <персонаж> in_slot <слот> type_to <тип> ammo_to <патроны> model_to <модель> 
```

| Тип | Слот | Название            | Модель        | Иконка                                                              |
| --- | ---- | ------------------- | ------------- | ------------------------------------------------------------------- |
| 0   | 1    | Unarmed             |               | <img src="/files/-MCQ4zdi1ipceOxdRumk" alt="" data-size="original"> |
| 1   | 1    | Brass Knuckles      | #brassknuckle | <img src="/files/-MCQ5NYeTxL6Mj279cFw" alt="" data-size="original"> |
| 2   | 2    | Screwdriver         | #screwdriver  | <img src="/files/-MCQ5Q8MqXzI4GH95WgE" alt="" data-size="original"> |
| 3   | 2    | Golf Club           | #golfclub     | <img src="/files/-MCQ5TOw5rstf6NHieRq" alt="" data-size="original"> |
| 4   | 2    | Night Stick         | #nitestick    | <img src="/files/-MCQ5W1byDiL9bMqELf-" alt="" data-size="original"> |
| 5   | 2    | Knife               | #knifecur     | <img src="/files/-MCQ5eAnuaM3lRj8H1mj" alt="" data-size="original"> |
| 6   | 2    | Baseball Bat        | #bat          | <img src="/files/-MCQ5gaw76VZJALclyqO" alt="" data-size="original"> |
| 7   | 2    | Hammer              | #hammer       | <img src="/files/-MCQ5jJJ8hPrItmTc-rM" alt="" data-size="original"> |
| 8   | 2    | Cleaver             | #cleaver      | <img src="/files/-MCQ5m3sf8HmcCUlIHZq" alt="" data-size="original"> |
| 9   | 2    | Machete             | #machete      | <img src="/files/-MCQ5oTDdxG-0PTZiyHP" alt="" data-size="original"> |
| 10  | 2    | Katana              | #katana       | <img src="/files/-MCQ5rT55QswvWK5FINE" alt="" data-size="original"> |
| 11  | 2    | Chainsaw            | #chnsaw       | <img src="/files/-MCQ5tSHHXJ62lStqryj" alt="" data-size="original"> |
| 12  | 3    | Grenade             | #grenade      | <img src="/files/-MCQ5vSUryOdi1dur7Wx" alt="" data-size="original"> |
| 13  | 3    | Remote Detonator    | #bomb         | <img src="/files/-MCQ61JpbPJMvpu78NFG" alt="" data-size="original"> |
| 14  | 3    | Tear gas            | #teargas      | <img src="/files/-MCQ63uh3ehGjAB7g5xz" alt="" data-size="original"> |
| 15  | 3    | Molotov             | #molotov      | <img src="/files/-MCQ660Zg6Uls0Sv2Dpw" alt="" data-size="original"> |
| 16  | 3    | Missile             | #missile      |                                                                     |
| 17  | 4    | Colt (.45)          | #colt45       | <img src="/files/-MCQ6AtUXP3gOR6YhlB2" alt="" data-size="original"> |
| 18  | 4    | Python (.357)       | #python       | <img src="/files/-MCQ6FH95RlW9BDZLY3a" alt="" data-size="original"> |
| 19  | 5    | Chrome Shotgun      | #chromegun    | <img src="/files/-MCQ6QPZ4zYYrBcF7Pha" alt="" data-size="original"> |
| 20  | 5    | S.P.A.S 12 Shotgun  | #shotgspa     | <img src="/files/-MCQ6LKmuin1Olq9MOwY" alt="" data-size="original"> |
| 21  | 5    | Stubby Shotgun      | #buddyshot    | <img src="/files/-MCQ6Ub46jAQULWlG8DG" alt="" data-size="original"> |
| 22  | 6    | Tec-9               | #tec9         | <img src="/files/-MCQ6WXa0cxB9SUKvLal" alt="" data-size="original"> |
| 23  | 6    | Uzi 9mm             | #uzi          | <img src="/files/-MCQ6YGoPTnshV2pbJY-" alt="" data-size="original"> |
| 24  | 6    | Ingram Mac 10       | #ingramsl     | <img src="/files/-MCQ6h5nEg2B2iXA9buI" alt="" data-size="original"> |
| 25  | 6    | MP5                 | #mp5lng       | <img src="/files/-MCQ6jV79bD3WcZ9vvhZ" alt="" data-size="original"> |
| 26  | 7    | M4                  | #m4           | <img src="/files/-MCQ6lSG2s_7KPxUxmuI" alt="" data-size="original"> |
| 27  | 7    | Ruger               | #ruger        | <img src="/files/-MCQ6nXHxe8n9kTZsxf3" alt="" data-size="original"> |
| 30  | 8    | Rocket Launcher     | #rocketla     | <img src="/files/-MCQ6pVESD1-e5MEjBGZ" alt="" data-size="original"> |
| 31  | 8    | Flame Thrower       | #flame        | <img src="/files/-MCQ6rHmDnEu-VdW2xp-" alt="" data-size="original"> |
| 32  | 8    | M60                 | #M60          | <img src="/files/-MCQ6u5dpnBRmlgOcG9o" alt="" data-size="original"> |
| 33  | 8    | Minigun             | #minigun      | <img src="/files/-MCQ6wAntJpAz0Xt6E5M" alt="" data-size="original"> |
| 35  | 8    | Helicopter Cannon   |               |                                                                     |
| 28  | 9    | Sniper Rifle        | #sniper       | <img src="/files/-MCQ6zTRHscoNELfGWm3" alt="" data-size="original"> |
| 29  | 9    | PSG-1 (.308 Sniper) | #laser        | <img src="/files/-MCQ715efp7KqPgqOjUJ" alt="" data-size="original"> |
| 34  | 10   | Detonator           |               |                                                                     |
| 36  | 10   | Camera              | #camera       | <img src="/files/-MCQ77ocJqyEeRXtdNUE" alt="" data-size="original"> |


# Типы пешеходов

```
009A: 0@ = create_actor <id> 0 at 0 0 0
```

| ID | Тип        |
| -- | ---------- |
| 0  | player1    |
| 1  | player2    |
| 2  | player3    |
| 3  | player4    |
| 4  | civmale    |
| 5  | civfemale  |
| 6  | cop        |
| 7  | gang1      |
| 8  | gang2      |
| 9  | gang3      |
| 10 | gang4      |
| 11 | gang5      |
| 12 | gang6      |
| 13 | gang7      |
| 14 | gang8      |
| 15 | gang9      |
| 16 | emergency  |
| 17 | fireman    |
| 18 | criminal   |
| 19 | *unused*   |
| 20 | prostitute |
| 21 | special    |


# San Andreas


# Банды

```
0237: set_gang <id> weapons_to 24 29 4
```

| ID | Название              |
| -- | --------------------- |
| 0  | Ballas                |
| 1  | Grove Street Families |
| 2  | Los Santos Vagos      |
| 3  | San Fierro Rifa       |
| 4  | Da Nang Boys          |
| 5  | Mafia                 |
| 6  | Mountain Cloud Triad  |
| 7  | Varrio Los Aztecas    |
| 8  | (свободно)            |
| 9  | (свободно)            |


# Варианты изменения авто

```
0506: set_vehicle_model #PONY next_variation <variant 1> <variant 2>
```

Большинство машин может иметь только одно изменение, поэтому второй и третий параметры должны быть одинаковыми. Однако некоторые машины могут иметь два изменения.

Вариант `-1` - это стандартная модель, без изменений. Варианты от `0` до `5` - возможные изменения. Если модель не поддерживает данный номер, то будет установлена модель по умолчанию. Варианты больше `5` приведут к ошибке игры.

| Имя модели | ID модели | Вариант                                                                                                                                                                                                                                                                                                               |
| ---------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| #ambulan   | 416       | <p><strong>Numbers:</strong></p><p><strong>0:</strong> 64<br><strong>1:</strong> 16<br><strong>2:</strong> 47</p>                                                                                                                                                                                                     |
| #artict1   | 435       | <p><strong>Side Ads:</strong></p><p><strong>0:</strong> Cok-o-Pops<br><strong>1:</strong> Munky Juice<br><strong>2:</strong> Hinterland<br><strong>3:</strong> Zip<br><strong>4:</strong> RS Haul<br><strong>5:</strong> Ranch</p>                                                                                    |
| #artict2   | 450       | <p><strong>Contents:</strong></p><p><strong>0:</strong> Filled with gravel / coal / stone</p>                                                                                                                                                                                                                         |
| #bagboxb   | 607       | <p><strong>Contents:</strong></p><p><strong>0, 1, 2:</strong> Various distributions of loose baggage</p>                                                                                                                                                                                                              |
| #baggage   | 485       | <p><strong>Rear Cargo Items:</strong></p><p><strong>0:</strong> Earmuffs <br><strong>1:</strong> Small Case <br><strong>2:</strong> Large Case</p>                                                                                                                                                                    |
| #barracks  | 433       | <p><strong>Bed Covering:</strong></p><p><strong>0:</strong> Opaque Fabric <br><strong>1:</strong> Camo Netting</p>                                                                                                                                                                                                    |
| #benson    | 499       | <p><strong>Side Ads:</strong></p><p><strong>0:</strong> Shady Industries<br><strong>1:</strong> LSD<br><strong>2:</strong> The Uphill Gardener<br><strong>3:</strong> Discount Furniture</p>                                                                                                                          |
| #bf400     | 581       | <p><strong>Exhausts:</strong><br><strong>0:</strong> Single Type 1<br><strong>1:</strong> Single Type 2<br><br><strong>Fairings (with windshields):</strong></p><p><strong>3:</strong> Dual Type3</p><p><strong>4:</strong> Half-size</p><p><strong>5:</strong> Full-size</p>                                         |
| #bfinject  | 424       | <p><strong>Body:</strong> <br><strong>0:</strong> Side Panels</p>                                                                                                                                                                                                                                                     |
| #bloodra   | 504       | <p><strong>Numbers/ Roof Color:</strong></p><p><strong>0:</strong> 328/ White<br><strong>1:</strong> 464/ Check<br><strong>2:</strong> 172/ Check<br><strong>3:</strong> 100/ White<br><strong>4:</strong> 284/ White<br><strong>5:</strong> 505/ Check</p>                                                           |
| #bobcat    | 422       | <p><strong>Bed Items:</strong></p><p><strong>0:</strong> Spare Tire<br><strong>1:</strong> Sprunk Cans</p>                                                                                                                                                                                                            |
| #burrito   | 482       | <p><strong>Roof Items:</strong></p><p><strong>0:</strong> Roof Lights + Spoiler</p>                                                                                                                                                                                                                                   |
| #caddy     | 457       | <p><strong>Rear Cargo Items (Driver Side):</strong> <br><strong>0:</strong> Golfbag1 <br><strong>1:</strong> Satchel1 <br><strong>2:</strong> Golfbag2<br><br><strong>Rear Cargo Items (Pass Side):</strong></p><p><strong>3:</strong> Satchel2 <br><strong>4:</strong> Golfbag3 <br><strong>5:</strong> Golfbag4</p> |
| #camper    | 483       | <p><strong>0:</strong> Open Curtains & Second Bench Seat</p><p><strong>1:</strong> Open Roof & Vent Closed & Curtains Bed in Back Peace Sign</p>                                                                                                                                                                      |
| #cheetah   | 415       | <p><strong>Side Mirrors:</strong></p><p><strong>0:</strong> Single, Placed High<br><strong>1:</strong> Dual, Placed Normally</p>                                                                                                                                                                                      |
| #coach     | 437       | <p><strong>Name on Side:</strong></p><p><strong>0:</strong> Big O Tours <br><strong>1:</strong> Bikini Line</p>                                                                                                                                                                                                       |
| #coastg    | 472       | <p><strong>Various Items:</strong></p><p><strong>0:</strong> Items all Over<br><strong>1:</strong> Items Grouped in Back<br><strong>3:</strong> Items all Over +2 Oars in Front</p>                                                                                                                                   |
| #fcr900    | 521       | <p><strong>Exhausts:</strong> <br><strong>0:</strong> Single Type1 <br><strong>1:</strong> Dual Type1 <br><strong>2:</strong> Dual Type2<br><br><strong>Fairings (with Windshields):</strong></p><p><strong>3:</strong> Half-size</p><p><strong>4:</strong> Full-size</p>                                             |
| #firetruk  | 407       | <p><strong>Numbers:</strong></p><p><strong>0:</strong> 64 <br><strong>1:</strong> 16 <br><strong>2:</strong> 47</p>                                                                                                                                                                                                   |
| #flatbed   | 455       | <p><strong>Cargo:</strong></p><p><strong>0:</strong> Crates in Front <br><strong>1:</strong> Crates in center under Tarp <br><strong>2:</strong> Two Sets of crates (Front and Back)</p>                                                                                                                              |
| #hotknife  | 434       | **0:** Partial Engine Cover                                                                                                                                                                                                                                                                                           |
| #hotrina   | 502       | <p><strong>Numbers:</strong></p><p><strong>0:</strong> 96 <br><strong>1:</strong> 67 <br><strong>2:</strong> 73 <br><strong>3:</strong> 52 <br><strong>4:</strong> 45 <br><strong>5:</strong> 14</p>                                                                                                                  |
| #hotrinb   | 503       | <p><strong>Numbers:</strong></p><p><strong>0:</strong> 82 <br><strong>1:</strong> 26 <br><strong>2:</strong> 65 <br><strong>3:</strong> 07 <br><strong>4:</strong> 36 <br><strong>5:</strong> 60</p>                                                                                                                  |
| #kart      | 571       | <p><strong>Body Panels:</strong></p><p><strong>0:</strong> Both Sides <br><strong>1:</strong> Steering Column</p>                                                                                                                                                                                                     |
| #launch    | 595       | <p><strong>Roofs:</strong></p><p><strong>0:</strong> Over passenger section <br><strong>1:</strong> Over driver section</p>                                                                                                                                                                                           |
| #marquis   | 484       | **0:** Windshield over cabin Entrance                                                                                                                                                                                                                                                                                 |
| #mesa      | 500       | <p><strong>0:</strong> Roof Over Back <br><strong>1:</strong> Roll Bar in Back</p>                                                                                                                                                                                                                                    |
| #monstera  | 556       | <p><strong>0:</strong> Roof Spoiler <br><strong>1:</strong> Roof Lights <br><strong>2:</strong> Roll Bar with Lights</p>                                                                                                                                                                                              |
| #monsterb  | 557       | **1:** Roof Lights                                                                                                                                                                                                                                                                                                    |
| #mrwhoop   | 423       | <p><strong>Rear Sign:</strong></p><p><strong>0:</strong> Cherry Popping Good<br><strong>1:</strong> Slow Children Ahead</p>                                                                                                                                                                                           |
| #mule      | 414       | <p><strong>Side Ads:</strong></p><p><strong>0:</strong> Toy Corner <br><strong>1:</strong> Binco <br><strong>2:</strong> Semi <br><strong>3:</strong> Shafted Appliances</p>                                                                                                                                          |
| #nrg500    | 522       | <p><strong>Exhausts:</strong> <br><strong>0:</strong> Single Pair1</p><p><strong>1:</strong> Single Pair2</p><p><strong>2:</strong> Dual Pair2<br><br><strong>Fairings (with Windshields):</strong></p><p><strong>3:</strong> Smooth</p><p><strong>4:</strong> With Side Cutouts</p>                                  |
| #patriot   | 470       | <p><strong>Cargo Area:</strong></p><p><strong>0:</strong> Low Cover <br><strong>1:</strong> Roof/High Cover <br><strong>2:</strong> Roll Bar</p>                                                                                                                                                                      |
| #peren     | 404       | **0:** Roof Rack                                                                                                                                                                                                                                                                                                      |
| #picador   | 600       | <p><strong>Items in Bed:</strong></p><p><strong>0:</strong> Planks <br><strong>1:</strong> Sprunk Cans</p>                                                                                                                                                                                                            |
| #pony      | 413       | **0:** Sound System in Back                                                                                                                                                                                                                                                                                           |
| #reefer    | 453       | <p><strong>Items in Back:</strong></p><p><strong>0:</strong> Boxes of Fish <br><strong>1:</strong> Bench</p>                                                                                                                                                                                                          |
| #romero    | 442       | <p><strong>Coffins:</strong></p><p><strong>0:</strong> Brown Style1 <br><strong>1:</strong> Black Style2 <br><strong>2:</strong> Brown Style3</p>                                                                                                                                                                     |
| #rumpo     | 440       | <p><strong>Side Ads:</strong></p><p><strong>0:</strong> Cok-o-Pops <br><strong>1:</strong> Harry Plums <br><strong>2:</strong> Dick Goblin's <br><strong>3:</strong> Final Build <br><strong>4:</strong> Transfender <br><strong>5:</strong> Wheel Arch Angels</p>                                                    |
| #sadler    | 543       | <p><strong>Items in Bed:</strong></p><p><strong>0:</strong> Two Propane Tanks & Crate <br><strong>1:</strong> Two Barrels <br><strong>2:</strong> Sprunk Cans <br><strong>3:</strong> Open Crates</p>                                                                                                                 |
| #sadlshit  | 605       | <p><strong>Items in Bed:</strong></p><p><strong>0:</strong> Two Propane Tanks & Crate <br><strong>1:</strong> Two Barrels <br><strong>2:</strong> Sprunk Cans <br><strong>3:</strong> Open Crates</p>                                                                                                                 |
| #securica  | 428       | <p><strong>Side Logo:</strong></p><p><strong>0:</strong> Chuff<br><strong>1:</strong> Lock\&Load</p>                                                                                                                                                                                                                  |
| #slamvan   | 535       | <p><strong>Steering Wheel:</strong></p><p><strong>0:</strong> Normal <br><strong>1:</strong> Chain</p>                                                                                                                                                                                                                |
| #stallion  | 439       | <p><strong>Roof:</strong></p><p><strong>0:</strong> Hardtop <br><strong>1:</strong> Softtop (up) <br><strong>2:</strong> Softtop (folded)</p>                                                                                                                                                                         |
| #supergt   | 506       | **0:** Full Roof                                                                                                                                                                                                                                                                                                      |
| #swatvan   | 601       | <p><strong>Number:</strong></p><p><strong>0:</strong> 1 <br><strong>1:</strong> 9 <br><strong>2:</strong> 6 <br><strong>3:</strong> 7</p>                                                                                                                                                                             |
| #topfun    | 459       | **0:** Boxes of Toys in Back                                                                                                                                                                                                                                                                                          |
| #tram      | 449       | ?                                                                                                                                                                                                                                                                                                                     |
| #trash     | 408       | **0:** Some bits of trash sticking out of the back                                                                                                                                                                                                                                                                    |
| #utility   | 552       | **0, 1:** Cones, Barrel in back, Cone lying on passenger \| driver side rail                                                                                                                                                                                                                                          |
| #walton    | 478       | <p><strong>Items in Bed:</strong></p><p><strong>0:</strong> Two Propane Tanks <br><strong>1:</strong> Open Crates <br><strong>2:</strong> Propane Tank and Barrel</p>                                                                                                                                                 |
| #windsor   | 555       | **0:** Roof                                                                                                                                                                                                                                                                                                           |
| #yankee    | 456       | <p><strong>Side Ads:</strong></p><p><strong>0:</strong> Big Gas <br><strong>1:</strong> RS Haul <br><strong>2:</strong> Star Balls <br><strong>3:</strong> Flower Power</p>                                                                                                                                           |
| #zr350     | 477       | **0:** Rear Spoiler                                                                                                                                                                                                                                                                                                   |


# Гаражи

```
Garage.Activate('BODLAWN')
```

| Имя              | Позиция                     | Описание                                    | Примечания                                   |
| ---------------- | --------------------------- | ------------------------------------------- | -------------------------------------------- |
| **Los Santos**   |                             |                                             |                                              |
| CJSAFE           | (2502.31,-1699.36,12.4323)  | Ganton garage                               |                                              |
| CESAFE1          | (1352.58,-636.657,108.135)  | Muholland garage                            |                                              |
| MUL\_LAN         | (1640.37,-1520.07,12.5118)  | Downtown garage                             | <p>использовался в<br>"Life's a Beach"</p>   |
| IMP\_LA          | (1523.92,-1653.23,4.72837)  | impound lot                                 |                                              |
| DUF\_LAS         | (1873.97,-2096.55,12.487)   | El Corona garage                            | <p>использовался в <br>"Los Desperados"</p>  |
| LASBOMB          | (1843.91,-1858.8,12.3645)   | bomb shop                                   |                                              |
| MODGLAS          | (1809.46,-2150.67,12.4283)  | Cesar's garage                              |                                              |
| CARLAS1          | (1694.8,-2088.7,12.3636)    | El Corona garage                            |                                              |
| BURG\_LK         | (2738.4,-2012.55,12.5759)   | burglary garage                             |                                              |
| MODLAST          | (2640.78,-2049.99,12.543)   | Loco Low Co                                 |                                              |
| SPLAW2           | (491.103,-1747.55,9.45516)  | Verona Beach Pay n Spray                    |                                              |
| BEACSV           | (319.326,-1768.93,3.35686)  | Santa Maria Beach garage                    |                                              |
| BODLAWN          | (1038.24,-1025.67,31.1027)  | Transfender                                 |                                              |
| SPRLAE           | (2056.6,-1835.9,12.5443)    | Idlewood Pay n Spray                        |                                              |
| SPRLAE           | (1021.81 -1018.71 30.9081)  | Temple Pay n Spray                          |                                              |
| **San Fierro**   |                             |                                             |                                              |
| FDORSFE          | (-2171.43,649.416,49.8742)  | Wu Zi's garage                              |                                              |
| MICHDR           | (-1790.97,1209.71,23.763)   | Michelle's garage                           |                                              |
| SAV1SFE          | (-2108.92,886.553,75.566)   | Windy road garage                           |                                              |
| IMP\_SF          | (-1652.78,647.502,-6.04924) | impound lot                                 |                                              |
| MDS1SFS          | (-2728.53,212.295,3.45112)  | "Wheels Arch Angel" garage                  |                                              |
| TBON             | (-2735.46,60.7331,3.07005)  | garage a block south of "Wheels Arch Angel" |                                              |
| SVGSFS1          | (-2454.02,-131.556,25.0886) | Hashbury garage                             |                                              |
| MDSSFSE          | (-1941.04,251.714,33.4274)  | Transfender                                 |                                              |
| SPRSFSE          | (-1908.93,292.353,40.0413)  | Downtown Pay n Spray                        |                                              |
| BRGSFSE          | (-2112.48,-21.214,34.303)   | burglary garage                             |                                              |
| HBGDSFS          | (-2057.35,150.803,27.8286)  | Doherty garage #1 left                      |                                              |
| LCKSFSE          | (-2043.1,118.609,27.821)    | Doherty garage #2 right                     |                                              |
| SPRSFW           | (-2430.13,1013.71,49.3413)  | Juniper Hollow Pay n Spray                  |                                              |
| SAV1SFW          | (2699.12,821.489,49.0042)   | Paradiso garage                             |                                              |
|                  | (-1694.78 1033.15 44.1937)  | Esplanade North garage                      | <p>использовался в<br>"Yay Ka-Boom-Boom"</p> |
|                  | (-1794.15 1429.69 4.37321)  | Downtown garage                             | "Ran Fa Li"                                  |
| **Las Venturas** |                             |                                             |                                              |
| VGELOCK          | (2602.6,1438.84,9.8337)     | burglary garage                             |                                              |
| VECMOD           | (2382.28,1044,9.8337)       | Transfender                                 |                                              |
| VESVGRG          | (2449.5,695.018,10.4742)    | Rockshore West garage                       |                                              |
| IMP\_LV          | (2218.06,2448.06,-8.43807)  | impound lot                                 |                                              |
| VGSHNGR          | (1550.98,1155.36,8.97329)   | AT 400 hangar                               |                                              |
| BLOB2            | (2002.96,2303.72,9.61706)   | Welding and Wedding bomb shop               |                                              |
| BLOB1            | (1968.23,2157.88,9.59696)   | Redsands East Pay n Spray                   |                                              |
| BLOB6            | (1408.65,1899.52,10.115)    | Redsands West garage                        |                                              |
| BLOB69           | (1269.2,2525.14,9.80013)    | Prickle Pine garage                         |                                              |
| BLOB7            | (929.554,2008.59,10.115)    | Whitewood Estates garage                    |                                              |
| TIMY1            | (2389.6,1483.26,9.81843)    | unused Pay n Spray                          | (нерабочая дверь)                            |
| **Countryside**  |                             |                                             |                                              |
| CN2SPRY          | (-103.636,1112.42,18.7017)  | Fort Carson Pay n Spray                     |                                              |
| CN2GAR1          | (-364.439,1194.37,18.597)   | Fort Carson garage                          |                                              |
| CN2GAR2          | (430.059,2542.31,15.166)    | Verdant Meadows garage                      |                                              |
| GHOSTDR          | (-397.297,2223.17,41.3824)  | garage                                      | <p>использовался в<br>"Interdiction"</p>     |
| DHANGAR          | (383.843,2433.28,15.166)    | Verdant Meadows Hangar                      |                                              |
| CESPRAY          | (715.806,-462.403,14.9635)  | Dillimore Pay n Spray                       |                                              |
| BURBDOO          | (2227.6,168.649,26.4635)    | Palomino Creek garage                       |                                              |
| BURBDO2          | (783.155,-492.75,16.3361)   | Dillimore garage                            |                                              |
| CNSPRAY          | (-1424.11,2576.61,54.8156)  | El Quebrados Pay n Spray                    |                                              |
| AMUMIS           | (-2114.42,-2462.27,29.4809) | Angel Pine Ammunation garage                |                                              |


# Зоны

```
0767: set_zone 'CARSO' type <тип>
```

| Тип | Описание                    |
| --- | --------------------------- |
| 0   | BUSINESS                    |
| 1   | DESERT                      |
| 2   | ENTERTAINMENT               |
| 3   | COUNTRYSIDE                 |
| 4   | RESIDENTIAL\_RICH           |
| 5   | RESIDENTIAL\_AVERAGE        |
| 6   | RESIDENTIAL\_POOR           |
| 7   | GANGLAND                    |
| 8   | BEACH                       |
| 9   | SHOPPING                    |
| 10  | PARK                        |
| 11  | INDUSTRY                    |
| 12  | ENTERTAINMENT\_BUSY         |
| 13  | SHOPPING\_BUSY              |
| 14  | SHOPPING\_POSH              |
| 15  | RESIDENTIAL\_RICH\_SECLUDED |
| 16  | AIRPORT                     |
| 17  | GOLF\_CLUB                  |
| 18  | OUT\_OF\_TOWN\_FACTORY      |
| 19  | AIRPORT\_RUNWAY             |

### Los Santos

| ID зоны | Значение GXT             | Ключ GXT |
| ------- | ------------------------ | -------- |
| LA      | Los Santos               | LA       |
| RIH1a   | Richman                  | RIH      |
| RIH1b   | Richman                  | RIH      |
| RIH2    | Richman                  | RIH      |
| RIH3a   | Richman                  | RIH      |
| RIH3b   | Richman                  | RIH      |
| RIH4    | Richman                  | RIH      |
| RIH5a   | Richman                  | RIH      |
| RIH5b   | Richman                  | RIH      |
| RIH6a   | Richman                  | RIH      |
| RIH6b   | Richman                  | RIH      |
| MUL1a   | Mulholland               | MUL      |
| MUL1b   | Mulholland               | MUL      |
| MUL1c   | Mulholland               | MUL      |
| MUL2a   | Mulholland               | MUL      |
| MUL2b   | Mulholland               | MUL      |
| MUL3    | Mulholland               | MUL      |
| MUL4    | Mulholland               | MUL      |
| MUL5a   | Mulholland               | MUL      |
| MUL5b   | Mulholland               | MUL      |
| MUL5c   | Mulholland               | MUL      |
| MUL6    | Mulholland               | MUL      |
| MUL7a   | Mulholland               | MUL      |
| MUL7b   | Mulholland               | MUL      |
| MULINT  | Mulholland Intersection  | MULINT   |
| SUN1    | Temple                   | SUN      |
| SUN2    | Temple                   | SUN      |
| SUN3a   | Temple                   | SUN      |
| SUN3b   | Temple                   | SUN      |
| SUN3c   | Temple                   | SUN      |
| SUN4    | Temple                   | SUN      |
| CHC1a   | Las Colinas              | CHC      |
| CHC1b   | Las Colinas              | CHC      |
| CHC2a   | Las Colinas              | CHC      |
| CHC2b   | Las Colinas              | CHC      |
| CHC3    | Las Colinas              | CHC      |
| CHC4a   | Las Colinas              | CHC      |
| CHC4b   | Las Colinas              | CHC      |
| VIN1a   | Vinewood                 | VIN      |
| VIN1b   | Vinewood                 | VIN      |
| VIN2    | Vinewood                 | VIN      |
| VIN3    | Vinewood                 | VIN      |
| LDT1a   | Downtown Los Santos      | LDT      |
| LDT1b   | Downtown Los Santos      | LDT      |
| LDT1c   | Downtown Los Santos      | LDT      |
| LDT3    | Downtown Los Santos      | LDT      |
| LDT4    | Downtown Los Santos      | LDT      |
| LDT5    | Downtown Los Santos      | LDT      |
| LDT6    | Downtown Los Santos      | LDT      |
| LDT7    | Downtown Los Santos      | LDT      |
| LDT8    | Downtown Los Santos      | LDT      |
| GLN1    | Glen Park                | GLN      |
| GLN1b   | Glen Park                | GLN      |
| GLN2a   | Glen Park                | GLN      |
| LFL1a   | Los Flores               | LFL      |
| LFL1b   | Los Flores               | LFL      |
| MKT1    | Market                   | MKT      |
| MKT2    | Market                   | MKT      |
| MKT3    | Market                   | MKT      |
| MKT4    | Market                   | MKT      |
| MARKST  | Market Station           | MARKST   |
| JEF1a   | Jefferson                | JEF      |
| JEF1b   | Jefferson                | JEF      |
| JEF2    | efferson                 | JEF      |
| JEF3a   | Jefferson                | JEF      |
| JEF3b   | Jefferson                | JEF      |
| JEF3c   | Jefferson                | JEF      |
| ROD1a   | Rodeo                    | ROD      |
| ROD1b   | Rodeo                    | ROD      |
| ROD1c   | Rodeo                    | ROD      |
| ROD2a   | Rodeo                    | ROD      |
| ROD2b   | Rodeo                    | ROD      |
| ROD3a   | Rodeo                    | ROD      |
| ROD3b   | Rodeo                    | ROD      |
| ROD4a   | Rodeo                    | ROD      |
| ROD4b   | Rodeo                    | ROD      |
| ROD4c   | Rodeo                    | ROD      |
| ROD5a   | Rodeo                    | ROD      |
| ROD5b   | Rodeo                    | ROD      |
| MAR1    | Marina                   | MAR      |
| MAR2    | Marina                   | MAR      |
| MAR3    | Marina                   | MAR      |
| THALL1  | Commerce                 | COM      |
| COM1a   | Commerce                 | COM      |
| COM1b   | Commerce                 | COM      |
| COM2    | Commerce                 | COM      |
| COM3    | Commerce                 | COM      |
| COM4    | Commerce                 | COM      |
| ELS1a   | East Los Santos          | ELS      |
| ELS1b   | East Los Santos          | ELS      |
| ELS2    | East Los Santos          | ELS      |
| ELS3a   | East Los Santos          | ELS      |
| ELS3b   | East Los Santos          | ELS      |
| ELS3c   | East Los Santos          | ELS      |
| ELS4    | East Los Santos          | ELS      |
| EBE1    | East Beach               | EBE      |
| EBE2a   | East Beach               | EBE      |
| EBE2b   | East Beach               | EBE      |
| EBE3c   | East Beach               | EBE      |
| PER1    | Pershing Square          | PER1     |
| IWD1    | Idlewood                 | IWD      |
| IWD2    | Idlewood                 | IWD      |
| IWD3a   | Idlewood                 | IWD      |
| IWD3b   | Idlewood                 | IWD      |
| IWD4    | Idlewood                 | IWD      |
| IWD5    | Idlewood                 | IWD      |
| GAN1    | Ganton                   | GAN      |
| GAN2    | Ganton                   | GAN      |
| CONF1a  | Conference Center        | CONF     |
| CONF1b  | Conference Center        | CONF     |
| CITYS   | City Hall                | CITYS    |
| LMEX1a  | Little Mexico            | LMEX     |
| LMEX1b  | Little Mexico            | LMEX     |
| UNITY   | Unity Station            | UNITY    |
| SMB1    | Santa Maria Beach        | SMB      |
| SMB2    | Santa Maria Beach        | SMB      |
| VERO1   | Verona Beach             | VERO     |
| VERO2   | Verona Beach             | VERO     |
| VERO3   | Verona Beach             | VERO     |
| VERO4a  | erona Beach              | VERO     |
| VERO4b  | Verona Beach             | VERO     |
| LIND1a  | Willowfield              | LIND     |
| LIND1b  | Willowfield              | LIND     |
| LIND2a  | Willowfield              | LIND     |
| LIND2b  | Willowfield              | LIND     |
| LIND3   | Willowfield              | LIND     |
| LIND4a  | Willowfield              | LIND     |
| LIND4c  | Willowfield              | LIND     |
| ELCO1   | El Corona                | ELCO     |
| ELCO2   | El Corona                | ELCO     |
| PLS     | Playa del Seville        | PLS      |
| BLUF1a  | Verdant Bluffs           | BLUF     |
| BLUF1b  | Verdant Bluffs           | BLUF     |
| BLUF2   | Verdant Bluffs           | BLUF     |
| LAIR1   | Los Santos International | LAIR     |
| LAIR2a  | Los Santos International | LAIR     |
| LAIR2b  | Los Santos International | LAIR     |
| LBAG1   | Los Santos International | LAIR     |
| LBAG2   | Los Santos International | LAIR     |
| LBAG3   | Los Santos International | LAIR     |
| LDOC1a  | Ocean Docks              | LDOC     |
| LDOC1b  | Ocean Docks              | LDOC     |
| LDOC2   | Ocean Docks              | LDOC     |
| LDOC3a  | Ocean Docks              | LDOC     |
| LDOC3b  | Ocean Docks              | LDOC     |
| LDOC3c  | Ocean Docks              | LDOC     |
| LDOC4   | Ocean Docks              | LDOC     |

### Red County

| ID зоны | Значение GXT            | Ключ GXT |
| ------- | ----------------------- | -------- |
| RED     | Red County              | RED      |
| MONT    | Montgomery              | MONT     |
| MONT1   | Montgomery              | MONT     |
| MONINT  | Montgomery Intersection | MONINT   |
| HBARNS  | Hampton Barns           | HBARNS   |
| HANKY   | Hankypanky Point        | HANKY    |
| BLUAC   | Blueberry Acres         | BLUAC    |
| FERN    | Fern Ridge              | FERN     |
| PANOP   | The Panopticon          | PANOP    |
| PALO    | Palomino Creek          | PALO     |
| BLUEB   | Blueberry               | BLUEB    |
| BLUEB1  | Blueberry               | BLUEB    |
| TOPFA   | Hilltop Farm            | TOPFA    |
| NROCK   | North Rock              | NROCK    |
| DILLI   | Dillimore               | DILLI    |

### San Fierro

| ID зоны | Значение GXT                 | Ключ GXT |
| ------- | ---------------------------- | -------- |
| SF      | San Fierro                   | SF       |
| BATTP   | Battery Point                | BATTP    |
| ESPN1   | Esplanade North              | ESPN     |
| ESPN2   | Esplanade North              | ESPN     |
| ESPN3   | Esplanade North              | ESPN     |
| ESPE1   | Esplanade East               | ESPE     |
| ESPE2   | Esplanade East               | ESPE     |
| ESPE3   | Esplanade East               | ESPE     |
| JUNIHO  | Juniper Hollow               | JUNIHO   |
| SFDWT1  | Downtown                     | SFDWT    |
| SFDWT2  | Downtown                     | SFDWT    |
| SFDWT3  | Downtown                     | SFDWT    |
| SFDWT4  | Downtown                     | SFDWT    |
| SFDWT5  | Downtown                     | SFDWT    |
| SFDWT6  | Downtown                     | SFDWT    |
| PARA    | Paradiso                     | PARA     |
| CALT    | Calton Heights               | CALT     |
| FINA    | Financial                    | FINA     |
| BAYV    | Palisades                    | BAYV     |
| JUNIHI  | Juniper Hill                 | JUNIHI   |
| CHINA   | Chinatown                    | CHINA    |
| CIVI    | Santa Flora                  | CIVI     |
| WESTP1  | Queens                       | WESTP    |
| WESTP2  | Queens                       | WESTP    |
| WESTP3  | Queens                       | WESTP    |
| CITYS   | City Hall                    | CITYS    |
| THEA1   | King's                       | THEA     |
| THEA2   | King's                       | THEA     |
| THEA3   | King's                       | THEA     |
| EASB1   | Easter Basin                 | EASB     |
| EASB2   | Easter Basin                 | EASB     |
| GARC    | Garcia                       | GARC     |
| SFGLF3  | Garcia                       | GARC     |
| CRANB   | Cranberry Station            | CRANB    |
| OCEAF1  | Ocean Flats                  | OCEAF    |
| OCEAF2  | Ocean Flats                  | OCEAF    |
| OCEAF3  | Ocean Flats                  | OCEAF    |
| HASH    | Hashbury                     | HASH     |
| DOH1    | Doherty                      | DOH      |
| DOH2    | Doherty                      | DOH      |
| SFBAG2  | Easter Bay Airport (English) | SFAIR    |
| SFBAG3  | Easter Bay Airport (English) | SFAIR    |
| SFBAG1  | Easter Bay Airport (English) | SFAIR    |
| SFAIR1  | Easter Bay Airport (English) | SFAIR    |
| SFAIR2  | Easter Bay Airport (English) | SFAIR    |
| SFAIR3  | Easter Bay Airport (English) | SFAIR    |
| SFAIR4  | Easter Bay Airport (English) | SFAIR    |
| SFAIR5  | Easter Bay Airport (English) | SFAIR    |

### Flint County

| ID зоны | Значение GXT        | Ключ GXT |
| ------- | ------------------- | -------- |
| FLINTC  | Flint County        | FLINTC   |
| CUNTC1  | Avispa Country Club | CUNTC    |
| CUNTC2  | Avispa Country Club | CUNTC    |
| CUNTC3  | Avispa Country Club | CUNTC    |
| SFGLF1  | Avispa Country Club | CUNTC    |
| SFGLF2  | Avispa Country Club | CUNTC    |
| SFGLF4  | Avispa Country Club | CUNTC    |
| HAUL    | Fallen Tree         | HAUL     |
| HILLP   | Missionary Hill     | HILLP    |
| EBAY    | Easter Bay Chemical | EBAY     |
| EBAY2   | Easter Bay Chemical | EBAY     |
| ETUNN   | Easter Tunnel       | ETUNN    |
| SILLY1  | Foster Valley       | SILLY    |
| SILLY2  | Foster Valley       | SILLY    |
| SILLY3  | Foster Valley       | SILLY    |
| SILLY4  | Foster Valley       | SILLY    |
| FARM    | The Farm            | FARM     |
| BEACO   | Beacon Hill         | BEACO    |
| FLINTI  | Flint Intersection  | FLINTI   |
| FLINTR  | Flint Range         | FLINTR   |
| LEAFY   | Leafy Hollow        | LEAFY    |
| BACKO   | Back o Beyond       | BACKO    |

### Whetstone

| ID зоны | Значение GXT  | Ключ GXT |
| ------- | ------------- | -------- |
| WHET    | Whetstone     | WHET     |
| MTCHI1  | Mount Chiliad | MTCHI    |
| MTCHI2  | Mount Chiliad | MTCHI    |
| MTCHI3  | Mount Chiliad | MTCHI    |
| MTCHI4  | Mount Chiliad | MTCHI    |
| CREEK   | Shady Creeks  | CREEK    |
| CREEK1  | Shady Creeks  | CREEK    |
| SHACA   | Shady Cabin   | SHACA    |
| ANGPI   | Angel Pine    | ANGPI    |

### Las Venturas

| ID зоны | Значение GXT                   | Ключ GXT |
| ------- | ------------------------------ | -------- |
| VE      | Las Venturas                   | VE       |
| YBELL1  | Yellow Bell Golf Course        | YBELL    |
| YBELL2  | Yellow Bell Golf Course        | YBELL    |
| SPIN    | Spinybed                       | SPIN     |
| KACC    | K.A.C.C. Military Fuels        | KACC     |
| PRP1    | Prickle Pine                   | PRP      |
| PRP2    | Prickle Pine                   | PRP      |
| PRP3    | Prickle Pine                   | PRP      |
| PRP4    | Prickle Pine                   | PRP      |
| YELLOW  | Yellow Bell Station            | YELLOW   |
| JTN1    | Julius Thruway North           | JTN      |
| JTN2    | Julius Thruway North           | JTN      |
| JTN3    | Julius Thruway North           | JTN      |
| JTN4    | Julius Thruway North           | JTN      |
| JTN5    | Julius Thruway North           | JTN      |
| JTN6    | Julius Thruway North           | JTN      |
| JTN7    | Julius Thruway North           | JTN      |
| JTN8    | Julius Thruway North           | JTN      |
| PINT    | Pilson Intersection            | PINT     |
| ISLE    | The Emerald Isle               | ISLE     |
| ROCE1   | Roca Escalante                 | ROCE     |
| ROCE2   | Roca Escalante                 | ROCE     |
| WWE     | Whitewood Estates              | WWE      |
| WWE1    | Whitewood Estates              | WWE      |
| OVS     | Old Venturas Strip             | OVS      |
| CREE    | Creek                          | CREE     |
| REDE1   | Redsands East                  | REDE     |
| REDE2   | Redsands East                  | REDE     |
| REDE3   | Redsands East                  | REDE     |
| REDW1   | Redsands West                  | REDW     |
| REDW2   | Redsands West                  | REDW     |
| REDW3   | Redsands West                  | REDW     |
| REDW4   | Redsands West                  | REDW     |
| HGP     | Harry Gold Parkway             | HGP      |
| STRIP1  | The Strip                      | STRIP    |
| STRIP2  | The Strip                      | STRIP    |
| JTW1    | Julius Thruway West            | JTW      |
| JTW2    | Julius Thruway West            | JTW      |
| VISA1   | The Visage                     | VISA     |
| VISA2   | The Visage                     | VISA     |
| STAR1   | Starfish Casino                | STAR     |
| STAR2   | Starfish Casino                | STAR     |
| CONST1  | Starfish Casino                | STAR     |
| RING    | The Clown's Pocket             | RING     |
| SRY     | Sobell Rail Yards              | SRY      |
| JTE1    | Julius Thruway East            | JTE      |
| JTE2    | Julius Thruway East            | JTE      |
| JTE3    | Julius Thruway East            | JTE      |
| JTE4    | Julius Thruway East            | JTE      |
| BFLD1   | Blackfield                     | BFLD     |
| BFLD2   | Blackfield                     | BFLD     |
| CALI1   | Caligula's Palace              | CALI     |
| CALI2   | Caligula's Palace              | CALI     |
| VAIR1   | Las Venturas Airport (English) | VAIR     |
| VAIR2   | Las Venturas Airport (English) | VAIR     |
| VAIR3   | Las Venturas Airport (English) | VAIR     |
| LVBAG   | Las Venturas Airport (English) | VAIR     |
| PIRA    | Pirates in Men's Pants         | PIRA     |
| ROY     | Royal Casino                   | ROY      |
| PILL1   | Pilgrim                        | PILL     |
| PILL2   | Pilgrim                        | PILL     |
| LST     | Linden Station                 | LST      |
| LINDEN  | Linden Station                 | LINDEN   |
| HIGH    | The High Roller                | HIGH     |
| STRIP3  | The Strip                      | STRIP    |
| STRIP4  | The Strip                      | STRIP    |
| PINK    | The Pink Swan                  | PINK     |
| CAM     | The Camel's Toe                | CAM      |
| GGC1    | Greenglass College             | GGC      |
| GGC2    | Greenglass College             | GGC      |
| LDS     | Linden Side                    | LDS      |
| LVA1    | LVA Freight Depot              | LVA      |
| LVA2    | LVA Freight Depot              | LVA      |
| LVA3    | LVA Freight Depot              | LVA      |
| LVA4    | LVA Freight Depot              | LVA      |
| LVA5    | LVA Freight Depot              | LVA      |
| DRAG    | The Four Dragons Casino        | DRAG     |
| LOT     | Come-A-Lot                     | LOT      |
| BINT1   | Blackfield Intersection        | BINT     |
| BINT2   | Blackfield Intersection        | BINT     |
| BINT3   | Blackfield Intersection        | BINT     |
| BINT4   | Blackfield Intersection        | BINT     |
| JTS1    | Julius Thruway South           | JTS      |
| JTS2    | Julius Thruway South           | JTS      |
| BFC1    | Blackfield Chapel              | BFC      |
| BFC2    | Blackfield Chapel              | BFC      |
| RIE     | Randolph Industrial Estate     | RIE      |
| LDM     | Last Dime Motel                | LDM      |
| RSE     | Rockshore East                 | RSE      |
| RSW1    | Rockshore West                 | RSW      |

### Tierra Robada

| ID зоны | Значение GXT        | Ключ GXT |
| ------- | ------------------- | -------- |
| ROBAD   | Tierra Robada       | ROBAD    |
| ROBAD1  | Tierra Robada       | ROBAD    |
| ELQUE   | El Quebrados        | ELQUE    |
| SUNNN   | Bayside             | SUNNN    |
| BYTUN   | Bayside Tunnel      | BYTUN    |
| ALDEA   | Aldea Malvada       | ALDEA    |
| SUNMA   | Bayside Marina      | SUNMA    |
| BARRA   | Las Barrancas       | BARRA    |
| ROBINT  | Robada Intersection | ROBINT   |

### Bone County

| ID зоны | Значение GXT            | Ключ GXT |
| ------- | ----------------------- | -------- |
| BONE    | Bone County             | BONE     |
| PAYAS   | Las Payasadas           | PAYAS    |
| VALLE   | Valle Ocultado          | VALLE    |
| ELCA    | El Castillo del Diablo  | ELCA     |
| ELCA1   | El Castillo del Diablo  | ELCA     |
| ELCA2   | El Castillo del Diablo  | ELCA     |
| ARCO    | Arco del Oeste          | ARCO     |
| MEAD    | Verdant Meadows         | MEAD     |
| BRUJA   | Las Brujas              | BRUJA    |
| TOM     | Regular Tom             | TOM      |
| REST    | Restricted Area         | REST     |
| BIGE    | 'The Big Ear' (English) | BIGE     |
| PALMS   | Green Palms             | PALMS    |
| OCTAN   | Octane Springs          | OCTAN    |
| PROBE   | Lil' Probe Inn          | PROBE    |
| CARSO   | Fort Carson             | CARSO    |
| QUARY   | Hunter Quarry           | QUARY    |

### Озера

| ID зоны | Значение GXT      | Ключ GXT |
| ------- | ----------------- | -------- |
| LSINL   | Los Santos Inlet  | LSINL    |
| FLINW   | Flint Water       | FLINW    |
| FISH    | Fisher's Lagoon   | FISH     |
| SANB1   | San Fierro Bay    | SANB     |
| SANB2   | San Fierro Bay    | SANB     |
| SHERR   | Sherman Reservoir | SHERR    |
| SASO    | San Andreas Sound | SASO     |

### Мосты

| ID зоны | Значение GXT     | Ключ GXT |
| ------- | ---------------- | -------- |
| GANTB   | Gant Bridge      | GANTB    |
| GANTB1  | Gant Bridge      | GANTB    |
| \*DAM   | The Sherman Dam  | DAM      |
| GARV    | Garver Bridge    | GARV     |
| GARV1   | Garver Bridge    | GARV     |
| GARV2   | Garver Bridge    | GARV     |
| KINC    | Kincaid Bridge   | KINC     |
| KINC1   | Kincaid Bridge   | KINC     |
| KINC2   | Kincaid Bridge   | KINC     |
| FALLO   | Fallow Bridge    | FALLO    |
| MART    | Martin Bridge    | MART     |
| MAKO    | The Mako Span    | MAKO     |
| FRED    | Frederick Bridge | FRED     |


# Интерьеры

| Номер | Название | Описание                                                    |
| ----- | -------- | ----------------------------------------------------------- |
| 1     | ABATOIR  | Sindacco Abattoir                                           |
| 1     | AMMUN1   | Ammu-Nation                                                 |
| 1     | CARMOD1  | TransFender                                                 |
| 1     | FDREST1  | World of Coq                                                |
| 1     | GF1      | Denise's                                                    |
| 1     | JETINT   | Shamal interior                                             |
| 1     | LACS1    | Sub Urban                                                   |
| 1     | LAHS1B   | House                                                       |
| 1     | MAFCAS   | Caligulas Casino                                            |
| 1     | MAFCAS2  | Penthouse Suites                                            |
| 1     | -        | Saint Mark's                                                |
| 1     | SMASHTV  | Warehouse                                                   |
| 1     | -        | Stadium with wooden sandbox                                 |
| 1     | SVVGHO1  | Hotel Suite                                                 |
| 1     | SWEETS   | Sweet's House                                               |
| 1     | -        | Trailer                                                     |
| 1     | TSDINER  | Truck Stop                                                  |
| 1     | WUZIBET  | Wu Zi Mu's                                                  |
| 2     | BARBERS  | Barber                                                      |
| 2     | BDUPS1   | B Dup's Crack Palace                                        |
| 2     | CARMOD2  | Loco Low Co.                                                |
| 2     | CARTER   | Smokes Crack Palace                                         |
| 2     | GF2      | Katie's                                                     |
| 2     | LAHS1A   | House                                                       |
| 2     | LASTRIP  | Strip Club                                                  |
| 2     | RYDERS   | Ryder's Place                                               |
| 2     | SVVGHO2  | Hotel Suite                                                 |
| 2     | VGHSB1   | House                                                       |
| 2     | VGHSB3   | House                                                       |
| 3     | BARBER2  | Barber                                                      |
| 3     | BDUPS    | B Dup's apartment                                           |
| 3     | BIKESCH  | Bike School                                                 |
| 3     | BROTHL1  | Whore House                                                 |
| 3     | CARLS    | The Johnson House                                           |
| 3     | CARMOD3  | Wheel Arch Angels                                           |
| 3     | CHANGER  | Wardrobe                                                    |
| 3     | CSSPRT   | Pro-Laps                                                    |
| 3     | DRIVES   | Driving School                                              |
| 3     | DRIVES2  | Driving School                                              |
| 3     | GENOTB   | Inside Track Betting                                        |
| 3     | GF3      | Helena's                                                    |
| 3     | LAHSB4   | House                                                       |
| 3     | OGLOCS   | OG Loc's                                                    |
| 3     | PAPER    | Planning Department                                         |
| 3     | PDOMES   | The Pleasure Domes                                          |
| 3     | PDOMES2  | The Pleasure Domes                                          |
| 3     | POLICE3  | LVPD HQ                                                     |
| 3     | SEXSHOP  | Sex Shop                                                    |
| 3     | S1TEST   | Middle of nowhere                                           |
| 3     | STRIP2   | Strip Club                                                  |
| 3     | STUDIO   | Blastin' Fools Records studio                               |
| 3     | TATTO3   | Tattoo Parlor                                               |
| 4     | AMMUN2   | Ammu-Nation                                                 |
| 4     | DINER1   | Diner                                                       |
| 4     | DIRBIKE  | Dirt Stadium                                                |
| 4     | GF4      | Michelle's                                                  |
| 4     | LAHS2A   | House                                                       |
| 4     | LAHSS6   | House                                                       |
| 4     | SFHSM2   | House                                                       |
| 4     | X711S2   | 24-7                                                        |
| 5     | CSDESGN  | Victim                                                      |
| 5     | DINER2   | Diner                                                       |
| 5     | FDPIZA   | Pizza Stack                                                 |
| 5     | GANG     | Vagos Gang House                                            |
| 5     | GF5      | Barbara's                                                   |
| 5     | GYM1     | Ganton Gym                                                  |
| 5     | LACRAK   | Crack Den                                                   |
| 5     | LAHSB3   | House                                                       |
| 5     | MADDOGS  | Madd Dogg's Crib                                            |
| 5     | MDDOGS   | Madd Dogg's Crib                                            |
| 5     | SFHSB1   | House                                                       |
| 5     | SVHOT1   | Hotel Suite                                                 |
| 5     | VGHSM2   | House                                                       |
| 6     | AMMUN3   | Ammu-Nation                                                 |
| 6     | AMMUN5   | Ammu-Nation                                                 |
| 6     | BROTHEL  | Whore House                                                 |
| 6     | GF6      | Millie's                                                    |
| 6     | GYM2     | Cobra Marital Arts                                          |
| 6     | LAHSB1   | House                                                       |
| 6     | POLICE1  | LSPD HQ                                                     |
| 6     | RCPLAY   | Zero's RC Shop                                              |
| 6     | REST2    | Secret Valley                                               |
| 6     | SFHSB2   | House                                                       |
| 6     | SFHSS2   | House                                                       |
| 6     | SVCUNT   | Safe House                                                  |
| 6     | SVSFSM   | Safe House                                                  |
| 6     | X7\_11S  | 24-7                                                        |
| 7     | 8TRACK   | 8-Track Stadium                                             |
| 7     | AMMUN4   | Ammu-Nation                                                 |
| 7     | GYM3     | Below the Belt Gym                                          |
| 7     | LAHSB2   | House                                                       |
| 7     | OFTEST   | Middle of nowhere                                           |
| 8     | BURHOUS  | Colonel Fuhrberger's                                        |
| 8     | SFHSS1   | House                                                       |
| 8     | SVLAMD   | Safe House                                                  |
| 9     | FDCHICK  | Cluckin' Bell                                               |
| 9     | LAHS2B   | House                                                       |
| 9     | SFHSB3   | House                                                       |
| 9     | SVGNMT2  | Motel room                                                  |
| 9     | SVVGMD   | Safe House                                                  |
| 10    | DESHOUS  | Abandoned AC tower                                          |
| 10    | FDBURG   | Burger Shot                                                 |
| 10    | POLICE2  | SFPD HQ                                                     |
| 10    | SVGNMT1  | Motel room                                                  |
| 10    | TRICAS   | The Four Dragon's                                           |
| 10    | -        | The Four Dragon's Casino's maintenance room                 |
| 10    | SVSFMD   | Safe House                                                  |
| 10    | VGHSM3   | House                                                       |
| 10    | X711S3   | 24-7                                                        |
| 10    | -        | Zero's No Man's Land                                        |
| 11    | BAR2     | Bar                                                         |
| 11    | SVLASM   | Safe House                                                  |
| 12    | BARBER3  | Barber                                                      |
| 12    | MOROOM   | Motel room                                                  |
| 12    | SVLABIG  | Safe House                                                  |
| 14    | CSEXL    | Didier Sachs                                                |
| 14    | AIRPOR2  | Los Santos International Airport                            |
| 14    | AIRPORT  | Francis Intl. Airport                                       |
| 15    | CSCHP    | Binco                                                       |
| 15    | MOTEL1   | Jefferson Motel                                             |
| 15    | SFHSM1   | House                                                       |
| 15    | VGHSS1   | House                                                       |
| 15    | VGSHM2   | House                                                       |
| 15    | VGSHM3   | House                                                       |
| 15    | VGSHS2   | House                                                       |
| 16    | -        | Stadium with giant round circular raised platform in middle |
| 16    | TATTOO   | Tattoo Parlor                                               |
| 16    | X7\_11C  | 24-7                                                        |
| 17    | BAR1     | Bar                                                         |
| 17    | DAMIN    | Generator Hall                                              |
| 17    | FDDONUT  | Rusty Brown's                                               |
| 17    | TATTO2   | Tattoo Parlor                                               |
| 17    | X7\_11D  | 24-7                                                        |
| 18    | ATRIUME  | Atrium                                                      |
| 18    | ATRIUMX  | Attrium                                                     |
| 18    | CLOTHGP  | Zip                                                         |
| 18    | GENWRHS  | Warehouse                                                   |
| 18    | UFOBAR   | Lil' Probe Inn                                              |
| 18    | X7\_11B  | 24-7                                                        |


# Номера клавиш

```
00E1: key_pressed 0 <номер>
```

| Номер | Константа      | Пешком                    | В машине                         |
| ----- | -------------- | ------------------------- | -------------------------------- |
| 0     | LEFTSTICKX     | Left / Right              | Steer Left / Right               |
| 1     | LEFTSTICKY     | Forward / Backwards       | Steer Forward / Backward         |
| 2     | RIGHTSTICKX    | Special Ctrl Left / Right | Turret Left / Right              |
| 3     | RIGHTSTICKY    | Special Ctrl Up / Down    | Turret Up / Down, Lean Up / Down |
| 4     | LEFTSHOULDER1  | Action                    | Secondary Fire                   |
| 5     | LEFTSHOULDER2  | Previous Weapon           | Look Left                        |
| 6     | RIGHTSHOULDER1 | Aim                       | Handbrake                        |
| 7     | RIGHTSHOULDER2 | Next Weapon               | Look Right                       |
| 8     | DPADUP         | Group Ctrl Back           | Next Radio Station               |
| 9     | DPADDOWN       | Group Ctrl Forward        | Previous Radio Station           |
| 10    | DPADLEFT       | Conversation - No         | No                               |
| 11    | DPADRIGHT      | Conversation - Yes        | Yes, Trip Skip                   |
| 12    | START          |                           |                                  |
| 13    | SELECT         | Change Camera             | Change Camera                    |
| 14    | SQUARE         | Jump / Zoom In            | Brake / Reverse                  |
| 15    | TRIANGLE       | Enter vehicle             | Exit vehicle                     |
| 16    | CROSS          | Sprint / Zoom Out         | Accelerate                       |
| 17    | CIRCLE         | Attack                    | Shoot                            |
| 18    | LEFTSHOCK      | Crouch                    | Horn                             |
| 19    | RIGHTSHOCK     | Look Behind               | Sub-mission                      |

<https://gtamods.com/wiki/00E1>


# Одежда

```
Player.SetClothes($PLAYER_CHAR, <текстура>, <модель>, <часть тела>)
```

## Верхняя одежда

| Текстура       | Модель     | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Описание        |
| -------------- | ---------- | -------------------------------------------------------- | --------------- |
| player\_torso  | torso      | 0                                                        | Torso (default) |
| vestblack      | vest       | 0                                                        | Black Tank      |
| vest           | vest       | 0                                                        | White Tank      |
| tshirt2horiz   | tshirt2    | 0                                                        | Striped T-Shirt |
| tshirtwhite    | tshirt     | 0                                                        | White T-Shirt   |
| tshirtilovels  | tshirt     | 0                                                        | L.S. T-Shirt    |
| tshirtblunts   | tshirt     | 0                                                        | Sharps T-Shirt  |
| shirtbplaid    | shirtb     | 0                                                        | Plaid Shirt     |
| shirtbcheck    | shirtb     | 0                                                        | Checkered Shirt |
| field          | field      | 0                                                        | Combat Jacket   |
| tshirterisyell | tshirt     | 0                                                        | Eris T-Shirt    |
| tshirterisorn  | tshirt     | 0                                                        | Eris T-Shirt2   |
| trackytop2eris | trackytop1 | 0                                                        | Track Top       |
| bbjackrim      | bbjack     | 0                                                        | Rimmers Jacket  |
| bballjackrstar | bbjack     | 0                                                        | R-Star Jacket   |
| baskballdrib   | baskball   | 0                                                        | Dribblers Vest  |
| baskballrim    | baskball   | 0                                                        | Saint's Shirt   |
| sixtyniners    | tshirt     | 0                                                        | 69ers T-Shirt   |
| bandits        | baseball   | 0                                                        | Bandits Top     |
| tshirtprored   | tshirt     | 0                                                        | ProLaps T-Shirt |
| tshirtproblk   | tshirt     | 0                                                        | ProLaps Black T |
| trackytop1pro  | trackytop1 | 0                                                        | Track Top       |
| hockeytop      | sweat      | 0                                                        | Slappers Top    |
| bbjersey       | sleevt     | 0                                                        | Baseball T      |
| shellsuit      | trackytop1 | 0                                                        | Leisure Top     |
| tshirtheatwht  | tshirt     | 0                                                        | White Heat T    |
| tshirtbobomonk | tshirt     | 0                                                        | Bobo Ape T      |
| tshirtbobored  | tshirt     | 0                                                        | Red Bobo T      |
| tshirtbase5    | tshirt     | 0                                                        | Base 5 T        |
| tshirtsuburb   | tshirt     | 0                                                        | Suburban T      |
| hoodyamerc     | hoodya     | 0                                                        | Mercury Hood    |
| hoodyabase5    | hoodya     | 0                                                        | Base 5 Hood     |
| hoodyarockstar | hoodya     | 0                                                        | Rockstar Hood   |
| wcoatblue      | wcoat      | 0                                                        | Vest & T-Shirt  |
| coach          | coach      | 0                                                        | Grn Windbreaker |
| coachsemi      | coach      | 0                                                        | Blk Windbreaker |
| sweatrstar     | sweat      | 0                                                        | Rockstar Sweat  |
| hoodyAblue     | hoodyA     | 0                                                        | Blue Hoody      |
| hoodyAblack    | hoodyA     | 0                                                        | Black Hoody     |
| hoodyAgreen    | hoodyA     | 0                                                        | Green Hoody     |
| sleevtbrown    | sleevt     | 0                                                        | Brown Shirt     |
| shirtablue     | shirta     | 0                                                        | Sky Blue Shirt  |
| shirtayellow   | shirta     | 0                                                        | Yellow Shirt    |
| shirtagrey     | shirta     | 0                                                        | Gray Shirt      |
| shirtbgang     | shirtb     | 0                                                        | Green Shirt     |
| tshirtzipcrm   | tshirt     | 0                                                        | Cream Logo T    |
| tshirtzipgry   | tshirt     | 0                                                        | Gray Logo T     |
| denimfade      | denim      | 0                                                        | Jean Jacket     |
| bowling        | hawaii     | 0                                                        | Bowling shirt   |
| hoodjackbeige  | hoodjack   | 0                                                        | Hooded Jacket   |
| baskballloc    | baskball   | 0                                                        | Loc-Down Vest   |
| tshirtlocgrey  | tshirt     | 0                                                        | Loc-Down T      |
| tshirtmaddgrey | tshirt     | 0                                                        | Madd Tagg T     |
| tshirtmaddgrn  | tshirt     | 0                                                        | Green Tagg T    |
| suit1grey      | suit1      | 0                                                        | Gray Jacket     |
| suit1blk       | suit1      | 0                                                        | Black Jacket    |
| leather        | leather    | 0                                                        | Biker Jacket    |
| painter        | painter    | 0                                                        | Chore Coat      |
| hawaiiwht      | hawaii     | 0                                                        | Hawaiian Shirt  |
| hawaiired      | hawaii     | 0                                                        | Blue Hawaiian   |
| sportjack      | trackytop1 | 0                                                        | Sports Jacket   |
| suit1red       | suit1      | 0                                                        | Red Jacket      |
| suit1blue      | suit1      | 0                                                        | Blue Jacket     |
| suit1yellow    | suit1      | 0                                                        | Yellow Jacket   |
| suit2grn       | suit2      | 0                                                        | Tweed Jacket    |
| tuxedo         | suit2      | 0                                                        | Tuxedo Pants    |
| suit1gang      | suit1      | 0                                                        | Green Jacket    |
| letter         | sleevt     | 0                                                        | Letterman Top   |

## Штаны

| Текстура         | Модель      | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Описание          |
| ---------------- | ----------- | -------------------------------------------------------- | ----------------- |
| player\_legs     | legs        | 2                                                        | Legs (default)    |
| worktrcamogrn    | worktr      | 2                                                        | Woodland Camo     |
| worktrcamogry    | worktr      | 2                                                        | Urban Camo        |
| worktrgrey       | worktr      | 2                                                        | Gray Pants        |
| worktrkhaki      | worktr      | 2                                                        | Olive Pants       |
| tracktr          | tracktr     | 2                                                        | Sweat Pants       |
| tracktreris      | tracktr     | 2                                                        | Track Pants       |
| jeansdenim       | jeans       | 2                                                        | Blue Jeans        |
| legsblack        | legs        | 2                                                        | Black Boxers      |
| legsheart        | legs        | 2                                                        | Heart Boxers      |
| biegetr          | chinosb     | 2                                                        | Beige Pants       |
| tracktrpro       | tracktr     | 2                                                        | Track Pants       |
| tracktrwhstr     | tracktr     | 2                                                        | Black Track Pants |
| racktrblue       | tracktr     | 2                                                        | Blue Track Pants  |
| tracktrgang      | tracktr     | 2                                                        | Green Track Pants |
| bbshortwht       | boxingshort | 2                                                        | Ball Shorts       |
| boxshort         | boxingshort | 2                                                        | Boxing Shorts     |
| bbshortred       | boxingshort | 2                                                        | Dribbler Shorts   |
| shellsuittr      | tracktr     | 2                                                        | Leisure Pants     |
| shortsgrey       | shorts      | 2                                                        | Gray Shorts       |
| shortskhaki      | shorts      | 2                                                        | Olive Shorts      |
| chongergrey      | chonger     | 2                                                        | Gray Chonglers    |
| chongergang      | chonger     | 2                                                        | Green Chonglers   |
| chongerred       | chonger     | 2                                                        | Red Chonglers     |
| chongerblue      | chonger     | 2                                                        | Blue Chonglers    |
| shortsgang       | shorts      | 2                                                        | Green Shorts      |
| denimsgang       | jeans       | 2                                                        | Green Jeans       |
| denimsred        | jeans       | 2                                                        | Red Jeans         |
| chinosbiege      | chinosb     | 2                                                        | Beige Khakis      |
| chinoskhaki      | chinosb     | 2                                                        | Olive Khakis      |
| cutoffchinos     | shorts      | 2                                                        | Beige Shorts      |
| cutoffchinosblue | shorts      | 2                                                        | Blue Shorts       |
| chinosblack      | chinosb     | 2                                                        | Black Khakis      |
| chinosblue       | chinosb     | 2                                                        | Blue Khakis       |
| leathertr        | leathertr   | 2                                                        | Leather Pants     |
| leathertrchaps   | leathertr   | 2                                                        | Leather Chaps     |
| suit1trgrey      | suit1tr     | 2                                                        | Gray Pants        |
| suit1trblk       | suit1tr     | 2                                                        | Black Pants       |
| cutoffdenims     | shorts      | 2                                                        | Jean Shorts       |
| suit1trred       | suit1tr     | 2                                                        | Red Pants         |
| suit1trblue      | suit1tr     | 2                                                        | Blue Pants        |
| suit1tryellow    | suit1tr     | 2                                                        | Yellow Pants      |
| suit1trgreen     | suit1tr     | 2                                                        | Tweed Pants       |
| suit1trblk2      | suit1tr     | 2                                                        | Tuxedo Pants      |
| suit1trgang      | suit1tr     | 2                                                        | Green Pants       |

## Обувь

| Текстура        | Модель   | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Описание          |
| --------------- | -------- | -------------------------------------------------------- | ----------------- |
| foot            | feet     | 3                                                        | Shoes ; (default) |
| cowboyboot2     | biker    | 3                                                        | Cowboy Boots      |
| bask2semi       | bask1    | 3                                                        | Hi-Top Kicks      |
| bask1eris       | bask1    | 3                                                        | Hi-Top Sneaks     |
| sneakerbincgang | sneaker  | 3                                                        | Green Low-Tops    |
| sneakerbincblu  | sneaker  | 3                                                        | Blue Low-Tops     |
| sneakerbincblk  | sneaker  | 3                                                        | Black Low-Tops    |
| sandal          | flipflop | 3                                                        | Sandals           |
| sandalsock      | flipflop | 3                                                        | Sandal & Socks    |
| flipflop        | flipflop | 3                                                        | Flip-Flops        |
| hitop           | bask1    | 3                                                        | Mid-Top Sneaker   |
| convproblk      | conv     | 3                                                        | Black Hi-Tops     |
| convproblu      | conv     | 3                                                        | Blue Hi-Tops      |
| convprogrn      | conv     | 3                                                        | Green Hi-Tops     |
| sneakerprored   | sneaker  | 3                                                        | Red Sneakers      |
| sneakerproblu   | sneaker  | 3                                                        | Blue Sneakers     |
| sneakerprowht   | sneaker  | 3                                                        | White Sneakers    |
| bask1prowht     | bask1    | 3                                                        | White Mid-Tops    |
| bask1problk     | bask1    | 3                                                        | Black Mid-Tops    |
| boxingshoe      | biker    | 3                                                        | Boxing Shoes      |
| convheatblk     | conv     | 3                                                        | Black Hi-Tops     |
| convheatred     | conv     | 3                                                        | Red Hi-Tops       |
| convheatorn     | conv     | 3                                                        | Orange Hi-Tops    |
| sneakerheatwht  | sneaker  | 3                                                        | White Low-Tops    |
| sneakerheatgry  | sneaker  | 3                                                        | Gray Low-Tops     |
| sneakerheatblk  | sneaker  | 3                                                        | Black Low-Tops    |
| bask2heatwht    | bask1    | 3                                                        | White Hi-Tops     |
| bask2heatband   | bask1    | 3                                                        | Strap Sneakers    |
| timbergrey      | bask1    | 3                                                        | Gray Boots        |
| timberred       | bask1    | 3                                                        | Red Boots         |
| timberfawn      | bask1    | 3                                                        | Brown Boots       |
| timberhike      | bask1    | 3                                                        | Hiking Boots      |
| cowboyboot      | biker    | 3                                                        | Cowboy Boots      |
| biker           | biker    | 3                                                        | Biker Boots       |
| snakeskin       | biker    | 3                                                        | Snake Skin        |
| shoedressblk    | shoe     | 3                                                        | Black Shoes       |
| shoedressbrn    | shoe     | 3                                                        | Brown Shoes       |
| shoespatz       | shoe     | 3                                                        | Spats             |

## Цепи

| Текстура   | Модель | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Описание       |
| ---------- | ------ | -------------------------------------------------------- | -------------- |
| dogtag     | neck   | 13                                                       | Dogtags        |
| neckafrica | neck   | 13                                                       | Africa Pendant |
| stopwatch  | neck   | 13                                                       | Stop Watch     |
| necksaints | neck   | 13                                                       | Saints Chain   |
| neckhash   | neck   | 13                                                       | Leaf Chain     |
| necksilver | neck2  | 13                                                       | Silver Cuban   |
| neckgold   | neck2  | 13                                                       | Gold Cuban     |
| neckropes  | neck2  | 13                                                       | Silver Chain   |
| neckropeg  | neck2  | 13                                                       | Gold Chain     |
| neckls     | neck   | 13                                                       | L.S. Chain     |
| neckdollar | neck   | 13                                                       | Dollar Chain   |
| neckcross  | neck   | 13                                                       | Cross Chain    |

## Часы

| Текстура    | Модель | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Описание       |
| ----------- | ------ | -------------------------------------------------------- | -------------- |
| watchpink   | watch  | 14                                                       | Pink Watch     |
| watchyellow | watch  | 14                                                       | Yellow Watch   |
| watchpro    | watch  | 14                                                       | Pro-Laps White |
| watchpro2   | watch  | 14                                                       | Pro-Laps Black |
| watchsub1   | watch  | 14                                                       | Face Watch     |
| watchsub2   | watch  | 14                                                       | Face Black     |
| watchzip1   | watch  | 14                                                       | Zip Blue       |
| watchzip2   | watch  | 14                                                       | Zip Gold       |
| watchgno    | watch  | 14                                                       | Gold Gnocchi   |
| watchgno2   | watch  | 14                                                       | Silver Gnocchi |
| watchcro    | watch  | 14                                                       | Gold Crowex    |
| watchcro2   | watch  | 14                                                       | Silver Crowex  |

## Очки

| Текстура      | Модель    | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Описание     |
| ------------- | --------- | -------------------------------------------------------- | ------------ |
| groucho       | grouchos  | 15                                                       | Joke Glasses |
| zorro         | zorromask | 15                                                       | Joke Mask    |
| eyepatch      | eyepatch  | 15                                                       | Eyepatch     |
| glasses01     | glasses01 | 15                                                       | Black Shades |
| glasses04     | glasses04 | 15                                                       | Brown Shades |
| bandred3      | bandmask  | 15                                                       | Red Rag      |
| bandblue3     | bandmask  | 15                                                       | Blue Rag     |
| bandgang3     | bandmask  | 15                                                       | Green Rag    |
| bandblack3    | bandmask  | 15                                                       | Black Rag    |
| glasses01dark | glasses01 | 15                                                       | Aviators     |
| glasses04dark | glasses04 | 15                                                       | Sun Glasses  |
| glasses03     | glasses03 | 15                                                       | Green Tint   |
| glasses03red  | glasses03 | 15                                                       | Red Tint     |
| glasses03blue | glasses03 | 15                                                       | Blue Tint    |
| glasses03dark | glasses03 | 15                                                       | Black Shades |
| glasses05dark | glasses03 | 15                                                       | Black Shades |
| glasses05     | glasses03 | 15                                                       | Black Rim    |

## Головные уборы

| Текстура     | Модель      | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Описание         |
| ------------ | ----------- | -------------------------------------------------------- | ---------------- |
| bandred      | bandana     | 16                                                       | Red Rag Back     |
| bandblue     | bandana     | 16                                                       | Blue Rag Back    |
| bandgang     | bandana     | 16                                                       | Green Rag Back   |
| bandblack    | bandana     | 16                                                       | Black Rag Back   |
| bandred2     | bandknots   | 16                                                       | Red Rag Front    |
| bandblue2    | bandknots   | 16                                                       | Blue Rag Front   |
| bandblack2   | bandknots   | 16                                                       | Black Rag Front  |
| bandgang2    | bandknots   | 16                                                       | Green Rag Front  |
| capknitgrn   | capknit     | 16                                                       | Watch Cap        |
| captruck     | captruck    | 16                                                       | Trucker Hat      |
| cowboy       | cowboy      | 16                                                       | Cowboy Hat       |
| hattiger     | cowboy      | 16                                                       | Leopard Cowboy   |
| helmet       | helmet      | 16                                                       | Fullface Helmet  |
| moto         | moto        | 16                                                       | MotoX Helmet     |
| boxingcap    | boxingcap   | 16                                                       | Boxing Helmet    |
| hockey       | hockeymask  | 16                                                       | Hockey Mask      |
| capgang      | cap         | 16                                                       | Green Cap        |
| capgangback  | capback     | 16                                                       | Green Cap (Back) |
| capgangside  | capside     | 16                                                       | Green Cap (Side) |
| capgangover  | capovereye  | 16                                                       | Grn Cap (Tilt)   |
| capgangup    | caprimup    | 16                                                       | Grn Cap (Up)     |
| bikerhelmet  | bikerhelmet | 16                                                       | Helmut           |
| capred       | cap         | 16                                                       | Red Cap          |
| capredback   | capback     | 16                                                       | Red Cap (Back)   |
| capredside   | capside     | 16                                                       | Red Cap (Side)   |
| capredover   | capovereye  | 16                                                       | Red Cap (Tilt)   |
| capredup     | caprimup    | 16                                                       | Red Cap (Up)     |
| capblue      | cap         | 16                                                       | Blue Cap         |
| capblueback  | capback     | 16                                                       | Blue Cap (Back)  |
| capblueside  | capside     | 16                                                       | Blue Cap (Side)  |
| capblueover  | capovereye  | 16                                                       | Blue Cap (Tilt)  |
| capblueup    | caprimup    | 16                                                       | Blue Cap (Up)    |
| skullyblk    | skullycap   | 16                                                       | Black Skully     |
| skullygrn    | skullycap   | 16                                                       | Green Skully     |
| hatmancblk   | hatmanc     | 16                                                       | Black Sun Hat    |
| hatmancplaid | hatmanc     | 16                                                       | Plaid Sun Hat    |
| capzip       | cap         | 16                                                       | Cap              |
| capzipback   | capback     | 16                                                       | Cap (Back)       |
| capzipside   | capside     | 16                                                       | Cap (Side)       |
| capzipover   | capovereye  | 16                                                       | Cap Tilted       |
| capzipup     | caprimup    | 16                                                       | Cap Rim Up       |
| beretred     | beret       | 16                                                       | Red Beret        |
| beretblk     | beret       | 16                                                       | Black Beret      |
| capblk       | cap         | 16                                                       | Black Cap        |
| capblkback   | capback     | 16                                                       | Black Cap (Back) |
| capblkside   | capside     | 16                                                       | Black Cap (Side) |
| capblkover   | capovereye  | 16                                                       | Black Cap (Tilt) |
| capblkup     | caprimup    | 16                                                       | Black Cap (Up)   |
| trilbydrk    | trilby      | 16                                                       | Dark Trilby      |
| trilbylght   | trilby      | 16                                                       | Light Trilby     |
| bowler       | bowler      | 16                                                       | Black Derby      |
| bowlerred    | bowler      | 16                                                       | Red Derby        |
| bowlerblue   | bowler      | 16                                                       | Blue Derby       |
| bowleryellow | bowler      | 16                                                       | Yellow Derby     |
| boater       | boater      | 16                                                       | Gray Boater      |
| bowlergang   | bowler      | 16                                                       | Green Derby      |
| boaterblk    | boater      | 16                                                       | Black Boater     |

## Униформа

| Текстура  | Модель    | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Описание      |
| --------- | --------- | -------------------------------------------------------- | ------------- |
| gimpleg   | gimpleg   | 17                                                       | Gimp Suit     |
| valet     | valet     | 17                                                       | Valet Uniform |
| countrytr | countrytr | 17                                                       | Rural Clothes |
| croupier  | valet     | 17                                                       | Croupier      |
| policetr  | policetr  | 17                                                       | Cop           |
| balaclava | balaclava | 17                                                       | Ski Mask      |
| pimptr    | pimptr    | 17                                                       | Pimp Suit     |
| garageleg | garagetr  | 17                                                       | Racing Suit   |
| medictr   | medictr   | 17                                                       | Medic Uniform |


# Оружие

```
01B2: give_actor $PLAYER_ACTOR weapon <id> ammo 60 
```

| ID                  | Группа | Название            | ID модели | Имя модели     | Иконка                                                              |
| ------------------- | ------ | ------------------- | --------- | -------------- | ------------------------------------------------------------------- |
| 10                  | 11     | Purple Dildo        | 321       | #gun\_dildo1   | <img src="/files/-MCUknr7iHgWGLVqwpcl" alt="" data-size="original"> |
| 11                  | 11     | White Dildo         | 322       | #gun\_dildo2   | <img src="/files/-MCUlIIQbes5u5r63rak" alt="" data-size="original"> |
| 12                  | 11     | Long White Dildo    | 323       | #gun\_vibe1    | <img src="/files/-MCUlN_OvwGBZxbe6bd0" alt="" data-size="original"> |
| 13                  | 11     | White Dildo 2       | 324       | #gun\_vibe2    | <img src="/files/-MCUlPR-ESJeP5X71kii" alt="" data-size="original"> |
| 14                  | 11     | Flowers             | 325       | #flowera       | <img src="/files/-MCUlSD2Wp5qC7DkmGOR" alt="" data-size="original"> |
| 15                  | 11     | Cane                | 326       | #gun\_cane     | <img src="/files/-MCUlbAkrdUjbpvyjJnL" alt="" data-size="original"> |
| **Melee**           |        |                     |           |                |                                                                     |
| 0                   | 1      | Unarmed             |           |                | <img src="/files/-MCUlog41eChCkM75Jd3" alt="" data-size="original"> |
| 1                   | 1      | Brass Knuckles      | 331       | #brassknuckle  | <img src="/files/-MCUm1D6WlBuGz2MOzkh" alt="" data-size="original"> |
| 2                   | 2      | Golf Club           | 333       | #golfclub      | <img src="/files/-MCUm3jFTziFIQ7VKLq9" alt="" data-size="original"> |
| 3                   | 2      | Night Stick         | 334       | #nitestick     | <img src="/files/-MCUm6Yna51VvYaG13XB" alt="" data-size="original"> |
| 4                   | 2      | Knife               | 335       | #knifecur      | <img src="/files/-MCUm8VHOpJTYd_q_4-R" alt="" data-size="original"> |
| 5                   | 2      | Baseball Bat        | 336       | #bat           | <img src="/files/-MCUmARH-uArfoX0WSeH" alt="" data-size="original"> |
| 6                   | 2      | Shovel              | 337       | #shovel        | <img src="/files/-MCUmCv5NsjRWtu2nsc2" alt="" data-size="original"> |
| 7                   | 2      | Pool cue            | 338       | #poolcue       | <img src="/files/-MCUmFS1sSjcxTBqdy7O" alt="" data-size="original"> |
| 8                   | 2      | Katana              | 339       | #katana        | <img src="/files/-MCUmHIk2sMAG-7wTyBV" alt="" data-size="original"> |
| 9                   | 2      | Chainsaw            | 341       | #chnsaw        | <img src="/files/-MCUmJ6jTrRqQorSSADh" alt="" data-size="original"> |
| **Projectiles**     |        |                     |           |                |                                                                     |
| 16                  | 9      | Grenades            | 342       | #grenade       | <img src="/files/-MCUmR77md1KTrMZT8Rp" alt="" data-size="original"> |
| 17                  | 9      | Tear Gas            | 343       | #teargas       | <img src="/files/-MCUmUB7NZDJ1lMDigen" alt="" data-size="original"> |
| 18                  | 9      | Molotovs            | 344       | #molotov       | <img src="/files/-MCUmWzz_lbBpniZ3tbE" alt="" data-size="original"> |
| **Handguns**        |        |                     |           |                |                                                                     |
| 22                  | 3      | Pistol              | 346       | #colt45        | <img src="/files/-MCUma9QgEEqzxnJB3DU" alt="" data-size="original"> |
| 23                  | 3      | Silenced Pistol     | 347       | #silenced      | <img src="/files/-MCUmcgcQYKpOLQ0Ab1J" alt="" data-size="original"> |
| 24                  | 3      | Desert Eagle        | 348       | #desert\_eagle | <img src="/files/-MCUmeSu5RxSyvFKoVau" alt="" data-size="original"> |
| **Shotguns**        |        |                     |           |                |                                                                     |
| 25                  | 4      | Shotgun             | 349       | #chromegun     | <img src="/files/-MCUmgpurWw9diGkk9xY" alt="" data-size="original"> |
| 26                  | 4      | Sawn Off Shotgun    | 350       | #sawnoff       | <img src="/files/-MCUmj04MeG1XPlDXz8J" alt="" data-size="original"> |
| 27                  | 4      | Combat Shotgun      | 351       | #shotgspa      | <img src="/files/-MCUml8qFfXr2YALvNlt" alt="" data-size="original"> |
| **Sub-Machineguns** |        |                     |           |                |                                                                     |
| 28                  | 5      | Micro Uzi (Mac 10)  | 352       | #micro\_uzi    | <img src="/files/-MCUmnRDqWMWwiDPKcMq" alt="" data-size="original"> |
| 29                  | 5      | MP5                 | 353       | #mp5lng        | <img src="/files/-MCUmstisUsHrfAdQXlN" alt="" data-size="original"> |
| 32                  | 5      | Tec9                | 372       | #tec9          | <img src="/files/-MCUmus3mLcYCYHgpQK-" alt="" data-size="original"> |
| **Machineguns**     |        |                     |           |                |                                                                     |
| 30                  | 6      | AK47                | 355       | #ak47          | <img src="/files/-MCUmwrPnt_aeLXKAGv-" alt="" data-size="original"> |
| 31                  | 6      | M4                  | 356       | #m4            | <img src="/files/-MCUmyg9ruMZnCXE93I9" alt="" data-size="original"> |
| **Rifles**          |        |                     |           |                |                                                                     |
| 33                  | 7      | Rifle               | 357       | #cuntgun       | <img src="/files/-MCUn1-5DQcNAQnr4GNN" alt="" data-size="original"> |
| 34                  | 7      | Sniper Rifle        | 358       | #sniper        | <img src="/files/-MCUn2qbO6CquSHxg5wu" alt="" data-size="original"> |
| **Specials**        |        |                     |           |                |                                                                     |
| 35                  | 8      | RPG                 | 359       | #rocketla      | <img src="/files/-MCUn6Jn78hFsow5trzY" alt="" data-size="original"> |
| 36                  | 8      | Missile Launcher    | 360       | #heatseek      | <img src="/files/-MCUnGlb2kxdGX6cjMIE" alt="" data-size="original"> |
| 37                  | 8      | Flame Thrower       | 361       | #flame         | <img src="/files/-MCUnJRpT25LwiepYnqL" alt="" data-size="original"> |
| 38                  | 8      | Minigun             | 362       | #minigun       | <img src="/files/-MCUnLQv-7ejw3mW8Vcp" alt="" data-size="original"> |
| 39                  | 9      | Sachet Charges      | 363       | #satchel       | <img src="/files/-MCUnO5vbpMDrvMVCfaX" alt="" data-size="original"> |
| 40                  | 13     | Detonator           | 364       | #bomb          | <img src="/files/-MCUnSMw-qNlmdRrI9UP" alt="" data-size="original"> |
| 41                  | 10     | Spray Paint         | 365       | #spraycan      | <img src="/files/-MCUnUk6R9VUwD9TsCh8" alt="" data-size="original"> |
| 42                  | 10     | Fire Extinguisher   | 366       | #fire\_ex      | <img src="/files/-MCUnWeL6b0Ql6-lfW9v" alt="" data-size="original"> |
| 43                  | 10     | Camera              | 367       | #camera        | <img src="/files/-MCUnYI4oH4QuBOKErHa" alt="" data-size="original"> |
| 44                  | 12     | Nightvision Goggles | 368       | #nvgoggles     | <img src="/files/-MCUnsQXFnvabRTBPsDN" alt="" data-size="original"> |
| 45                  | 12     | Thermal Goggles     | 369       | #irgoggles     | <img src="/files/-MCUnsQXFnvabRTBPsDN" alt="" data-size="original"> |
| 46                  | 12     | Parachute           | 371       | #gun\_para     | <img src="/files/-MCUo39oiZ2CYd4I384Z" alt="" data-size="original"> |
| **Other**           |        |                     |           |                |                                                                     |
|                     |        | jetpack             | 370       | #jetpack       | <img src="/files/-MCUo6GBSjcYS4iPuwJM" alt="" data-size="original"> |


# Персонажи

| ID      | Описание         |
| ------- | ---------------- |
| ANDRE   | Andre            |
| BBTHIN  | Big Bear (thin)  |
| BB      | Big Bear (fat)   |
| CAT     | Catalina         |
| CESAR   | Cesar            |
| COPGRL1 | The naked girl 1 |
| COPGRL2 | Girl 1           |
| CLAUDE  | Claude from GTA3 |
| CROGRL1 | The naked girl 2 |
| CROGRL2 | Girl 2           |
| DWAYNE  | Dwayne           |
| EMMET   | Emmet            |
| FORELLI | Forelli          |
| JANITOR | mechanic         |
| JETHRO  | Jethro           |
| JIZZY   | Jizzy            |
| HERN    | Hernandes        |
| GANGRL1 | The naked girl 3 |
| GANGRL2 | Girl 3           |
| GUNGRL1 | The naked girl 4 |
| GUNGRL2 | Girl 4           |
| KENDL   | Kendel           |
| MACCER  | Maccer           |
| MADDOGG | Mad Dog          |
| MECGRL1 | The naked girl 5 |
| MECGRL2 | Girl 5           |
| NURGRL1 | The naked nurse  |
| NURGRL2 | nurse            |
| NURGRL2 | nurse            |
| OGLOC   | OG Loc           |
| PAUL    | Kent Paul        |
| PULASKI | Pulaski          |
| ROSE    | Ken Rosenberg    |
| RYDER1  | Ryder (1)        |
| RYDER2  | Ryder (2)        |
| RYDER3  | Ryder (3)        |
| SINDACO | Sindaco          |
| SMOKE   | Big Smoke        |
| SMOKEV  | with body armour |
| SUZIE   | Suzie            |
| SWEET   | Sweet            |
| TBONE   | T Bone           |
| TENPEN  | Tenpeni          |
| TORINO  | Torino           |
| TRUTH   | righteous man    |
| WUZIMU  | Wu Zi            |
| ZERO    | Zero             |


# Погода

```
01b6: set_weather <id>
```

| ID | Описание         | Локация      |
| -- | ---------------- | ------------ |
| 0  | Extra Sunny      | Los Santos   |
| 1  | Sunny            | Los Santos   |
| 2  | Extra Sunny Smog | Los Santos   |
| 3  | Sunny Smog       | Los Santos   |
| 4  | Cloudy           | Los Santos   |
|    |                  |              |
| 5  | Sunny            | San Fierro   |
| 6  | Extra Sunny      | San Fierro   |
| 7  | Cloudy           | San Fierro   |
| 8  | Rainy            | San Fierro   |
| 9  | Foggy            | San Fierro   |
|    |                  |              |
| 10 | Sunny            | Las Venturas |
| 11 | Extra Sunny      | Las Venturas |
| 12 | Cloudy           | Las Venturas |
|    |                  |              |
| 13 | Extra Sunny      | Countryside  |
| 14 | Sunny            | Countryside  |
| 15 | Cloudy           | Countryside  |
| 16 | Rainy            | Countryside  |
|    |                  |              |
| 17 | Extra Sunny      | Desert       |
| 18 | Sunny            | Desert       |
| 19 | Sandstorm        | Desert       |
|    |                  |              |
| 20 | Underwater       |              |
| 21 | Extracolours 1   |              |
| 22 | Extracolours 2   |              |


# Прически

```
Player.SetClothes($PLAYER_CHAR, <текстура>, <модель>, <часть тела>)
```

| Текстура     | Модель    | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Описание       |
| ------------ | --------- | -------------------------------------------------------- | -------------- |
| afro         | afro      | 1                                                        | Afro           |
| afrobeard    | afro      | 1                                                        | Afro & Beard   |
| afroblond    | afro      | 1                                                        | Blonde Afro    |
| afrogoatee   | afro      | 1                                                        | Afro & Goatee  |
| afrotash     | afro      | 1                                                        | Afro & Stash   |
| bald         | head      | 1                                                        | Bald Head      |
| baldbeard    | head      | 1                                                        | Bald & Beard   |
| baldgoatee   | head      | 1                                                        | Bald & Goatee  |
| baldtash     | head      | 1                                                        | Bald & Stash   |
| beard        | head      | 1                                                        | Cesar & Beard  |
| cornrows     | cornrows  | 1                                                        | Cornrow        |
| cornrowsb    | cornrows  | 1                                                        | Blonde Cornrow |
| elvishair    | elvishair | 1                                                        | Elvis Hair     |
| flattop      | flattop   | 1                                                        | FlatTop        |
| goatee       | head      | 1                                                        | Cesar & Goatee |
| groovecut    | groovecut | 1                                                        | Groove Cut     |
| hairblond    | head      | 1                                                        | Blonde Hair    |
| hairblue     | head      | 1                                                        | Blue Hair      |
| hairgreen    | head      | 1                                                        | Green Hair     |
| hairpink     | head      | 1                                                        | Pink Hair      |
| hairred      | Head      | 1                                                        | Red Hair       |
| highafro     | highafro  | 1                                                        | High Afro      |
| highfade     | head      | 1                                                        | High Fade      |
| jhericurl    | jheri     | 1                                                        | Jheri Curl     |
| mohawk       | mohawk    | 1                                                        | Mowhawk        |
| mohawkbeard  | mohawk    | 1                                                        | Mohawk & Beard |
| mohawkblond  | mohawk    | 1                                                        | Blonde Mowhawk |
| mohawkpink   | mohawk    | 1                                                        | Pink Mowhawk   |
| player\_face | head      | 1                                                        | Cesar          |
| slope        | slope     | 1                                                        | Slope          |
| tash         | head      | 1                                                        | Cesar & Stash  |
| tramline     | tramline  | 1                                                        | Detail Cut     |
| wedge        | wedge     | 1                                                        | Wedge          |


# Системы частиц

```
064B: 0@ = create_particle <эффект> at 2048.0 1600.0 32.0 1
```

| Эффект                    | Описание                                                    |
| ------------------------- | ----------------------------------------------------------- |
| "blood\_heli"             | Кровавый взрыв                                              |
| "boat\_prop"              | прибой                                                      |
| "camflash"                | Маленькая вспышка                                           |
| "carwashspray"            | Пар, как на автомойке.                                      |
| "cement"                  | цемент                                                      |
| "cloudfast"               | Летающие облака                                             |
| "coke\_puff"              | Затяжка коксом                                              |
| "coke\_trail"             | Выливающаяся вода                                           |
| "cigarette\_smoke"        | Дым от сигареты                                             |
| "explosion\_barrel"       | Взрыв и осколки ящика                                       |
| "explosion\_crate"        | Взрыв и осколки большого ящика                              |
| "explosion\_door"         | Дым с искрами                                               |
| "exhale"                  | Маленький дым                                               |
| "explosion\_fuel\_car"    | Взрыв, как от машины                                        |
| "explosion\_large"        | Большой взрыв                                               |
| "explosion\_medium"       | Средний взрыв                                               |
| "explosion\_molotov"      | Взрыв, как от коктейля Молотова                             |
| "explosion\_small"        | Небольшой взрыв                                             |
| "explosion\_tiny"         | Маленький взрыв                                             |
| "extinguisher"            | Пена огнетушителя                                           |
| "flame"                   | Небольшой огонек                                            |
| "fire"                    | огонь                                                       |
| "fire\_med"               | Средний огонь                                               |
| "fire\_large"             | Большой огонь                                               |
| "flamethrower"            | Огонь огнемета                                              |
| "fire\_bike"              | Огонь, как от горящего мотоцикла                            |
| "fire\_car"               | Огонь, как от горящей машины                                |
| "gunflash"                | Как вылетает пуля из ствола                                 |
| "gunsmoke"                | Дым от вылетевшей пули                                      |
| "insects"                 | насекомые                                                   |
| "heli\_dust"              | Пыль, как от вертолета                                      |
| "jetpack"                 | Огонь, как из сопел джетпака                                |
| "jetthrust"               | Огонь из глушителя машины, как во время использования азота |
| "nitro"                   | нитро                                                       |
| "molotov\_flame"          | Огонь от коктейля Молотова                                  |
| "overheat\_car"           | Дымящаяся машина                                            |
| "overheat\_car\_electric" | Поврежденная электро-машина                                 |
| "prt\_boatsplash"         | пена                                                        |
| "prt\_cardebris"          | Осколки от коробки                                          |
| "prt\_collisionsmoke"     | Плотный белый дым                                           |
| "prt\_glass"              | Разбивающееся стекло                                        |
| "prt\_gunshell"           | Гильзы                                                      |
| "prt\_sand"               | Песок, который рассыпался                                   |
| "prt\_sand2"              | Немного меньше песка чем в предыдущей анимации              |
| "prt\_smokeII\_3\_expand" | Серый дым                                                   |
| "prt\_smoke\_huge"        | Много серого дыма                                           |
| "prt\_spark"              | Искры                                                       |
| "prt\_spark\_2"           | Большие искры                                               |
| "prt\_splash"             | Всплеск                                                     |
| "prt\_wake"               | Волна                                                       |
| "prt\_watersplash"        | Брызги                                                      |
| "prt\_wheeldirt"          | Брызги из под колес машины                                  |
| "petrolcan"               | Струя, как писание                                          |
| "puke"                    | Рыгачка (блевотина)                                         |
| "riot\_smoke"             | Много дыма                                                  |
| "spraycan"                | Спрей зеленой краски                                        |
| "smoke30lit"              | Дым                                                         |
| "smoke30m"                | Густой дым                                                  |
| "smoke50lit"              | Еще более густой дым                                        |
| "shootlight"              | Фейерверк                                                   |
| "smoke\_flare"            | Тоже фейерверк                                              |
| "tank\_fire"              | Огонь от выстрела из танка                                  |
| "teargas"                 | Газ, как от дымовой гранаты                                 |
| "teargasAD"               | Газ, как от малой дымовой гранаты                           |
| "tree\_hit\_fir"          | Падение листьев                                             |
| "tree\_hit\_palm"         | Падение пары больших листьев                                |
| "vent"                    | Медленно рассеивающийся дым                                 |
| "vent2"                   | Практически тоже самое                                      |
| "water\_hydrant"          | Большой поток воды                                          |
| "water\_ripples"          | Круги на воде                                               |
| "water\_speed"            | Большие брызги от воды                                      |
| "water\_splash"           | Маленькие брызги от воды                                    |
| "water\_splash\_big"      | Средние брызги                                              |
| "water\_splsh\_sml"       | Брызги, только их почти не видно                            |
| "water\_swim"             | Маленькие брызги при плавании                               |
| "waterfall\_end"          | Много пара                                                  |
| "water\_fnt\_tme"         | Большой поток воды                                          |
| "water\_fountain"         | Вода фонтана                                                |
| "wallbust"                | Исчезающая куча пара                                        |
| "WS\_factorysmoke"        | Дым как от труб                                             |


# Статистика

С `0` до `81` - дробные значения; `82+` - целые значения.

| ID  | Описание                                             |
| --- | ---------------------------------------------------- |
| 0   | Progress made                                        |
| 1   | Total progress                                       |
| 2   | Furthest Hoop                                        |
| 3   | Distance travelled on foot                           |
| 4   | Distance travelled by car                            |
| 5   | Distance travelled by motorbike                      |
| 6   | Distance travelled by boat                           |
| 7   | Distance travelled by golf cart                      |
| 8   | Distance travelled by helicopter                     |
| 9   | Distance travelled by plane                          |
| 10  | Longest Wheelie distance                             |
| 11  | Longest Stoppie distance                             |
| 12  | Longest 2 wheels distance                            |
| 13  | Weapon Budget                                        |
| 14  | Fashion Budget                                       |
| 15  | Property Budget                                      |
| 16  | Auto Repair and Painting Budget                      |
| 17  | Longest Wheelie time                                 |
| 18  | Longest Stoppie time                                 |
| 19  | Longest 2 wheels time                                |
| 20  | Food Budget                                          |
| 21  | Fat                                                  |
| 22  | Stamina                                              |
| 23  | Muscle                                               |
| 24  | Max Health                                           |
| 25  | Sex appeal                                           |
| 26  | Distance travelled by swimming                       |
| 27  | Distance travelled by bicycle                        |
| 28  | Distance travelled on treadmill                      |
| 29  | Distance travelled on exercise bike                  |
| 30  | Tattoo budget                                        |
| 31  | Hairdressing budget                                  |
| 32  | Girlfriend budget                                    |
| 33  | Prostitute budget                                    |
| 34  | Furniture budget                                     |
| 35  | Money spent gambling                                 |
| 36  | Money made from pimping                              |
| 37  | Money won gambling                                   |
| 38  | Biggest gambling win                                 |
| 39  | Biggest gambling loss                                |
| 40  | Largest burglary swag                                |
| 41  | Money made from burglary                             |
| 42  | Money spent building property                        |
| 43  | unused                                               |
| 44  | Longest treadmill time                               |
| 45  | Longest exercise bike time                           |
| 46  | Heaviest weight on bench press                       |
| 47  | Heaviest weight on dumbbells                         |
| 48  | Best time in 8-Track                                 |
| 49  | BMX best time                                        |
| 50  | Lightest weight                                      |
| 51  | Longest chase time with 5 or more stars              |
| 52  | Last chase time with 5 or more stars                 |
| 53  | Wage bill                                            |
| 54  | Strip club budget                                    |
| 55  | Car modification budget                              |
| 56  | Time spent shopping                                  |
| 57  | Time spent gambling                                  |
| 58  | Time spent on longest mission                        |
| 59  | Time spent on quickest mission                       |
| 60  | Average mission time                                 |
| 61  | Drugs budget                                         |
| 62  | Total shopping budget                                |
| 63  | Time spent underwater                                |
| 64  | Total respect                                        |
| 65  | Girlfriend respect                                   |
| 66  | Clothes respect                                      |
| 67  | Fitness respect                                      |
| 68  | Respect                                              |
| 69  | Pistol Skill                                         |
| 70  | Silenced Pistol Skill                                |
| 71  | Desert Eagle Skill                                   |
| 72  | Shotgun Skill                                        |
| 73  | Sawn-Off Shotgun Skill                               |
| 74  | Combat Shotgun Skill                                 |
| 75  | Machine Pistol Skill                                 |
| 76  | SMG Skill                                            |
| 77  | AK-47 Skill                                          |
| 78  | M4 Skill                                             |
| 79  | Rifle Skill                                          |
| 80  | Appearance                                           |
| 81  | Gambling                                             |
| 82  | 119    unused                                        |
| 120 | People wasted by others                              |
| 121 | People you've wasted                                 |
| 122 | Road Vehicles destroyed                              |
| 123 | Boats destroyed                                      |
| 124 | Planes & Helicopters destroyed                       |
| 125 | Cost of property damaged                             |
| 126 | Bullets fired                                        |
| 127 | Kgs of explosives used                               |
| 128 | Bullets that hit                                     |
| 129 | Tires popped with gunfire                            |
| 130 | Number of headshots                                  |
| 131 | Total number of wanted stars attained                |
| 132 | Total number of wanted stars evaded                  |
| 133 | Times busted                                         |
| 134 | Days passed in game                                  |
| 135 | Number of hospital visits                            |
| 136 | Safehouse visits                                     |
| 137 | Times cheated                                        |
| 138 | Vehicle Resprays                                     |
| 139 | Maximum INSANE Jump distance                         |
| 140 | Maximum INSANE Jump height                           |
| 141 | Maximum INSANE Jump flips                            |
| 142 | Maximum INSANE Jump rotation                         |
| 143 | Best INSANE stunt awarded                            |
| 144 | Unique Jumps found                                   |
| 145 | Unique Jumps done                                    |
| 146 | Mission attempts                                     |
| 147 | Missions passed                                      |
| 148 | Total number of missions in game                     |
| 149 | Cash made in a Taxi                                  |
| 150 | Passengers dropped off                               |
| 151 | People saved in an Ambulance                         |
| 152 | Criminals killed on Vigilante Mission                |
| 153 | Total fires extinguished                             |
| 154 | Packages Delivered                                   |
| 155 | Assassinations                                       |
| 156 | Last dance score                                     |
| 157 | Highest Vigilante Mission level                      |
| 158 | Highest Paramedic Mission level                      |
| 159 | Highest Firefighter Mission level                    |
| 160 | Driving skill                                        |
| 161 | Number of Truck missions passed                      |
| 162 | Money made in Truck                                  |
| 163 | Recruited gang members killed                        |
| 164 | Armor                                                |
| 165 | Energy                                               |
| 166 | Photographs Taken                                    |
| 167 | Rampages attempted                                   |
| 168 | Rampages passed                                      |
| 169 | Flight time                                          |
| 170 | Times drowned                                        |
| 171 | Number of girls pimped                               |
| 172 | Best position in 8-Track                             |
| 173 | Time on jetpack                                      |
| 174 | Shooting range levels passed                         |
| 175 | Most cars parked on 'Valet Parking'                  |
| 176 | Kills since last checkpoint                          |
| 177 | Total legitimate kills                               |
| 178 | Number of 'Bloodring' kills                          |
| 179 | Total time in bloodring                              |
| 180 | No more hurricanes Flag                              |
| 181 | City unlocked                                        |
| 182 | Number of Police bribes                              |
| 183 | Number of cars stolen                                |
| 184 | Current number of girlfriends                        |
| 185 | Number of disastrous dates                           |
| 186 | Number of girls dated                                |
| 187 | Number of times scored with a girl                   |
| 188 | Number of successful dates                           |
| 189 | Number of girls dumped                               |
| 190 | Number of prostitutes visited                        |
| 191 | Number of houses burgled                             |
| 192 | Number of safes cracked                              |
| 193 | Burgular status                                      |
| 194 | Number of stolen items sold                          |
| 195 | Number of eight balls in pool                        |
| 196 | Total number of wins playing pool                    |
| 197 | Total number of losses playing pool                  |
| 198 | Times visited the gym                                |
| 199 | Body type                                            |
| 200 | Number of meals eaten                                |
| 201 | Money made in Quarry                                 |
| 202 | Time taken to Complete Quarry                        |
| 203 | Number of furniture purchased                        |
| 204 | Favorite console game                                |
| 205 | Highest civilian peds killed on Rampage              |
| 206 | Highest police peds killed on Rampage                |
| 207 | Highest civilian vehicles destroyed on Rampage       |
| 208 | Highest police vehicles destroyed on Rampage         |
| 209 | Highest number of tanks destroyed on Rampage         |
| 210 | Pimping level                                        |
| 211 | Kickstart best score                                 |
| 212 | Best lap time in 8-Track                             |
| 213 | Number of vehicles exported                          |
| 214 | Number of vehicles imported                          |
| 215 | Highest basketball score                             |
| 216 | Fires started                                        |
| 217 | Amount of drugs sold                                 |
| 218 | Amount of drugs bought                               |
| 219 | Best lap time in dirt track                          |
| 220 | Best time in dirt track                              |
| 221 | Best position in dirt track                          |
| 222 | NRG-500 best time                                    |
| 223 | Flying skill                                         |
| 224 | Respect Mission                                      |
| 225 | Lung capacity                                        |
| 226 | Game gore rating                                     |
| 227 | Game sex rating                                      |
| 228 | Respect Mission Total                                |
| 229 | Bike skill                                           |
| 230 | Cycling skill                                        |
| 231 | Snapshots taken                                      |
| 232 | Total snapshots                                      |
| 233 | Luck                                                 |
| 234 | Territories taken over                               |
| 235 | Territories lost                                     |
| 236 | Territories held                                     |
| 237 | Highest number of territories held                   |
| 238 | Gang members recruited                               |
| 239 | Enemy gang members killed                            |
| 240 | Friendly gang members killed                         |
| 241 | Horseshoes collected                                 |
| 242 | Total horseshoes                                     |
| 243 | Oysters collected                                    |
| 244 | Total oysters                                        |
| 245 | Calories                                             |
| 246 | 2 Player Rampage best time                           |
| 247 | 2 Player Car Rampage best time                       |
| 248 | 2 Player On Foot Rampage best time                   |
| 249 | 2 Player Chopper Rampage best time                   |
| 250 | 2 Player Bike Rampage best time                      |
| 251 | 'Keepie Uppy' best time                              |
| 252 | Progress with Denise                                 |
| 253 | Progress with Michelle                               |
| 254 | Progress with Helena                                 |
| 255 | Progress with Barbara                                |
| 256 | Progress with Katie                                  |
| 257 | Progress with Millie                                 |
| 258 | Best position in Lowrider Race                       |
| 259 | Best time in Lowrider Race                           |
| 260 | Best position in Little Loop                         |
| 261 | Best time in Little Loop                             |
| 262 | Best position in Backroad Wanderer                   |
| 263 | Best time in Backroad Wanderer                       |
| 264 | Best position in City Circuit                        |
| 265 | Best time in City Circuit                            |
| 266 | Best position in Vinewood                            |
| 267 | Best time in Vinewood                                |
| 268 | Best position in Freeway                             |
| 269 | Best time in Freeway                                 |
| 270 | Best position in Into the Country                    |
| 271 | Best time in Into the Country                        |
| 272 | Best position in Badlands A                          |
| 273 | Best time in Badlands A                              |
| 274 | Best position in Badlands B                          |
| 275 | Best time in Badlands B                              |
| 276 | Best position in Dirtbike Danger                     |
| 277 | Best time in Dirtbike Danger                         |
| 278 | Best position in Bandito County                      |
| 279 | Best time in Bandito County                          |
| 280 | Best position in Go-Go-Kart                          |
| 281 | Best time in Go-Go-Kart                              |
| 282 | Best position in San Fierro Fastlane                 |
| 283 | Best time in San Fierro Fastlane                     |
| 284 | Best position in San Fierro Hills                    |
| 285 | Best time in San Fierro Hills                        |
| 286 | Best position in Country Endurance                   |
| 287 | Best time in Country Endurance                       |
| 288 | Best position in SF to LV                            |
| 289 | Best time in SF to LV                                |
| 290 | Best position in Dam Rider                           |
| 291 | Best time in Dam Rider                               |
| 292 | Best position in Desert Tricks                       |
| 293 | Best time in Desert Tricks                           |
| 294 | Best position in LV Ringroad                         |
| 295 | Best time in LV Ringroad                             |
| 296 | Best time in World War Aces                          |
| 297 | Best time in Barnstorming                            |
| 298 | Best time in Military Service                        |
| 299 | Best time in Chopper Checkpoint                      |
| 300 | Best time in Whirly Bird Waypoint                    |
| 301 | Best time in Heli Hell                               |
| 302 | Drive-thru mission accomplished                      |
| 303 | Management Issues mission accomplished               |
| 304 | 555 WE TIP mission accomplished                      |
| 305 | Yay Ka-Boom-Boom mission accomplished                |
| 306 | Fish in a Barrel mission accomplished                |
| 307 | Breaking the Bank at Caligula's mission accomplished |
| 308 | A Home In The Hills mission accomplished             |
| 309 | maybe set riot mode                                  |
| 310 | Ryder's mission Robbing Uncle Sam accomplished       |
| 311 | Mike Toreno mission accomplished                     |
| 312 | Architectural Espionage mission accomplished         |
| 313 | Jizzy mission accomplished                           |
| 314 | Reuniting the Families mission accomplished          |
| 315 | Small Town Bank mission accomplished                 |
| 316 | Photo Opportunity mission accomplished               |
| 317 | Don Peyote mission accomplished                      |
| 318 | Local Liquor Store mission accomplished              |
| 319 | Badlands mission accomplished                        |
| 320 | Playing time                                         |
| 321 | Hidden Packages found                                |
| 322 | Tags sprayed                                         |
| 323 | Least favorite gang                                  |
| 324 | Gang members wasted                                  |
| 325 | Criminals wasted                                     |
| 326 | Most Favorite Radio Station                          |
| 327 | Least Favorite Radio Station                         |
| 328 | Current weapon skill                                 |
| 329 | Weapon skill levels                                  |
| 330 | Pilot ranking                                        |
| 331 | Strongest Gang                                       |
| 332 | 2nd strongest gang                                   |
| 333 | 3rd strongest gang                                   |
| 334 | Money lost gambling                                  |
| 335 | Riot Mission accomplished                            |
| 336 | Gang strength                                        |
| 337 | Territory under control                              |
| 338 | Are you going to San Fierro? mission accomplished    |
| 339 | High Noon mission accomplished                       |
| 340 | The Green Sabre mission accomplished                 |
| 341 | maybe Catalina meeting                               |
| 342 | maybe Wu Zi meeting                                  |


# Татуировки

```
Player.SetClothes($PLAYER_CHAR, <текстура>, <модель>, <часть тела>)
```

## Левое предплечье​ <a href="#lower-left-arm" id="lower-left-arm"></a>

| Текстура | Модель  | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Название | Изображение                                                                                                                                                                                                                    |
| -------- | ------- | -------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 4weed    | 4WEED   | 4                                                        | Weed     | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcLxFYteXFowakvUsT%2F4weed.gif?alt=media\&token=ae763555-73c5-415d-8cfc-97083d6ed706)​   |
| 4rip     | 4RIP    | 4                                                        | Grave    | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcMR9fYYQN381K6jEI%2F4rip.gif?alt=media\&token=3aa5bb87-39aa-45cf-b003-2cdc14df35e8)​    |
| 4spider  | 4SPIDER | 4                                                        | Spider   | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcMSmC2lUnxZ3wECHf%2F4spider.gif?alt=media\&token=7a5cf0df-ac48-4685-a5a4-c1b316c65351)​ |

## Левое плечо <a href="#upper-left-arm" id="upper-left-arm"></a>

| Текстура | Модель  | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Название | Изображение                                                                                                                                                                                                                    |
| -------- | ------- | -------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 5gun     | 5GUN    | 5                                                        | Gun      | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcMUZcTf7zxgStVPgz%2F5gun.gif?alt=media\&token=b094129c-eac0-40d6-8b0a-9a0113ff4ceb)​    |
| 5cross   | 5CROSS  | 5                                                        | Cross    | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcQl7oCKTpjW3m3AyS%2F5cross.gif?alt=media\&token=7f96540a-3d17-4b5d-a72f-4ba1a43da4ac)​  |
| 5cross2  | 5CROSS2 | 5                                                        | Rose     | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcQfZDsKEnkFXRFLGn%2F5cross2.gif?alt=media\&token=d48d1485-3c01-401f-8fdd-c05ef4474e7e)​ |
| 5cross3  | 5CROSS3 | 5                                                        | Clown    | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcQpKFr1DamEu7I8D6%2F5cross3.gif?alt=media\&token=30c4715d-f73a-4a35-a9a2-e3e824f9f5fc)​ |

## Правое плечо <a href="#upper-right-arm" id="upper-right-arm"></a>

| Текстура | Модель  | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Название | Изображение                                                                                                                                                                                                                    |
| -------- | ------- | -------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 6aztec   | 6AZTEC  | 6                                                        | Aztec    | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcQsxOXDMsY8DRKuxi%2F6aztec.gif?alt=media\&token=16388b07-77c7-4203-be9e-0325c295f54e)​  |
| 6crown   | 6CROWN  | 6                                                        | Web      | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcQydtvwUp4ojd8eOo%2F6crown.gif?alt=media\&token=852d6c63-f2c4-46d7-b23b-728f3dbfa9fb)​  |
| 6clown   | 6CLOWN  | 6                                                        | Clown    | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcR5r0jjQhYEL86MOb%2F6clown.gif?alt=media\&token=8e6f1f6b-7915-4d52-9686-b86eafae958d)​  |
| 6africa  | 6AFRICA | 6                                                        | Africa   | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcR7pgX43HqlYt9_CQ%2F6africa.gif?alt=media\&token=bff45be8-0e2c-4079-b5b0-3379f627621e)​ |

## Правое предплечье <a href="#lower-right-arm" id="lower-right-arm"></a>

| Текстура | Модель  | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Название | Изображение                                                                                                                                                                                                                    |
| -------- | ------- | -------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 7cross   | 7CROSS  | 7                                                        | Cross    | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcRBbaKyXc7j4TYU4Z%2F7cross.gif?alt=media\&token=31cb23d3-ceaa-42e6-9912-e3462f7f118f)​  |
| 7cross2  | 7CROSS2 | 7                                                        | Cross    | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcRDO930TVRyKusJtX%2F7cross2.gif?alt=media\&token=919d18de-ee89-4c61-afbf-807f1ed8d542)​ |
| 7cross3  | 7CROSS3 | 7                                                        | Cross    | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcRGAtigkzpQtgCNOu%2F7cross3.gif?alt=media\&token=fb615ed4-8ce9-4ebc-976e-f96e002e1a6d)​ |
| 7mary    | 7MARY   | 7                                                        | Mary     | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcRKvJ40few6X4K1Nw%2F7mary.gif?alt=media\&token=bbae07e4-c370-40ee-ab9c-ffe3949ae83f)​   |

## Верх спины <a href="#back-top" id="back-top"></a>

| Текстура  | Модель  | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Название    | Изображение                                                                                                                                                                                                                    |
| --------- | ------- | -------------------------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 8sa       | 8SA     | 8                                                        | Grove St .  | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcRR2a7aWbKRtjNyxA%2F8sa.gif?alt=media\&token=d34173f5-d56f-4e92-bc04-d4553ec9cd55)​     |
| 8sa2      | 8SA2    | 8                                                        | San Andreas | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcRUXegN9mqBBIYPCq%2F8sa2.gif?alt=media\&token=51f199c2-9936-42b0-ba94-30d5289889fe)​    |
| 8sa3      | 8SA3    | 8                                                        | San Fierro  | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcRXu7Gtmk_kL4bD1h%2F8sa3.gif?alt=media\&token=b227fb9f-cf90-48f3-a7ea-01e15e497e5b)​    |
| 8westside | 8WESTSD | 8                                                        | Westside    | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcR_MdgPquZmOnzQa6%2F8westsd.gif?alt=media\&token=09425c1b-186e-4ad2-867e-9992b6d8e291)​ |
| 8santos   | 8SANTOS | 8                                                        | Los Santos  | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcRb4zxx2gP_FliWSO%2F8santos.gif?alt=media\&token=b799e361-1003-4e3d-a3bf-d426aa5f9f93)​ |
| 8poker    | 8POKER  | 8                                                        | Card        | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcRdSP7FL6_yxpLlXc%2F8poker.gif?alt=media\&token=4e51117d-c371-4416-85fa-df4505fd70db)​  |
| 8gun      | 8GUN    | 8                                                        | Gun         | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcRfW2i8Mg4z0FBhxW%2F8gun.gif?alt=media\&token=866f7c01-a149-45d7-9e74-ce5963946511)​    |

## Левая часть груди <a href="#left-chest" id="left-chest"></a>

| Текстура | Модель | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Название | Изображение                                                                                                                                                                                                                   |
| -------- | ------ | -------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 9crown   | 9CROWN | 9                                                        | Crown    | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcRifacIIEL3iqcm9u%2F9crown.gif?alt=media\&token=00e5e931-9660-4f31-a65d-d2078b955e5f)​ |
| 9gun     | 9GUN   | 9                                                        | Gun      | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWKiEUsgowDqLWmXf%2F9gun.gif?alt=media\&token=2130117f-d0a2-48e8-8963-b3ea43c697d6)​   |
| 9gun2    | 9GUN2  | 9                                                        | Gun      | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWMu4JkL9dwL6hBJp%2F9gun2.gif?alt=media\&token=ca44443e-a8f3-49ad-903d-e1d0eae01631)​  |
| 9homeboy | 9HOMBY | 9                                                        | Homeboy  | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWPJ1cGz2zGPaqc-H%2F9homby.gif?alt=media\&token=d129d887-610a-4a83-8b08-61fc1f08fabd)​ |
| 9bullet  | 9BULLT | 9                                                        | Bullet   | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWSLQVk3_QY0Ws-fW%2F9bullt.gif?alt=media\&token=2abaa79c-9cdd-4c45-b90f-fe420367b402)​ |
| 9rasta   | 9RASTA | 9                                                        | Rasta    | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWUyWRcMSz6eaRbYE%2F9rasta.gif?alt=media\&token=e0dc5b55-27b0-4df3-abd0-7201eaaccb2d)​ |

## Правая часть груди <a href="#right-chest" id="right-chest"></a>

| Текстура | Модель | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Название   | Изображение                                                                                                                                                                                                                   |
| -------- | ------ | -------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 10ls     | 10LS   | 10                                                       | Los Santos | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWYwR5p7P_lAcCeAg%2F10ls.gif?alt=media\&token=5f29c224-483f-4fc3-8b4a-ea6ed24ad3ee)​   |
| 10ls2    | 10LS2  | 10                                                       | Los Santos | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWa-y9Ou4HK1kdxMN%2F10ls2.gif?alt=media\&token=f05bc5d3-ef1f-4d48-98d5-1704c8be34c2)​  |
| 10ls3    | 10LS3  | 10                                                       | Los Santos | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWbwlDEkIaKysZGMj%2F10ls3.gif?alt=media\&token=10eab0b0-b9cc-4dd5-8376-858daa1ac475)​  |
| 10ls4    | 10LS4  | 10                                                       | Los Santos | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWe7Q5aGuGRs4kDyU%2F10ls4.gif?alt=media\&token=da8a125c-d2e4-494e-aef5-fccc404bf153)​  |
| 10ls5    | 10LS5  | 10                                                       | Los Santos | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWftGezsR3FHUzIFu%2F10ls5.gif?alt=media\&token=9922a197-db04-4f7a-b41d-7b51c796dc35)​  |
| 10og     | 10OG   | 10                                                       | O.G.       | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWiquP321m73BlvLX%2F10og.gif?alt=media\&token=7cee03e9-c2b8-4a9c-bc20-d7892223b46a)​   |
| 10weed   | 10WEED | 10                                                       | Grove      | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWmcn7wPMg6ja_ti0%2F10weed.gif?alt=media\&token=d24f153b-8d67-4ab3-ac3e-aaebae04eba5)​ |

## Живот <a href="#stomach" id="stomach"></a>

| Текстура   | Модель  | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Название   | Изображение                                                                                                                                                                                                                    |
| ---------- | ------- | -------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 11grove    | 11GROVE | 11                                                       | Grove      | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWrYg8V8wlKyMQDTY%2F11grove.gif?alt=media\&token=6ac659e6-fa22-45f8-9805-b0e839fe9f53)​ |
| 11grove2   | 11GROV2 | 11                                                       | Grove      | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWu3zg1QDonU6un4U%2F11grov2.gif?alt=media\&token=7468206b-ca23-4424-bfc2-6e27ffda2e68)​ |
| 11grove3   | 11GROV3 | 11                                                       | Grove      | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWwgbfE4vk2ivCTNN%2F11grov3.gif?alt=media\&token=e68ca13a-896a-415c-8d78-22beae686d1f)​ |
| 11dice     | 11DICE  | 11                                                       | Dice       | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcWymB09iSQJq4ep7M%2F11dice.gif?alt=media\&token=c9cdae29-f8c7-46d5-9ef6-e8c4fe848548)​  |
| 11dice2    | 11DICE2 | 11                                                       | Dice       | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcX0NPuFj2D8DxSuvP%2F11dice2.gif?alt=media\&token=a10bf158-fe89-41fe-b520-89aefc21b4a1)​ |
| 11jail     | 11JAIL  | 11                                                       | Jail       | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcX2vGy4HGDelVJqNS%2F11jail.gif?alt=media\&token=f48b332e-5f98-46ae-991f-c8de995c8d3b)​  |
| 11godsgift | 11GGIFT | 11                                                       | God's Gift | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcX5S3OH16PlBHNSFZ%2F11ggift.gif?alt=media\&token=96b1e3db-bc40-44fb-b31a-f00830bda062)​ |

## Низ спины <a href="#lower-back" id="lower-back"></a>

| Текстура   | Модель  | [Часть тела](/ru/scm-documentation/sa/player-body-parts) | Название   | Изображение                                                                                                                                                                                                                    |
| ---------- | ------- | -------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 12angels   | 12ANGEL | 12                                                       | Angel      | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcX9O_fJ5XMmLE6_9w%2F12angel.gif?alt=media\&token=bf032adc-0f59-4138-b081-527dbd168eb7)​ |
| 12mayabird | 12MAYBR | 12                                                       | Mayan Bird | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcXC5Imj7HMhz_T6OP%2F12maybr.gif?alt=media\&token=e04787b2-15b2-4c9b-b3d8-84753f015795)​ |
| 12dagger   | 12DAGER | 12                                                       | Dagger     | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcXDjntjagFryTOtAQ%2F12dager.gif?alt=media\&token=14238550-a30d-4fe0-9158-891525e89edd)​ |
| 12bandit   | 12BNDIT | 12                                                       | Masks      | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcXGsrXMYj9iy7LzNz%2F12bndit.gif?alt=media\&token=02a49c78-b87d-40e1-ae38-671244f8b9c5)​ |
| 12cross7   | 12CROSS | 12                                                       | Cross      | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcXItO9j8sD585rJho%2F12cross.gif?alt=media\&token=63b8e8f4-d339-4491-adb5-be57f28c1c9f)​ |
| 12mayaface | 12MYFAC | 12                                                       | Mayan Face | ​![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-M0dALM7uq5_eDYhSBjl%2F-MCcLXDpy1DHMDpnLLsY%2F-MCcXKiziO7B4pX3M2y9%2F12myfac.gif?alt=media\&token=08393f3f-123e-496d-9245-aba7f479f4a2)  |


# Типы пешеходов

```
009A: $Actor = create_actor <тип> #MODEL at X Y Z 
```

| Тип | Описание                      |
| --- | ----------------------------- |
| 0   | PLAYER1                       |
| 1   | PLAYER2                       |
| 2   | PLAYER\_NETWORK               |
| 3   | PLAYER\_UNUSED                |
| 4   | CIVMALE                       |
| 5   | CIVFEMALE                     |
| 6   | COP                           |
| 7   | GANG1 (Ballas)                |
| 8   | GANG2 (Grove Street Families) |
| 9   | GANG3 (Los Santos Vagos)      |
| 10  | GANG4 (San Fierro Rifa)       |
| 11  | GANG5 (Da Nang Boys)          |
| 12  | GANG6 (Mafia)                 |
| 13  | GANG7 (Mountain Cloud Triad)  |
| 14  | GANG8 (Varrio Los Aztecas)    |
| 15  | GANG9 (не используется)       |
| 16  | GANG10 (не используется)      |
| 17  | DEALER                        |
| 18  | MEDIC                         |
| 19  | FIREMAN                       |
| 20  | CRIMINAL                      |
| 21  | BUM\*                         |
| 22  | PROSTITUTE                    |
| 23  | SPECIAL                       |
| 24  | MISSION1                      |
| 25  | MISSION2                      |
| 26  | MISSION3                      |
| 27  | MISSION4                      |
| 28  | MISSION5                      |
| 29  | MISSION6                      |
| 30  | MISSION7                      |
| 31  | MISSION8                      |


# Типы поездов

```
06D8: 1@ = create_train_at 2278.1771 -1144.8823 27.5108 type <тип> direction 1
```

| Тип         | Локомотив | Вагон 1   | Вагон 2   | Вагон 3   | Вагон 4   | Вагон 5   |
| ----------- | --------- | --------- | --------- | --------- | --------- | --------- |
| 0:          | #FREIGHT  | #FREIFLAT | #FREIFLAT | #FREIFLAT | #FREIFLAT |           |
| 1,2,4,7,11: | #STREAK   | #STREAKC  | #STREAKC  |           |           |           |
| 3:          | #FREIGHT  | #FREIFLAT | #FREIFLAT | #FREIFLAT |           |           |
| 5:          | #STREAK   | #STREAKC  | #STREAKC  | #STREAKC  |           |           |
| 6:          | #FREIGHT  | #FREIFLAT | #FREIFLAT |           |           |           |
| 8:          | #TRAM     | #TRAM     |           |           |           |           |
| 9,14:       | #TRAM     |           |           |           |           |           |
| 10:         | #FREIGHT  | #FREIFLAT |           |           |           |           |
| 12:         | #FREIGHT  | #FREIFLAT | #FREIFLAT | #FREIFLAT | #FREIGHT  |           |
| 13:         | #FREIGHT  | #FREIFLAT | #FREIFLAT | #FREIFLAT | #FREIFLAT | #FREIFLAT |
| 15:         | #STREAK   |           |           |           |           |           |


# Части тела игрока

```
087B: set_player $PLAYER_CHAR texture "VEST" model "VEST" body_part <id>
```

| ID | Название                                                            | Описание           |
| -- | ------------------------------------------------------------------- | ------------------ |
| 0  | [Torso](/ru/scm-documentation/sa/clothes#verkhnyaya-odezhda)        | тело               |
| 1  | [Head](/ru/scm-documentation/sa/haircuts)                           | голова             |
| 2  | [Legs](/ru/scm-documentation/sa/clothes#shtany)                     | ноги               |
| 3  | [Shoes](/ru/scm-documentation/sa/clothes#obuv)                      | обувь              |
| 4  | [Lower left arm](/ru/scm-documentation/sa/tattoos#lower-left-arm)   | левое предплечье   |
| 5  | [Upper left arm](/ru/scm-documentation/sa/tattoos#upper-left-arm)   | левое плечо        |
| 6  | [Upper right arm](/ru/scm-documentation/sa/tattoos#upper-right-arm) | правое плечо       |
| 7  | [Lower right arm](/ru/scm-documentation/sa/tattoos#lower-right-arm) | правое предплечье  |
| 8  | [Back top](/ru/scm-documentation/sa/tattoos#back-top)               | верх спины         |
| 9  | [Left chest](/ru/scm-documentation/sa/tattoos#left-chest)           | левая часть груди  |
| 10 | [Right chest](/ru/scm-documentation/sa/tattoos#right-chest)         | правая часть груди |
| 11 | [Stomach](/ru/scm-documentation/sa/tattoos#stomach)                 | живот              |
| 12 | [Lower back](/ru/scm-documentation/sa/tattoos#lower-back)           | низ спины          |
| 13 | [Necklace](/ru/scm-documentation/sa/clothes#cepi)                   | шея                |
| 14 | [Bracelet/Watch](/ru/scm-documentation/sa/clothes#chasy)            | запястье           |
| 15 | [Glasses](/ru/scm-documentation/sa/clothes#ochki)                   | очки               |
| 16 | [Hats](/ru/scm-documentation/sa/clothes#golovnye-ubory)             | головной убор      |
| 17 | [Special skin](/ru/scm-documentation/sa/clothes#uniforma)           | униформа           |


# Liberty City Stories


# Банды

| ID | Название  |
| -- | --------- |
| 0  | Leone     |
| 1  | Triad     |
| 2  | Diablo    |
| 3  | Yakuza    |
| 4  | Yardie    |
| 5  | Colombian |
| 6  | Hood      |
| 7  | Forelli   |
| 8  | Sindacco  |


# Модели

| ID | Название              |
| -- | --------------------- |
| 0  | PLAYER                |
| 1  | COP                   |
| 2  | SWAT                  |
| 3  | FBI                   |
| 4  | ARMY                  |
| 5  | MEDIC                 |
| 6  | FIREMAN               |
| 7  | MALE01                |
| 8  | (неизвестно)          |
| 9  | TAXI\_D               |
| 10 | PIMP                  |
| 11 | CRIMINAL01            |
| 12 | CRIMINAL02            |
| 13 | MALE02                |
| 14 | MALE03                |
| 15 | FATMALE01             |
| 16 | FATMALE02             |
| 17 | FEMALE01              |
| 18 | FEMALE02              |
| 19 | FEMALE03              |
| 20 | FATFEMALE01           |
| 21 | FATFEMALE02           |
| 22 | PROSTITUTE            |
| 23 | PROSTITUTE2           |
| 24 | P\_MAN1               |
| 25 | P\_MAN2               |
| 26 | P\_WOM1               |
| 27 | P\_WOM2               |
| 28 | CT\_MAN1              |
| 29 | CT\_MAN2              |
| 30 | CT\_WOM1              |
| 31 | CT\_WOM2              |
| 32 | LI\_MAN1              |
| 33 | LI\_MAN2              |
| 34 | LI\_WOM1              |
| 35 | LI\_WOM2              |
| 36 | DOCKER1               |
| 37 | DOCKER2               |
| 38 | SCUM\_MAN             |
| 39 | SCUM\_WOM             |
| 40 | WORKER1               |
| 41 | WORKER2               |
| 42 | B\_MAN1               |
| 43 | B\_MAN2               |
| 44 | B\_MAN3               |
| 45 | B\_WOM1               |
| 46 | B\_WOM2               |
| 47 | B\_WOM3               |
| 48 | MOD\_MAN              |
| 49 | MOD\_WOM              |
| 50 | ST\_MAN               |
| 51 | ST\_WOM               |
| 52 | FAN\_MAN1             |
| 53 | FAN\_MAN2             |
| 54 | FAN\_WOM              |
| 55 | HOS\_MAN              |
| 56 | HOS\_WOM              |
| 57 | CONST1                |
| 58 | CONST2                |
| 59 | SHOPPER1              |
| 60 | SHOPPER2              |
| 61 | SHOPPER3              |
| 62 | STUD\_MAN             |
| 63 | STUD\_WOM             |
| 64 | CAS\_MAN              |
| 65 | CAS\_WOM              |
| 68 | HITMAN                |
| 79 | GANG01 (LEONE\_A)     |
| 80 | GANG02 (LEONE\_B)     |
| 81 | GANG03 (TRIAD\_A)     |
| 82 | GANG04 (TRIAD\_B)     |
| 83 | GANG05 (DIABLO\_A)    |
| 84 | GANG06 (DIABLO\_B)    |
| 85 | GANG07 (YAKUZA\_A)    |
| 86 | GANG08 (YAKUZA\_B)    |
| 87 | GANG09 (YARDIE\_A)    |
| 88 | GANG10 (YARDIE\_B)    |
| 89 | GANG11 (COLOMBIAN\_A) |
| 90 | GANG12 (COLOMBIAN\_B) |
| 91 | GANG13 (HOOD\_A)      |
| 92 | GANG14 (HOOD\_B)      |
| 93 | GANG15 (FORELLI\_A)   |
| 94 | GANG16 (FORELLI\_B)   |
| 95 | GANG17 (SINDACCO\_A)  |
| 96 | GANG18 (SINDACCO\_B)  |


# Одежда

```
0357: set_actor $PLAYER_ACTOR skin_to <id>
```

| ID    | Название                  |
| ----- | ------------------------- |
| PLR   | Leone's suit              |
| PLR2  | Lawyer's suit             |
| PLR3  | Casual clothes            |
| PLR4  | Chauffeur's clothes       |
| PLR5  | Overalls                  |
| PLR6  | Tuxedo                    |
| PLR7  | Avenging Angel's fatigues |
| PLR8  | 'The King' jumpsuit       |
| PLR9  | Cox Mascot suit           |
| PLR10 | Underwear                 |
| PLR11 | Hero garb                 |
| PLR12 | 'Dragon' jumpsuit         |
| PLR13 | Antonio                   |
| PLR14 | Sweats                    |
| PLR15 | Wiseguy                   |
| PLR16 | Goodfella                 |


# Оружие

```
01B6: give_player $PLAYER_CHAR weapon <id оружия> ammo 1
```

| ID оружия | ID модели | Название        |
| --------- | --------- | --------------- |
| 0         | -         | Unarmed         |
| 1         | 259       |                 |
| 2         | 260       |                 |
| 3         | 261       |                 |
| 4         | 262       |                 |
| 5         | 263       |                 |
| 6         | 264       |                 |
| 7         | 265       |                 |
| 8         | 266       |                 |
| 9         | 267       |                 |
| 10        | 268       |                 |
| 11        | 269       |                 |
| 12        | 270       | Grenades        |
| 13        | 291       |                 |
| 14        | 271       |                 |
| 15        | 272       |                 |
| 16        | 273       |                 |
| 17        | 274       | Pistol          |
| 18        | 275       | .357            |
| 19        | 277       | Shotgun         |
| 20        | 278       |                 |
| 21        | 279       |                 |
| 22        | 281       |                 |
| 23        | 282       | Micro-SMG       |
| 24        | 283       |                 |
| 25        | 284       | SMG             |
| 26        | 280       | M4              |
| 27        | 276       | AK-47           |
| 28        | 285       | Sniper Rifle    |
| 29        | 286       |                 |
| 30        | 287       | Rocket Launcher |
| 31        | 288       | Flame-Thrower   |
| 32        | 289       |                 |
| 33        | 290       | Minigun         |
| 34        | ?         |                 |
| 35        | ?         |                 |
| 36        | 292       |                 |


# Персонажи

```
0241: load_special_actor 1 <id>
```

| ID        | Описание                               |
| --------- | -------------------------------------- |
| AVERY     | Avery Carrington                       |
| BABY      | Giovanni Casa (малыш)                  |
| BIKER1    | Biker Dude 1                           |
| BIKER2    | Biker Dude 2                           |
| BODYBAG   | BODYBAG                                |
| CAMP\_MAN | Campaign Worker                        |
| CAMP\_WOM | Campaign Worker 2                      |
| CASA      | Giovanni Casa                          |
| CHAUFF    | Chauffeur                              |
| DELIASS   | Deli Assistant                         |
| DONOVAN   | O'Donovan                              |
| EIGHT     | 8Ball                                  |
| FKENNY    | Father Kenny (не использовалась)       |
| FRANFOR   | Franco Forelli                         |
| GRDANG1   | Avenging Angel                         |
| GRDANG2   | Avenging Angel 2                       |
| GREASE    | Grease Zuko                            |
| GUN\_ASS  | Gun assistant                          |
| HOBO\_01  | Donald Love 2                          |
| HOLEJOG   | Mayor RC Hole (Jogging outfit)         |
| HOPPER    | Jane Hopper                            |
| JD\_SHOT  | Dead JD                                |
| JDMADE    | JD O'Toole - Made Man                  |
| KAS\_01   | Toshiko Kasen (kimono)                 |
| KAZUKI    | Kazuki Kasen                           |
| LOVE\_01  | Donald Love                            |
| M\_HOLE   | Mayor RC Hole                          |
| MAR\_01   | Maria                                  |
| MASTOR    | Massimo Torrini (Assassin)             |
| MCAFFRY   | Det. Leon McAffrey                     |
| MICKEYH   | Mickey H                               |
| MIGUEL    | Miguel                                 |
| NED\_01   | Ned Burner (Reporter)                  |
| PAULIE    | Paulie Sindacco                        |
| PHILC     | Phil Cassidy                           |
| PLR10     | player (skin: boxer Shorts)            |
| PLR11     | player (skin: bad super hero)          |
| PLR12     | player (skin: dragon)                  |
| PLR2      | player (skin: lawyer)                  |
| PLR3      | player (skin: travel clothes)          |
| PLR4      | player (skin: chauffeur)               |
| PLR5      | player (skin: hockey mask)             |
| PLR6      | player (skin: tuxedo)                  |
| PLR7      | player (skin: avenging angel)          |
| PLR8      | player (skin: the King of Rock'n Roll) |
| PLR9      | player (skin: cock's mascot)           |
| RAY\_01   | Ray (Bad Cop)                          |
| SAL\_01   | Salvatore (Mob Don)                    |
| SAL\_CON  | Sal CONVICT                            |
| THUG\_01  | Sicilian Thug 1                        |
| THUG\_02  | Sicilian Thug 2                        |
| TOOL\_01  | JD O'Toole                             |
| VINC\_01  | Vincenzo Cilli                         |
| WAYNE     | Wayne (Biker Dude)                     |
| WKAS\_01  | Toshiko Kasen (western)                |


# Погода

| ID | Описание     |
| -- | ------------ |
| 0  | Sunny        |
| 1  | Cloudy       |
| 2  | Rainy        |
| 3  | Foggy        |
| 4  | Extra sunny  |
| 5  | Hurricane    |
| 6  | Extra colors |
| 7  | Snow         |


# Vice City Stories


# Банды

| ID | Название       |
| -- | -------------- |
| 0  | Umberto's guys |
| 1  | Cholos         |
| 2  | Sharks         |
| 3  | Army           |
| 4  | Security       |
| 5  | Bikers         |
| 6  | Vance gang     |
| 7  | Golfer         |
| 8  | Marty's        |


# Одежда

| ID       | Название      |
| -------- | ------------- |
| OUT\_F1  | Army Fatigues |
| OUT\_F2  | Casuals       |
| OUT\_F3  | Leisure       |
| OUT\_F4  | Trailer Trash |
| OUT\_F5  | Cuban Style   |
| OUT\_F6  | Pastel Suit   |
| OUT\_F7  | Tracksuit     |
| OUT\_F8  | Hood          |
| OUT\_F9  | Hired Muscle  |
| OUT\_F10 | Repo-Man      |
| OUT\_F11 | Smuggler      |
| OUT\_F12 | Smart Suit    |
| OUT\_F13 | Winner        |
| OUT\_F14 | Wet Suit      |


# Погода

| ID | Описание     |
| -- | ------------ |
| 0  | Sunny        |
| 1  | Cloudy       |
| 2  | Rainy        |
| 3  | Foggy        |
| 4  | Extra sunny  |
| 5  | Hurricane    |
| 6  | Extra colors |
| 7  | Ultra sunny  |


# Сообщения об ошибках

Sanny Builder выдает сообщение об ошибке или предупреждение, если что-то идет не так. Этот раздел описывает все возможные сообщения и то, что программа ожидает от вас.

Если информация, предоставленная на этом сайте, не помогла решить вашу проблему, либо вы получили неизвестную ошибку, сообщите об этом в баг-трекер на GitHub: <https://github.com/sannybuilder/dev/issues>


# 0001: INI файл не найден

Sanny Builder не может найти [INI файл](/ru/edit-modes/opcodes-list-scm.ini), содержащий перечень всех опкодов и их параметров. Без этого файла работа компилятора невозможна.

**Возможные решения**: проверьте файл, указанный в [конфигурации](/ru/edit-modes#opcodes) режима редактирования, существует.


# 0002: Неизвестный тип массива

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

**Возможные решения**: включите отладочную [опцию](/ru/editor/console#ignore_unknown) `IGNORE_UNKNOWN`.


# 0003: Ошибка чтения script.img

Архив внешних скритов `script.img`, сопровождающий файл `main.scm` поврежден или имеет неизвестный формат. Это может произойти, если данный архив был скомпилирован вместе с другим `main.scm`.

**Возможные решения**: замените `script.img` на корректный файл.


# 0004: Неизвестный тип параметра

Дизассемблер не может распознать тип параметра опкода. Ошибка возникает, если файл был скомпилирован неправильно или дополнительно защищен, либо число параметров для этого опкода в скрипте не совпадает с текущей [конфигурацией](/ru/edit-modes/opcodes-list-scm.ini) дизассемблера.

**Возможные решения**: включите отладочную [опцию](/ru/editor/console#ignore_unknown) `IGNORE_UNKNOWN`.


# 0005: Неправильный режим редактирования

Дизассемблер пытается открыть скрипт в формате `GTA 3` или `Vice City` при включенном [режиме редактирования](/ru/edit-modes) `GTA SA`.

**Возможные решения**: измените режим редактирования на правильный.


# 0006: Неверный заголовок файла

Заголовок `.scm` файла не может быть прочитан. Это ожидаемо, если открыть отдельный скрипт из файла `script.img`.

**Возможные решения**: включите отладочную [опцию](/ru/editor/console#skip_scm_header) `SKIP_SCM_HEADER`.


# 0007: Файл не найден

Sanny Builder не может найти файл, необходимый для работы.

**Возможные решения**: проверьте правильность пути и наличие указанного файла.


# 0008: Ошибка чтения списка опкодов

Sanny Builder не может загрузить [список опкодов](/ru/edit-modes/opcodes-list-scm.ini). Это может произойти, если формат файла отличается от ожидаемого.

**Возможные решения**: переустановите программу или обновите INI файл.


# 0009: Список опкодов не найден

Дизассемблер или компилятор не могут прочитать список опкодов (см. [0001](/ru/troubleshooting/errors/0001)).

**Возможные решения**: проверьте файл, указанный в [конфигурации](/ru/edit-modes#opcodes) режима редактирования, существует.


# 0010: Неизвестный опкод

Компилятор встретил опкод, значение которого не определено в [INI файле](/ru/edit-modes/opcodes-list-scm.ini).

**Возможные решения**: отредактируйте код и укажите известный опкод. Если вы уверены, что такой опкод существует, обновите INI файл или используйте директиву `$OPCODE`, чтобы дать компилятору информацию об этом опкоде.


# 0011: Неизвестный опкод

Дизассемблер встретил опкод, значение которого не определено в [INI файле](/ru/edit-modes/opcodes-list-scm.ini).

**Возможные решения**: обновите INI файл или включите отладочную [опцию](/ru/editor/console#ignore_unknown) `IGNORE_UNKNOWN`.


# 0012: Переход за границы файла

Декомпилятор встретил переход на адрес, который указывает за пределы скрипта.

**Возможные решения**: включите отладочную [опцию](/ru/editor/console#ignore_unknown) `IGNORE_UNKNOWN`.


# 0013: Неизвестная команда

Компилятор встретил команду, которая ему неизвестна или находится в неверном месте. Это может быть случайное слово в начале строки, где компилятор ожидает найти опкод или [ключевое слово](/ru/coding/keywords).

**Возможные решения**: отредактируйте указанную команду, возможно в ней есть опечатка.


# 0014: Неверное выражение

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

Несовместимость операндов возможна в следующих случаях:

* один из операндов - это переменная, тип которой [объявлен](/ru/coding/variables#declaring-a-variable-type) при помощи ключевого слова `var`, при этом второй операнд имеет другой тип:

```pascal
var 0@: Int

0@ = 1.0 // ошибка, дробное число несовместимо с типом Int
```

* обе переменные не имеют типа, объявленного через `var`&#x20;
* один из операндов невозможен. Например, число в левой части операции присваивания:

```
5=6
```

**Возможные решения**: проверьте правильность указанного выражения. Исправьте ошибку одним из перечисленных способов:

* объявите типы переменных, используя `var`
* переопределите тип переменной на нужный
* укажите допустимое значение


# 0016: Скрипт не найден

Дизассемблер не смог найти миссию или внешней скрипт, по адресу, который указан в заголовке `main.scm`. Чаще всего это бывает, если`script.img` изменен после компиляции или был скомпилирован с другим `.scm` файлом.

**Возможные решения**: включите отладочную [опцию](/ru/editor/console#ignore_unknown) `IGNORE_UNKNOWN`.


# 0017: Переменная не объявлена

Компилятор не может определить тип переменной. Чаще всего это возникает вследствие неверно указанного типа, либо его отсутствия.

**Возможные решения**: [объявите](/ru/coding/variables#declaring-a-variable-type) переменную, используя ключевое слово `var`.


# 0018: Неверный размер массива

Размер массива не указан при его [объявлении](/ru/coding/arrays#array-declaration), либо указан неправильно (например, в виде [строкового литерала](/ru/coding/data-types#strokovye-literaly)).

**Возможные решения**: укажите корректное целочисленное значение:

```pascal
var $coords: array of Float // ошибка, размер пропущен
```

```pascal
var $coords: array 10 of Float // верно
```


# 0019: Неизвестный тип массива

[Тип массива](/ru/coding/arrays#array-declaration) не указан, либо указан неправильно (например, в виде числа).

**Возможные решения**: укажите корректное значение:

```pascal
var $coords: array 10 of Double // ошибка, неизвестный тип
```

```pascal
var $coords: array 10 of Float // верно
```


# 0020: Переменная не объявлена как массив

Компилятор встретил элемент массива, при этом этот массив не был объявлен.

**Возможные решения**: [объявите](/ru/coding/arrays#array-declaration) массив, используя ключевое слово `var`:

```pascal
var $items: array 10 of Int

$items[0] = 0
```


# 0021: Неверное значение в имени переменной

Компилятор ожидает число в имени [локальных переменных](/ru/coding/variables#lokalnye-peremennye).

**Возможные решения**: укажите корректное число в соответствии с [лимитами](/ru/scm-documentation/gta-limits) локальных переменных для текущей игры:

```
var@s = 'test' // ошибка, var не может быть именем локальной переменной
0@s = 'test' // верно
```


# 0022: Cчетчик итераций не является переменной

Компилятор нашел, что в [цикле](/ru/coding/loops#for-end) `FOR` счетчик итераций не является [переменной](/ru/coding/variables).

**Возможные решения**: используйте переменную:

```
FOR $MyCounter = 1 to 10

END
```


# 0023: Неверный синтаксис

Общая ошибка при неправильном синтаксисе в цикле `FOR` или объявлении переменной.

**Возможные решения**: проконсультируйтесь с соответствующими темами для исправления ошибки:

[Объявление переменной](/ru/coding/variables#declaring-a-variable-type):

```pascal
var <variable>: <type>
```

либо

```pascal
var
    <variable>: <type>
end
```

[Цикл](https://docs.sannybuilder.com/ru/troubleshooting/errors/pages/-M0zIvAUSuFdAoI0Jp_P#for..end) `FOR`:

```pascal
FOR <имя переменной> = <начальное значение> TO/DOWNTO <конечное значение> [шаг = 1]
  <тело цикла>
END
```


# 0024: Ожидалось целочисленное значение

Компилятор ожидал получить целое число, но вместо этого встретил что-то другое (например, дробное число).

**Возможные решения**: укажите целое число.


# 0025: Неверный цикл

[Цикл](/ru/coding/loops#for-end) `FOR` получил неверный интервал значений для итерации. Это случается, когда

* в `FOR..to` начальное значение больше конечного

или

* в `FOR..downto`  конечное значение больше начального

**Возможные решения:** укажите правильный интервал значений:

```
FOR 0@ = 0 to 5

END

FOR 0@ = 5 downto 0
    
END
```




---

[Next Page](/llms-full.txt/1)

