Команды RPG Maker MV/Показать сообщение

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

Показать сообщениекоманда RPG Maker MV, позволяющая отобразить текст на экране в окне сообщения. Эта команда — основной способ передачи информации игроку в RPG Maker MV. Её можно использовать для реплик в диалогах или отображения характеристик.

Команда позволяет указать следующие характеристики:

  • Лицо персонажа, отображаемое слева от текста
  • Текст сообщения,
  • Тип фона: окно сообщения, уменьшенная освещённость (затемнение) и прозрачный,
  • Положение окна: вверху, в середине и внизу экрана.

Если строка текста слишком длинная, она не будет видна. Если не используется графика лица, то длина видимой строки соответствует размеру окна. Если используется графика лица, то длина видимой строки отмечена серой чертой в поле ввода.

В каждом сообщении может быть до 4 строк текста. Для ввода более длинных реплик можно использовать галочку «Массовый ввод». Если её включить, можно ввести длинный текст и он автоматически будет разбиваться на сообщения по 4 строки.

Кнопка «Предпросмотр» позволяет показать, как сообщение будет выглядеть в игре.

Отображение[править]

Внешний вид окна с сообщением, созданного командой «Показать сообщение».

Внешний вид сообщения зависит от:

Сообщение отображается посимвольно, с задержкой между символами текста. Задержку можно убрать, обведя строку текста текст \>вот так\, или увеличить, добавив команду \. или \|.

Перед выводом сообщения показывается анимация открытия и закрытия окна. При этом если несколько команд стоят рядом, анимация при переходе от одного сообщения ко второму не показывается.

Доступные коды внутри текст сообщения[править]

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

  • \V[n] — заменяется на значение переменной с номером n (n необходимо заменить на число),
  • \N[n] — заменяется на имя героини или героя, где n — номер в базе данных,
  • \P[n] — заменяется на имя героини или героя, где n — номер в партии,
  • \G — заменяется названием валюты,
  • \C[n] — меняет цвет текста после кода, где n — новый цвет (цвета определяются скином окна),
  • \{ — увеличивает размер текста на одно значение,
  • \} — уменьшает размер текста на одно значение,
  • \\ — выводит знак «\»,
  • \$ — открывает окно валюты,
  • \. — устанавливает задержку в четверть секунды,
  • \| — устанавливает задержку в секунду,
  • \> — устанавливает мгновенный показ всех символов либо до конца строки, либо до кода \<,
  • \< — показывает, где заканчивается мгновенный показ всех символов,
  • \^ — отменяет ожидание нажатия на кнопку перед показом следующего сообщения.

Взаимодействие с другими командами[править]

Эта команда приостанавливает выполнение других команд события до тех пор, пока вывод сообщения не завершится.

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

Вторая команда должна идти строго после команды вывода сообщения. Если между ними стоят другие команды (даже такие, результат которых не виден пользователю, например, Комментарий...) или вторая команда находится внутри какой-то команды (например, Ветвление условий...), то объединения не произойдёт: сначала будет показано одно окно, затем второе.

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

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

Каждое сообщение хранится как несколько команд: №101 и №401. Команда №101 задаёт общие настройки сообщения:

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

{
  "code": 101,
  "indent": степень_вложенности,
  "parameters": [
    "имя файла с графикой лиц без расширения",
    номер_лица_в_файле_с_графикой_лиц,
    способ_отображения_фона,
    положение_окна
  ]
}

Где:

  • вместо степень_вложенности используется количество команд, в которые вложена данная команда (если команда не вложена в другие команды, indent равен 0),
  • вместо "имя файла с графикой лиц без расширения" указывается соответствующее имя файла из папки img/faces (например, "Actor1" или "Actor2"),
  • вместо номер_лица_в_файле_с_графикой_лиц указывается номер лица в этом файле, причём нумерация начинается с нуля (0 — левое верхнее лицо, 3 — правое верхнее лицо, 4 — левое лицо из второго ряда),
  • вместо способ_отображения_фона указывается число от 0 до 2: 0 — отображение в рамке окна, 1 — отображение на затемнённом фоне, 2 — отображение на прозрачном фоне,
  • вместо положение_окна указывается число от 0 до 2: 0 — сверху, 1 — в середине экрана, 2 — внизу экрана.

Затем идут команды 401, каждая из которых соответствует одной строке сообщения. У неё только один параметр — строка сообщения:

{
  "code": 401,
  "indent": 0,
  "parameters": [
    "строка сообщения"
  ]
}

Пример использования:

{
  "code": 101,
  "indent": 0,
  "parameters": [
    "Zulfija",
    0,
    0,
    2
  ]
},
{
  "code": 401,
  "indent": 0,
  "parameters": [
    "\\C[4]\\N[1]:\\C[0]"
  ]
},
{
  "code": 401,
  "indent": 0,
  "parameters": [
    "Цветок очень красивый, но мы тут не за ним."
  ]
}

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

Этой команде в JavaScript соответствует такой код:

$gameMessage.setFaceImage("Zulfija", 0);
   //Zulfija — имя файла в папке img/faces без расширения
   //0 — номер лица в файле с графикой лиц, нумерация с нуля

$gameMessage.setBackground(0);
   //0 — окно сообщения, 1 — уменьшенная освещённость (затемнение), 2 — прозрачный

$gameMessage.setPositionType(2);
  //0 — вверху, 1 — в середине, 2 — внизу

$gameMessage.add("Первая строка сообщения");
$gameMessage.add("Вторая строка сообщения");


Информация о показываемом в данный момент сообщении хранится в глобальном объекте $gameMessage класса Game_Message (код). Этот объект создаётся на всю игровую сессию в функции createGameObjects класса DataManager (код) и доступен в течении всей игровой сессии. При обработке команды события «Показать сообщение» интерпретатор (т.е. Game_Interpreter (код)) заполняет данные объекта $gameMessage.

Сцены, которые могут показывать сообщения — Scene_Map (код) или Scene_Battle (код). Для того, чтобы показать сообщение, они в своих методах createMessageWindow создают объекты класса Window_Message (код).