Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Выдача текстового сообщения и получение ответа от игрока.Содержание книги
Поиск на нашем сайте
Теперь нужно, чтобы наш шкаф с ловушкой загадывал игроку загадку. Для этого используется функция "MessageBox", которая должна быть вам знакома: в " Моем первом скрипте" использовалась родственная команда "Message". "MessageBox" позволяет вывести на экран небольшое количество текста и также отобразить несколько вариантов ответов, из которых может выбрать игрок. К сожалению, в Oblivion (как до него и в Morrowind), нет возможности печатать ответ на загадку, так что нам придется предоставить несколько вариантов ответов. Строка кода для этого:
Но как нам сделать, чтобы загадка задавалась только при первой попытке открыть шкаф, а не постоянно? Теперь мы переходим к центральной теме: использование одноразовых условий и переменных состояния. Самая распространенная из проблем, с которой сталкиваются начинающие в написании скриптов для Oblivion, берет свои корни в непонимании того, как на самом деле выполняются и, соответственно, должны быть оформлены скрипты. Так что обратим внимание на эту важную деталь.
Как выполняются объектные скрипты
Каждый скрипт, привязанный к объекту или NPC (объектный скрипт), выполняется в каждом фрейме отображения игры на экране, пока активна ячейка с объектом (во внутренних ячейках скрипты активны только в ячейке, в которой находится игрок; снаружи – в ячейке, в которой находится игрок и во всех активных смежных ячейках). Так что каждый отдельный скрипт (а не его отдельная строчка) выполняется 10-60 раз в секунду или столько раз, насколько быстро на вашем компьютере идет игра! Легче всего представить каждый локальный скрипт завернутым в большую циклическую спираль:
Этот пример сравнительно безобидный, но представьте себе что случится, если бы вы использовали линию кода, которая добавляет предмет в инвентарь игрока или устанавливает возле него монстра, и т.п.! Вот почему конструкции с использованием "Do Once" так существенны и часто используются при написании скриптов для Oblivion. Так что давайте продолжим написание нашего учебного скрипта - нам нужно применить переменную, чтобы наше сообщение выдавалось только один раз.
Измените свой скрипт как указано ниже:
Не прерывайте и не переносите ее! И еще, напоследок нужно отметить несколько вещей. Команда "If" используется для проверки условия – всякий раз, когда выражение в круглых скобках будет истинным, будут выполняться последующие строки кода, вплоть до команды "EndIf". "==" – проверяет, эквивалентно ли левое выражение (в нашем случае это переменная "controlvar") выражению с правой стороны (в нашем случае "0"). Если вы забудете поставить "EndIf" после команды "If", редактор будет выдавать сообщение об ошибке, когда вы попытаетесь сохранить скрипт. "Short controlvar" указывает новую переменную, которую мы назвали "controlvar". Сейчас вам достаточно знать, что данная переменная будет содержать целые (целые положительные или отрицательные числа). Переменная - это "метка-заполнитель", которая может принимать различные значения. Команда "Set" для вас тоже новая, но достаточно простая – она устанавливает значение нашей переменной с 0 на 1 (все переменные начинают с нулевого значения). Это в сочетании с командой "If (controlvar == 0)" обеспечивает одноразовое условие – в следующем фрейме скрипт будет выполняться после того, как переменной будет присвоено значение 1, условие "If" будет неверно и текстовое сообщение больше выдаваться не будет.
Учебник скриптов: первый тест
Сохранение и подготовка модификации.
Наш скрипт уже способен работать, так что давайте его проверим:
Скрипт в игре
• Теперь используйте "Файлы данных", чтобы активировать мод, запустить игру и загрузить сохранение.
и нажмите Enter.
• Вы появитесь в Алесвельской таверне, где вас сразу поприветствует группа невидимых людей. Это не имеет отношения к моду, просто данная ячейка использовалась автором для тестирования (она находится сверху в списке интерьеров, поэтому ее очень легко находить). Щелкайте, пока не сможете двигаться, и подойдите к шкафу слева от вас.
Нажатие на один из вариантов ответа закроет окно, и если попытаться активировать шкаф опять, ничего больше произойти не должно – это хорошо, т.к. значит, что наша проверка состояния работает, как мы и хотели. (Шкаф не открывается потому, что мы еще не включили в скрипт команду Activate, мы сделаем это позже.) Выключите Oblivion и загрузите свою модификацию в TESCS. Бедным людям из Алесвельской таверны придется дождаться следующего раза, чтобы вернуть свою видимость, но такова жизнь NPC в видеоигре.
|
||||||||||
Последнее изменение этой страницы: 2016-07-11; просмотров: 235; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.119.163 (0.007 с.) |