Код:
var Imported = Imported || {};
Imported.DKR_DialogueHelper = true;
var DKR = DKR || {};
DKR.DialogueHelper = DKR.DialogueHelper || {};
DKR.DialogueHelper.version = 1.0;
//-----------------------------------------------------------------------------
/*:
* @plugindesc (v.1.0.0) Плагин позволяет упростить построение диалогов, а именно - автоматизировать ввод имени и лица говорящего, а также цвета текста.
*
* @target MZ
* @author DarchanKaen
*
* @help
* DKR DialogueHelper
* ----------------------------------------------------------------------------
* ---Общая информация:
* Плагин позволяет упростить построение диалогов,
* а именно - автоматизировать ввод имени и лица говорящего, а также цвета имени и текста.
* Указанный персонаж (Actor) должен быть в перечек Персонажей!
* ---Параметры плагина:
* Отсутствуют.
* --В Примечании персонажа (указывать можно оба тега, или один из них):
* <dialogueHelperNameColorId: X>
* <dialogueHelperTextColorId: Y>
* где:::
* X, Y - номер цвета, как в чартеге \C[номер] (от 0 до 31).
* ---Команды(в эвенте команда "Скрипт"):
* DKR.DialogueHelper.setupMessage(N); - применение плагина;
* Сообщение, идущего после данного вызова Скрипта, будет применять настройки указанного персонажа.
* где:::
* N - номер персонажа из перечня Персонажей, чьи настройки
* (имя, лицо, цвета имени и текста) нужно использовать.
*
*/
(() => {
//--DATA
let isMessageSetup = false;
let messageActor = null;
let nameTextColorId = null;
let messageTextColorId = null;
let messageFaceImageSettings = null;
let messageSpeakerName = null;
let messageText = null;
//--CHANGED CORE
Game_Interpreter.prototype.command101 = function(params) {
if ($gameMessage.isBusy()) {
return false;
}
if(false === isMessageSetup){
$gameMessage.setFaceImage(params[0], params[1]);
$gameMessage.setBackground(params[2]);
$gameMessage.setPositionType(params[3]);
$gameMessage.setSpeakerName(params[4]);
}else{
let paintedName = paintSomeText(messageSpeakerName, nameTextColorId);
$gameMessage.setFaceImage(messageFaceImageSettings[0], messageFaceImageSettings[1]);
$gameMessage.setBackground(params[2]);
$gameMessage.setPositionType(params[3]);
$gameMessage.setSpeakerName(paintedName);
}
while (this.nextEventCode() === 401) {
// Text data
this._index++;
if(false === isMessageSetup){
$gameMessage.add(this.currentCommand().parameters[0]);
}else{
let paintedMessageText = paintSomeText(this.currentCommand().parameters[0], messageTextColorId);
$gameMessage.add(paintedMessageText);
}
}
switch (this.nextEventCode()) {
case 102: // Show Choices
this._index++;
this.setupChoices(this.currentCommand().parameters);
break;
case 103: // Input Number
this._index++;
this.setupNumInput(this.currentCommand().parameters);
break;
case 104: // Select Item
this._index++;
this.setupItemChoice(this.currentCommand().parameters);
break;
}
this.setWaitMode("message");
clearMessageSettings();
return true;
};
//--LOGIC
const setUpMessageSettings = (actorId) => {
messageActor = $gameActors._data[actorId];
if(undefined === messageActor){
messageActor = new Game_Actor(actorId);
}
let actorMetadata = getActorMetadata(actorId);
let messageSpeakerFaceName = messageActor._faceName;
let messageSpeakerFaceIndex = messageActor._faceIndex;
let nameAndTextColorInd = getActorNameAndTextColorsId(actorMetadata);
nameTextColorId = nameAndTextColorInd[0];
messageTextColorId = nameAndTextColorInd[1];
messageSpeakerName = messageActor._name;
messageFaceImageSettings = [messageSpeakerFaceName, messageSpeakerFaceIndex];
isMessageSetup = true;
}
const getActorNameAndTextColorsId = (actorMetadata) => {
let nameColorId = null;
let textColorId = null;
nameColorId = Number(actorMetadata.dialogueHelperNameColorId) || null;
textColorId = Number(actorMetadata.dialogueHelperTextColorId) || null;
return [nameColorId, textColorId];
}
const getActorMetadata = (actorId) => {
let actorMetadata = null;
let actorData = $dataActors[actorId];
actorMetadata = actorData.meta;
return actorMetadata;
}
const paintSomeText = (someText, colorCodeToPaint) => {
let paintedText = null;
if(null === colorCodeToPaint || colorCodeToPaint < 0 || colorCodeToPaint > 31){
paintedText = someText;
}else{
paintedText = `\\C[${colorCodeToPaint}]${someText}\\C[0]`;
}
return paintedText;
}
const clearMessageSettings = () => {
isMessageSetup = false;
messageActor = null;
nameTextColorId = null;
messageTextColorId = null;
messageFaceImageSettings = null;
messageSpeakerName = null;
messageText = null;
}
//--COMMANDS
DKR.DialogueHelper.setupMessage = function(actorId){
setUpMessageSettings(actorId);
}
})();
Социальные закладки