Команды RPG Maker MV/Изменить предметы

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

Изменить предметы — команда RPG Maker MV, позволяющая увеличить или уменьшить количество какого-то предмета (в узком смысле) у команды.

Доступны такие настройки:

  • Предмет, количество которого меняется.
  • Увеличивать доступные предметы или уменьшать.
  • Сумма увеличения/уменьшения: может быть постоянным числом или браться из переменной.

Если в переменной хранится отрицательное число, то команда «Увеличить» уменьшает количество предметов, а «Уменьшить» — увеличивает.

Эта команда используется и для обычных предметов, и для важных предметов, и для скрытых предметов A и B. Но оружие и броня предметами в узком смысле в RPG Maker MV не считаются. Для них существуют отдельные команды: «Изменить оружие» и «Изменить броню».

Игроки могут увидеть, какие у них в данный момент есть предметы, в меню «Предмет».

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

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

Код команды — 126. Она хранится так:

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

Где:

  • вместо степень_вложенности используется количество команд, в которые вложена данная команда (если команда не вложена в другие команды, indent равен 0),
  • вместо действие надо поставить либо 0 (если предметы нужно добавить), либо 1 (если отнять),
  • вместо номер_предмета надо поставить номер предмета в базе данных,
  • вместо тип_значения нужно поставить 0 (если указано постоянное число) либо 1 (если значение берётся из переменной),
  • вместо значение указывается либо число, на которое будет изменена количество предмета у партии (если тип_значения равен 0), либо номер переменной (если тип_значения равен 1).

Формат похож на формат команд Изменить золото (№125), Изменить оружие (№127), Изменить броню (№128) и похож на формат команд Изменить HP (№311), Изменить MP (№312), Изменить TP (№326), Изменить опыт (№315), Изменить уровень (№316), Изменить характеристику (№317).

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

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

$gameParty.gainItem($dataItems[1], 23);
  //1 надо заменить на номер предмета
  //23 надо заменить на количество предметов

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

$gameParty.gainItem($dataItems[1], $gameVariables.value(45));
  //1 надо заменить на номер предмета
  //45 нужно заменить на номер переменной

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

$gameParty.loseItem($dataItems[1], 23);
  //1 надо заменить на номер предмета
  //23 нужно заменить на номер переменной

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

$gameParty.loseItem($dataItems[1], $gameVariables.value(45));
  //1 надо заменить на номер предмета
  //45 нужно заменить на номер переменной


Информация о предметах команды хранится в объекте $gameParty класса Game_Party (код). Этот объект создаётся на всю игровую сессию в функции createGameObjects класса DataManager (код) и доступен в течении всей игровой сессии.

Для работы с предметами, оружием, бронёй (т.е. предметами в широком смысле) в классе есть такие функции:

  • $gameParty.gainItem(item, value, includeEquip) — увеличить количество предметов (в широком смысле) item на значение value (параметр includeEquip не обязателен и используется лишь если value — отрицательное число; тогда он при уменьшении предметов учитывает экипировку),
  • $gameParty.loseItem(item, value, includeEquip) — уменьшить количество предметов (в широком смысле) item на значение value (если includeEquip равен true, можно убирать экипировку; если равен false — нельзя); передавать параметр includeEquip не обязательно,
  • $gameParty.canUse(item) — проверить, что хотя бы один персонаж в команде может использовать предмет item,
  • $gameParty.consumeItem(item) — уменьшить число предмета item на один, если этот предмет тратится при использовании (если нет, функция ничего не делает),
  • $gameParty.hasItem(item, includeEquip) — проверяет, есть ли в команде хотя бы один предмет item.
  • $gameParty.hasItem(item, isAnyMemberEquipped) — проверяет, экипирован ли хотя бы один из членов команды предметом item.

Во всех этих командах item — объект из массивов $dataItems, $dataWeapons или $dataArmors.