Делаем новые миссии. CLEO - скрипты, cutscene, статьи, программы. Игровые новости.
 
1.7.13 15:44 |

Классы

Раздел: Основы скриптинга | Автор: yelmi | Рейтинг: 10.00 (1) | Хитов 5398
Sanny Builder допускает использование классов при написании кода. Классы - это группа опкодов, относящихся к какому-либо виду объектов в игре: игрок, актер, машина и т.д.

Все классы заранее определены в файле classes.db и изменять их в процессе кодинга невозможно. Все изменения вносятся напрямую в этот файл.

Каждый класс обладает набором команд (опкодов). Их можно разделить на несколько групп:

условные
процедуры (методы)
свойства


Условные команды

Условные опкоды в списке команд, вызываемом нажатием Ctrl + [space], обозначаются словом Check. Чаще всего у них один параметр - это хендл (имя) владельца класса: машины, игрока и т.д. Например:

Код:
if
Player.Defined($PLAYER_CHAR)
jf @anywhere


Процедуры

Процедурные опкоды предназначены для выполнения какого-либо конкретного действия в игре: движение объекта, уничтожение его и т.п. Отдельный вид таких опкодов - это конструкторы, которые создают объект (актера, машину) и возвращают его хендл. В SB конструкторы могут использоваться как процедура, так и как свойство.

Код:
Player.Create($PLAYER_CHAR, #NULL, 2488.5601, -1666.84, 13.38) - процедура
$PLAYER_CHAR = Player.Create(#NULL, 2488.5601, -1666.84, 13.38) - свойство-конструктор


Эффект будет одинаков.

Свойства

Свойства класса используются для чтения или записи каких-либо значений внутри класса. Например свойство Money класса Player позволяет оперировать с тремя опкодами:

Код:
0109: player $PLAYER_CHAR money += 1000000
010A: player $PLAYER_CHAR money > 461@
010B: 4@ = player $PLAYER_CHAR money


После того как это свойство описано в файле classes.db вы можете использовать следующие команды:

Код:
player($PLAYER_CHAR).Money += 1000000
player($PLAYER_CHAR).Money > 461@
4@ = player($PLAYER_CHAR).Money


В настоящий момент существует серьезное ограничение по использованию свойств в качестве операндов выражений. Sanny Builder может скомпилировать только такие выражения, которые заранее прописаны в файле classes.db. Т.е. вы не можете, например, использовать такое выражение:

Код:
player($PLAYER_CHAR).Money -= 1000000


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

Члены класса

Начиная с версии 2.6 также можно инициализировать переменные как члены класса и оперировать с ними как с классом. Например:

Код:
var
$PLAYER_CHAR: Player
end

Мы объявили переменную $PLAYER_CHAR как класс Player. Теперь для нее доступны все команды, какие есть для этого класса. Например:

Код:
if
$PLAYER_CHAR.Defined
jf @anywhere

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

Код:
Player.SetClothes($PLAYER_CHAR, "PLAYER_FACE", "HEAD", Head)
=
$PLAYER_CHAR.SetClothes("PLAYER_FACE", "HEAD", Head)


Такие переменные также можно переобъявлять и изменять их тип.

Класс Model

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

Код:
#AK47.Load

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


Это будет тоже самое что

Код:
Model.Load(#AK47)

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


Расширенные названия параметров

В классах вы можете использовать текстовые названия для параметров для повышения читабельности кода. Например:

Код:
Player.SetClothes($PLAYER_CHAR, "VEST", "VEST", Torso)


Torso - это параметр типа Extended.

Для облегчения использования расширенных названий, их список для текущей команды может вызываться нажатием Ctrl + [space]. Просто установите курсор туда, где должен быть расширенный параметр, (обозначается словом Extended во всплывающей подсказке), нажмите ctrl + [space] и в редакторе появится список возможных имен с указанием числового значения для каждого из них.

 

  1 2 3 4 5 6 7 8 9 10  

Родственные ссылки
» Другие статьи раздела Основы скриптинга
» Эта статья от пользователя yelmi

5 cамых читаемых статей из раздела Основы скриптинга:
» Работа со звуками в GTA San Andreas
» Директивы
» Контроль клавиатуры
» External Script – что это такое и как с ним работать?
» Панель, или список товаров. Часть II.

5 последних статей раздела Основы скриптинга:
» Директивы
» Дополнительные команды
» Ключевые слова
» Классы
» Циклы

¤ Перевести статью в страницу для печати
¤ Послать эту cтатью другу

MyArticles 0.6 beta for RUNCMS: by RunCms.ru


Реклама
Цена пиломатериалы
ГОСТ на пиломатериалы. Завод пиломатериалов. Перечень материалов, цены
erbrus.ru
Багет оптом
Галерея образцов багета. Опт и розница. Сувениры и подарки оптом
frame.ru

Вверх     Вернуться на главную. Вход в Систему. Статьи. Скачать. Миссии. ФОРУМ Обратная связь.   
   
   
Яндекс.Метрика
   
   
- Генерация страницы: 0.14 секунд -