ページ 11

【解決済み】MessageWindowPopupとAltWindowFrameの競合について

Posted: 2017年10月17日(火) 10:53
by にゃたま
こんにちは。

トリアコンタン様のMessageWindowPopupとツクールMVに先日搭載されたMADOアプリ付属のプラグインAltWindowFrameを併用すると競合するようで会話時AltWindowFrameで設定したWindow_Talk.pngなどに
変更されず通常のWindow.pngが表示されてしまうようです。こちらAltWindowFrameに対応することはできないでしょうか?両方共良いプラグインなので共に使いたいです。トリアコンタン様お手数おかけしますがよろしくお願いします。

Re: MessageWindowPopupとAltWindowFrameの競合について

Posted: 2017年10月18日(水) 02:42
by トリアコンタン
こんばんは!
上記について対応しました。

「フキダシウィンドウプラグイン」AltWindowFrame.jsとの競合を解消してMADOと連携できるようになりました。(ver2.9.0)
https://raw.githubusercontent.com/triacontane/RPGMakerMV/25d4e0d3247a289635bf7f981033462f9b5ea031/MessageWindowPopup.js

image_20171017_230355.jpg

Re: MessageWindowPopupとAltWindowFrameの競合について

Posted: 2017年10月18日(水) 11:35
by にゃたま
トリアコンタン様

トリアコンタン さんが書きました:「フキダシウィンドウプラグイン」AltWindowFrame.jsとの競合を解消してMADOと連携できるようになりました。(ver2.9.0)


お世話になっております。スムーズに対処いただきありがとうございます。
これで愛用中のMADOと連携して制作を継続することができます。
いつも素晴らしいプラグインをありがとうございます。本当に助かります。
今後もお体にお気をつけてツクール界を共に盛り上げましょう\(^o^)/

Re: 【解決済み】MessageWindowPopupとAltWindowFrameの競合について

Posted: 2017年10月19日(木) 01:18
by にゃたま
トリアコンタン様

解決済みとしましたがこちらのAltWindowFrameの件でお聞きしたいことがあります。
MessageWindowPopupについて現在Window_Talkが標準に適用されていますが例えばこちらを
Window_Otherに変えたりすることはどのようにプラグインを修正すれば良いのでしょうか?
基本はWindow_Talkで全く問題ありません。
なのでこちらのプラグインにそのような機能を加える必要もないのですが
他のプラグインなどでAltWindowFrameに対応してないものがかなりあります。
なのでどこをいじればAltWindowFrameに対応できるかを研究したいのです。
プラグインの作者に毎回お願いするのも大変なのでスキンくらい自分で変えられると効率がいいなと
思いましたのでお聞きさせていただきたいと思いました。

例えばYEP_KeybordConfig.jsなどはウィンドウがWindow.pngのものが適用されていますが
こちらをWindow_Status.pngに変えたいといった場合にどこを修正すれば良いのでしょうか?

もしよろしければアドバイス願いたいです。お願いします。

追記
あとAltWindowFrameを有効にするとWindow.pngが背景ありで表示されれば良いのですが
(Window.pngの画像を4等分して左上の部分)背景が何故か透明になってしまうようです。
(枠だけは表示されます)
この原因もしわかりましたら教えていただけないでしょうか?(AltWindowFrameのバグ?)

Re: 【解決済み】MessageWindowPopupとAltWindowFrameの競合について

Posted: 2017年10月19日(木) 22:50
by トリアコンタン
AltWindowFrameでは、特に何もしないと自動的にWindow_Other.pngが使用されWindow.pngは使用されません。
フキダシウィンドウプラグインでも対応前に表示されているのはWindow_Other.pngでした。
もしプラグインで追加されたウィンドウにWindow.pngが使われるのだとしたら、それはプラグイン側で明示的に指定しているからだと思います。loadWindowskinというメソッド名で検索してみてください。

実はAltWindowFrameはウィンドウ素材の規格自体を別のものに変更しています。
(双方の画像のサイズを比較してみると規格が異なっていることが分かると思います)
そのせいでAltWindowFrameを使用すると、Window.pngも他のウィンドウスキンも使えなくなります。
背景が透明になるのはこれが原因です。

なのでバグではないですが、やや強引な仕様と言えるかと思います。

Re: 【解決済み】MessageWindowPopupとAltWindowFrameの競合について

Posted: 2017年10月20日(金) 00:01
by にゃたま
トリアコンタン様

お世話になっております。

トリアコンタン さんが書きました:AltWindowFrameでは、特に何もしないと自動的にWindow_Other.pngが使用されWindow.pngは使用されません。
フキダシウィンドウプラグインでも対応前に表示されているのはWindow_Other.pngでした。
もしプラグインで追加されたウィンドウにWindow.pngが使われるのだとしたら、それはプラグイン側で明示的に指定しているからだと思います。loadWindowskinというメソッド名で検索してみてください。


確かに当初loadWindowskinは以下のようになっておりWindowがそもそもロードされてなかったようですが

コード: 全て選択

Window_Base.prototype.loadWindowskin = function() {
        this.windowskin = ImageManager.loadSystem('Window_Talk');
        this.windowskin = ImageManager.loadSystem('Window_Battle');
        this.windowskin = ImageManager.loadSystem('Window_Status');
        this.windowskin = ImageManager.loadSystem('Window_Other');
    };


いつの更新からかは定かではありませんが

コード: 全て選択

Window_Base.prototype.loadWindowskin = function() {
        this.windowskin = ImageManager.loadSystem('Window_Talk');
        this.windowskin = ImageManager.loadSystem('Window_Battle');
        this.windowskin = ImageManager.loadSystem('Window_Status');
        this.windowskin = ImageManager.loadSystem('Window_Other');
        this.windowskin = ImageManager.loadSystem('Window');
    };


このようにWindowがロードされる仕様に変わったようです。
これ以外のスクリプトはちょっと私には難しいですが現実的に選択肢などで
Window.pngが使われています。

トリアコンタン さんが書きました:実はAltWindowFrameはウィンドウ素材の規格自体を別のものに変更しています。
(双方の画像のサイズを比較してみると規格が異なっていることが分かると思います)
そのせいでAltWindowFrameを使用すると、Window.pngも他のウィンドウスキンも使えなくなります。
背景が透明になるのはこれが原因です。

なのでバグではないですが、やや強引な仕様と言えるかと思います。


今更ですがWindowスキンのサイズが大きくなっていることを知りました…(汗)
Window.pngを新仕様のサイズに変えてみたところ背景が表示されるようになりました。
Window.pngも新仕様にしなくてはいけないようです。
背景部が中心より下のところみたいです。恐らく旧仕様のものだと新仕様でいう中心より下が無いので
背景が表示されないんですね…

いままでのwindow.pngを単純に新仕様に変えただけだとこのように枠のところだけ
透明になってしまうみたいですねorz(以下画像参照)

Window.png
Window.png (9.15 KiB) 閲覧数: 3562 回
スクリーンショット 2017-10-19 23.38.50.png
スクリーンショット 2017-10-19 23.38.50.png (78.54 KiB) 閲覧数: 3562 回


ところで通常のWindow.pngが使用されているSceneSoundTest等にWindow_Status.pngを
適用するにはどのように修正したら良いでしょうか?
これを教えていただけたらSceneGlossary等でも自分で修正できそうです。
(他のKeyboradConfig等も同様の修正でできないだろうかと思います)
プラグイン本体を書き換えるとバージョンアップする毎にフレーム部分を
書き換えしなくてはいけないのでできたら
プラグイン本体を修正せずAltWindowFrameを修正する形で実現できないでしょうか?
参考程度に教えていただけませんか?お返事お待ちしております。

Re: 【解決済み】MessageWindowPopupとAltWindowFrameの競合について

Posted: 2017年10月20日(金) 00:36
by トリアコンタン
MADOの更新により、Windowをロードするように変更された件は把握していませんでした。
先述の通り、AltWindowFrameを適用するとWindow.pngは正しく表示されなくなるので、この変更の理由が不明ですね……

ところで通常のWindow.pngが使用されているSceneSoundTest等にWindow_Status.pngを
適用するにはどのように修正したら良いでしょうか?


Window_Statusなどに変えたい場合ですが、例えば用語辞典プラグインの場合は以下をAltWindowFrameに加えてください。

コード: 全て選択

     var _Scene_Glossary_Create = Scene_Glossary.prototype.create;
     Scene_Glossary.prototype.create = function() {
         _Scene_Glossary_Create.call(this);
         var _image = ImageManager.loadSystem('Window_Status');
         this._glossaryWindow._windowskin = _image;
         this._glossaryListWindow._windowskin = _image;
         this._glossaryCategoryWindow._windowskin = _image;
         this._glossaryCompleteWindow._windowskin = _image;
         this._confirmWindow._windowskin = _image;
         this._helpWindow._windowskin = _image;

         this._glossaryWindow._refreshAllParts();
         this._glossaryListWindow._refreshAllParts();
         this._glossaryCategoryWindow._refreshAllParts();
         this._glossaryCompleteWindow._refreshAllParts();
         this._confirmWindow._refreshAllParts();
         this._helpWindow._refreshAllParts();
     };


Window_Otherに変えたい場合は、単純に以下のコードをコメントアウトすればOKです。

コード: 全て選択

this.windowskin = ImageManager.loadSystem('Window');

Re: 【解決済み】MessageWindowPopupとAltWindowFrameの競合について

Posted: 2017年10月20日(金) 01:43
by にゃたま
トリアコンタン様

トリアコンタン さんが書きました:MADOの更新により、Windowをロードするように変更された件は把握していませんでした。
先述の通り、AltWindowFrameを適用するとWindow.pngは正しく表示されなくなるので、この変更の理由が不明ですね……


確かに謎ですよね…何のためのWindow_Otherなんだと問いたいw(Otherってその他って意味だよね…)

とりあえず適用の仕方がわかりました。
xxxxxxxx._windowskin = _image;
でスキンをロードしといて
xxxxxxxx._refreshAllParts();
で適用ですね!

これで疑問が全て解決しました(AltWindowFrameのWindow.pngの疑問を除いて)。
真の意味で解決です。ありがとうございました!!!