Команды RPG Maker MV/Ветвление условий

Материал из Русская версия РПГ.укр
Первая страница настроек команды «Ветвление условий».

Ветвление условий — команда событий в RPG Maker MV, позволяющая выполнить разные действия в зависимости от условия.

Команда допускает следующие настройки:

  • Условие, при котором выполняются вложенные команды
  • Нужно ли создать ветвь «Иначе», чтобы какие-то команды выполнялись, когда условие неверно
Пример вложенности: команды показа сообщений вложены в ветви «Если» и «Иначе».

При использовании этой команды создаётся новая ветвь (или две ветви). Команды из ветви «Если» будут выполнены только если условие верно. Команды из ветви «Иначе» будут выполнены, если условие неверно. После текста «Конец» будут выполнены в любом случае.

Ветвление условий — один из двух основных способов заставить персонажей делать разные вещи в разные моменты игры. Другой способ — условия на страницах событий.

Условия[править]

Все условия разбиты на четыре страницы.

Страница 1 содержит проверки переключателей (глобальных и локальных), переменных и таймеров:

  • Состояние переключателя
  • Сравнение переменной с константой или другой переменной
  • Состояние локального переключателя
  • Проверка оставшегося времени на таймере

Страница 2 содержит проверки, связанные с конкретным персонажем (героем) в партии:

  • Есть ли он в партии в данный момент
  • Каково имя персонажа
  • Каков класс персонажа
  • Есть ли у персонажа навык
  • Экипировано ли определённое оружие
  • Экипирована ли определённая броня
  • Находится ли персонаж в определённом состоянии

На странице 3 находятся проверки, связанные с противниками в бою, персонажем (событием) на карте и транспортом:

  • Появился ли определённого противник в битве в данный момент
  • Находится ли определённого противник в определённом состоянии
  • В каком направлении смотрит персонаж (событие) или игрок на карте
  • Плывёт/летит ли игрок в данный момент на транспорте

На странице 4 — проверки, связанные со всей партией; нажатыми кнопками и скриптами:

  • Сравнение золота у игрока
  • Есть ли у игрока предмет
  • Есть ли у игрока оружие
  • Есть ли у игрока броня
  • Нажата ли определённая кнопка
  • Возвращает ли определённый код на JavaScript значение, равное true

Некоторые скриптовые условия[править]

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

$gameParty.members().some(function (m) { return m.isClass($dataClasses[2]) })

Если хотя бы у одного персонажа атака больше или равна 30 (вместо atk можно поставить другие параметры: def — защита, mat — магическая атака, mdf — магическая защита, agi — ловкость, luk — удача, mhp — максимальное здоровье, hp — текущее здоровье, mmp — максимальная мана, mp — текущая мана, level — уровень):

$gameParty.members().some(function (m) { return m.atk >= 30 })

Технические подробности[править]

Внутренний формат[править]

Команда описывается несколькими командами:

  • вначале стоит команда с кодом 111, которая обозначает условие,
  • затем идут команды, выполняемые, если условие верно (у этих команд уровень вложенности больше, чем у команды 111),
  • если включена ветвь «иначе», затем идёт команда с кодом 411 и без параметров (и таким же уровнем вложенности, как у 111), которая начинает ветвь «иначе»,
  • затем идут команды из ветви иначе (если она включена; с бо́льшим уровнем вложенности),
  • в конце ставится команда 412 без параметров, обозначающая конец проверки условий.

Условия записываются в параметрах команды 111. Параметры различные для разных условий и представлены таблице ниже:

Значение проверки Параметр №0 Параметр №1 Параметр №2 Параметр №3 Параметр №4
Переключатель ВКЛючён 0 Номер переключателя 0
ВЫКЛючен 0 Номер переключателя 1 (или ненулевое значение)
Переменная 1 Номер переменной 0, если сравниваемое значение — константа.
1 (или ненулевое значение), если сравниваемое значение берётся из другой переменной
Либо сравниваемое значение, либо номер другой переменной. Операция сравнения: 0 (значения равны), 1 (переменная больше или равна), 2 (переменная меньше или равна), 3 (переменная больше), 4 (переменная меньше), 5 (значения не равны).
Локальный переключатель ВКЛючён 2 Название переключателя (строка) 0
ВЫКЛючен 1 (или ненулевое значение)
На таймере больше (или равно) секунд 3 Число секунд 0
меньше (или равно) секунд 1 (или ненулевое значение)
Персонаж в партии 4 Номер персонажа
зовётся Текущее имя персонажа
принадлежит к классу Номер класса
знает умение Номер умения
экипирован оружием Номер оружия
экипирован бронёй Номер брони
находится в состоянии Номер состояния
Противник или противница появился/появилась в бою 5 Номер противника/противницы
находится в состоянии Номер состояния
Персонаж/событие на карте смотрит вниз 6 Номер персонажа 2
смотрит влево 4
смотрит вправо 6
смотрит вверх 8
Золото партии больше или равно опр. значению Сравниваниемое значение 0
меньше или равно опр. значения 1
меньше опр. значения 2
У партии есть вещь 8 Номер вещи
оружие 9 Номер оружия true или 1, если проверка должна включать экипировку. false или 0, если не должна.
броня 10 Номер брони
Нажата кнопка 12 Код кнопки (строка: 'ok', 'cancel', 'up', 'down', 'left', 'right', 'pageup', 'pagedown'
Партия в транспорте 13 Номер транспортного средства: 0 (лодка), 1 (корабль), 2 (дирижабль).

Соответствия в JavaScript[править]

Команде «Ветвление условий» соответствует оператор JavaScript if в JavaScript. Он имеет такой вид:

  if (условие) {
    команда1;
    команда2;
  }
  else {
    команда3;
    команда4;
  }

В этом примере команда1 и команда2 выполнятся, если условие верно (равно true или преобразуется в true). Если условие неверно (равно false или преобразуется в false), будут выполнены команды команда3 и команда4.