RPG Maker - плагин Phileas's Title Credits
Разработал новый плагин.
Добавляет кнопку на титульном экране. По нажатию открывается простое прокручиваемое окно с текстом благодарностей из параметров.
Также можно добавить кнопку выхода из игры.



Разработал новый плагин.
Добавляет кнопку на титульном экране. По нажатию открывается простое прокручиваемое окно с текстом благодарностей из параметров.
Также можно добавить кнопку выхода из игры.
Плагин назначает общие события и переключатели клавишам клавиатуры, геймпада и мыши.
У плагина 2 параметра: Common Events и Switches. Они отличаются только одним полем: в Common Events задаётся номер общего события, а в Switches - переключатель. Остальные поля общие:
Device type - устройство, нажатия на которое нужно отслеживать.
Key name - строковый идентификатор кнопки.
Key number - числовой идентификатор кнопки.
В общих событиях можно включить блокировку. Если она включена, то повторно стриггерить событие можно будет только после того, как оно завершит выполнение.
Плагин предоставляет одну команду:
Контроллер - позволяет включить и отключить горячие клавиши.
Сначала плагин ищет Key name в стандартных словарях движка. Если вы их не переопределяли, то они выглядят так:
keyBoard:
9: "tab", // tab
13: "ok", // enter
16: "shift", // shift
17: "control", // control
18: "control", // alt
27: "escape", // escape
32: "ok", // space
33: "pageup", // pageup
34: "pagedown", // pagedown
37: "left", // left arrow
38: "up", // up arrow
39: "right", // right arrow
40: "down", // down arrow
45: "escape", // insert
81: "pageup", // Q
87: "pagedown", // W
88: "escape", // X
90: "ok", // Z
96: "escape", // numpad 0
98: "down", // numpad 2
100: "left", // numpad 4
102: "right", // numpad 6
104: "up", // numpad 8
120: "debug" // F9
gamepad:
0: "ok", // A
1: "cancel", // B
2: "shift", // X
3: "menu", // Y
4: "pageup", // LB
5: "pagedown", // RB
12: "up", // D-pad up
13: "down", // D-pad down
14: "left", // D-pad left
15: "right" // D-pad right
mouse:
0: "left"
1: "middle"
2: "right"
Если плагин не нашёл Key name, то он берёт значение Key number.
Если во время игры произошло нажатие на клавиатуру, геймпад или мышь, плагин проверяет, не назначено ли на клавишу общее событие или переключатель. Если назначено общее событие, оно исполняется. Не рекомендуется указывать параллельное или автоматическое событие. Если назначен переключатель, его значение меняется на противоположное.
Этот плагин распространяется по лицензии MIT.
Это означает, что вы можете свободно использовать плагин в некоммерческих и коммерческих играх и даже редактировать его.
Но обязательно укажите меня в титрах!
Плагин позволяет пропускать сообщения диалогов нажатием любой клавиши (задаётся в настройках плагина).
Можно выбрать скорость пропуска: медленную или быструю.
Можно включить режим, который разрешит пропускать только прочитанный текст.
Параметры возможно изменить в ходе игры с помощью команд плагина.
Первый параметр - строковый код клавиши, при нажатии на которую нужно пропускать сообщения. По умолчанию - Control (Ctrl).
Второй параметр - скорость пропуска сообщений. По умолчанию - Slow (медленная).
После включения и настройки (опционально) плагина достаточно во время диалога зажать заданную клавишу.
В событии можно вызвать команды плагина, чтобы изменить клавишу и скорость пропуска сообщений.
Обновил до версии 1.3.1. Добавил возможность запрещать и разрешать пропуск и стандартную промотку (fast forward).
Этот плагин распространяется по лицензии MIT.
Это означает, что вы можете свободно использовать плагин в некоммерческих и коммерческих играх и даже редактировать его.
Но обязательно укажите меня в титрах!
Обновил плагин до версии 1.8.1
Добавил команду для удаления всех действий для всех картинок сразу.
Подробности о плагине в оригинальном посте.
Плагин позволит вам легко сделать игровой интерфейс, паззлы, мини-игры и другое!
Команды плагина
Срабатывание переключателя, переменной или общего события при действиях указателя с картинкой: наведение, уведение, клик, нажатие.
Плагин предоставляет команды:
Назначить - назначает обработчик на один тип действия с картинкой.
Удалить действие - удаляет обработчик одного действия с картинкой.
Удалить все действия - удаляет все обработчики картинки.
Все те же команды для глобальных триггеров (они назначаются сразу всем картинкам).
Включение и выключение плагина (триггеры ставятся на паузу, но не удаляются).
На каждый тип действия можно назначить свой обработчик, они будут работать независимо.
Например, можно на одну картинку назначить два переключателя: на Enter и на Click.
После удаления картинки все привязанные к её номеру триггеры тоже удаляются.
Недавно обновил до версии 1.8.0. Теперь опционально можно задавать ID картинки через переменную.
Этот плагин распространяется по лицензии MIT.
Это означает, что вы можете свободно использовать плагин в некоммерческих и коммерческих играх и даже редактировать его.
Но обязательно укажите меня в титрах!
Несовместим с плагином ButtonPicture. Однако он вам точно не понадобится, так как мой плагин предоставляет весь его функционал и даже больше.
Если будут проблемы - пишите мне.
Думаю, что вам рассказать о разработке игр на RPG Maker. В этом движке я наиболее компетентен. Что вам самим интересно? Я открыт к предложениям!
Мои посты по разработке на RPG Maker набирают примерно столько же минусов, сколько и плюсов. Приглашаю всех поделиться критикой моих публикаций. Хочу повысить качество контента!
Это можно сделать с помощью команды Выполнить скрипт в событии. Ниже скрипт для MZ с комментариями.
// Для красоты вынес перевод строки времени в кол-во секунд в отдельную функцию.
function convertStringToSeconds(time) {
const array = time.split(":");
return (parseInt(array[0], 10) * 60 * 60) + (parseInt(array[1], 10) * 60) + parseInt(array[2], 10)
}
// Устанавливаем номер переменной, в которую хотим записать значение.
const varId = 1;
// Фиксируем текущее игровое время.
const currentSeconds = $gameSystem.playtime();
// Проверяем, есть ли сохранения.
if (!DataManager.isAnySavefileExists()) {
$gameVariables.setValue(varId, currentSeconds);
} else {
// Определяем индекс последнего сохранения.
const lastSaveFileId = DataManager.latestSavefileId();
// Получаем данные об этом сохранении (нам даже не нужно грузить всё сохранение).
const saveInfo = DataManager._globalInfo[lastSaveFileId];
// Вычисляем, сколько секунд игры было в последнем сохранении.
const lastSeconds = convertStringToSeconds(saveInfo.playtime);
// Вычисляем разницу.
const deltaSeconds = currentSeconds - lastSeconds;
// Записываем в переменную.
$gameVariables.setValue(varId, deltaSeconds);
}
Учтите, что так мы можем получить отрицательное число. К примеру, если поиграем час, запишем сохранение, а потом начнём новую игру, текущее игровое время будет меньше времени в последнем сохранении.
Версия для MV:
function convertStringToSeconds(time) { const array = time.split(":"); return (parseInt(array[0], 10) * 60 * 60) + (parseInt(array[1], 10) * 60) + parseInt(array[2], 10) }
const varId = 1; const currentSeconds = $gameSystem.playtime();
if (!DataManager.isAnySavefileExists()) { $gameVariables.setValue(varId, currentSeconds); }
else {
const lastSaveFileId = DataManager.latestSavefileId();
const saveInfo = DataManager.loadGlobalInfo()[lastSaveFileId];
const lastSeconds = convertStringToSeconds(saveInfo.playtime);
const deltaSeconds = currentSeconds - lastSeconds;
$gameVariables.setValue(varId, deltaSeconds);
}
Если нужны какие-то данные, которых нет в информации о сохранении, придётся грузить файл сохранения. Это можно сделать так:
// Устанавливаем номер переменной, в которую хотим записать значение.
const varId = 1;
// Проверяем, есть ли сохранения.
if (!DataManager.isAnySavefileExists()) {
$gameVariables.setValue(varId, 0);
} else {
// Определяем индекс последнего сохранения.
const lastSaveFileId = DataManager.latestSavefileId();
// Получаем имя файла этого сохранения.
const saveName = DataManager.makeSavename(lastSaveFileId);
// Загружаем данные из файла.
StorageManager.loadObject(saveName).then(contents => {
// Данные в contents. Обрабатываем их, как нужно.
return 0;
});
}
На смежные и схожие вопросы могу ответить в этом треде.