12

Введение в плагиноведение RPG Maker MZ: как устроен плагин?

Серия RPG Maker: глубокое погружение

В прошлой статье мы с вами говорили о том, что вообще делает плагин RMMZ: он переопределяет методы и свойства классов движка, написанных на JS. Настало время посмотреть на специфику этих скриптов и понять, как они оформляются. Ничего сложного, я пошагово разберу это дело, надеюсь, кому-то пригодится.

За основу материала взял свой самый первый микро-плагин, который просто меняет пару цветов в ColorManager (но с возможностью указать их в визуальном редакторе). Обратите внимание на номера строк. Я выдаю листинг подряд, ни одну строчку не пропуская.

1. Понятное название плагина

Итак, начинается плагин, естественно, с оформления названия (это ведь самое важное, верно?). Это просто закомментированный блок, который вообще ни на что не влияет, но правила хорошего тона требуют указать, в какой версии RMMZ вы работаете, и как называется собственно плагин.

А вот дальше начинаются приколы. Следующий блок, хоть и выглядит как комментарий, и редактором кода воспринимается, как комментарий, представляет собой объявление команд и переменных, которые будут использоваться в нашем плагине.

Давайте же разберёмся, что есть в этом блоке, и зачем оно там есть.

2. Объявляем данные плагина

Тут понятно:

  • Строчка 6: для какой версии RPG Maker разработан плагин,

  • Строчка 7: описание плагина, полезное для других разработчиков и для тех, кто его скачает, а потом забудет, зачем качал =),

  • Строчка 8: автор, то есть вы.

3. Блок помощи

Тут можно написать очень длинный текст. Я ограничился просто названием файла, потому что мне было лень, но важно то, что этот текст потом будет показываться в визуальном редакторе RMMZ в блоке описания плагина. Если вы делаете плагин на экспорт, или, тем более, хотите его продавать, этот блок придётся заполнить. Ну и для себя завтрашнего не грех постараться.

Это я сам себя уговариваю)

4. Объявляем доступные команды

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

  • Строчка 12: объявление синтаксиса команды,

  • Строчка 13: человекопонятное название команды,

  • Строчка 14: подробное описание того, что делает команда.

Я в своём первом плагине команды не использовал, но во многих сложных надстройках, типа специфических боевых систем и пр. без команд не обойтись - иначе просто пришлось бы дублировать один и тот же код сто миллионов раз, что, как бы, нехорошо.

5. Объявляем переменные скрипта и помещаем их в визуальный редактор RMMZ

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

Объявление переменной включает в себя:

  • Строчка 16 (20): имя переменной,

  • Строчка 17 (21): текстовое описание переменной (оно будет видно в админке),

  • Строчка 18 (22): дефолтное значение.

Дефолтное значение - это если вы в админке ничего не выставили ещё, оно будет вот таким.

6. Код плагина

Как вы можете заметить, у нас уже 24 строчки, и все они зелёненькие, в смысле, всё это комментарии. Мы уже знаем, что это не совсем так, но суть в том, что всё это было лишь подготовкой к созданию плагина, впереди же собственно его код.

А вот и он:

Очень простой.

Мы создаём собственную функцию, которая будет выполняться в общем потоке при загрузке игры (но ПОСЛЕ загрузки всего ядра, что важно, так как нам нужно переопределить какую-то часть кода, а для этого она должна быть уже загружена) и будет менять два цвета в ColorManager на те, что мы указываем в визуальном редакторе RPG Maker. Что нам нужно для того, чтобы это реализовать? Переменные мы объявили, они появились в админке, но нам теперь надо получить их значения из скрипта.

За это отвечают строчки 28 и 29.

На 28 строчке мы создаём константу, содержащую название плагина (это вообще пригодится во многих случаях, так что я бы рекомендовал всегда в начале скрипта её объявлять), а на 29 по имени этой константы получаем из PluginManager параметры плагина (это как раз и есть те самые созданные нами переменные param). Как вы помните, формат у них - строка вида "0,0,0,0" - а это RGBa. Но чтобы присвоить это дело окну, его нужно немного видоизменить. На строчках 32 и 33 мы как раз помещаем значения этих параметров в обёртку, чтобы получилась строка вида "rgba(0,0,0,0)".

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

Итак, мы получили описание цвета двух параметров плагина (причём с альфа-каналом, то есть, прозрачностью), и нам осталось только закинуть их в ColorManager. За это отвечают строчки 37 и 38. Они ПОЛНОСТЬЮ дублируют аналогичные строчки из rmmz_managers, то есть, переопределяют их, подставляя вместо установленных разработчиком значений значения из плагина.

Вот, собственно, и всё. Закрываем блок кода, сохраняем и наблюдаем результат.

***

Как я уже говорил, любой JS код тут заработает, потому что запускается игра в браузере. Как мне указали в одной из моих статей, есть ещё великое многообразие WEB API, которое может обеспечить в том числе и асинхронность, и многопоточность, и прочие плюшки. Что ж, если вам хочется - используйте всю мощь жабаскрипта на полную!

А у меня на сегодня всё. Пишите свои мысли, задавайте вопросы, будем вместе искать на них ответы. Спасибо за внимание и до скорых встреч!

Рассуждения о "браузерности" RPG Maker тут: https://pikabu.ru/story/nemnogo_rassuzhdeniy_o_brauzernosti_rpg_maker_mz_10185619

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

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


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества