Попытаемся разобраться, что собой представляет скрипт. Это в первую очередь последовательность команд (далее опкодов), которые или что-то делают с переменными к которым мы обращаемся в этом опкоде, или меняют что-то в памяти игры, или просто являются частью логической структуры скрипта. Каждый опкод пишется на отдельной строчке и обрабатывается программой последовательно, один за другим (за исключением случаев, когда выполняется прыжок из одного места в скрипте в другой по созданной заранее метке). 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 же позволяет избавиться от подобных сложностей возникающих при написании скрипта: т.о. можно писать просто или Обратите внимание, что при записи значения в переменную с дробной частью нельзя отбрасывать эту самую дробную часть, даже если она равна 0. Следует отметить, что вместо 1 и 1.0 может стоять некоторая переменная соответствующего типа: Как вы догадались, существуют и другие подобные этому опкоды: (уменьшает целочисленное значение на два; для вещественного типа следует писать 1@ -= 2.0) (умножает на 2) (делит на 2) Иногда бывает нужно перевести целочисленное значение в вещественное или наоборот (в последнем случае просто отбрасывается дробная часть). Делается это при помощи опкодов Code 0093: 2@ = integer 1@ to_float 0092: 1@ = float 2@ to_integer Здесь 1@ - переменная типа Integer, а 2@ - типа Float.
|