Команды RPG Maker MV/Локальный переключатель

Материал из Добрая вики про РПГ Мейкер
Внешний вид окна настройки команды «Локальный переключатель».

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

Можно указать следующие настройки:

  • локальный переключатель, значение которого будет изменено (A, B, C или D),
  • новое значение переключателя (ВКЛ или ВЫКЛ).

Если эта команда используется внутри общего событие, а событие на карте вызывает общее событие с помощью команды Общее событие, то команда из общего события установит переключатель события на карте.

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

Примеры использования[править]

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

Например, с помощью локальных переключателей удобно реализовывать лежащие на карте вещи, которые можно забрать. Их можно создать как событие из двух страниц:

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

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

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

Код команды — 123. Она кодируется так:

{
  "code": 123,
  "indent": степень_вложенности,
  "parameters": [
    "название_переключателя",
    действие
  ]
}

Где нужно заменить следующее:

  • степень_вложенности — на число команд, в которые вложена данная команда,
  • "название_переключателя" — на латинскую букву в кавычках ("A", "B", "C", "D"),
  • действие либо на 0 (если переключатель включается), либо на 1 (если переключатель выключается).

Использование в JavaScript[править]

Чтобы изменить локальный переключатель события, надо использовать такой код:

var key = [1, 2, 'A'];
  //вместо 1 следует поставить номер карты
  //вместо 2 следует поставить номер события
  //вместо 'A' следует поставить название лок.
  //   переключателя: латинскую букву 'A', 'B', 'C' или 'D'
$gameSelfSwitches.value(key) = true;
  //  true включит переключатель
  //  чтобы выключить его, следует использовать false

Номер текущей карты можно узнать с помощью $gameMap.mapId(). Например, вот так можно выключить локальный переключатель A у всех событий на текущей карте:

$gameMap.events().forEach(function (event) {
  var key = [$gameMap.mapId(), event.event().id, 'A'];
  $gameSelfSwitches.value(key) = false;
});

Аналоги в JavaScript[править]

Переключателям в RPG Maker MV соответствуют переменные с булевыми (boolean) значениями в RPG Maker. (В отличие от RPG Maker, в JavaScript переменные могут хранить не только числа, но и многое другое. В частности, булевы значения: true и false. true примерно соответствует ВКЛ в RPG Maker, а false — ВЫКЛ.)

В JavaScript есть возможность создавать локальные переменные, доступные только внутри какой-то части кода. Для этого следует использовать ключевое слово var (в новых версиях также let и const) при объявлении переменной:

  function test() {
    var testVar = false;
    /* тут какой-то ещё код */
  }

При этом testVar будет доступна только внутри функции test. Другой код не сможет её переписать или прочитать, что уменьшает вероятность конфликтов.

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

(function () {
  var localVar = false;
  /* Здесь код */
})();

В этом примере код заключён в безымянную функцию (function () { /* ... */ }), которая вызывается сразу же после объявления (с помощью скобок () — это команда вызова), и никуда не сохраняется. Эта функция нужна только для того, чтобы переменные стали локальными.

Ссылки[править]