Войти на сайт

Авторизация, ждите ...
×
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

ТЕМА: Как сделать условие событию для головоломки?

Как сделать условие событию для головоломки? 6 года 4 мес. назад #107843

  • VaNyuHa
  • VaNyuHa аватар
  • Вне сайта
  • Мастер
  • Сообщений: 120
  • Спасибо получено: 62
Здравствуйте! Я здесь чайник. Раньше разрабатывал Horror игры на FPSC и теперь перешёл на такой интересный движок как RPG Maker MV.
Перед тем как делать проект, сначала разбираюсь с моими возможностями на этом движке, учусь проще говоря)
И вот практикую создание головоломок.

Суть головоломки проста: Имеется два ящика с золотом, один с серебром. Нужно ящики с золотом передвинуть на золотые платформы, а с серебром на серебряную. Если головоломка решена не правильно, то нажав на красную кнопку все предметы возвращаются в исходное положение. Если все ящики передвинуть на свои места, то игрок получает награду (Открытие двери к примеру).

Суть вопроса: Всё работает, но как платформам поставить условие, что если все ящики стоят на определённых платформах, то происходит действие?

На скрине можно увидеть ту самую головоломку (на графику не смотрите, я же сказал, пока что просто практикую свои возможности)
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Последнее редактирование: 6 года 4 мес. назад от AnnTenna. Причина: красный цвет зарезервирован для администрации
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Как сделать условие событию для головоломки? 6 года 4 мес. назад #107844

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2480
  • ВетеранЗа 2 место на конкурсе маппингаОраторДаритель СтимкеяУчительРазработчикПроект месяца 3 местоПоддержка ФондаПрограммист Ruby2 место
Здравствуйте! К сожалению, у меня сейчас нет мейкера под рукой, так что опишу без картинок. Если что-то непонятно, спрашивайте.
VaNyuHa пишет:
как платформам поставить условие, что если все ящики стоят на определённых платформах, то происходит действие?
Нужно использовать переменные. В переменные записать координаты и создать проверку условия, что координаты X и Y ящика и платформы равны. Проверку удобно выполнять в параллельном событии.

Алгоритм примерно такой:
  • Создайте новое событие, задайте ему триггер «Параллельно». Это значит, что событие будет постоянно выполняться в фоновом режиме и не будет мешать другим событиям. Оно будет проверять, все ли ящики на месте, если все — делать что-то при победе.
  • С помощью команды «Переманная» (на 1 странице команд событий) можно записать в переменную координаты «X карты» и «Y карты» для клетки, на которой стоит событие. В поле «Переменная» оставьте «Одна», справа от «Одна» щёлкните по полю выбора переменной. Выберите какую-то незанятую переменную, назовите её «X зол. ящ. 1». В разделе «Операнд» выберите «Данные игры». Щёлкните по полю справа от «Данные игры», выберите «Персонаж» [там два поля «Персонаж», нужно второе], выберите Нужное событие и данные о ней: «X карты». Переменная — это такая штука, которая может хранить число. Можно создать сколько угодно переменным и дать им разные значения. Координата «X карты» — это количество клеток от самой левой клетки до нужной по вертикали, координата «Y карты» — это количество клеток.
  • Создайте по две переменных (X и Y) для каждого ящика («X зол. ящ. 1», «Y зол. ящ. 1», «X зол. ящ. 2», «Y зол. ящ. 2» и т.п.), присвойте им командой «Переменная» в событии координаты «X карты» и «Y карты» соответствующих ящиков. Для этого повторяйте прошлый шаг столько раз, сколько нужно.
  • Если платформа сделана событием, сделайте то же самое для платформ (создайте по две переменных на платформу и запишите «X карты» и «Y карты» этих платформ). Если платформа сделана не событием (а просто поставлена на карту), можно не создавать переменную — просто посмотрите координаты платформы в редакторе: в режиме редактирования ивентов щёлкните по клетке, и координаты будут показаны внизу окна. Запишите их где-то на листике.
  • Создайте ещё одну переменную «Число правильных платформ» и присвойте ей значение 0. Мы будем её увеличивать для каждой платформы. (Учтите, что код будет выполняться в фоновом режиме постоянно, раз за разом. Поэтому нужно сбрасывать значение до нуля, иначе оно станет слишком большим: код от предыдущего выполнения будет мешать.)
  • Используйте команду «Ветвление условий» и сделайте проверку, что X первого золотого ящика равен X первой золотой платформы. Появится команда условия, внутри которой можно вводить команды, которые выполнятся, только если условие верно.
  • Внутри первого ветвления условий поставьте второе такое же ветвление, но сравните Y первого золотого ящика с Y первой платформы.
  • Внутри двух ветвлений (после проверки и на X, и на Y) добавьте команду «Переменная» и поставьте ей увеличение («+») переменной «Число правильных платформ» на 1.
  • Повторите то же для других комбинаций ящиков и платформ (первый зол. ящ. и вторая зол. платформа; второй зол. ящ. и первая зол. платформа; второй зол. ящ. и вторя зол. платформа; серебрянный ящик и серебрянная платформа).

В результате код начинает с нуля и увеличивает переменную до числа ящиков, стоящих на нужных платформах.

Так как событие выполняется на каждом шагу игры, переменная «Число правильных платформ» всегда будет хранить число нужных платформ. Можно сделать какое-то событие с проверкой этой переменной в условиях. Или же в самом параллельном событии проверять её с помощью «Ветвления условий», если оно больше или равно 3 (количеству платформ на карте) — тогда что-то делать.

Да, такой подход немного ручной (если переменный и платформ много, то проверок будет много). Но это самый простой для понимания подход. Если у вас будет много переменных и платформ, можно попробовать другие подходы:
  • если платформы не движутся, можно приписать платформам опр. регионы и проверять регион в месте событий (тогда уменьшится число проверок, вместо [зол. ящ. 1+ЗП1, ЗЯ1+ЗП2, ЗЯ2+ЗП1, ЗЯ2+ЗП2] получим [зол. ящ. 1 + регион 1, зол. ящ. 2 + регион 1]),
  • можно вынести часть проверок в общее событие,
  • можно вынести часть проверок в плагин на JavaScript'е.

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

Если что-то непонятно, спрашивайте!
Последнее редактирование: 6 года 4 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: AnnTenna, Cabbit, Aiaz Marx, Noxmils, VaNyuHa, Torognar

Как сделать условие событию для головоломки? 6 года 4 мес. назад #107848

  • VaNyuHa
  • VaNyuHa аватар
  • Вне сайта
  • Мастер
  • Сообщений: 120
  • Спасибо получено: 62
Я сначала сам пытался разобраться, думал, что есть функция в переменной типо: "Если событие находится на {x;y} координатах, то условие выполняется". Вы как раз мне про это и написали, но я не понимаю как вводить координаты и куда?
Вот скрин, может я туплю? :unsure:

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

Как сделать условие событию для головоломки? 6 года 4 мес. назад #107849

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2480
  • ВетеранЗа 2 место на конкурсе маппингаОраторДаритель СтимкеяУчительРазработчикПроект месяца 3 местоПоддержка ФондаПрограммист Ruby2 место
Вы всё правильно делаете, но вы записываете результат в переменную №7, «Головоломка». Судя по названию, она одна для всей головоломки. А надо создать переменные для разных значений.

Щёлкните по «0007 Головоломка», чтобы перейти в окно выбора и переименования переменных. Выберите там первую неиспользуемую переменную, введите внизу её название (я предлагаю «Золото1 X») и нажмите ОК. Тогда команда «Переменная» будет менять эту переменную.

(Если неиспользуемых переменных нет, перейдите слева на другую страницу переменных или увеличьте их максимальное количество с помощью кнопочки слева снизу.)

Я предлагаю создать таким образом по две переменной для каждого события, и в каждую записать с помощью команды «Переменная» разные вещи:
  • в переменную «Золото1 X» сохраните «X [в клетках] карты» события «Золото 1»,
  • в переменную «Золото1 Y» сохраните «Y [в клетках] карты» события «Золото 1»,
  • в переменную «Золото2 X» сохраните «X [в клетках] карты» события «Золото 2»,
  • в переменную «Золото2 Y» сохраните «Y [в клетках] карты» события «Золото 2»...

А потом командой «Ветвление условий», что переменная «Золото1 X» равна нужному числу, и «Золото1 Y» равна нужному числу.
Последнее редактирование: 6 года 4 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Cabbit, VaNyuHa, Torognar

Как сделать условие событию для головоломки? 6 года 4 мес. назад #107850

  • VaNyuHa
  • VaNyuHa аватар
  • Вне сайта
  • Мастер
  • Сообщений: 120
  • Спасибо получено: 62
Спасибо! :)
Работает, разобрался! Оказалось всё довольно просто!
На самом деле знаю, что можно и даже нужно усовершенствовать данное событие. Например, добавить звук щелчка при нажатии на платформу и сообщения, если вдруг неправильно были поставлены ящики, но с этим я уже смогу справиться, ещё раз спасибо!
Да, знаю, что зацикленный и нужно не забывать про локальный переключатель! :laugh:

Вот как выглядит событие:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Последнее редактирование: 6 года 4 мес. назад от VaNyuHa.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy, Torognar
Время создания страницы: 0.202 секунд