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

Возможна ли такая механика телепортации в rpg make

Больше
7 года 8 мес. назад - 7 года 8 мес. назад #105778 от Azio
Вопрос по rpg maker mv: есть ли возможность сделать такую механику - в инвентаре вещь, при ее использовании тебя переносит в другую локацию, но не в одну точку, а в зависимости от твоего расположении в локации откуда переносишься, в соответственную точку другой локации (такой же по размеру)? Описание: открываешь инвентарь,используешь предмет, затемнение или вспышка, звуковой эффект,все дела, но главный концепт - от положения в на карте, зависит то куда перенесёт. Есть вариант сделать что-то подобное в принципе, не в rpg maker,а в других?
Последнее редактирование: 7 года 8 мес. назад пользователем Azio.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Разработчик Коммерсант Проект месяца 1 место Проект месяца 2 место 3 место в Кодировке Ветеран Учитель Организатор конкурсов Даритель Стимкея Проект месяца 3 место 2 место Готв Победитель Сбитой кодировки 2 место Победитель конкурса 3 место
Больше
7 года 8 мес. назад #105779 от AnnTenna
Конечно, возможно! Просто нужно запоминать координаты персонажа в переменную, как я это вижу, а потом игрока в эту точку из переменных х и y и переносить.
Спасибо сказали: Dmy, Doctor_Bug

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
7 года 8 мес. назад #105780 от Azio
Я новичок, можно с примером или по-лучше объяснить?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Ветеран Поддержка Фонда Разработчик Проект месяца 3 место Учитель Оратор Даритель Стимкея 2 место За 2 место на конкурсе маппинга Программист Ruby Паладин
Больше
7 года 8 мес. назад #105781 от Dmy
Вот как реализовать то, о чём написала АннТенна (я описываю работу с RPG Maker MV, современный перевод):

I. Создать общее событие. Предмет будет вызывать общее событие. Общее событие — это событие без внешнего вида, которое доступно на всех картах. Откройте Базу данных (F9 или значок с шестерёнкой), перейдите на вкладку «Общие события».

Если у вас уже есть общие события, добавьте новое («Изменить максимум») и щёлкните по нему, чтобы его редактировать. Если нет — выберите одно из стандартных четырёх, они пустые.


Добавьте команду, которая будет сохранять координату X игрока в переменную:

1. Дважды щёлкните по пустому месту в поле «Содержимое», чтобы добавить команду.
2. Выберите команду «Переменная...» (страница 1, левый столбик, раздел «Внутренние данные»)
3. Выберите переменную, в которую будет записана координата X на карте. Для этого нажмите на кнопку справа «Один» («Один» значит, что будет использована только одна переменная). Откроется окно выбора переменной, выберите какую-то незанятую (если вы раньше не использовали переменные, то берите переменную 0001). Дайте ей название (напиши в поле внизу «Координата X») и нажми ОК.
4. Операцию оставьте «=» (это значит, что после выполенения команды ваша переменная будет равна номеру карты; а старое значение переменной будет выкинуто).
5. В поле «Операнд» выберите «Данные игры»
6. Щёлкните по кнопке справа от «Данные игры» и выберите «Персонаж» → «Игрок» → «X карты» («X карты» — это количество клеток от левого края карты до игрока).

Повторите то же самое для координаты Y, только используйте «Y карты». Сохраните её в какую-то другую переменную.

Затем присвойте какой-то переменной номер той карты, куда вы хотите переместить героя:

1. Дважды щёлкните по пустому месту в поле «Содержимое», чтобы добавить команду.
2. Выберите команду «Переменная...» (страница 1, левый столбик, раздел «Внутренние данные»)
3. Выберите переменную, в которую будет записан номер карты. Для этого нажмите на кнопку справа от «Один», выбери переменную (например, 0003) и присвойте ей постоянную величину («Постоянная», введите номер своей карты, например, 2). Чтобы узнать номер карты, можно открыть её в RPG Maker’е — номер будет показан внизу экрана, например, 002:Название.

Потом добавьте команду перемещения игрока по координатам:

1. Дважды щёлкните по пустому месту в поле «Содержимое», чтобы добавить команду.
2. Выберите команду «Переместить игрока» (страница 2, левый столбик, в самом верху).
3. Выберите местоположение «Из переменных», и выберите свои переменные — в «Номер» переменную с номером карты, в «X» переменную с координатой X, а в Y — переменную с координатой Y.


II. Создаёте предмет. В Базе данных выбираете слева вкладку «Предметы», увеличиваете максимальное количество на 1 («Изменить максимум»), добавляете новый предмет. В поле «Эффекты» щёлкаете дважды по пустому месту, чтобы открыть окно добавления эффекта. Выбираете вкладку «Прочее», пункт «Общее событие» (последний) и выбираете то общее событие, которое вы создали.

Ура! Вы создали телепортирующий предмет! Дальше можно расширить событие (например, проверять, на какой карте находится игрок, и запрещать использование предмета на некоторых картах), но, надеюсь, основная идея понятна.


Я также сделал небольшой пример:
TeleportationExample.zip (7 мегабайт)
( Запустить пример онлайн )

В этом примере идея чуть расширена: там ещё есть проверка старой карты (чтобы с зимы был телепорт в лето, а с лета в зиму) — надеюсь, разберётесь.

Если будут вопросы, спрашивайте!
Спасибо сказали: Seibur, Cabbit, Doctor_Bug, Aiaz Marx

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
7 года 8 мес. назад #105782 от Azio
спасибо, вроде понял. Просто давно была идея такой механики для книги, но в игре будет даже лучше.
Спасибо сказали: Dmy

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
7 года 8 мес. назад #105786 от Azio
Проблема. Сделал всё как написано, но оно перемещает на карту, а обратно нет. И ещё, есть ли вариант сделать также, но чтобы из разных локаций(разных карт) перемещало в одну карту, но в разные её точки. Словно разбить на сегменты? То есть, разным местам одной большой карты,соответствуют координаты нескольких маленьких карт, или это не возможно? Интереса ради.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Ветеран Поддержка Фонда Разработчик Проект месяца 3 место Учитель Оратор Даритель Стимкея 2 место За 2 место на конкурсе маппинга Программист Ruby Паладин
Больше
7 года 8 мес. назад - 7 года 8 мес. назад #105789 от Dmy

Azio пишет: Проблема. Сделал всё как написано, но оно перемещает на карту, а обратно нет.

Вам нужно, чтобы со всех мест перемещались в одну, а из одного назад?

Можно сделать как-то так так:

◆ Переменная : Номер текущей карты = Номер карты
◆ Переменная : Координата X = X карты из Игрок
◆ Переменная : Координата Y = Y карты из Игрок
◆ Если : Номер текущей карты = 2 (вместо 2 поставьте номер той карты, куда происходит телепортация)
  ◆ Переместить игрока: {Номер сохранённой карты} ({Координата X}, {Координата Y})
  ◆
: Иначе
  ◆ Переменная : Номер сохранённой карты = Номер карты
  ◆ Переменная : Номер текущей карты = 2 (вместо 2 поставьте номер той карты, куда происходит телепортация)
  ◆ Переместить игрока: {Номер текущей карты} ({Координата X}, {Координата Y})
  ◆
: Конец


То есть в этом примере в «Номер сохранённой карты» будет сохраняться номер карты (не №2), из которой мы попали на карту №2.

То есть проверяем: если игрок уже на карте №2, то возвращаем его на сохранённую карту. Если он не на карте №2, то сохраяем карту и переносим его на карту №2.

Чтобы сохранить в переменную номер карты, выбираете в команде «Переменная» операнд «Данные игры» → «Прочее» → «Номер карты». Проверка «Если» делается с помощью команды «Ветвление условий» (на первой странице, левый столбел, группа «Управление процессом»). Ну и можно добавить дополнительную проверку.

Если непонятно — говорите, могу сделать пример.

Azio пишет: И ещё, есть ли вариант сделать также, но чтобы из разных локаций(разных карт) перемещало в одну карту, но в разные её точки. Словно разбить на сегменты? То есть, разным местам одной большой карты,соответствуют координаты нескольких маленьких карт, или это не возможно? Интереса ради.

Можно проверять координаты и прибавлять. Например, если у нас шесть карт 20*20 и одна большая 60*40, то можно получить координаты в картах, разделив координаты в клетках на 20:

(карта x=0, y=0) (карта x=1, y=0) (карта x=2, y=0)
(карта x=0, y=1) (карта x=1, y=1) (карта x=2, y=1)

«Картовая» координата X и Y будет увеличиватся по 20 клеток. Чтобы узнать координату X в картах, можно разделить X в клетках на 20 (т.к. все карты у нас размера 20*20 клеток):
◆ Переменная : X в картах = X карты из Игрок
◆ Переменная : X в картах /= 20
◆ Переменная : Y в картах = Y карты из Игрок
◆ Переменная : Y в картах /= 20

Чтобы узнать X в клетках внутри карты, можно использовать остаток от деления. Вот так:
◆ Переменная : X в клетках на карты = X карты из Игрок
◆ Переменная : X в клетках на карты %= 20
◆ Переменная : Y в клетках на карты = Y карты из Игрок
◆ Переменная : Y в клетках на карты %= 20

«%= 20» значит «записать в переменную остаток от деления прошлого значения на 20».

«X в картах» и «Y в картах» будут использоваться, чтобы определить, на какую карту переместить игрока. А «X в клетках на карты» и «Y в клетках на карты» будут использоваться, чтобы определить, на какую клетку внутри этой маленькой карты переместить игрока.

Если надумаете такое делать, могу сделать пример.

Старый (неправильный) ответ: я неверно понял вопрос, этот ответ не подходит
Последнее редактирование: 7 года 8 мес. назад пользователем Dmy.
Спасибо сказали: Seibur, Cabbit, Noxmils, Azio

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
7 года 7 мес. назад #105812 от Azio
Спасибо, хоть с тем чтобы возвращался назад уже понял и так(вспомнил работу с renpy, там тоже можно использовать if и else). А вот про добавление к координатам, это интересно, попробую.
Спасибо сказали: Dmy

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.105 секунд
Работает на Kunena форум