Войти на сайт

Авторизация, ждите ...
×

ТЕМА: [VX Ace] Строим дом из блоков

[VX Ace] Строим дом из блоков 5 года 4 мес. назад #87562

  • sondju
  • sondju аватар
  • Вне сайта
  • Познающий
  • Сообщений: 10
  • Спасибо получено: 21
Итак, сегодня я научу вас строить дом. Построить его можно несколькими способами:
1. Сделать 2 карты. На одной дома нет, на другой есть. На карте без дома нажимаем на активатор (табличку, верстак и т.п.), затеняем экран, включаем ожидание кадров 120-180 и телепортируемся на карту с домом. Вот и весь способ.
2. Непосредственное строительство из блоков. Его-то мы сегодня и разберем, ибо в демо-проекте был использован именно он.
Постройка из блоков
Добавляем 3 карты:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Теперь давайте рассмотрим все подробнее. Начнем по порядку срабатывания событий.
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
Последнее редактирование: 5 года 4 мес. назад от sondju.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: AnnTenna, I_LORD, Kerotan, DeadElf79, poca, TheMaximGames, Koteuka, LiRo

[VX Ace] Строим дом из блоков 5 года 4 мес. назад #87574

  • I_LORD
  • I_LORD аватар
  • Вне сайта
  • Светлый дракон
  • ;)
  • Сообщений: 777
  • Спасибо получено: 721
  • ПаладинПроект года 2 местоРазработчикПроект месяца 2 местоПроект месяца 3 местоВетеранОраторПроект месяца 1 место
Очень долго строит...можно обрезать процесс..показать только начало ..потом затемнение и все.

При попытки войти в дом
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Последнее редактирование: 5 года 4 мес. назад от I_LORD.
Администратор запретил публиковать записи гостям.

[VX Ace] Строим дом из блоков 5 года 4 мес. назад #87577

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2645
  • Организатор конкурсовУчительВетеранПисатель 3 местоПрограммист RubyПроект месяца 2 место3 местоПроект месяца 1 место1 место в Готв
Автор, будь добр, разбавь иллюстрациями ^_^ Статья хорошая, стоит того, я думаю)
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: AnnTenna, poca

[VX Ace] Строим дом из блоков 5 года 4 мес. назад #87582

  • sondju
  • sondju аватар
  • Вне сайта
  • Познающий
  • Сообщений: 10
  • Спасибо получено: 21
I_LORD пишет:
Очень долго строит...можно обрезать процесс..показать только начало ..потом затемнение и все.

При попытки войти в дом
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Я пытался добиться реализма в строительстве. А уж как дальше делать, личное дело каждого.
Добавил тайлсет.

DeadElf79 пишет:
Автор, будь добр, разбавь иллюстрациями ^_^ Статья хорошая, стоит того, я думаю)
Хорошо, сейчас сделаю. Вопрос лишь, какие именно моменты добавить?

--исправил дабл-пост --эльф
Последнее редактирование: 5 года 4 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: poca

[VX Ace] Строим дом из блоков 5 года 4 мес. назад #87588

  • DeadElf79
  • DeadElf79 аватар
  • Вне сайта
  • Звездный Страж
  • Сообщений: 3147
  • Спасибо получено: 2645
  • Организатор конкурсовУчительВетеранПисатель 3 местоПрограммист RubyПроект месяца 2 место3 местоПроект месяца 1 место1 место в Готв
Далее во временном лагере определяем несколько событий и условий:
В лесу раскладываем 8 одинаковых событий, которые при активации будут добавлять в инвентарь (и переменную) по 10 единиц древисины
Итак, мы на самой важной (сложной) карте. Здесь у нас больше всего событий
Далее вне видимой области помещаем наш дом, состоящий из событий.
Далее размещаем событие-табличку. Хотя, желательно бы верстак, но чего нет, того нет
Далее переносим событие А1 на нужную клетку.
По окончании строительства, задаем персонажу 3 прыжка в направлении клетки не занятой домом
Внутри дома у нас только одно событие-телепорт

Вот в этих местах было бы неплохо. Будет на что ориентироваться хотя бы ^_^
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: poca

[VX Ace] Строим дом из блоков 5 года 4 мес. назад #87612

  • zmeelov66
  • zmeelov66 аватар
  • Вне сайта
  • Светлый дракон
  • Патологический бездельник ^_^
  • Сообщений: 502
  • Спасибо получено: 368
  • 2 место ГотвПроект месяца 3 место
Кхм, ожидал возможности строить дом, получил видимость возможности строить дом))
Хотя все равно миленько)Жаль, ввиду того, что у меня демка запускаться не хочет, не смогу оценить как оно выглядит на деле.
Администратор запретил публиковать записи гостям.

[VX Ace] Строим дом из блоков 5 года 4 мес. назад #87633

  • sondju
  • sondju аватар
  • Вне сайта
  • Познающий
  • Сообщений: 10
  • Спасибо получено: 21
zmeelov66 пишет:
Кхм, ожидал возможности строить дом, получил видимость возможности строить дом))
Хотя все равно миленько)Жаль, ввиду того, что у меня демка запускаться не хочет, не смогу оценить как оно выглядит на деле.
Чтобы действительно построить дом, надо очень постараться *facepalm* лучше мы его внутри обставим по принципу Обливиона.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DeadElf79

[VX Ace] Строим дом из блоков 5 года 4 мес. назад #87639

  • Sypherot
  • Sypherot аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1210
  • Спасибо получено: 988
  • Проект месяца 3 место2 место 2 место ГотвПаладинЗа 3 место на конкурсе маппингаОраторПроект месяца 2 местоДаритель СтимкеяПроект месяца 1 место
под ХР встречал нечто подобное, только там это был скрипт.
si vic pacem para bellum
Администратор запретил публиковать записи гостям.

[VX Ace] Строим дом из блоков 5 года 4 мес. назад #87662

  • sondju
  • sondju аватар
  • Вне сайта
  • Познающий
  • Сообщений: 10
  • Спасибо получено: 21
Экспериментальным путем исключил лишние события, заменив страницами. Например, теперь костер можно разжигать, гасить, разжигать, гасить... И топор из колоды брать, возвращать до бесконечности :ohmy: далее буду пробовать упростить задачу с постройкой дома :)
Администратор запретил публиковать записи гостям.

[VX Ace] Строим дом из блоков 5 года 4 мес. назад #87672

  • sondju
  • sondju аватар
  • Вне сайта
  • Познающий
  • Сообщений: 10
  • Спасибо получено: 21
Так, вобщем, переделал проект. Теперь всего 3 карты: дом (снаружи), дом (внутри) и лес. Блоки дома проявляются через переключатели. Единственное, что пришлось дверь и трубу все же сделать перемещаемыми на нужные места. И добавить событие, которое при входе на карту ставит их куда положено. Руководство завтра перепишу. А пока вот...
yadi.sk/d/bCXXlMRUkt8MC
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: DeadElf79
Время создания страницы: 0.239 секунд