- Сообщений: 122
- Спасибо получено: 65
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.
Как сделать условие событию для головоломки?
7 года 4 мес. назад - 7 года 4 мес. назад #107843
от VaNyuHa
VaNyuHa создал тему: Как сделать условие событию для головоломки?
Здравствуйте! Я здесь чайник. Раньше разрабатывал Horror игры на FPSC и теперь перешёл на такой интересный движок как RPG Maker MV.
Перед тем как делать проект, сначала разбираюсь с моими возможностями на этом движке, учусь проще говоря)
И вот практикую создание головоломок.
Суть головоломки проста: Имеется два ящика с золотом, один с серебром. Нужно ящики с золотом передвинуть на золотые платформы, а с серебром на серебряную. Если головоломка решена не правильно, то нажав на красную кнопку все предметы возвращаются в исходное положение. Если все ящики передвинуть на свои места, то игрок получает награду (Открытие двери к примеру).
Суть вопроса: Всё работает, но как платформам поставить условие, что если все ящики стоят на определённых платформах, то происходит действие?
На скрине можно увидеть ту самую головоломку (на графику не смотрите, я же сказал, пока что просто практикую свои возможности)
Перед тем как делать проект, сначала разбираюсь с моими возможностями на этом движке, учусь проще говоря)
И вот практикую создание головоломок.
Суть головоломки проста: Имеется два ящика с золотом, один с серебром. Нужно ящики с золотом передвинуть на золотые платформы, а с серебром на серебряную. Если головоломка решена не правильно, то нажав на красную кнопку все предметы возвращаются в исходное положение. Если все ящики передвинуть на свои места, то игрок получает награду (Открытие двери к примеру).
Суть вопроса: Всё работает, но как платформам поставить условие, что если все ящики стоят на определённых платформах, то происходит действие?
На скрине можно увидеть ту самую головоломку (на графику не смотрите, я же сказал, пока что просто практикую свои возможности)
Последнее редактирование: 7 года 4 мес. назад пользователем AnnTenna. Причина: красный цвет зарезервирован для администрации
Спасибо сказали: Dmy
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
7 года 4 мес. назад - 7 года 4 мес. назад #107844
от Dmy
Dmy ответил в теме Как сделать условие событию для головоломки?
Здравствуйте! К сожалению, у меня сейчас нет мейкера под рукой, так что опишу без картинок. Если что-то непонятно, спрашивайте.
Алгоритм примерно такой:
В результате код начинает с нуля и увеличивает переменную до числа ящиков, стоящих на нужных платформах.
Так как событие выполняется на каждом шагу игры, переменная «Число правильных платформ» всегда будет хранить число нужных платформ. Можно сделать какое-то событие с проверкой этой переменной в условиях. Или же в самом параллельном событии проверять её с помощью «Ветвления условий», если оно больше или равно 3 (количеству платформ на карте) — тогда что-то делать.
Да, такой подход немного ручной (если переменный и платформ много, то проверок будет много). Но это самый простой для понимания подход. Если у вас будет много переменных и платформ, можно попробовать другие подходы:
Но сначала попробуйте то, что я описал выше. Он немного топорный, но позволяет лучше понять, как работает мейкер, а потом можно будет перейти к более продивинутым вариантам.
Если что-то непонятно, спрашивайте!
Нужно использовать переменные. В переменные записать координаты и создать проверку условия, что координаты X и Y ящика и платформы равны. Проверку удобно выполнять в параллельном событии.VaNyuHa пишет: как платформам поставить условие, что если все ящики стоят на определённых платформах, то происходит действие?
Алгоритм примерно такой:
- Создайте новое событие, задайте ему триггер «Параллельно». Это значит, что событие будет постоянно выполняться в фоновом режиме и не будет мешать другим событиям. Оно будет проверять, все ли ящики на месте, если все — делать что-то при победе.
- С помощью команды «Переманная» (на 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'е.
Но сначала попробуйте то, что я описал выше. Он немного топорный, но позволяет лучше понять, как работает мейкер, а потом можно будет перейти к более продивинутым вариантам.
Если что-то непонятно, спрашивайте!
Последнее редактирование: 7 года 4 мес. назад пользователем Dmy.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
7 года 4 мес. назад #107848
от VaNyuHa
VaNyuHa ответил в теме Как сделать условие событию для головоломки?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
7 года 4 мес. назад - 7 года 4 мес. назад #107849
от Dmy
Dmy ответил в теме Как сделать условие событию для головоломки?
Вы всё правильно делаете, но вы записываете результат в переменную №7, «Головоломка». Судя по названию, она одна для всей головоломки. А надо создать переменные для разных значений.
Щёлкните по «0007 Головоломка», чтобы перейти в окно выбора и переименования переменных. Выберите там первую неиспользуемую переменную, введите внизу её название (я предлагаю «Золото1 X») и нажмите ОК. Тогда команда «Переменная» будет менять эту переменную.
(Если неиспользуемых переменных нет, перейдите слева на другую страницу переменных или увеличьте их максимальное количество с помощью кнопочки слева снизу.)
Я предлагаю создать таким образом по две переменной для каждого события, и в каждую записать с помощью команды «Переменная» разные вещи:
А потом командой «Ветвление условий», что переменная «Золото1 X» равна нужному числу, и «Золото1 Y» равна нужному числу.
Щёлкните по «0007 Головоломка», чтобы перейти в окно выбора и переименования переменных. Выберите там первую неиспользуемую переменную, введите внизу её название (я предлагаю «Золото1 X») и нажмите ОК. Тогда команда «Переменная» будет менять эту переменную.
(Если неиспользуемых переменных нет, перейдите слева на другую страницу переменных или увеличьте их максимальное количество с помощью кнопочки слева снизу.)
Я предлагаю создать таким образом по две переменной для каждого события, и в каждую записать с помощью команды «Переменная» разные вещи:
- в переменную «Золото1 X» сохраните «X [в клетках] карты» события «Золото 1»,
- в переменную «Золото1 Y» сохраните «Y [в клетках] карты» события «Золото 1»,
- в переменную «Золото2 X» сохраните «X [в клетках] карты» события «Золото 2»,
- в переменную «Золото2 Y» сохраните «Y [в клетках] карты» события «Золото 2»...
А потом командой «Ветвление условий», что переменная «Золото1 X» равна нужному числу, и «Золото1 Y» равна нужному числу.
Последнее редактирование: 7 года 4 мес. назад пользователем Dmy.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
7 года 4 мес. назад - 7 года 4 мес. назад #107850
от VaNyuHa
VaNyuHa ответил в теме Как сделать условие событию для головоломки?
Спасибо! 
Работает, разобрался! Оказалось всё довольно просто!
На самом деле знаю, что можно и даже нужно усовершенствовать данное событие. Например, добавить звук щелчка при нажатии на платформу и сообщения, если вдруг неправильно были поставлены ящики, но с этим я уже смогу справиться, ещё раз спасибо!
Да, знаю, что зацикленный и нужно не забывать про локальный переключатель!
Вот как выглядит событие:
Работает, разобрался! Оказалось всё довольно просто!
На самом деле знаю, что можно и даже нужно усовершенствовать данное событие. Например, добавить звук щелчка при нажатии на платформу и сообщения, если вдруг неправильно были поставлены ящики, но с этим я уже смогу справиться, ещё раз спасибо!
Да, знаю, что зацикленный и нужно не забывать про локальный переключатель!
Вот как выглядит событие:
Последнее редактирование: 7 года 4 мес. назад пользователем VaNyuHa.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.105 секунд
