FTKR_ExMessageWindow2のエラーについて

アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

FTKR_ExMessageWindow2のエラーについて

投稿記事by にゃたま » 2019年3月02日(土) 22:20

フトコロ様のFTKR_ExMessageWindow2.jsとtomoaky様のTMEventItemEx.jsを併用したときに
以下のエラーが表示されることがわかりました。
恐らく競合ではないかと思うのですが双方とも使いたいプラグインですので
可能でしたら対応いただけないでしょうか?是非ともよろしくお願いいたします。

スクリーンショット 2019-03-02 22.12.37.png


追記
こちら当初はKeyItemNumberとChangeSelectItemWindowで併用して対応していたのですが、
どうしてもヘルプ画面表示の機能が欲しかったので結局TMEventItemExを使うことになりました。
お手数おかけしますがよろしくお願いいたします。

アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: FTKR_ExMessageWindow2のエラーについて

投稿記事by にゃたま » 2019年3月07日(木) 00:13

こちらの件で独自に調査してみましたが、TMEventItemEx.jsとの併用時のエラーについて、
以下のようにエラーの該当箇所(1617行)をコメント化したところエラーがなくなりました。

コード: 全て選択

this._messageExWindows[windowId].subWindows().forEach(function(window) {
        //this.addWindow(window);
    }, this);

ここの処理(this.addWindow(window);)では何をしているのでしょうか?

この上行(1615行目)にthis.addWindow(this._messageExWindows[windowId]);でウィンドウを
追加しているみたいですが、
更にその下のエラー箇所(1617行)でaddWindowをしている意味がよくわかりません。
addWindowが2重になっているようにみえます。
果たしてこの行は必要であるのか。削除してしまって良いものなのか。
ご存知の方居ましたら助言いただけますと幸いです。
スクリプトが現在の私には難解すぎたようです…orz

尚、プラグインは下記よりダウンロードできます。
https://github.com/futokoro/RPGMaker/bl ... dow2.ja.md
https://hikimoki.sakura.ne.jp/plugin/TMEventItemEx.js


3/10追記
やっと原因がわかってきましたが、TMEventItemExを有効にすると
windowに本来入ってくるはずのないobjectでないundefinedが入ってくることがわかりました。
どうもこのundefinedのウィンドウが悪さをしているものだと思い、
これをカットすれば競合が発生しないのではないかという結論になり
if(window !== undefined) this.addWindow(window);
のコードに変更してみました。この結果エラーを回避することができました。
この考えは合っているでしょうか?
アバター
フトコロ
記事: 1029
登録日時: 2017年2月06日(月) 21:32

Re: FTKR_ExMessageWindow2のエラーについて

投稿記事by フトコロ » 2019年3月16日(土) 23:10

こんにちは。

にゃたま さんが書きました:以下のようにエラーの該当箇所(1617行)をコメント化したところエラーがなくなりました。
this._messageExWindows[windowId].subWindows().forEach(function(window) {
        //this.addWindow(window);
    }, this);
ここの処理(this.addWindow(window);)では何をしているのでしょうか?

subWindows()というのは、メッセージウィンドウに紐づく以下のウィンドウのことです。
 選択肢ウィンドウ、Goldウィンドウ、アイテム選択ウィンドウ、数字選択ウィンドウ
 ※YEP_MessageCoreと併用していると、名前ウィンドウも

それを forEach文を使って、それぞれのウィンドウデータを addWindow()で
メッセージウィンドウのデータに紐づけているのです。

上記の選択肢ウィンドウなどを使わないのであれば、コメントアウトしても問題ないですが
そうでなければやめたほうが良いですね。

にゃたま さんが書きました:この上行(1615行目)にthis.addWindow(this._messageExWindows[windowId]);でウィンドウを
追加しているみたいですが

これは、大元のメッセージウィンドウのデータをマップレイヤーデータに紐づけている処理です。
ですので、subWindows()のaddWindow()とは別の処理です。

にゃたま さんが書きました:やっと原因がわかってきましたが、TMEventItemExを有効にすると
windowに本来入ってくるはずのないobjectでないundefinedが入ってくることがわかりました。

記載のあったリンクからTMEventItemExの中身を拝見しましたが
このプラグインはアイテム選択ウィンドウを表示するときにヘルプウィンドウを紐づけて
表示させるというプラグインのようです。

このTMEventItemExプラグインの中で、subWindows()にヘルプウィンドウが追加されていますが
この処理が、FTKR_ExMessageWidnows2で正しく反映できていないため
ヘルプウィンドウのデータが undefined になっていると推測します。

エラー回避として記載したコードで
恐らく、拡張ウィンドウでTMEventItemExの機能を使わなければ問題ないと思います。
---------------------------------------------------------------------------------------------------
プラグイン置き場(GitHub)
https://github.com/futokoro/RPGMaker/blob/master/README.md

検討中の内容は上記リンク先の「対応するかもしれないプラグインのメモ」を参照してください。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: FTKR_ExMessageWindow2のエラーについて

投稿記事by にゃたま » 2019年3月20日(水) 22:21

フトコロ様

お世話になっております。お返事が遅れ申し訳ございません。
わざわざプラグインの挙動的なことを事細かに教えていただいて心苦しく思うと同時に有り難く思います。


>拡張ウィンドウでTMEventItemExの機能を使わなければ問題ないと思います。
とりあえずは拡張ウィンドウでTMEventItemExの機能を使わない方針でやってみます。
どうしても機能が必要になった場合は再度ご連絡差し上げます。
今のところはとりあえず大丈夫そうです。


まだまだ勉強不足な点ばかりなので頼ってしまうこともあると思うのですが
その際はできたら見捨てないで対応していただけたら嬉しいです…orz

“MV:質問” へ戻る