こんにちは。
ツクシ さんが書きました:トリアコンタン様 ステート説明プラグイン IconDescription.js
viewtopic.php?t=833
フトコロ様 オリジナルウィンドウ表示プラグイン FTKR_OriginalSceneWindow.js
https://plugin.fungamemake.com/archives/1319
バトル中にFTKR_OriginalSceneWindowにて表示させたウィンドウのステートアイコンに、IconDescriptionによる説明ウィンドウ表示を行いたいです。
オリジナルではない通常のウィンドウですとIconDescriptionにて問題無くステート説明ウィンドウが表示できるのですが、オリジナルウィンドウ上では反応しないという状況です。
本件、解決方法や対応方法がございましたらご教示お願いいたします。
オリジナルウィンドウの、コモン(Common)ウィンドウに、
FTKR_CustomSimpleActorStatus.js を併用して、アクターのステートを描画した際に、
ステートのアイコンをクリックしても反応しないというご質問でよろしいでしょうか?
上記現象は、
FTKR_OriginalSceneWindow.js …というか、
FTKR_CustomSimpleActorStatus.js におけるアクターのステートアイコン描画のメソッドが、
IconDescription.js で想定している描画メソッドと異なっているため、
ウィンドウがどこにアイコンを描画し、どこをクリックしたときに、どのアイコンの説明を表示するのか、
といった情報が記録できないために起こっているようです。
これを、解決するには、
FTKR_OriginalSceneWindow.js を改変する必要があります。
FTKR_OriginalSceneWindow.js を JavaScript を編集できるソフトで開き、
以下の変更を行ってください。
編集を行う前に、ファイルのバックアップを取るのを忘れずに。
- Window_OswCommon.prototype.update というメソッドがある(恐らく 2009 行目あたり)ので、
そのメソッドを書きコードに書き換える。
コード: 全て選択
Window_OswCommon.prototype.update = function() {
Window_Base.prototype.update.call(this);
this.updateOswShow();
this.updateReference();
this.updateOswRefresh();
if ($plugins.some(plugin => plugin.name === 'IconDescription' && plugin.status) &&
Imported.FTKR_CSS) {
this.updateIconRect();
this.updateIconTouch(false);
}
};
- Window_OswCommon.prototype.updateReference というメソッドがある(上記変更を行っていると 2065 行目あたりから始まっていると思います)ので、
そのメソッドの後ろに、下記コードを追加する。
コード: 全て選択
if ($plugins.some(plugin => plugin.name === 'IconDescription' && plugin.status) &&
Imported.FTKR_CSS) {
Window_OswCommon.prototype.updateIconRect = function() {
this._stateIconSprite.forEach(iconSprite => {
iconSprite.forEach(sprite => {
const iconIndex = sprite._iconIndex;
const x = sprite.x - this.standardPadding();
const y = sprite.y - this.standardPadding();
this.addIconRect(iconIndex, x, y);
});
});
};
}
- もし、FTKR_CustomSimpleActorStatus が FTKR_OriginalSceneWindow より下に登録されている場合は、
FTKR_CustomSimpleActorStatus が 上になるように、登録順を変更する。
以上で、オリジナルウィンドウで表示したステートアイコンの説明が表示されるようになるのではないかと思います。
しっかりと確認しているわけではないので、おかしな挙動をする場合は、ご報告ください。
以上、ご確認ください。