Войти на сайт

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

ТЕМА: [VX Ace] Появление события по условию

[VX Ace] Появление события по условию 5 года 4 мес. назад #106977

  • ShinkoriVera
  • ShinkoriVera аватар
  • Вне сайта
  • Познающий
  • Сообщений: 11
  • Спасибо получено: 10
Снова нужна помощь. Можно ли в мейкере сделать так, чтобы некое событие появилось после того, как были посещены несколько других? Да, можно создавать ветки мапов, но можно ли по условию? Просто те события передвигаются, и после выходит не очень, когда перемещаешься на изначальную точку события, когда оно переместилось в другое место
Надеюсь, меня поймут...
Администратор запретил публиковать записи гостям.

[VX Ace] Появление события по условию 5 года 4 мес. назад #106978

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2477
  • Поддержка ФондаВетеранПрограммист RubyЗа 2 место на конкурсе маппинга2 место Проект месяца 3 местоПаладинУчительДаритель СтимкеяОратор
Можно создать параллельное событие на карте и добавить проверку туда.

В параллельном событии сделать что-то типа:
ЕСЛИ условие 1 ТО
  ЕСЛИ условие 2 ТО
    ЕСЛИ условие 3 ТО
      Переключатель: установить «событие появилось» в ВКЛ
    КОНЕЦ ЕСЛИ
  КОНЕЦ ЕСЛИ
КОНЕЦ ЕСЛИ
Ждать 1 кадр

Проверка «если» делается командой «Ветвление условий».

А то появляющееся событие сделать зависимым от переключателя «событие появилось».

Если непонятно, спрашивайте, могу описать подробнее.
Последнее редактирование: 5 года 4 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.

[VX Ace] Появление события по условию 5 года 4 мес. назад #106979

  • ShinkoriVera
  • ShinkoriVera аватар
  • Вне сайта
  • Познающий
  • Сообщений: 11
  • Спасибо получено: 10
Да, поясните, пожалуйста. У меня просто ещё версия на английском, а я вообще немецкий изучал. Заранее спасибо
Администратор запретил публиковать записи гостям.

[VX Ace] Появление события по условию 5 года 4 мес. назад #106980

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2477
  • Поддержка ФондаВетеранПрограммист RubyЗа 2 место на конкурсе маппинга2 место Проект месяца 3 местоПаладинУчительДаритель СтимкеяОратор
Вот пример: TestSwitchConditions.zip (1.3M). Ниже подробнее описано, что происходит.

_____

Для начала создаём пару других событий, которые нужно посетить первыми. Они будут после своего посещения включать переключатели (switches) с помощью команды Переключатели (Control Switches). Переключатели — это такие невидимые штуки, которые могут быть включены и выключены. Их удобно использовать, чтобы записывать продвижение по сюжету.

Нужно использовать именно глобальные переключатели (switches), а не локальные (self-switches), потому что локальные переключатели не видны другим событиям.

Команда «Переключатели» выбирается вот тут:
switch-processing.png


Настраивается она вот так:
switch-processing-edit.png


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


В результате каждое событие при посещении будет устанавливать свой переключатель «Событие N посещено», вот так:
events-to-visit.png


Таких событий можно наделать, сколько угодно. В принципе, можно сразу же в них добавить проверку «Все события посещены?», и если все, то ВКЛючать переключатель «Все события посещены». Но это неудобно: придётся копировать проверку во все события (а потом, если надо будет добавить новое событие, редактировать его в трёх местах). Лучше сделать параллельное событие.

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

Выберите пункт «Запуск события»: «Параллельно» (Trigger: Parallel, если не ошибаюсь). Большинство событий выполняются по очереди: в один момент может выполняться только одно, и все остальные блокируются. Но параллельные выполняются «в фоновом режиме» и не блокируют выполнение других событий. Для технического события «параллельное» выполнение — самое то.

parallel.png


Справа надо вставить код, который будет постоянно выполняться в фоновом режиме. Код будет проверять, что все переключатели включены. Для этого можно использовать команду «Условие» (Conditional Branch, в других переводах Ветвление условий):

cond-branch-item.png


При выборе этой команды откроется настройка условия. Выберите первое условие на первой странице (проверку переключателя) и выберите проверку, что переключатель ВКЛючён (ON). Выберите свой первый переключатель, а снизу уберите галочку «Добавить ветку «Иначе» (Add ELSE branch) — оно нам не нужно:

cond-branch.png


В результате создастся вот такая структура (в других переводах вместо «УСЛОВИЕ» может быть «ЕСЛИ»):

@> УСЛОВИЕ: Переключатель [0001:Событие 1 посещено] == ВКЛ
  @>
: КОНЕЦ
@>

Между «УСЛОВИЕ» и «КОНЕЦ» можно размещать команды, которые выполняться, только если условие выполняется. Щёлкните по внутренней строке «@>», чтобы добавить команду, и добавьте туда ещё одну проверку условий, на этот раз проверяя второй переключатель:


@> УСЛОВИЕ: Переключатель [0001:Событие 1 посещено] == ВКЛ
  @> УСЛОВИЕ: Переключатель [0002:Событие 2 посещено] == ВКЛ
    @>
  : КОНЕЦ
  @>
: КОНЕЦ
@>


И-и-и-и ещё раз! Добавьте внутрь ещё одно условие:

@> УСЛОВИЕ: Переключатель [0001:Событие 1 посещено] == ВКЛ
  @> УСЛОВИЕ: Переключатель [0002:Событие 2 посещено] == ВКЛ
    @> УСЛОВИЕ: Переключатель [0003:Событие 3 посещено] == ВКЛ
      @>
    : КОНЕЦ
    @>
  : КОНЕЦ
  @>
: КОНЕЦ
@>

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


@> УСЛОВИЕ: Переключатель [0001:Событие 1 посещено] == ВКЛ
  @> УСЛОВИЕ: Переключатель [0002:Событие 2 посещено] == ВКЛ
    @> УСЛОВИЕ: Переключатель [0003:Событие 3 посещено] == ВКЛ
      @> Переключатель: [0004:Все события посещены] = ВКЛ
      @>
    : КОНЕЦ
    @>
  : КОНЕЦ
  @>
: КОНЕЦ
@>

В результате это событие в фоновом режиме проверяет, посещены ли все события. Если посещены — включает переключатель «Все события посещены». Но! Много параллельных событий могут нагружать компьютер. Поэтому лучше добавлять команду «Ждать», чтобы выполнение следующей проверки произошло не сразу тут же, а через какое-то время:

wait.png


Ожидание задаётся в кадрах. Кадр — 1/60 секунды (по умолчанию игры на мейкере идут со скоростю 60 кадров в секунду; это можно поменять). Почти всегда безопасно ждать 1 кадр, но обычно можно ставить числа побольше. Игроки вряд ли заметят задежку в 1/6 секунды.

Итак, событие получается таким:



Ну и после этого нужно добавить само событие, которое реагирует на первые. Для этого добавим в него проверку переключателя «Все события посещены». Это можно сделать либо с помощью той же команды «Условие» (Conditional Branch), либо создав у события две страниц — первую без условий, вторую с условием «переключатель Все события посещены включён».

Вот пример всего того, что написано выше: TestSwitchConditions.zip (1.3M).

Альтернативный вариант: как вариант, вместо трёх переключателей можно использовать переменную (variable): завести переменную «Число посещённых событий» и увеличивать её значение на 1. А потом сравнивать значение переменной, если оно равно 3 — то что-то делать. Ну, надеюсь, принцип понятен.
Последнее редактирование: 5 года 4 мес. назад от Dmy.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: idavollr, Cabbit, Mur, Snake Fightin, ShinkoriVera

[VX Ace] Появление события по условию 5 года 4 мес. назад #107027

  • ShinkoriVera
  • ShinkoriVera аватар
  • Вне сайта
  • Познающий
  • Сообщений: 11
  • Спасибо получено: 10
Спасибо большое, всё сделал, всё работает, как и хотел) Ещё раз спасибо~
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy
Время создания страницы: 0.204 секунд