Войти на сайт

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

ТЕМА: Как сделать переход из одной локацию на другую

Как сделать переход из одной локацию на другую 5 года 3 мес. назад #107697

  • Oltal
  • Oltal аватар
  • Вне сайта
  • Познающий
  • Сообщений: 19
  • Спасибо получено: 5
Я хочу сделать так чтобы было соответствие между картами. То есть когда ты переходишь например в крайнем левом углу карты на другую локацию ты появляешься относительно этого мира в том же самом месте То есть например шёл ты по дороге перешел по дороге прошел пару метров от дороги на следующей локации Ты оказался тоже на пару метров от дороги. Извините за безграмотность говорю это в Google
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Как сделать переход из одной локацию на другую 5 года 3 мес. назад #107699

  • VeselyRodger
  • VeselyRodger аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 932
  • Спасибо получено: 894
  • ТестерПроект месяца 3 местоОраторПроект месяца 1 место
Мои проекты:
rpgmakerunion.ru/user/veselyrodger
Мой канал на Ютубе:
youtube.com/channel/UCyttExMfXo8ke_PhQjNPyuw
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Как сделать переход из одной локацию на другую 5 года 3 мес. назад #107700

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2477
  • Учитель2 место Проект месяца 3 местоВетеранПоддержка ФондаПаладинЗа 2 место на конкурсе маппингаРазработчикОраторПрограммист Ruby
Спасибо Весёлому Роджеру за полезную ссылку! Она пригодится для тех, кто хочет сделать двери в RPG Maker VX Ace и MV.

Хочу немного дополнить и описать, как сделать переход не по дверям RPG Maker XP (судя по значку этой темы, Oltal использует его).

_______________

1. События перехода

Если нужен переход по нескольким клеткам, можно сделать событие перехода, в котором только одна команда — Переместить игрока. Это такое прозрачное событие, которое будет выполняться при наступлении на клетку перехода.

Проект-пример событий перехода для RPG Maker XP: TransferEvent.zip (~200 Кб)

В новых версиях RPG Maker (VX Ace и MV) есть готовые шаблоны для событий перехода, но в RPG Maker XP их надо делать вручную. К счастью, это легко.

Чтобы поставить событие, нужно перейти в режим редактирования событий (нажать на значок с кубиком на панели инструментов или F8) и щёлкнуть по той клетке, где будет переход.

Откроется окно редактирования событий. В нём в левой части нужно выбрать переход по касанию:


В правой стороне нужно добавить команду события «Переместить игрока», которая будет перемещать игрока на другую карту, когда игрок касается события:



Если непонятно, гляньте в проекте-примере.

________________

2. Переход по параллельному событию

Но если нужно, чтобы весь край карты действовал как переход на другую карту, то можно делать паралелльное событие. Это немного сложно, поэтому стоит сначала попробовать с событиями перехода.

Проект-пример переноса с параллельными событиями для RPG Maker XP: ParallelEventMovement.zip (~200 Кб)

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

В RPG Maker XP параллельное событие создаётся так:


В этом параллельном событии нужно сделать переход на другую карту с заданными координатами. У всех клеток карты есть координаты X и Y:
  • Координата X — это расстояние от самой левой клетки до текущей. То есть у самой левой клетки координата X=0; у самой правой равна (ширина карты - 1).
  • Координата Y — это расстояние от самой верхней клетки до текущей. То есть у самой верхней клетки координата Y=0, у самой нижней — (высота карты - 1).

Узнать координаты какой-то конкретной клетки можно в строке состояния внизу. В режиме рисования карты она показывает координаты клетки, над которой находится курсор мыши. В режиме редактирования ивентов она показывает координаты выделенной клетки.

Координаты показываются через запятую: сначала X, потом Y:

(На этом примере правая клетка дупла расположена по координатам X=10, Y=9).

Координаты игрока игрока можно сохранить в переменную с помощью команды «Переменная». Переменная — это такая штука, которая может хранить число. Можно создать сколько угодно переменных. Нам понадобятся как минимум три: для координаты X, для координаты Y и для нового номера карты.

С помощью команды «Переменная...» можно сохранить координату X и координату Y в переменные. (Только нужно выбрать для них разные переменные — иначе одна команда перепишет другую! Переменным можно давать названия, когда их выбираешь, лучше выбрать разные переменные и дать им названия, чтобы не перепутать.) Вот как сохранить координату X и Y:

(Важно: нужно выбирать именно X и Y карты — расстояние в клетках от края карты. Есть ещё X и Y экрана — это расстояние в пикселях от края экрана до места героя на экране, это нам не нужно.)

Эти команды нужно записать в параллельное событие, чтобы они выполнялись постоянно в фоновом режиме:
@> ПЕРЕМЕННАЯ: [0001:Координата X] = Игрок X на карте
@> ПЕРЕМЕННАЯ: [0002:Координата Y] = Игрок Y на карте

Когда мы сохранили место игрока в переменной, можно проверить, находится ли он на координатах, где ему нужно переходить на другую карту:
  • переход налево: если координата X = 0,
  • переход направо: если координата X = ширина карты минус 1 (т.е. если карта шириной в 20 клеток, то переход направо, если X=19),
  • переход вверх: если координата Y = 0,
  • переход вниз: если координата Y = высота карты минус 1 (т.е. если карта высотой в 15 клеток, то переход направо, если X=14).

Проверку тоже нужно добавить в параллельное событие под сохранением координат. Проверка делается с помощью команды «Ветвление условий». Например, у меня карта шириной в 20 клеток, и я делаю переход вправо, поэтому проверяю, что переменная с координатой X равна 19:


После добавления такой проверки код примет такой вид:

@> ПЕРЕМЕННАЯ: [0001:Координата X] = Игрок X на карте
@> ПЕРЕМЕННАЯ: [0002:Координата Y] = Игрок Y на карте
@> Ветвление условий: Переменная [0001:Координата X] == 19
  @>
 : КОНЕЦ
@>

Между командами «Ветвление условий» и «КОНЕЦ» можно писать код, который выполниться, только если условие правильное. В нашем случае — код перехода на новую карту. Следующие команды мы будем включать между «Ветвление условий» и «КОНЕЦ».

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

Для этого тоже используется «Ветвление условий», но с другой проверкой:


Код примет такой вид:
@> ПЕРЕМЕННАЯ: [0001:Координата X] = Игрок X на карте
@> ПЕРЕМЕННАЯ: [0002:Координата Y] = Игрок Y на карте
@> Ветвление условий: Переменная [0001:Координата X] == 19
  @> Ветвление условий: Игрок + смотрит вправо
   @>
   : КОНЕЦ
  @>
 : КОНЕЦ
@>

Код перехода будет между двумя ветвлениями условий: чтобы переход вызывался, только когда игрок стоит на нужной клетке и смотрит в нужную сторону.

Для перехода может использоваться команда «Переместить игрока». В ней есть опция перехода по переменным:


Но! Чтобы ей воспользоваться, нам нужно установить переменные для новой карты.

Во-первых придётся создать новую переменную «ID карты» и записать в неё ID-номер карты. Чтобы его узнать, можно открыть нужную карту в редакторе и посмотреть на число слева от координат. Там будет что-то типа «002:Название карты» (вместо 002 — своё число, вместо Название карты — ваше название карты). Вот 002 и будет ID-номером карты.

Его надо записать в переменную с помощью команды «Переменные»:


Аналогично нужно установить координаты. Если карты равного размера и не нужны никакие хитрые смещения, они устанавливаются так:
  • переход налево: координата X устанавливается ширине левой карты - 1, координата Y не меняется,
  • переход направо: координата X устанавливается равной 0, координата Y не меняется,
  • переход вверх: координата X не меняется, координата Y устанавливается высоте верхней карты - 1,
  • переход вниз: координата X не меняется, координата Y устанавливается равной 0.

То есть нужно добавить ещё команду «Переменные» и установить координату X (при переходе направо или налево) и координату Y (при переходе вверх или вниз) равной нужному значению.

В итоге получится вот такое событие (для перехода вправо):

@> ПЕРЕМЕННАЯ: [0001:Координата X] = Игрок X на карте
@> ПЕРЕМЕННАЯ: [0002:Координата Y] = Игрок Y на карте
@> Ветвление условий: Переменная [0001:Координата X] == 19
  @> Ветвление условий: Игрок + смотрит вправо
   @> ПЕРЕМЕННАЯ: [0003:ID карты] == 2
   @> ПЕРЕМЕННАЯ: [0002:Координата Y] == 0
   @> Переместить игрока:из переменных [0003][0001][0002]
   @>
   : КОНЕЦ
  @>
 : КОНЕЦ
@>

В результате игрок будет переходить по любой клетке на краю карты.

Если это сложно — не волнуйтесь! Вы можете использовать первый способ и просто заставить всю правую часть карты событиями перехода вместо параллельного события. Это медленнее, но проще для понимания. Способ с параллельными событиями сложный, и если вы его не понимаете, это не страшно.

А если все-таки решите разбираться с параллельными событиями, посмотрите на проект-пример.

_______________

Если будут вопросы, спрашивайте!
Последнее редактирование: 5 года 3 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Jas6666, Cabbit, Oltal

Как сделать переход из одной локацию на другую 5 года 3 мес. назад #107705

  • Oltal
  • Oltal аватар
  • Вне сайта
  • Познающий
  • Сообщений: 19
  • Спасибо получено: 5
Dmy можно ппопроще. :cry:
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Как сделать переход из одной локацию на другую 5 года 3 мес. назад #107708

  • Oltal
  • Oltal аватар
  • Вне сайта
  • Познающий
  • Сообщений: 19
  • Спасибо получено: 5
Dmy пишет:
Спасибо Весёлому Роджеру за полезную ссылку! Она пригодится для тех, кто хочет сделать двери в RPG Maker VX Ace и MV.

Хочу немного дополнить и описать, как сделать переход не по дверям RPG Maker XP (судя по значку этой темы, Oltal использует его).

_______________

1. События перехода

Если нужен переход по нескольким клеткам, можно сделать событие перехода, в котором только одна команда — Переместить игрока. Это такое прозрачное событие, которое будет выполняться при наступлении на клетку перехода.

Проект-пример событий перехода для RPG Maker XP: TransferEvent.zip (~200 Кб)

В новых версиях RPG Maker (VX Ace и MV) есть готовые шаблоны для событий перехода, но в RPG Maker XP их надо делать вручную. К счастью, это легко.

Чтобы поставить событие, нужно перейти в режим редактирования событий (нажать на значок с кубиком на панели инструментов или F8) и щёлкнуть по той клетке, где будет переход.

Откроется окно редактирования событий. В нём в левой части нужно выбрать переход по касанию:


В правой стороне нужно добавить команду события «Переместить игрока», которая будет перемещать игрока на другую карту, когда игрок касается события:



Если непонятно, гляньте в проекте-примере.

________________

2. Переход по параллельному событию

Но если нужно, чтобы весь край карты действовал как переход на другую карту, то можно делать паралелльное событие. Это немного сложно, поэтому стоит сначала попробовать с событиями перехода.

Проект-пример переноса с параллельными событиями для RPG Maker XP: ParallelEventMovement.zip (~200 Кб)

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

В RPG Maker XP параллельное событие создаётся так:


В этом параллельном событии нужно сделать переход на другую карту с заданными координатами. У всех клеток карты есть координаты X и Y:
  • Координата X — это расстояние от самой левой клетки до текущей. То есть у самой левой клетки координата X=0; у самой правой равна (ширина карты - 1).
  • Координата Y — это расстояние от самой верхней клетки до текущей. То есть у самой верхней клетки координата Y=0, у самой нижней — (высота карты - 1).

Узнать координаты какой-то конкретной клетки можно в строке состояния внизу. В режиме рисования карты она показывает координаты клетки, над которой находится курсор мыши. В режиме редактирования ивентов она показывает координаты выделенной клетки.

Координаты показываются через запятую: сначала X, потом Y:

(На этом примере правая клетка дупла расположена по координатам X=10, Y=9).

Координаты игрока игрока можно сохранить в переменную с помощью команды «Переменная». Переменная — это такая штука, которая может хранить число. Можно создать сколько угодно переменных. Нам понадобятся как минимум три: для координаты X, для координаты Y и для нового номера карты.

С помощью команды «Переменная...» можно сохранить координату X и координату Y в переменные. (Только нужно выбрать для них разные переменные — иначе одна команда перепишет другую! Переменным можно давать названия, когда их выбираешь, лучше выбрать разные переменные и дать им названия, чтобы не перепутать.) Вот как сохранить координату X и Y:

(Важно: нужно выбирать именно X и Y карты — расстояние в клетках от края карты. Есть ещё X и Y экрана — это расстояние в пикселях от края экрана до места героя на экране, это нам не нужно.)

Эти команды нужно записать в параллельное событие, чтобы они выполнялись постоянно в фоновом режиме:
@> ПЕРЕМЕННАЯ: [0001:Координата X] = Игрок X на карте
@> ПЕРЕМЕННАЯ: [0002:Координата Y] = Игрок Y на карте

Когда мы сохранили место игрока в переменной, можно проверить, находится ли он на координатах, где ему нужно переходить на другую карту:
  • переход налево: если координата X = 0,
  • переход направо: если координата X = ширина карты минус 1 (т.е. если карта шириной в 20 клеток, то переход направо, если X=19),
  • переход вверх: если координата Y = 0,
  • переход вниз: если координата Y = высота карты минус 1 (т.е. если карта высотой в 15 клеток, то переход направо, если X=14).

Проверку тоже нужно добавить в параллельное событие под сохранением координат. Проверка делается с помощью команды «Ветвление условий». Например, у меня карта шириной в 20 клеток, и я делаю переход вправо, поэтому проверяю, что переменная с координатой X равна 19:


После добавления такой проверки код примет такой вид:

@> ПЕРЕМЕННАЯ: [0001:Координата X] = Игрок X на карте
@> ПЕРЕМЕННАЯ: [0002:Координата Y] = Игрок Y на карте
@> Ветвление условий: Переменная [0001:Координата X] == 19
  @>
 : КОНЕЦ
@>

Между командами «Ветвление условий» и «КОНЕЦ» можно писать код, который выполниться, только если условие правильное. В нашем случае — код перехода на новую карту. Следующие команды мы будем включать между «Ветвление условий» и «КОНЕЦ».

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

Для этого тоже используется «Ветвление условий», но с другой проверкой:


Код примет такой вид:
@> ПЕРЕМЕННАЯ: [0001:Координата X] = Игрок X на карте
@> ПЕРЕМЕННАЯ: [0002:Координата Y] = Игрок Y на карте
@> Ветвление условий: Переменная [0001:Координата X] == 19
  @> Ветвление условий: Игрок + смотрит вправо
   @>
   : КОНЕЦ
  @>
 : КОНЕЦ
@>

Код перехода будет между двумя ветвлениями условий: чтобы переход вызывался, только когда игрок стоит на нужной клетке и смотрит в нужную сторону.

Для перехода может использоваться команда «Переместить игрока». В ней есть опция перехода по переменным:


Но! Чтобы ей воспользоваться, нам нужно установить переменные для новой карты.

Во-первых придётся создать новую переменную «ID карты» и записать в неё ID-номер карты. Чтобы его узнать, можно открыть нужную карту в редакторе и посмотреть на число слева от координат. Там будет что-то типа «002:Название карты» (вместо 002 — своё число, вместо Название карты — ваше название карты). Вот 002 и будет ID-номером карты.

Его надо записать в переменную с помощью команды «Переменные»:


Аналогично нужно установить координаты. Если карты равного размера и не нужны никакие хитрые смещения, они устанавливаются так:
  • переход налево: координата X устанавливается ширине левой карты - 1, координата Y не меняется,
  • переход направо: координата X устанавливается равной 0, координата Y не меняется,
  • переход вверх: координата X не меняется, координата Y устанавливается высоте верхней карты - 1,
  • переход вниз: координата X не меняется, координата Y устанавливается равной 0.

То есть нужно добавить ещё команду «Переменные» и установить координату X (при переходе направо или налево) и координату Y (при переходе вверх или вниз) равной нужному значению.

В итоге получится вот такое событие (для перехода вправо):

@> ПЕРЕМЕННАЯ: [0001:Координата X] = Игрок X на карте
@> ПЕРЕМЕННАЯ: [0002:Координата Y] = Игрок Y на карте
@> Ветвление условий: Переменная [0001:Координата X] == 19
  @> Ветвление условий: Игрок + смотрит вправо
   @> ПЕРЕМЕННАЯ: [0003:ID карты] == 2
   @> ПЕРЕМЕННАЯ: [0002:Координата Y] == 0
   @> Переместить игрока:из переменных [0003][0001][0002]
   @>
   : КОНЕЦ
  @>
 : КОНЕЦ
@>

В результате игрок будет переходить по любой клетке на краю карты.

Если это сложно — не волнуйтесь! Вы можете использовать первый способ и просто заставить всю правую часть карты событиями перехода вместо параллельного события. Это медленнее, но проще для понимания. Способ с параллельными событиями сложный, и если вы его не понимаете, это не страшно.

А если все-таки решите разбираться с параллельными событиями, посмотрите на проект-пример.

_______________

Если будут вопросы, спрашивайте!
Можно попроще описать первый вариант.
Администратор запретил публиковать записи гостям.

Как сделать переход из одной локацию на другую 5 года 3 мес. назад #107709

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2477
  • Учитель2 место Проект месяца 3 местоВетеранПоддержка ФондаПаладинЗа 2 место на конкурсе маппингаРазработчикОраторПрограммист Ruby
Oltal пишет:
Dmy можно ппопроще. :cry:
Извините, если пишу недостаточно понятно! Попробую описать способ №1 пошагово.

В этом сообщении много картинок — если они не загрузились, подождите, пока загрузятся.

Шаг 1. Перейдите в режим редактирования событий.

Нажмите на кнопку
на панели инструментов или на кнопку F8 на клавиатуре.




Шаг 2. Создайте событие перехода.

Дважды щёлкните по тому месту на карте, с которого должен происходить переход.



Появится окно создания нового события.


Шаг 3. Поставьте событию активацию от касания.

В меню «Запуск от...» выберите вариант «Касание». Если у вас другой перевод, смотрите на скриншот:




Шаг 4. Добавьте новую команду события.

Дважды по пустому месту в списке команд событий (большой прямоугольник справа) или по «пустой» команде «@>» в нём, чтобы добавить новую команду событий:



Появится окно выбора команды события.

Шаг 5. Перейдите на вторую страницу команд событий.

Все команды разделены на страницы. Нам нужна команда «Переместить игрока...» со второй страницы.



Шаг 6. Выберите команду «Переместить игрока».

Это самая первая команда на второй странице. Щёлкните по кнопке, чтобы выбрать эту команду:



Откроется окно настройки команды перемещения.

Шаг 7. Поменяйте место назначения

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



Откроется окно выбора местоположения.

Шаг 8. Выберите карту, куда будет перемещаться игрок

В окне выбора местоположения слева список карт. Щелкните в нём по той карте, куда должен переместиться игрок.



Шаг 9. Выберите место, куда будет перемещаться игрок

Щелкните по месту на карте, куда должен попасть игрок (у меня это мост, у вас может быть что-то другое):



Шаг 10. Нажмите ОК, чтобы сохранить карту и место



Шаг 11. Нажмите ОК, чтобы сохранить команду перемещения



В списке команд события появится новая команда (перемещение игрока). Теперь, когда игрок будет наступать на событие, он будет перемещаться.

Шаг 12. Нажмите ОК, чтобы сохранить новое событие



Теперь на карте появилось событие перехода. Когда игрок наступает на это событие, он переносится на другую карту. Ура!

Конец. Сохраните и проверьте, что всё работает




(Таким образом создался переход с одного места карты. Чтобы перейти с нескольких мест, нужно создать несколько таких событий.)

Я надеюсь, что так понятнее. Если у меня всё равно не получилось объяснить, спрашивайте!
Последнее редактирование: 5 года 3 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: ZX_Lost_Soul, Jas6666
Время создания страницы: 0.238 секунд