Итак, сегодня я научу вас строить дом. Построить его можно несколькими способами:
1. Сделать 2 карты. На одной дома нет, на другой есть. На карте без дома нажимаем на активатор (табличку, верстак и т.п.), затеняем экран, включаем ожидание кадров 120-180 и телепортируемся на карту с домом. Вот и весь способ.
2. Непосредственное строительство из блоков. Его-то мы сегодня и разберем, ибо в демо-проекте был использован именно он.
Постройка из блоков
Добавляем 3 карты:
Дом снаружи
На снимке мы видим собственно наш будущий дом и рядом туалет.
Ниже слева телепорт в магазинчик и справа телепорт в лес.
Далее идет наша строительная табличка, окруженная событиями, которые определяют с какой стороны от таблички мы находимся.
Правее ближе к лесу колода с топором.
Ниже свернутая палатка.
Далее костер.
Слева-внизу 2 события: стартовое и вспомогательное.
С самого края справа мы видим трубу, ниже дверь в туалет и дверь в дом.
Лес
На снимке слева у нас телепорт к дому.
8 идентичных событий с древесиной.
И небольшой сундучок с деньгами.
Дом внутри
Левая верхняя комната - это кухня.
Правее спальня.
И внизу гостиная.
Как вы видите, вся мебель в этих комнатах состоит из событий.
В левом нижнем углу у нас событие для разжигания камина. В нужный момент оно помещается внутрь камина.
Справа-внизу у нас вспомогательное событие.
И в самом низу собственно телепорт на карту с домом.
Чтобы обставить дом изнутри, мы можем построить примерно такой магазинчик.
Справа-вверху я добавил дверь для реализма.
Ниже стоит торговец.
И перед ним событие для обстановки дома.
В самом низу выход из магазина.
Теперь давайте рассмотрим все подробнее. Начнем по порядку срабатывания событий.
1. Стартовое событие. Приоритет = Любой, Триггер = Автоматически (или параллельно).
Это событие показывает несколько диалогов при условии, что их еще не показывали. Если не добавить это условие, то диалоги будут показаны при любом входе на карту или загрузке игры. Я сделал переключатель "Начальный диалог" и после показа соответствующих диалогов просто включаю его. При этом диалоги и включение должны находиться внутри условия "Начальный диалог == ВЫКЛ".
2. Вспомогательное событие. Приоритет = Любой, Триггер = Параллельно.
Это событие проверяет построен ли дом. Если дом построен, оно ставит на свои места дверь дома и печную трубу. Кроме того, оно проверяет построен ли туалет. Если построен, оно ставит на свое место его дверь. Еще оно проверяет разведен ли костер. Если разведен, то оно включает фоновый звук пламени. И еще одно важное действие присвоение переменной "Древесина" значения "Древесина (в инвентаре)". То есть, мы можем не присваивать ей значений, при заготовке в лесу, оно просто станет равно количеству древесины в инвентаре при входе на карту с домом.
3. Костер. 2 страницы. Приоритет = На одном уровне, Триггер = От кнопки действия.
На первой мы проверяем выключен ли переключатель "Костер разведен". Если выключен, то включаем его. Так же мы проверяем, сказал ли уже герой, что теперь можно пойти в лес. Если не сказал, то показываем соответствующий диалог. Я сделал для этого отдельный переключатель "Диалог костра". Это нужно для того, чтобы он не говорил эту фразу каждый раз, когда мы разводим костер. На второй странице мы проверяем включен ли переключатель "Костер разведен" (также и в условии запуска страницы). Если включен, то выключаем его. И заглушаем фоновый звук пламени. То есть, нажимаем один раз - костер загорается, нажимаем второй - гастнет.
4. Палатка. 3 нижних части = 2 страницы. Приоритет = На одном уровне, Триггер = От кнопки действия.
При нажатии на любую из 3 нижних частей на первой странице, проверяется условие (переключатель) "Палатка поставлена" = ВЫКЛ. Если условие выполнено, то затеняем экран, включаем перключатель, ставим ожидание 60 кадров и показываем экран. При этом палатка будет уже поставлена. На второй странице все аналогично первой, только проверяется условие "Палатка поставлена" = ВКЛ и соответственно переключатель мы выключаем. В итоге мы можем сколько угодно раз ставить и убирать платку.
5. Колода. 2 страницы. Приоритет = На одном уровне, Триггер = От кнопки действия.
На первой странице мы проверяем есть ли у нас в инвентаре топор. Если его там нет, то проверяем сазал ли уже персонаж фразу о топоре. Если не сказал, то показываем соответствующий диалог и включаем переключатель "Диалог топора". Мы ведь не хотим, чтобы он постоянно повторял эту фразу. После условия диалога добавляем 2 действия: добавить в инвентарь топор и проиграть звук. У меня это звук "Sword 4". На второй странице у нас условие запуска "Предмет: Топор есть". И соответственно если он есть, то мы его отнимаем и проигрываем звук, который был на странице 1.
6. Дом. Приоритет = Любой, Триггер = Любой.
Добавляем события по количеству блоков будущего дома. На скриншоте мы видим, что они расположены сразу в нужном месте. Я назвал каждое событие в соответствии с рядом и местом. Ряд первый - А1-А7. Ряд второй - Б1-Б7. И так далее. Назначаем условие запуска для каждого из событий на соответствующий переключатель. То есть, чтобы у нас был виден блок А1, нужно чтобы был включен переключатель А1. А2 - переключатель А2. И так далее.
7. Туалет. Приоритет = Любой, Триггер = Любой.
Здесь все аналогично дому. Только блоки я назвал иначе. Т1-Т15.
8. Вокруг таблички. Приоритет = Под персонажем, Триггер = Касание персонажа.
Добавляем 4 события вокруг таблички. Для того, которое ниже назначаем включение переключателя "Снизу от таблички" и отключение переключателей "Слева от таблички", "Сверху от таблички" и "Справа от таблички". Для других проделываем аналогичные действия, с той лишь разницей, что включаем в них переключатели соответствующие сторонам таблички.
9. Табличка. 2 страницы. Приоритет = На одном уровне, Триггер = От кнопки действия.
Вот и самая важная часть. Отсюда начинается строительство нашего дома. На первой странице мы проверяем, достаточно ли у нас древесины. Если ее достаточно, то показываем сообщение, что можно приступать к строительству. Далее определяем, какой из переключателей активен "Снизу", "Слева", "Сверху" или "Справа" от таблички. В зависимости от переключателя задаем путь перемещения игрока к начальной точке строительства, которая у нас находится на 1 клетку ниже левого-нижнего угла дома.
а) Воспроизводим звук "Knock" с ожиданием 30 кадров после каждого.
б) Отображаем блок, включив соответствующий переключатель (А1, А2 и т.д.).
в) Перемещаем игрока на шаг вправо, поворачиваем лицом вверх.
Далее повторяем действия а-в, пока не достигнем правого края.
г) Включаем проходимость, чтобы игрок мог ходить по стенам.
д) Воспроизводим звук "Knock" с ожиданием 30 кадров после каждого.
е) Отображаем блок, включив соответствующий переключатель (Б7, Б6 и т.д.)
ж) Перемещаем игрока на шаг влево, поворачиваем лицом вверх.
Далее повторяем действия д-ж, пока не достигнем левого края.
По достижении правого или левого края дома назначаем игроку перемещение с прыжком по оси Y на -1.
И далее повторяем а-в, д-ж, включая соответствующие блокам переключатели до момента, когда ширина (количество блоков) уменьшится.
Когда ширина уменьшится, изменяем прыжок таким образом, чтобы игрок прыгнул вверх-влево или вверх-вправо в соответствии с тем, с какой стороны дома он находится.
И самое главное, не забывайте отнимать из инвентаря 1 древесины, после каждого включенного блока.
После того, как будет включен последний блок, дом у нас практически готов. Осталось лишь поставить дверь. Чем мы и займемся дальше.
Назначаем игроку перемещение в 3 прыжка +1 по осям X и Y. Далее направляем его на клетку перед дверным проемом, поворачиваем лицом вверх. Воспроизводим 3 раза звук "Knock" с ожиданием 30 кадров после каждого. И перемещаем событие "Дверь дома" на ее исконное место (в дверной проем дома).
Присваиваем переменной "Древесина" количество древесины в инвентаре. И включаем переключатель "Дом построен".
Вот и готов наш дом. Теперь сколько бы вы ни перемещались на карту с ним, он никуда не денется. И прочие события будут отображаться такими, какие были при покидании карты.
На второй странице у нас собственно постройка туалета. Думаю вы сами разберетесь, что там к чему. Условие запуска страницы у нас висит на переключателе "Дом построен".
10. Древесина. Приоритет = На одном уровне, Триггер = От кнопки действия.
Как вы помните, для постройки дома нам необходима древесина. Нарубить ее мы можем в лесу. Для этого я добавил 8 идентичных событий, которые удаляются после воспроизведения звука "Тук-тук-тук" и добавления в инвентарь 10 единиц древисины.
11. Обустройство дома.
Я добавил торговца в отдельной локации. После постройки дома он может помочь нам обставить дом. То есть, при активации нам предлагается выбор, что обставить. В моей демке вы можете выбрать только что-то одно, ибо денег на все я не дал. А где же эти самые деньги? После постройки дома, в лесу появится сундучок с 1000 монет. Как раз на одно из улучшений.
А теперь подробнее о самом процессе улучшения. В доме у меня добавлена мебель в виде событий. Условия запуска у них привязаны к переключателям типа "Плита установлена", "Пианино куплено" и т.п. При выборе обустройства какой-то комнаты, переключатели включаются и ее мебель становится видимой. Конечно при условии, что у вас хватает денег.
На этом, кажется все. Говорите, если что-то упустил.
И собственно демка...
yadi.sk/d/bCXXlMRUkt8MC