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