На главную страницу
Глобальный блок(скрипт такой есть)
Главная | Мой профиль | Выход

Меню сайта

Разделы новостей
Мои статьи [40]

Мини-чат
300

Наш опрос
Ваш любимый жанр игр
Всего ответов: 220

Связь с рипером:
Jocker:
icq: 426-042-393
mail: oneqq@mail.ru
skype: JockerPac

Друзья сайта
Статистика
 
НАроДА: 1
СтРАНниКОВ: 1
ПоЛОЖитЕЛЬных: 0


Вы вошли как Гость | Группа "Гости"
!!!ЗДЕСЬ МОЖЕТ БЫТЬ ВАША РЕКЛАМА!!!
Главная » Статьи » Мои статьи

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

Sanny Builder предъявляет особые требования к синтаксису - то есть к правилам написания опкодов. И если вы написали какой-то скрипт а компилятор (компиляцией называется процесс преобразование исходного текста программы на машинный язык, т.е. на язык, понятный компьютеру) «ругается» и выдает ошибку «Неверное число параметров», то скорее всего вы неправильно написали это опкод. Также эта ошибка может возникнуть, если в опкоде вы указали не все параметры (переменные или значения) или указали их неправильно. Используйте встроенную в Sanny Builder утилиту "Поиск опкодов" (вызывается нажатием клавиш Ctrl + Alt + 2), чтобы найти нужный опкод. В большинстве опкодов параметром может выступать как переменная так и готовое значение, но и в том, и в другом случае к ним предъявляются одинаковые требования по типу.

Пример:

Code
00A1: put_actor $PLAYER_ACTOR at 345.5621 306.2212 998.4484

Этот опкод перемещает CJ'я в точку с координатами 345.5621 306.2212 998.4484 (X, Y и Z-координаты соответственно).
Как видим, эти значения имеют тип Float. Они могут быть заменены переменными: 1@, 2@, 3@. Но следует учесть, что эти переменные должны быть определены, то есть должны содержать некоторые значения вещественного типа. Для этого нам нужно сначала записать в них эти значения - или, как говорят, присвоить им значение.
Простейший способ присваивания - опкодом

Code
0087: 1@ = 345.5621 // (float)
0087: 2@ = 306.2212 // (float)
0087: 3@ = 998.4484 // (float)

Знак "равенства" = говорит программе, что мы должны записать в переменную, стоящую слева, значение, стоящее справа.

Итак,

Code
0087: 1@ = 345.5621 // (float)
0087: 2@ = 306.2212 // (float)
0087: 3@ = 998.4484 // (float)
00A1: put_actor $PLAYER_ACTOR at 1@ 2@ 3@

Каждый опкод имеет свой индивидуальный идентификатор (номер) – это четырехзначное число в шестнадцатеричной системе счисления. Описание этого номера обязательно (за исключением случаев, когда Sanny Builder сам подставляет этот идентификатор автоматически во время компиляции)
Например, вот этот опкод

Code
0058: 1@ += 1 // (int)

увеличивает целочисленное значение (обозначается Integer или сокращенно int), записанное в переменную 1@ на 1. Он имеет номер 0058…
А опкод

Code
0059:1@ += 1.0 // (float)

делает тоже самое но только с переменными вещественного типа (действительные, с дробной частью, с точкой). Его номер - 0059

Sanny Builder же позволяет избавиться от подобных сложностей возникающих при написании скрипта: т.о. можно писать просто

Code
1@ += 1

или
Code
1@ += 1.0

Обратите внимание, что при записи значения в переменную с дробной частью нельзя отбрасывать эту самую дробную часть, даже если она равна 0. Следует отметить, что вместо 1 и 1.0 может стоять некоторая переменная соответствующего типа:

Code
1@ += 2@

Как вы догадались, существуют и другие подобные этому опкоды:

Code
1@ -= 2

(уменьшает целочисленное значение на два; для вещественного типа следует писать 1@ -= 2.0)
Code
1@ *= 2

(умножает на 2)
Code
1@ /= 2

(делит на 2)

Иногда бывает нужно перевести целочисленное значение в вещественное или наоборот (в последнем случае просто отбрасывается дробная часть). Делается это при помощи опкодов

Code
0093: 2@ = integer 1@ to_float
0092: 1@ = float 2@ to_integer

Здесь 1@ - переменная типа Integer, а 2@ - типа Float.

Категория: Мои статьи | Добавил: Alien (01.11.2008)
Просмотров: 3241 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 1
08.11.2011
1. Петр [Материал]
Жаль, что автор распространился не о всех опкодах... А так, урок полезный.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]