味噌原
ユーザー
/PI[n]という制御文字から任意の数字をPictureIdという変数として取得するプラグインを作っていたのですが、
このスクリプトを適用するとなぜか/C[n]などの制御文字が「c[n]」と表示され、読まれなくなってしまいます。
下記が作成したスクリプトです。
コンソールで確認したところ、Window_Message.prototype.processEscapeCharacterもWindow_Base.prototype.processEscapeCharacterも正しく実行されてはいるようです。
何かわかることがあればご教示願います。
このスクリプトを適用するとなぜか/C[n]などの制御文字が「c[n]」と表示され、読まれなくなってしまいます。
下記が作成したスクリプトです。
JavaScript:
(() => {
//変換
// PI[n]の処理を追加
const _Window_Base_convertEscapeCharacters = Window_Base.prototype.convertEscapeCharacters;
Window_Base.prototype.convertEscapeCharacters = function(text) {
// PI[n]の正規表現を追加
const piRegexp = /\\PI\[(\d+)\]/i;
// PI[n]の置換関数を追加
const piReplacer = (_, p1) => {
// nを数値に変換してpictureIdに代入
const pictureId = Number(p1);
return '';
};
// 他のエスケープシーケンスの処理はそのまま継承
return _Window_Base_convertEscapeCharacters.apply(this, arguments)
.replace(piRegexp, piReplacer);
};
//ここでPIを制御文字としていろいろする
const _Window_Message_processEscapeCharacter = Window_Message.prototype.processEscapeCharacter;
Window_Message.prototype.processEscapeCharacter = function(code, textState) {
switch (code) {
case 'PI':
const pictureId = this.obtainEscapeParam(textState);
console.log(pictureId);
SetPI(pictureId);
break;
default:
_Window_Message_processEscapeCharacter.apply(this, arguments);
break;
}
};
function SetPI(n){
const pictureId = n;
if (pictureId > 0) {
// ピクチャIDを取得した場合
Window_Message.prototype.processControlCharacter = function(textState) {
Window_Base.prototype.flushTextState.call(this, textState);
//ここから口パク
console.log(textState);
}}
};
})();
コンソールで確認したところ、Window_Message.prototype.processEscapeCharacterもWindow_Base.prototype.processEscapeCharacterも正しく実行されてはいるようです。
何かわかることがあればご教示願います。

最後に編集: