Классы
Класс - это группа команд, относящихся к какой-либо сущности в игре: игрокам, актерам, машинам и т.д. Например, класс Player
объединяет опкоды, которые выполняются над игровым персонажем.
Общий синтаксис
Синтаксис:
<имя класса>.<член класса>(параметры)
Имя класса
- название группы опкодов, которая определена в файле classes.db
для текущего режима редактирования
Член класса
- одна из команд, входящих в класс
Параметры
- 0 и более параметров, разделенных запятой
Player
- имя класса
SetMinWantedLevel
- член класса
$PLAYER_CHAR, 2
- два параметра для команды SetMinWantedLevel
Существует 3 вида членов класса:
условия
методы
свойства
Условия
Условные команды в списке, вызываемом нажатием Ctrl+пробел
, обозначаются словом Check
. Они используются в условных выражениях:
Методы
Команды, которые используются для выполнения одиночного действия над экземплярами класса, называются методами. Например, перемещение объекта, взрыв машины и т.п.:
В списке членов класса они обозначаются словом proc
.
Особый вид методов - это конструктор. Конструктор создает новый экземпляр класса и сохраняет указатель на него в переменную.
Sanny Builder допускает два эквивалентных друг другу варианта написать конструктор:
Свойства
Свойства служат для чтения или изменения отдельных атрибутов экземпляра класса.
Например, свойство .Money
класса Player
позволяет работать с количеством денег у игрока:
В текущей версии существует ограничение на использование пробелов в строковых литералах в параметрах свойств. Компилятор игнорирует такие пробелы:
будет скомпилировано как:
Экземпляры класса
Большинство классов в качестве первого параметра принимают переменную, которая хранит указатель на экземпляр класса - ту сущность в игре, над которой выполняется эта команда:
$PLAYER_CHAR
- экземпляр класса.
При этом некоторые внутриигровые элементы существуют в единственном экземпляре. Например, камера, которая определяет поле зрения игрока. Члены классов для таких сущностей не требуют экземпляра класса:
Объявление экземпляров класса
Переменные можно объявлять с типом - именем класса:
Это указывает компилятору на то, что переменная $PLAYER_CHAR
является экземпляром класса Player
. Такую переменную можно использовать вместо имени класса:
Если переменная используется вместо имени класса, она также компилируется как первый параметр, поэтому дублировать её в списке параметров не нужно:
эквивалентно:
Переменные - экземпляры класса могут быть переобъявлены с другим типом.
Класс Model
Model
Имена моделей являются экземплярами класса Model
:
эквивалентно:
Константы класса
Некоторые параметры в членах классов могут задаваться в виде перечисляемого типа (или перечисления). Это делает код более читаемым:
Последний параметр (BodyPart.Torso
) - это значение перечисления BodyPart
, которое будет заменено на 0
при компиляции. Перечисления и их значения определены в файле enums.txt
.
Константы класса (устаревшее)
Sanny Builder до версии 3.6 определял специальные константы для классов в файле classes.db
. Такие параметры назывались Extended
. Один член класса не мог иметь более одного параметра такого типа.
Начиная с версии 3.6 классы могут использовать перечисления в качестве типов параметров, при этом допускается использование разных перечислений для разных параметров.
Определенные ранее в файле classes.db
параметры типа Extended
были заменены на перечисления и перемещены в раздел DEPRECATED_ENUMS
для поддержания обратной совместимости с существующими скриптами.
Last updated