Учебник скриптов: добавляем ловушку.



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


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



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


ЗНАЕТЕ ЛИ ВЫ?

Учебник скриптов: добавляем ловушку.



Если игрок неправильно ответит на загадку, наш шкаф наложит на него проклятье. Сначала выберите заклинание, которым хотите поразить игрока: щелчок на значок "+" рядом с Magic, еще раз нажмите на "+" рядом со вкладкой Spell, наконец, выберите подпункт "Заклинание". Выбор здесь довольной большой, но для наших целей мы используем заклинание Mg05FingerSpell15.

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

 

Else MessageBox "Неправильный ответ." Cast Mg05FingerSpell15 Player Set controlvar to 0 EndIf

Отметьте, что мы использовали функцию "Cast". (Дополнительная информация: для работы функции "Cast" необходим объект вызова. Мы не включили его в наш скрипт, потому что это объектный скрипт, и он будет привязан к игровому объекту. Следовательно, функция будет действовать относительно данного объекта.)

Теперь ваш скрипт должен выглядеть так:

 

ScriptName RiddleChestScript Short controlvar Short button Begin OnActivate If ( controlvar == 0 ) MessageBox "Безголосый, но плачет; бескрылый, но парит; беззубый, но кусает; безротый, но бормочет. Что это?", "Летучая мышь", "Старуха", "Ветер", "Привидение" Set controlvar to 1 ElseIf ( controlvar > 1 ) Activate EndIf End Begin GameMode If ( controlvar == 1 ) Set button to GetButtonPressed If ( button == -1 ) Return ElseIf ( button == 2) MessageBox "Правильный ответ." Set controlvar to 2 Else MessageBox "Неправильный ответ." Cast Mg05FingerSpell15 Player Set controlvar to 0 EndIf ElseIf ( controlvar == 2 ) Activate Set controlvar to 3 EndIf End


Вот и все, ваш скрипт готов. Поздравляем! Если хотите, можете поэкспериментировать со скриптом, используя другие функции.

 

Как узнать больше.

После прочтения этого учебника вы можете спросить себя, как продолжить изучение написания скриптов? Хороший способ – это просмотр примеров из учебника или скриптов игры (как написанные Bethesda, так и из модов). Попробуйте найти скрипт, схожий с тем, что вы хотите создать, скопируйте его и измените под ваши нужды. Почитайте общую информацию по функциям и описания функций, которые могут понадобиться вам для осуществления задуманного.

Классификация функций в функциональные типы должна помочь вам в поиске нужного. И, наконец, официальные форумы - отличное место для поиска информации (используйте функцию поиска) или для получения помощи по конкретной проблеме. А остальное – практика, практика и еще раз практика.

 

Заключительные строки.

Читатели, которые обратили внимание на функцию "If", должны были заметить, что ставить круглые скобки вокруг условий не обязательно. Я включил их в данный учебник, поскольку мне кажется, что это упорядочивает и упрощает понимание скрипта.

И, наконец, хочу объявить огромную благодарность GhanBuriGhan`y за его фантастическое "Руководство по скриптам Morrowind для чайников" (Morrowind Scripting for Dummies), в котором содержится прототип этого учебника. Я не смог с ним связаться, чтобы получить разрешение на его использование; но если у него есть какие-либо вопросы насчет данного руководства, то он вправе убрать его из WIKI или же отредактировать его.

Функции в TES 4

Что такое функция? (Function)

Функции – это скриптовые операции, которые, в отличие от команд, напрямую взаимодействуют с игровым миром. Из всех скриптовых операций самое большое количество приходится именно на функции, которых на данный момент насчитывается 359 (в игре TES 4 Oblivion используется 353). Внушительное количество полезных функций насчитывается в расширителе скриптов OBSE, который будет рассматриваться во втором томе OSFM.

Программисты, привыкшие к таким языкам программирования, как Pascal и Delphi, не найдут в скриптовом языке Обливион привычных процедур. Есть только функции.
Все без исключения функции возвращают какое-либо значение. Возвращаемые значения могут быть использованы при проверке условий "if" или же их можно сохранить в переменных, используя команду “set”.

Функции подразделяются на две подкатегории: пассивные и активные.

  • Пассивные функции проверяют определенные значения в игре и возвращают их численное значение. К примеру, GetActorValue возвращает определенное числовое значение, а GetDetected возвращает “1”, если цель обнаружена, или “0”, если нет и т.п.
  • Активные функции, в отличие от пассивных, вносят изменения в игровой мир и, как правило, возвращают логический результат (“1” или “0”) - были ли действия успешными или нет. RemoveSpell, к примеру, снимает заклинание с цели и возвращает “1”, если действие прошло успешно (т.к. на цели было заклятие). PlaceAtME создает какой-либо объект в локации вызвавшего эту функцию и возвращает ссылку на копию этого объекта.

 

Типы функций (Function Types)

Чтобы как-то систематизировать функции, в WIKI они были разделены на 22 категории:

  • AI Functions – Функции, связанные с искусственным интеллектом (Radiant AI) и пакетами.
  • Actor Functions – Функции, работающие с актерами.
  • Actor State Functions – Функции, связанные с состоянием актера.
  • Statistics Functions – Статистические функции, связанные с характеристиками актеров.
  • Actor Value Functions – Функции, модифицирующие характеристики актеров. Относятся также к статистическим функциям.
  • Animation Functions – Анимационные функции
  • Combat Functions – Функции боя
  • Condition Functions – Функции условий. Могут использоваться в качестве условий в любом месте редактора, где есть условия (стадии квеста, диалоги, пакеты, менеджер анимации и т.п.).
  • Crime Functions – Функции преступлений
  • Dialogue Functions – Функции диалогов
  • Faction Functions – Функции фракций
  • Magic Functions – Магические функции
  • Miscellaneous Functions – Прочие функции
  • Movement Functions – Функции движения
  • Object Functions – Объектные функции
  • Player Functions – Функции, обращающиеся только к игроку
  • Quest Functions – Квестовые функции
  • Reference Variable Functions – Функции, возвращающие указатели для установки ref- переменных
  • Time Functions – Функции времени.
  • Weather Functions – Функции погоды.
  • Console Functions – Консольные функции. По другому – консольные команды, иногда их называют чит-кодами или просто читами.
  • OBSE Function – Функции расширителя скриптового языка OBSE.

Многие из основных функций относятся сразу к нескольким категориям.
После некоторых размышлений мы решили, что оптимальным решением будет размещение описаний основных функций TES 4 CS в алфавитном порядке, отдельно будут описаны консольные функции и команды. Новые функции расширителя скриптов OBSE будут рассмативаться во втором томе.

Работа функций с копиями объектов

Источник: (wiki: Reference functions)

Объектные функции
Большинство скриптовых функций являются объектными функциями, поскольку запускаются с копии объекта (wiki: Object reference). Локальные скрипты (скрипты на объектах и скрипты в поле result диалога) могут использовать неявный синтаксис обращения к копии. Например:

GetDisposition player


GetDisposition – это объектная функция – отношение кого мы запрашиваем? Поскольку в этом случае мы не указываем копию объекта, подразумевается, что мы пишем:

thisReference.GetDisposition player ; Здесь thisReference – копия, к которой прикреплен скрипт


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

JauffreRef.GetDisposition player


Здесь мы запрашиваем отношение Джоффри (Jauffre) к игроку. Этот синтаксис может использоваться в любом скрипте, потому что мы явно указали копию объекта.

 

ПРИМЕЧАНИЕ: вы также можете запускать объектные функции с переменных типа ref, как если бы эти переменные сами были объектами.

 



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

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