Синтаксис, комментарии, опкоды, команды. Ключевые слова

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

Начнём из терминов и синтаксиса. Собственно первым будем само слово «Синтаксис» — это набор правил, которые понимают редакторы кода (и Sanny Builder в том числе). Эти правила позволяют избежать ошибок, которые возникают при неправильном напасании кода в их окружении. Если написать что-то, что не соответсвует правилам, редакторы сообщают об синтаксиеской ошибке с описанием того, что там не так и где это случилось. Для успешного выпонения сборки нашего кода нужно будет написать код так, чтобы таких ошибок не возникало. Это можно навазать первым шагом — умение соблюдать синтаксис.

«Комментарий»

Некоторый код Sanny Builder будет игнорировать при сборке скрипта. Такой код называют комментариями и смысл их как раз делать напоминание или уточние для себя или других людей. Я называю такие комментарии явными. Сейчас есть три типа комментариев со следующим синтаксисом:

  • Однострочный комментарий. Начинается символами // и продолжается до конца строки:

// это комментарий
  • Многострочный комментарий. Текст между символами /* и */:

/*
Можно написать комментарий в
несколько строк, если осталось мало места
и читать будет неудобно
*/
  • Многострочный комментарий. Текст между символами* { и }:

{ Многострочные комментарии не обязательно писать на разных строках }

* Комментарием не будет считаться синтаксис, если после символа { сразу же идёт символ $. С этим исключением мы познакомимся при первой встрече с ним.

«Опкод»

Под этим словом подразумевается некая команда, которую будет выполнять игра. За каждым опкодом закреплён его персональный уникальный идентификатор (также известен как номер опкода) и набор параметров (аргументов), которые необходимы для правильного выполнения игрой. Общий синтаксис опкода в Sanny Builder представлен следующим образом:

YXXX: 0 1 2

Где YXXX — это ID(идентификатор — число в шестнадцатеричной системе счисления), а 0 1 2 — это параметры. Количество параметров напрямую зависит от опкода. Их может быть несколько, они могут отсутствовать или не иметь фиксированного количества. Символ : используется как разделитель.

Часть числа, пемеченного как Y, имеет особое свойство. Дело в том, что многие опкоды могут использоваться не только как прямой вызов некой команды игры, но и использовать инвертированную версию этой команды для внутренней работы, например при проверках различных состояний (условий). В этом случае самый старший бит отвечает за версию опкода: если он равен 0, то команда будет выполняться как обычно; если 1, то — инвертированная версия. Больше подроностей я попытаюсь донести в статье об условиях.

ID опкода ограничен 2-мя байтами, так что общее число опкодов с учётом двух версий будет не более 7FFF, то есть 32767 штук. Этого будет более чем достаточно для добавления опкодов плагинами в будущем :)

Если вспомнить секцию о комментариях, то я упомянул о неких явных комментариях со своим синтакисом, то есть также неявные: описание опкода и его параметров, который также игнорируется Sanny Builder. Во внимание берётся только его параметры. Например, это будет восприниматься редакором как одно и тоже при создании скрипта:

0001: 1000
0001: wait 1000 ms
0001: my_any_custom_text 1000

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

«Команда»

Под этим словом подразумевается особый способ написания опкода. В синтаксисе команды не используется ID опкода, разделитель : и нет описания. Всё сводится к такому синтаксису:

wait 1000

Если параметры конкретно для wait можно запомнить, то когда будет больше таких параметров, вероятно мы забудет что за что отвечает. Выходом из ситуации оказалить явные комментарии. Они не нарушили синтаксис и дали возможность читать описание. В общем виде они представлены так:

{0001:} wait {time} [int]

Здесь wait — это имя команды, а [int] помогает заранее узнать какой тип** данных требуется для параметра. Оставить в таком виде мы не сможем из за синтаксической ошибки. Нам нужно заменить [int] на конкретное значение. В данном случае я использую значение 1000 и икончательный вариант будет таков:

{0001:} wait {time} 1000

** О типах данных будет отдельная статья!

Поиск команд

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

Нам доступен список команд также прямо из Sanny Builder в меню Сервис->Инструменты->Поиск опкодов (на английском: Tools->IDE Tools->Opcode Search) или использовать горячие клавиши: Ctrl+Alt+2 (по умолчанию):

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

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

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

Автор: wmysterio. Спасибо Seemann за некотрые важные уточнения!

Last updated