Команды RPG Maker MV/Изменить HP, MP, TP

Материал из Русская версия РПГ.укр
Окно настройки команды «Изменить HP». Команды «Изменить MP» и «Изменить TP» выглядят почти так же, но в них нет галочки «Разрешить нокаут».

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

Очки HP, MP и TP — временные единицы, которые тратятся в битве. HP условно соответствуют здоровью персонажа, MP — энергии, а TP — ярости. Обычно при получении противников отнимаются HP и прибавляются TP; при использовании умений и заклинаний отнимаются MP и TP. Однако это не обязательно: вы можете настроить свои умения иначе. TP обнулсяются в конце боя, поэтому команда «Изменить TP» редко нужна вне боя.

У команд есть такие настройки:

  • Чьи очки меняются: всей партии, заданного персонажа или персонажа по номеру из переменной;
  • Как меняются очки: увеличиваются или уменьшаются;
  • Количество очков: сколько очков забирается или отнимается (можно задать напрямую или из переменной).
  • В команде «Изменить HP» можно указать, разрешён ли нокаут: может ли количество очков уменьшиться до нуля, что приведёт к добавлению состояния №1 (в стандартных настройках — «Нокаут»).

При изменении HP действуют такие правила:

  • Если нокаут запрещён, при уменьшении HP нельзя уменьшить его до 0, только до 1.
  • Если персонаж в нокауте (у него есть состояние №1, в стандартной настройке называемое «Нокаут»), ему нельзя увеличить HP. Чтобы увеличить HP персонажа в нокауте, нужно сначала снять первое состояние командой Изменить состояние.

Максимальное количество HP и MP — 9999 (но оно зависит от параметров «Макс. HP» и «Макс. MP» персонажа), максимальное количество TP — 100.

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

Это команды используются только для персонажей партии. Чтобы изменить очки противников в битве, используются команды Изменить HP (MP, TP) противника.


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

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

Коды команд — 311 (изменить HP), 312 (изменить MP) и 326 (изменить TP).

Команда №311 выглядит так:

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

Где:

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


Команды 312 и 326 выглядят идентично за тем исключением, что в них отсутствует последний параметр разрешить_ли_нокаут

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

Чтобы изменить очки здоровья персонажа так, как это делает команда «Изменить HP» с разрешённым нокаутом, можно использовать такой код:

    var target = $gameActors.actor(1);
      //замените 1 на номер персонажа
    var value = 100;
      //замените 100 на количество HP, можно отрицательное
    if (target.isAlive()) {
        target.gainHp(value);
        if (target.isDead()) {
            target.performCollapse();
        }
    }

А вот как можно уменьшить HP персонажа без нокаута:

    var target = $gameActors.actor(1);
      //замените 1 на номер персонажа
    var value = 100;
      //замените 100 на количество HP, можно отрицательное
    if (target.isAlive()) {
        if (target.hp <= -value) {
            value = 1 - target.hp;
        }
        target.gainHp(value);
    }

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

$gameActors.actor(1).gainMp(100)
  //замените 1 на номер персонажа,
  //а 100 — на количество добавляемых очков MP
  // (можно отрицательное)

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

$gameActors.actor(1).gainMp(50)
  //замените 1 на номер персонажа,
  //а 50 — на количество добавляемых очков TP
  // (можно отрицательное)

Информация о очках здоровья, магии и техники персонажей задана в классе Game_Battler (код), от которого унаследован класс Game_Actor (код), описывающий персонажей игрока. Объекты класса Game_Actor можно получить из переменных $gameActors (хранит экземпляр Game_Actors (код)) и $gameParty (хранит экземпляр Game_Party (код)). Эти объекты создаются в функции createGameObjects класса DataManager (код) и доступны в течении всей игры.

См. также[править]