Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Команды объявления переменных (Declaring variables)

Поиск

Существует 4 типа переменных:

 

  • Short - Короткая целочисленная переменная.
  • Long - Длинная целочисленная переменная.
  • Float - Вещественная переменная.
  • Ref - Переменная типа reference (ссылка на копию объекта).

 

 

short от –32 768 до 32 767
long от – 2 147 483 648 до 2 147 483 647
float от –3,402823×1038 до -1.175494×10−38, и от 1,175494×10−38 до 3,402823×1038 (с точностью до 7 знаков)
ref 32-битный код FormID


Первые три типа переменных можно объявлять и как локальные, и как глобальные. Имена переменных не чувствительны к регистру. Объявление происходит вместе с типом и именем:

 

short myShortVariable long myLongVariable float myFloatVariable

 

Локальная переменная может быть объявлена где угодно в скрипте, главное, чтобы она была объявлена перед первой командой, которая будет ее использовать. Обычно все переменные декларируют в начале скрипта, чтобы его было легче читать.

Скрипты также могут использовать переменные типа reference (ссылка на копию объекта):

 

ref myRefVariable

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 не могут быть вложенными!

· Все блоки должны обязательно содержать название используемого типа блока!

Пример:

 

begin GameMode end

 

В таблицу, приведенную ниже, сведены все существующие блок-типы. Общее их количество равно 30.

 

Тип блока Параметры Описание
    GameMode   нет Исполняется в каждом фрейме, когда игра не находится в меню. Большинство скриптов используют исключительно этот тип блока.
  MenuMode Тип меню (не обязательно) Исполняется в каждом фрейме, пока игра находится в меню.
  OnActivate нет Исполняется один раз, когда объект активирован.
  OnActorEquip ID объекта. Исполняется один раз, когда заскриптованный актер надевает указанный объект.
  OnActorUnequip ID объекта Исполняется один раз, когда заскриптованный актер снимает указанный объект.
  OnAdd ID копии контейнера (не обяз.) Исполняется один раз, когда объект добавляется в инвентарь контейнера.
  OnAlarm Тип преступления, Преступник (не обязательно) Исполняется один раз, когда актер поднимает тревогу по поводу указанного преступления, совершенного преступником (актером).
  OnAlarmVictim Тип преступления, Жертва (не обяз.) Исполняется один раз, когда актер поднимает тревогу по поводу указанного преступления, совершенного против жертвы (актером).
  OnDeath ID актера (не обязательно) Исполняется один раз, когда умирает от рук указанного актера.
  OnDrop ID копии контейнера (не обязательно) Исполняется один раз, когда объект сброшен из контейнера.
  OnEquip ID актера (не обязательно) Исполняется один раз, когда объект надевается указанным актером.
  OnHit ID актера (не обязательно) Исполняется один раз, когда получают удар от указанного актера
  OnHitWith ID объекта (не обязательно) Исполняется один раз, когда актер получает удар указанным оружием
  OnKnockout нет Исполняется один раз, когда отправлен в нокаут указанными актером
  OnLoad нет Исполняется один раз, когда в игру загружается модель (3D) объекта
  OnMagicEffectHit ID эффекта (не обязательно) Исполняется один раз, когда на актера накладывается указанный магический эффект
  OnMurder ID актера (не обязательно) Исполняется один раз, когда указанный актер совершает убийство актера (то есть, преступление)
  OnPackageChange ID пакет Исполняется один раз, когда актер меняет указанный пакет ИИ
  OnPackageDone ID пакета Исполняется один раз, когда актер завершает указанный пакет ИИ
  OnPackageStart ID пакета Исполняется один раз, когда актер начинает указанный пакет ИИ
  OnReset нет Исполняется один раз, когда ячейка с заскриптованным объектом сбрасывается (reset)
  OnSell ID копии продавца (не обязательно) Исполняется один раз, когда объект продается указанным продавцом
  OnStartCombat ID актера-цели (не обязательно) Исполняется один раз, когда актер начинает битву с указанным актером
  OnTrigger ID копии сталкивающегося объекта (не обязательно) Исполняется один раз, когда объект сталкивается с указанным объектом
  OnTriggerActor ID копии сталкивающегося объекта (не обязательно) Исполняется один раз, когда объект сталкивается с указанным актером
  OnTriggerMob ID копии сталкивающегося объекта (не обязательно) Исполняется один раз, когда объект сталкивается с указанным мобильным объектом (актеры, стрелы, магические снаряды)
  OnUnequip ID копии контейнера (не обяз.) Исполняется один раз, когда снимается указанным актером.
  ScriptEffectStart нет Особый тип блока, используется только в скриптах магических эффектов
  ScriptEffectFinish нет Особый тип блока, используется только в скриптах магических эффектов
  ScriptEffectUpdate нет Особый тип блока, используется только в скриптах магических эффектов

 

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

 

begin OnAdd; какой-то скрипт выполняется каждый раз, когда этот объект добавляется кому-то в инвентарь end begin OnAdd player; Какой-то скрипт выполняется каждый раз, когда этот объект добавляется в инвентарь игрока.; Заметьте, что блок OnAdd без параметров ТАКЖЕ будет исполнен. end begin OnAdd MysteriousChest; Какой-то скрипт выполняется каждый раз, когда этот объект; добавляется в инвентарь контейнера MesteriousChest.; Заметьте, что блок OnAdd без параметров ТАКЖЕ будет исполнен. End

 

Типы выполняемых блоков (BlockTypes).

Рассмотрим типы выполняемых блоков более подробно.

 

 

GameMode

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

 

Пример:

 

; Пример скрипта-таймера scn myScript float timer short init begin GameMode if init == 0; установить значение таймера set timer to 25 set init to 1 else if timer > 0 set timer to timer - getSecondsPassed else; здесь размещается код для того, что должно произойти через 25 секунд endif endif end

 

В игре Обливион блок-тип GameMode используется 964 раза.
Примеры скриптов: AbandonedMineTrap02Script, AloysBincalScript, AltarofAkatosh

MenuMode

Синтаксис:

begin MenuMode MenuType (не обязательно)

Пример:

begin MenuMode begin MenuMode 1

 

Без параметров этот блок будет выполняться, когда игрок НЕ находится режиме игры – то есть, когда отображается ЛЮБОЕ меню.
Если вы используете необязательный параметр, то можете указать либо меню, либо конкретное нужное вам меню, во время показа которого должен выполняться блок:

 

Тип меню:

1 = "четыре главных" (интерфейс персонажа: характеристики, магия, инвентарь, журнал) 2 = любые другие меню (окна сообщений, контейнеры и т.д.) 3 = консоль

Меню:

 

1001 = Сообщение 1002 = Инвентарь 1003 = Характеристики 1004 = Главный HUD (HUDMain) 1005 = Информационный HUD (HUDInfo) 1006 = Крест (HUDReticle) 1007 = Заставка в время загрузки 1008 = Контейнер 1009 = Диалог 1010 = Субтитры (HUDSubtitle) 1011 = Общий (Generic) 1012 = Спать/Ждать 1013 = Пауза 1014 = Взлом 1015 = Опции 1016 = Количество 1017 = Аудио 1018 = Видео 1019 = Видеодисплей (VideoDisplay) 1020 = Геймплей (Gameplay) 1021 = Управление (Controls) 1022 = Магия 1023 = Карта 1024 = Магическое всплывающее окно (MagicPopup) 1025 = Торговля (Negotiate) 1026 = Книга 1027 = Уровень 1028 = Тренировка 1029 = Знак 1030 = Класс 1031 = Атрибуты 1032 = Умения 1033 = Специализация 1034 = Убеждения 1035 = Починка 1036 = Раса/Пол 1037 = Покупка заклинаний 1038 = Загрузка 1039 = Сохранение 1040 = Алхимия 1041 = Создание заклинаний 1042 = Зачарование 1043 = Установка эффектов 1044 = Главное 1045 = Воздух 1046 = Быстрые клавиши 1047 = Разработчики (Credits) 1048 = Камень Сигил 1049 = Перезарядка 1051 = Редактирование текста  

 

В игре Обливион блок-тип MenuMode используется 34 раза.
Примеры скриптов: BedDiseaseSCRIPT, Blade3Script, DAHermaeusScript

OnActivate

Синтаксис:

begin OnActivate

Этот блок запускается один раз, когда активируется заскриптованный объект.
Активирование объекта устанавливает "бит активирования". Поэтому многократные последовательные вызовы Activate на одном объекте приведут лишь к однократному проходу через блок OnActivate.
Заметьте, что это блокирует нормальное активирование объекта. Чтобы использовать активирование объекта по умолчанию, нужно вызвать на нем Activate. Если вы хотите сделать что-то особенное в зависимости от того, что активировало объект, используйте IsActionRef внутри блока OnActivate.
Помните, что у активатора НЕТ действия по умолчанию, которое выполняется при активации.

В игре Обливион блок-тип OnActivate используется 587 раз.
Примеры скриптов: ActRockGreatForest01SCRIPT, AltarofAkatosh, AltarofArkay

 

OnActorEquip

Синтаксис:

begin OnActorEquip ObjectID

Пример:

begin OnActorEquip DrinkMead

Этот блок выполняется один раз, когда заскриптованный актер надевает указанный объект (ObjectID).

В игре Обливион блок-тип OnActorEquip используется 1 раз.
Примеры скриптов: Dark14AlvalUvaniScript

 

OnActorUnequip

Синтаксис:

begin OnActorUnequip ObjectID

Пример:

begin OnActorUnequip DrinkMead

Этот блок выполняется один раз, когда заскриптованный актер снимает указанный объект (ObjectID).

В игре Обливион блок-тип OnActorUnequip не используется.

OnAdd

Синтаксис:

begin OnAdd ContainerRefID (не обязательно)

Пример:

begin OnAdd begin OnAdd player

Этот блок выполняется один раз, когда заскриптованный объект добавляется в указанный контейнер (ContainerRefID). Если контейнер не указан, блок будет исполняться, если объект добавляется в любой инвентарь.

В игре Обливион блок-тип OnAdd используется 72 раза.
Примеры скриптов: CGAkaviriLongswordScript, CGBladesEquipmentScript, CGBowScript

OnAlarm

Синтаксис:

begin OnAlarm CrimeType, Criminal (не обязательно)

Пример:

begin OnAlarm 0 begin OnAlarm 3, player

Этот блок выполняется один раз, когда заскриптованный актер поднимает тревогу по поводу определенного типа преступлений (CrimeType), совершенного преступником-актером (Criminal). Если указан только тип преступлений, блок будет исполняться, когда актер поднимает тревогу по поводу этого типа преступлений (неважно кем совершенного). Если необходимо знать больше информации о преступлении, функция GetCrimeKnown может использоваться внутри блока OnAlarm, чтобы определить, случилась ли определенная комбинация преступник/жертва.

В игре Обливион блок-тип OnAlarm используется 15 раз.
Примеры скриптов: Dark08AlarmScript, Dark08NelsScript, Dark08NevilleScript

 

OnAlarmVictim

Синтаксис:

begin OnAlarmVictim CrimeType, Victim (не обязательно)

Пример:

begin OnAlarmVictim 0 begin OnAlarmVictim 3, player

Этот блок выполняется один раз, когда заскриптованный актер поднимает тревогу по поводу определенного типа преступлений (CrimeType), совершенного против жертвы-актера (Victim). Если указан только тип преступлений, блок будет выполняться, когда актер поднимает тревогу по поводу этого типа преступлений (неважно против кого совершенного). Если необходимо знать больше информации о преступлении, функция GetCrimeKnown может использоваться внутри блока OnAlarm, чтобы определить, случилась ли определенная комбинация преступник/жертва.

В игре Обливион блок-тип OnAlarmVictim не используется.

 

OnDeath

Синтаксис:

begin OnDeath ActorID (не обязательно)

Пример:

begin OnDeath SuperChampion

Этот блок выполняется один раз, когда указанный актер (ActorID) убивает заскриптованного актера. Если параметр не используется, блок выполняется, когда заскриптованный актер умирает.

В игре Обливион блок-тип OnDeath используется 303 раза.
Примеры скриптов: AlawenScript, AlessiaCaroScript, AlixLencoliaScript

 

OnDrop

Синтаксис:

begin OnDrop ContainerRefID (не обязательно)

Пример:

begin OnDrop begin OnDrop player

Этот блок выполняется один раз, когда заскриптованный объект сбрасывается из указанного контейнера (ContainerRefID). Если контейнер не указан, блок будет исполняться, если объект сбрасывается из любого инвентаря.

В игре Обливион блок-тип OnDrop используется 7 раз.
Примеры скриптов: DarkScalesScript, GoblinHeadScript, HrormirsIcestaffScript

 

OnEquip

Синтаксис:

begin OnEquip ActorID (не обязательно)

Пример:

begin OnEquip begin OnEquip player

Этот блок исполняется один раз, когда заскриптованный объект надевается указанным актером (ActorID). Если параметр не используется, блок будет исполняться, когда объект надевается любым актером.

В игре Обливион блок-тип OnEquip используется 27 раз.
Примеры скриптов: AmuletofKingsSCRIPT, ArenaRaimentScript, BoarMeatScript

 

OnHit

Синтаксис:

begin OnHit ActorID (не обязательно)

Пример:

begin OnHit BaurusRef

Этот блок исполняется один раз, когда заскриптованный актер получает удар от указанного актера (ActorID) оружием или заклинанием. Если параметр не используется, блок исполняется каждый раз, когда актера ударяют.

В игре Обливион блок-тип OnHit используется 55 раз.
Примеры скриптов: ArenaCombatant, ArenaCombatantBlue, ArenaCombatantMulti

 

OnHitWith

Синтаксис:

begin OnHitWith ObjectID (не обязательно)

Пример:

begin OnHitWith SuperWeapon

Этот блок исполняется один раз, когда заскриптованный актер получает удар указанным оружием (ObjectID). Если параметр не используется, блок будет выполняться, когда заскриптованный актер получает удар любым оружием.

В игре Обливион блок-тип OnHitWith используется 7 раз.
Примеры скриптов: CGRopeBucketScript, Dark05MotierreScript, Dark09AdamusScript

 

OnKnockout

Синтаксис:

begin OnKnockout

Этот блок исполняется один раз, когда заскриптованный актер отправляется в нокаут.

В игре Обливион блок-тип OnKnockout не используется.

 

OnLoad

Синтаксис:

begin OnLoad

Этот блок исполняется один раз, когда загружается модель объекта, то есть когда игрок заходит в интерьер, ячейка с объектом загружается в область 5x5 вокруг игрока.

В игре Обливион блок-тип OnLoad используется 95 раз.
Примеры скриптов: ARGateAUTOCLOSE01SCRIPT, ARTallWallCarvingAnim01SCRIPT

 

OnMagicEffectHit

Синтаксис:

begin OnMagicEffectHit EffectID

Пример:

begin OnMagicEffectHit FIDG

Этот блок исполняется один раз, когда указанный тип магического эффекта (EffectID) ударяет по заскриптованному объекту. Если эффект не указан, блок будет выполняться, когда любой эффект ударяет по объекту.

В игре Обливион блок-тип OnMagicEffectHit используется 7 раз.
Примеры скриптов: JskarScript, MG05RockScript, MG10ColumnScript

 

OnMurder

Синтаксис:

begin OnMurder ActorID (не обязательно)

Пример:

begin OnMurder SuperChampion

Этот блок выполняется один раз, когда указанный актер (ActorID) совершает убийство (преступление) заскриптованного актера. Если параметр не используется, блок выполняется, когда совершается убийство заскриптованного актера (неважно кем).

В игре Обливион блок-тип OnMurder используется 10 раз.
Примеры скриптов: DarkExiledScript, DarkWrathofSithis2Script, DarkWrathofSithisScript

 

OnPackageChange

Синтаксис:

begin OnPackageChange PackageID

Пример:

begin OnPackageChange FollowPlayerPackage

Этот блок выполняется один раз, когда заскриптованный актер меняет пакет ИИ с указанного (PackageID) на другой. Заметьте, что "прерывающие" пакеты, такие, как бой или разговор, не запускают этот блок, поскольку они лишь временно заменяют текущий пакет.
Блок запускается, когда актер меняет пакет ИИ на другой. Если указанный пакет завершается, но актер снова начинает его исполнять, OnPackageChange НЕ запустится.

В игре Обливион блок-тип OnPackageChange используется 32 раза.
Примеры скриптов: AlessiaCaroScript, BarthelGernandScript, BaurusScript

 

OnPackageDone

Синтаксис:

begin OnPackageDone PackageID

Пример:

begin OnPackageDone FollowPlayerPackage

Этот блок исполняется один раз, когда заскриптованный актер завершает указанный пакет ИИ (PackageID). Заметьте, что пакет может быть завершен из-за неудачи (не найден путь, невозможно найти нужное количество объектов, или истекло время), если только у пакета не установлены флаги Must Reach Location или Must Complete.
Заметьте, что некоторые типы пакетов, например прогулка, сон и еда, не могут «завершиться», поскольку у них нет конца, поэтому OnPackageDone не будет запускаться для этих типов пакетов.
(Блок OnPackageEnd взаимозаменяем с OnPackageDone)

В игре Обливион блок-тип OnPackageDone используется 45 раз.
Примеры скриптов: BaurusScript, BurdSCRIPT, CGEmperorScript

OnPackageStart

Синтаксис:

begin OnPackageStart PackageID

Пример:

begin OnPackageStart FollowPlayerPackage

Этот блок исполняется один раз, когда заскриптованный актер начинает выполнять указанный пакет (PackageID).

В игре Обливион блок-тип OnPackageStart используется 13 раз.
Примеры скриптов: BarthelGernandScript, ClaudeMaricScript, DASheogorathRatScript

 

OnReset

Синтаксис:

begin OnReset

Этот блок исполняется один раз, когда ячейка с объектом возвращается в исходное состояние (через 3 после последнего посещения игрока). Обычно используется для ловушек и анимированных объектов, чтобы вернуть их в исходное состояние.

В игре Обливион блок-тип OnReset используется 110 раз.

Примеры скриптов: ARCAVEINTRAPSCRIPT01, ARChainPlatform01SCRIPT

 

OnSell

Синтаксис:

begin OnSell SellerRefID (не обязательно)

Пример:

begin OnSell player

Этот блок исполняется один раз, когда заскриптованный объект продается. Если вы указываете копию продавца (SellerRefID), блок будет исполняться только тогда, когда указанный объект продает объект; иначе он выполняется, когда любой NPC продает объект.

В игре Обливион блок-тип OnCell используется 1 раз.
Примеры скриптов: MS21statuescript

 

OnStartCombat

Синтаксис:

begin OnStartCombat TargetActorRefID (не обязательно)

Пример:

begin OnStartCombat player

Этот блок выполняется один раз, когда заскриптованный актер начинает бой с указанной целью (TargetActorRefID). Если цель не указана, блок исполняется, когда актер начинает бой.

В игре Обливион блок-тип OnStartCombat используется 13 раз.
Примеры скриптов: BaurusScript, BurdSCRIPT, CGEmperorScript

 

OnTrigger

Синтаксис:

begin OnTrigger TriggeringRefID (не обязательно)

Пример:

begin OnTrigger player

Этот блок исполняется один раз, когда что-то сталкивается с заскриптованным объектом. Если вы указываете это что-то (TriggeringRefID), блок исполняется, когда указанная копия сталкивается с объектом; иначе блок исполняется, когда любая копия сталкивается с объектом.

В игре Обливион блок-тип OnTrigger используется 94 раза.
Примеры скриптов: CGTriggerZoneCellScript, CGTrigZone01SCRIPT

 

OnTriggerActor

Синтаксис:

begin OnTriggerActor TriggeringRefID (не обязательно)

Пример:

begin OnTriggerActor player

Этот блок исполняется один раз, когда актер сталкивается с заскриптованным объектом. Если вы указываете это актера (TriggeringRefID), блок исполняется, когда указанная копия (актера) сталкивается с объектом; иначе блок исполняется, когда любой актер сталкивается с объектом.

В игре Обливион блок-тип OnTriggerActor используется 11 раз.
Примеры скриптов: CGTrigZoneACTORSCRIPT, FrostFireGasTrap, KillBox01SCRIPT

 

OnTriggerMob

Синтаксис:

begin OnTriggerMob TriggeringRefID (не обязательно)

Пример:

begin OnTriggerMob player

Этот блок исполняется один раз, когда мобильный объект сталкивается с заскриптованным объектом. Если вы указываете этот объект (TriggeringRefID), блок исполняется, когда указанная копия (мобильного объекта) сталкивается с объектом; иначе блок исполняется, когда любой мобильный объект сталкивается с объектом. Мобильные объекты включают актеров (NPC и существа), стелы и магические снаряды.

В игре Обливион блок-тип OnTriggerMob не используется.

 

 

OnUnequip

Синтаксис:

begin OnUnequip ActorID (не обязательно)

Пример:

begin OnUnequip begin OnUnequip player

Этот блок исполняется один раз, когда заскриптованный объект снимается указанным актером (ActorID). Если параметр не используется, блок исполняется, когда объект снимается любым актером.

В игре Обливион блок-тип OnUnequip используется 11 раз.
Примеры скриптов: ArenaRaimentScript, Dark05BladeScript, MGBloodwormHelmScript01

 

ScriptEffectFinish

Использование:

begin ScriptEffectFinish

Особый блок. Он используется только в скриптах для магических эффектов. Этот блок исполняется после того, как заскриптованный эффект закончился.
Заметьте, что блок ScriptEffectUpdate всегда выполняется до него. Если в ScriptEffectUpdate есть команда return, то эта часть скрипта выполняться не будет.

В игре Обливион блок-тип ScriptEffectFinish используется 32 раза.
Примеры скриптов: AnvilMGPetImpScript, AtronachFlameScript, AtronachFrostHealSCRIPT

 

 

ScriptEffectStart

Использование:

begin ScriptEffectStart

Это особый блок. Он используется только в скриптах для магических эффектов и выполняется сразу же после того, как заскриптованный эффект наложен.
Примечание: Любое заклинание со скриптовым эффектом исполняется на актере, на которого оно было наложено. Это означает, что копией по умолчанию является актер, на которого наложено заклинание, а не игрок (хотя игрок тоже может быть актером). Это означает также, что если блок выполняется, то заклинание только что наложили на актера и ScriptEffectStart может считаться блоком OnHitWith <имя заклинания>.
Тот факт, что заклинания со скриптовыми эффектами запускаются на объектах, на которые они были наложены, дает программисту возможность запускать скрипты на любом актере на определенный период времени и может быть использовано для получения копии актера.

В игре Обливион блок-тип ScriptEffectStart используется 42 раза.
Примеры скриптов: AnvilMGPetImpScript, AtronachFlameScript, AtronachFrostHealSCRIPT

 

 

ScriptEffectUpdate

Использование:

begin ScriptEffectUpdate

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

В игре Обливион блок-тип ScriptEffectUpdate используется 13 раз.
Примеры скриптов: DAHermaeusSoulsSpell, DummyMagicEffectSCRIPT, GhostEffectScript

4.3.6 Команда "." (точка - UseReference)

Синтаксис:

ObjectID.ObjectFunction [Arguments...] IDобъекта.Функция [Аргументы…]

 

Команда "." устанавливает предшествующий ей ObjectID (ID объекта) только для текущей функции. ObjectID может быть задан как непосредственно - с указанием ID копии объекта, так и с помощью переменной типа reference (как указатель на объект).
Примечания:
Как бы странно это ни показалось, но по сравнению с другими командами в скомпилированном скрипте это настоящая команда, которая использует код 0x001C.
Выражения (например, QuestID.QuestVariable (IDквеста.КвестоваяПеременная)) не используют эту команду. Внутри игры подобные выражения являются просто сложением (ObjectID)(VariableNumber). Например, строка "MageConvSystem.lecturevar" из скрипта ArcaneUScholarScript в шестнадцатеричном коде будет выглядеть как "72 04 00 73 0F 00" ("MageConvSystem" - четвертая копия, используемая в скрипте, а "lecturevar" объявлена пятнадцатой переменной). Content - Disposition: form-data; name="smiles_on"

 

Команда Set (установить)

Команда Set присваивает локальной или глобальной переменной указанное значение. Это значение может быть числом или результатом вычисления выражения.
Арифметические операторы:

 

Оператор Описание
+ Сложение
Вычитание
* Умножение
/ Деление
% Модуль (выполняет целочисленное деление и возвращает остаток)

Примечания:

· Оператор модуля "%" вычисляется после умножения / деления, но перед сложением / вычитанием:

4 * 3 % 2 = 0 4 * (3 % 2) = 4 1 + 2 % 3 = 3 (1 + 2) % 3 = 0

· Минус сразу перед числом или переменной считается знаком "отрицания". Если вам необходимо выполнить вычитание, нужно оставлять как минимум по одному пробелу до и после минуса. Это единственный случай, когда вам нужен пробел между арифметическими операторами. (Например: "a-b" не будет компилироваться; нужно написать "a - b").

· Если при делении вы используете только числа, необходимо указать хотя бы один знак после запятой, чтобы показать, что вы хотите использовать деление с вещественным результатом, иначе остаток будет отброшен после окончания деления:

 

float a set a to 9/5; установит "a" в 1.000 set a to 9.0/5; установит "a" в 1.800

 

· Если вы хотите сохранить в целочисленной переменной верно округленный результат деления, убедитесь, что в вычислениях используется плавающая точка (и десятичная часть не отбрасывается) и добавьте 0.5:

 

short a set a to 9/5; установит "a" в 1 set a to 9/5 + 0.5; установит "a" в 1 set a to 9.0/5; установит "a" в 1 set a to 9.0/5 + 0.5; установит "a" в 2 set a to 7.0/5 + 0.5; установит "a" в 1
short a set a to 9 set a to a/5.0 + 0.5; установит "a" в 2
short a float b set b to 9 set a to b/5 + 0.5; установит "a" в 2

· Вы можете использовать результат сравнения в качестве "значения". Переменная тогда станет равной 1 или 0 в зависимости от того, истинно ли сравнение или нет. Например,

 

set goodluck to player.GetAV luck > 60

 

делает то же самое, что и

 

if player.GetAV luck > 60 set goodluck to 1 else set goodluck to 0 endif

 

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

 

set luckbonus to 50 * (player.Getav luck > 60)


делает то же самое, что и

 

if player.Getav luck > 60 set luckbonus to 50 else set luckbonus to 0 endif

 

Другие примеры:

 

set a to 2 set b to a*a set c to (b - a)*b - a set d to ((3* -b+a) - c)/ -2 message "a=%.0f, b=%.0f, c=%.0f, d=%.0f" a b c d; ("a=2, b=4, c=6, d=8") set stage to getstage quest1 + 10 set weapondrawn to player.isweaponout

 

Команда Return (возврат)

Синтаксис:

Return

Команда Return используется для того, чтобы остановить выполнение скрипта в текущем фрейме. Она не просто завершает ТЕКУЩИЙ блок, он завершает ВЕСЬ скрипт до конца фрейма. Скрипт будет запущен снова в следующем фрейме. Это может быть полезно внутри команд if, когда требуется блокировать команды, следующие непосредственно после return.

 



Поделиться:


Последнее изменение этой страницы: 2016-07-11; просмотров: 370; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.223.239 (0.011 с.)