Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OSFM v1.2.0.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.49 Mб
Скачать

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.

Тип блока        

Параметры

Описание

1

GameMode

нет

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

2

MenuMode

Тип меню (не обязательно)

Исполняется в каждом фрейме, пока игра находится в меню.

3

OnActivate

нет

Исполняется один раз, когда объект активирован.

4

OnActorEquip

ID объекта.

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

5

OnActorUnequip

ID объекта

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

6

OnAdd

ID копии контейнера

(не обяз.)

Исполняется один раз, когда объект добавляется в инвентарь контейнера.

7

OnAlarm

Тип преступления, Преступник

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

Исполняется один раз, когда актер поднимает тревогу по поводу указанного преступления, совершенного преступником (актером).

8

OnAlarmVictim

Тип преступления, Жертва (не обяз.)

Исполняется один раз, когда актер поднимает тревогу по поводу указанного преступления, совершенного против жертвы (актером).

9

OnDeath

ID актера

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

Исполняется один раз, когда умирает от рук указанного актера.

10

OnDrop

ID копии контейнера

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

Исполняется один раз, когда объект сброшен из контейнера.

11

OnEquip

ID актера

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

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

12

OnHit

ID актера

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

Исполняется один раз, когда получают удар от указанного актера

13

OnHitWith

ID объекта

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

Исполняется один раз, когда актер получает удар указанным оружием

14

OnKnockout

нет

Исполняется один раз, когда отправлен в нокаут указанными актером

15

OnLoad

нет

Исполняется один раз, когда в игру загружается модель (3D) объекта

16

OnMagicEffectHit

ID эффекта

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

Исполняется один раз, когда на актера накладывается указанный магический эффект

17

OnMurder

ID актера

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

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

18

OnPackageChange

ID пакет  

Исполняется один раз, когда актер меняет указанный пакет ИИ

19

OnPackageDone

ID пакета

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

20

OnPackageStart

ID пакета

Исполняется один раз, когда актер начинает указанный пакет ИИ

21

OnReset

нет

Исполняется один раз, когда ячейка с заскриптованным объектом сбрасывается (reset)

22

OnSell

ID копии продавца

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

Исполняется один раз, когда объект продается указанным продавцом

23

OnStartCombat

ID актера-цели (не обязательно)

Исполняется один раз, когда актер начинает битву с указанным актером

24

OnTrigger

ID копии сталкивающегося объекта (не обязательно)

Исполняется один раз, когда объект сталкивается с указанным объектом

25

OnTriggerActor

ID копии сталкивающегося объекта (не обязательно)

Исполняется один раз, когда объект сталкивается с указанным актером

26

OnTriggerMob

ID копии сталкивающегося объекта (не обязательно)

Исполняется один раз, когда объект сталкивается с указанным мобильным объектом (актеры, стрелы, магические снаряды)

27

OnUnequip

ID копии контейнера (не обяз.)

Исполняется один раз, когда снимается указанным актером.

28

ScriptEffectStart

нет

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

29

ScriptEffectFinish

нет

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

30

ScriptEffectUpdate

нет

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]