Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Команды объявления переменных (Declaring variables)Содержание книги
Поиск на нашем сайте Существует 4 типа переменных:
Локальная переменная может быть объявлена где угодно в скрипте, главное, чтобы она была объявлена перед первой командой, которая будет ее использовать. Обычно все переменные декларируют в начале скрипта, чтобы его было легче читать. Скрипты также могут использовать переменные типа reference (ссылка на копию объекта):
4.3.4 Команды Begin (начало блока) и End (конец блока) Конструкции Begin-End являются блоками, внутри которых и размещен, собственно, весь исполняемый код скрипта. Другими словами, все скриптовые команды, кроме объявления переменных, обязательно должны находиться именно внутри блоков begin-end!
Теперь все блоки Begin-End имеют свое условие для выполнения. Это полезное нововведение в скриптовый язык TES 4 Oblivion, по сравнению с TES 3 Morrowind. Условия ставятся в строке непосредственно после команды Begin и получили название "тип блока" (BlockTypes). Всего их насчитывается 30 и все они имеют различное назначение. Каждый раз, когда скрипт выполняется в текущем фрейме, все блоки скрипта проверяются на истинность их условий. Если условие какого-либо блока не истинно, то этот блок и все скриптовые команды в его пределах выполняться не будут.
Команда End всегда завершает начатый блок, т.е. каждому begin должен обязательно соответствовать свой end. Блоки следуют один за другим последовательно и таким же образом выполняются.
Важные замечания: · Количество блоков в скрипте может быть произвольным, но не менее одного! · Блоки begin-end не могут быть вложенными! · Все блоки должны обязательно содержать название используемого типа блока! Пример:
В таблицу, приведенную ниже, сведены все существующие блок-типы. Общее их количество равно 30.
Заметьте, что для блоков с параметрами можно указывать тот же самый блок несколько раз, используя разные параметры. Например, этот скрипт не содержит ошибок:
Типы выполняемых блоков (BlockTypes). Рассмотрим типы выполняемых блоков более подробно.
GameMode Скрипт внутри этого блока выполняется в каждом фрейме, когда игра не находится в режиме меню. Большинство скриптов используют исключительно этот тип блока.
Пример:
В игре Обливион блок-тип GameMode используется 964 раза. MenuMode Синтаксис:
Пример:
Без параметров этот блок будет выполняться, когда игрок НЕ находится режиме игры – то есть, когда отображается ЛЮБОЕ меню.
Тип меню:
Меню:
В игре Обливион блок-тип MenuMode используется 34 раза. OnActivate Синтаксис:
Этот блок запускается один раз, когда активируется заскриптованный объект. В игре Обливион блок-тип OnActivate используется 587 раз.
OnActorEquip Синтаксис:
Пример:
Этот блок выполняется один раз, когда заскриптованный актер надевает указанный объект (ObjectID). В игре Обливион блок-тип OnActorEquip используется 1 раз.
OnActorUnequip Синтаксис:
Пример:
Этот блок выполняется один раз, когда заскриптованный актер снимает указанный объект (ObjectID). В игре Обливион блок-тип OnActorUnequip не используется. OnAdd Синтаксис:
Пример:
Этот блок выполняется один раз, когда заскриптованный объект добавляется в указанный контейнер (ContainerRefID). Если контейнер не указан, блок будет исполняться, если объект добавляется в любой инвентарь. В игре Обливион блок-тип OnAdd используется 72 раза. OnAlarm Синтаксис:
Пример:
Этот блок выполняется один раз, когда заскриптованный актер поднимает тревогу по поводу определенного типа преступлений (CrimeType), совершенного преступником-актером (Criminal). Если указан только тип преступлений, блок будет исполняться, когда актер поднимает тревогу по поводу этого типа преступлений (неважно кем совершенного). Если необходимо знать больше информации о преступлении, функция GetCrimeKnown может использоваться внутри блока OnAlarm, чтобы определить, случилась ли определенная комбинация преступник/жертва. В игре Обливион блок-тип OnAlarm используется 15 раз.
OnAlarmVictim Синтаксис:
Пример:
Этот блок выполняется один раз, когда заскриптованный актер поднимает тревогу по поводу определенного типа преступлений (CrimeType), совершенного против жертвы-актера (Victim). Если указан только тип преступлений, блок будет выполняться, когда актер поднимает тревогу по поводу этого типа преступлений (неважно против кого совершенного). Если необходимо знать больше информации о преступлении, функция GetCrimeKnown может использоваться внутри блока OnAlarm, чтобы определить, случилась ли определенная комбинация преступник/жертва. В игре Обливион блок-тип OnAlarmVictim не используется.
OnDeath Синтаксис:
Пример:
Этот блок выполняется один раз, когда указанный актер (ActorID) убивает заскриптованного актера. Если параметр не используется, блок выполняется, когда заскриптованный актер умирает. В игре Обливион блок-тип OnDeath используется 303 раза.
OnDrop Синтаксис:
Пример:
Этот блок выполняется один раз, когда заскриптованный объект сбрасывается из указанного контейнера (ContainerRefID). Если контейнер не указан, блок будет исполняться, если объект сбрасывается из любого инвентаря. В игре Обливион блок-тип OnDrop используется 7 раз.
OnEquip Синтаксис:
Пример:
Этот блок исполняется один раз, когда заскриптованный объект надевается указанным актером (ActorID). Если параметр не используется, блок будет исполняться, когда объект надевается любым актером. В игре Обливион блок-тип OnEquip используется 27 раз.
OnHit Синтаксис:
Пример:
Этот блок исполняется один раз, когда заскриптованный актер получает удар от указанного актера (ActorID) оружием или заклинанием. Если параметр не используется, блок исполняется каждый раз, когда актера ударяют. В игре Обливион блок-тип OnHit используется 55 раз.
OnHitWith Синтаксис:
Пример:
Этот блок исполняется один раз, когда заскриптованный актер получает удар указанным оружием (ObjectID). Если параметр не используется, блок будет выполняться, когда заскриптованный актер получает удар любым оружием. В игре Обливион блок-тип OnHitWith используется 7 раз.
OnKnockout Синтаксис:
Этот блок исполняется один раз, когда заскриптованный актер отправляется в нокаут. В игре Обливион блок-тип OnKnockout не используется.
OnLoad Синтаксис:
Этот блок исполняется один раз, когда загружается модель объекта, то есть когда игрок заходит в интерьер, ячейка с объектом загружается в область 5x5 вокруг игрока. В игре Обливион блок-тип OnLoad используется 95 раз.
OnMagicEffectHit Синтаксис:
Пример:
Этот блок исполняется один раз, когда указанный тип магического эффекта (EffectID) ударяет по заскриптованному объекту. Если эффект не указан, блок будет выполняться, когда любой эффект ударяет по объекту. В игре Обливион блок-тип OnMagicEffectHit используется 7 раз.
OnMurder Синтаксис:
Пример:
Этот блок выполняется один раз, когда указанный актер (ActorID) совершает убийство (преступление) заскриптованного актера. Если параметр не используется, блок выполняется, когда совершается убийство заскриптованного актера (неважно кем). В игре Обливион блок-тип OnMurder используется 10 раз.
OnPackageChange Синтаксис:
Пример:
Этот блок выполняется один раз, когда заскриптованный актер меняет пакет ИИ с указанного (PackageID) на другой. Заметьте, что "прерывающие" пакеты, такие, как бой или разговор, не запускают этот блок, поскольку они лишь временно заменяют текущий пакет. В игре Обливион блок-тип OnPackageChange используется 32 раза.
OnPackageDone Синтаксис:
Пример:
Этот блок исполняется один раз, когда заскриптованный актер завершает указанный пакет ИИ (PackageID). Заметьте, что пакет может быть завершен из-за неудачи (не найден путь, невозможно найти нужное количество объектов, или истекло время), если только у пакета не установлены флаги Must Reach Location или Must Complete. В игре Обливион блок-тип OnPackageDone используется 45 раз. OnPackageStart Синтаксис:
Пример:
Этот блок исполняется один раз, когда заскриптованный актер начинает выполнять указанный пакет (PackageID). В игре Обливион блок-тип OnPackageStart используется 13 раз.
OnReset Синтаксис:
Этот блок исполняется один раз, когда ячейка с объектом возвращается в исходное состояние (через 3 после последнего посещения игрока). Обычно используется для ловушек и анимированных объектов, чтобы вернуть их в исходное состояние. В игре Обливион блок-тип OnReset используется 110 раз. Примеры скриптов: ARCAVEINTRAPSCRIPT01, ARChainPlatform01SCRIPT
OnSell Синтаксис:
Пример:
Этот блок исполняется один раз, когда заскриптованный объект продается. Если вы указываете копию продавца (SellerRefID), блок будет исполняться только тогда, когда указанный объект продает объект; иначе он выполняется, когда любой NPC продает объект. В игре Обливион блок-тип OnCell используется 1 раз.
OnStartCombat Синтаксис:
Пример:
Этот блок выполняется один раз, когда заскриптованный актер начинает бой с указанной целью (TargetActorRefID). Если цель не указана, блок исполняется, когда актер начинает бой. В игре Обливион блок-тип OnStartCombat используется 13 раз.
OnTrigger Синтаксис:
Пример:
Этот блок исполняется один раз, когда что-то сталкивается с заскриптованным объектом. Если вы указываете это что-то (TriggeringRefID), блок исполняется, когда указанная копия сталкивается с объектом; иначе блок исполняется, когда любая копия сталкивается с объектом. В игре Обливион блок-тип OnTrigger используется 94 раза.
OnTriggerActor Синтаксис:
Пример:
Этот блок исполняется один раз, когда актер сталкивается с заскриптованным объектом. Если вы указываете это актера (TriggeringRefID), блок исполняется, когда указанная копия (актера) сталкивается с объектом; иначе блок исполняется, когда любой актер сталкивается с объектом. В игре Обливион блок-тип OnTriggerActor используется 11 раз.
OnTriggerMob Синтаксис:
Пример:
Этот блок исполняется один раз, когда мобильный объект сталкивается с заскриптованным объектом. Если вы указываете этот объект (TriggeringRefID), блок исполняется, когда указанная копия (мобильного объекта) сталкивается с объектом; иначе блок исполняется, когда любой мобильный объект сталкивается с объектом. Мобильные объекты включают актеров (NPC и существа), стелы и магические снаряды. В игре Обливион блок-тип OnTriggerMob не используется.
OnUnequip Синтаксис:
Пример:
Этот блок исполняется один раз, когда заскриптованный объект снимается указанным актером (ActorID). Если параметр не используется, блок исполняется, когда объект снимается любым актером. В игре Обливион блок-тип OnUnequip используется 11 раз.
ScriptEffectFinish Использование:
Особый блок. Он используется только в скриптах для магических эффектов. Этот блок исполняется после того, как заскриптованный эффект закончился. В игре Обливион блок-тип ScriptEffectFinish используется 32 раза.
ScriptEffectStart Использование:
Это особый блок. Он используется только в скриптах для магических эффектов и выполняется сразу же после того, как заскриптованный эффект наложен. В игре Обливион блок-тип ScriptEffectStart используется 42 раза.
ScriptEffectUpdate Использование:
Особый блок, используется только в скриптах для магических эффектов. Этот блок запускается, как только эффект наложен, и исполняется до тех пор, пока время действия эффекта не закончится. В игре Обливион блок-тип ScriptEffectUpdate используется 13 раз. 4.3.6 Команда "." (точка - UseReference) Синтаксис:
Команда "." устанавливает предшествующий ей ObjectID (ID объекта) только для текущей функции. ObjectID может быть задан как непосредственно - с указанием ID копии объекта, так и с помощью переменной типа reference (как указатель на объект).
Команда Set (установить) Команда Set присваивает локальной или глобальной переменной указанное значение. Это значение может быть числом или результатом вычисления выражения.
Примечания: · Оператор модуля "%" вычисляется после умножения / деления, но перед сложением / вычитанием:
· Минус сразу перед числом или переменной считается знаком "отрицания". Если вам необходимо выполнить вычитание, нужно оставлять как минимум по одному пробелу до и после минуса. Это единственный случай, когда вам нужен пробел между арифметическими операторами. (Например: "a-b" не будет компилироваться; нужно написать "a - b"). · Если при делении вы используете только числа, необходимо указать хотя бы один знак после запятой, чтобы показать, что вы хотите использовать деление с вещественным результатом, иначе остаток будет отброшен после окончания деления:
· Если вы хотите сохранить в целочисленной переменной верно округленный результат деления, убедитесь, что в вычислениях используется плавающая точка (и десятичная часть не отбрасывается) и добавьте 0.5:
· Вы можете использовать результат сравнения в качестве "значения". Переменная тогда станет равной 1 или 0 в зависимости от того, истинно ли сравнение или нет. Например,
делает то же самое, что и
Другие примеры:
Команда Return (возврат) Синтаксис:
Команда Return используется для того, чтобы остановить выполнение скрипта в текущем фрейме. Она не просто завершает ТЕКУЩИЙ блок, он завершает ВЕСЬ скрипт до конца фрейма. Скрипт будет запущен снова в следующем фрейме. Это может быть полезно внутри команд if, когда требуется блокировать команды, следующие непосредственно после return.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2016-07-11; просмотров: 502; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.009 с.) |