ページ 11

【解決済】エラーメッセージについて

Posted: 2025年3月07日(金) 19:36
by ちゃみ
お世話になってます。
先日、スキル画面のウインドウを自由にカスタマイズ出来るという
NUUN様の『SkillWindowEx.md』を導入し
プラグインパラメータを設定した後、
テストとしてデフォルトで用意されている回復スキル『ヒールⅠ』を
アクターに使用したところエラーが起こってしまいました。

そのときのスタックトレースです。

TypeError: this._actorWindow.isSelectActor is not a function
at Scene_Skill.onActorOk (NUUN_SkillWindowEx.js:2067)
at Window_MenuActor.Window_Selectable.callHandler (rmmz_windows.js:1042)
at Window_MenuActor.Window_Selectable.callOkHandler (rmmz_windows.js:1283)
at Window_MenuActor.processOk (rmmz_windows.js:2069)
at Window_MenuActor.Window_Selectable.onTouchOk (rmmz_windows.js:1213)
at Window_MenuActor.Window_Selectable.processTouch (rmmz_windows.js:1177)
at Window_MenuActor.Window_Selectable.update (rmmz_windows.js:1121)
at Window_MenuActor.Window_Selectable.update (FesCursor.js:578)
at WindowLayer.update (rmmz_core.js:4287)
at Scene_Skill.Scene_Base.updateChildren (rmmz_scenes.js:129)

まったくの無知であるため、このメッセージが何を示しているのかわかりません。
これは一体どういったことが書かれていて、解決策としては
どういったものが望ましいのでしょうか?

この『SkillWindowEx.md』には同じくNUUN様の
必須プラグイン『Base.md』と『NUUN_MenuParamListBase.md』が導入条件になっていますが、
どちらも導入してあります。

また、競合プラグインの確認をするため他のプラグインはオフにしましたが
発生してしまいました。

『SkillWindowEx.md』https://github.com/nuun888/MZ/blob/mast ... indowEx.md
必要プラグイン
『Base.md』https://github.com/nuun888/MZ/blob/mast ... ME/Base.md
『NUUN_MenuParamListBase.md』https://github.com/nuun888/MZ/blob/mast ... istBase.md

Re: エラーメッセージについて

Posted: 2025年3月07日(金) 22:26
by ecf5DTTzl6h6lJj02
こんにちは。
ちゃみ さんが書きました:お世話になってます。
先日、スキル画面のウインドウを自由にカスタマイズ出来るという
NUUN様の『SkillWindowEx.md』を導入し
プラグインパラメータを設定した後、
テストとしてデフォルトで用意されている回復スキル『ヒールⅠ』を
アクターに使用したところエラーが起こってしまいました。

そのときのスタックトレースです。

TypeError: this._actorWindow.isSelectActor is not a function
at Scene_Skill.onActorOk (NUUN_SkillWindowEx.js:2067)
at Window_MenuActor.Window_Selectable.callHandler (rmmz_windows.js:1042)
at Window_MenuActor.Window_Selectable.callOkHandler (rmmz_windows.js:1283)
at Window_MenuActor.processOk (rmmz_windows.js:2069)
at Window_MenuActor.Window_Selectable.onTouchOk (rmmz_windows.js:1213)
at Window_MenuActor.Window_Selectable.processTouch (rmmz_windows.js:1177)
at Window_MenuActor.Window_Selectable.update (rmmz_windows.js:1121)
at Window_MenuActor.Window_Selectable.update (FesCursor.js:578)
at WindowLayer.update (rmmz_core.js:4287)
at Scene_Skill.Scene_Base.updateChildren (rmmz_scenes.js:129)

まったくの無知であるため、このメッセージが何を示しているのかわかりません。
これは一体どういったことが書かれていて、解決策としては
どういったものが望ましいのでしょうか?

この『SkillWindowEx.md』には同じくNUUN様の
必須プラグイン『Base.md』と『NUUN_MenuParamListBase.md』が導入条件になっていますが、
どちらも導入してあります。

また、競合プラグインの確認をするため他のプラグインはオフにしましたが
発生してしまいました。

『SkillWindowEx.md』https://github.com/nuun888/MZ/blob/mast ... indowEx.md
必要プラグイン
『Base.md』https://github.com/nuun888/MZ/blob/mast ... ME/Base.md
『NUUN_MenuParamListBase.md』https://github.com/nuun888/MZ/blob/mast ... istBase.md
エラーの内容としては、
Scene_Skill._actorWindow に isSelectActor というメソッド(関数)が存在していないので、呼び出せない
というものです。

原因としては、
プラグインパラメータの『アクターウィンド設定』の中にある、『ステータス項目設定』という項目を
設定して、ステータスの表示内容を変更したかどうかで、
スキル画面に表示するアクターウィンドウが変わるのですが、
プラグイン側が、『ステータス項目設定』を設定していることを前提に、すべての処理を行ってしまっているため、
『ステータス項目設定』を設定していない場合には存在しないメソッド(関数)を呼び出そうとして、
エラーになっているようです。

NUUN 様に連絡をして、きちんと直してもらった方がいいですが、
(私の方では連絡手段がないので、ご自身でお願いします)
NUUN 様が現在、プラグインの更新、サポートを一時停止されていますので、
とりあえずの応急処置の方法を記しておきます。

SkillWindowEx.js のバックアップを取った後で、
Java Script を編集できるソフトで開き、以下の改変を行ってください。
  1. 1890 行目あたりから始まっている Scene_Skill.prototype.start というメソッドを、
    以下に変更する。

    コード: 全て選択

        Scene_Skill.prototype.start = function() {
            _Scene_Skill_start.call(this);
            if (this._actorWindow.constructor === Window_SkillMenuActor && params.ShowActorWindow) {
                this._skillTypeWindow.deselect();
                this._skillTypeWindow.deactivate();
                this._actorWindow.forceSelect(0);
                this._actorWindow.activate();
            }
        };
    
  2. 2027 行目あたりから始まっている Scene_Skill.prototype.hideActorWindow というメソッドを、
    以下に変更する。

    コード: 全て選択

        Scene_Skill.prototype.hideActorWindow = function() {
            if (this._actorWindow.constructor === Window_SkillMenuActor && params.ShowActorWindow) {
                this._actorWindow.deselect();
                this._actorWindow.deactivate();
                if (this._skillInfoWindow && !this._actorWindow.active) {
                    this._skillInfoWindow.show();
                }
            } else {
                _Scene_Skill_hideActorWindow.apply(this, arguments);
                if (this._skillInfoWindow && !this._actorWindow.visible) {
                    this._skillInfoWindow.show();
                }
            }
        };
    
  3. 2043 行目あたりから始まっている Scene_Skill.prototype.update というメソッドを、
    以下に変更する。

    コード: 全て選択

        Scene_Skill.prototype.update = function() {
            _Scene_Skill_update.call(this);////
            if (this._actorWindow.constructor === Window_SkillMenuActor 
                && params.ShowActorWindow && this._actorWindow.isSelectActor()
                && this.actor() !== $gameParty.menuActor()) {
                this.updateActor();
                this.refreshActor();
                this._skillTypeWindow.deselect();
    
            } else if(this.actor() !== $gameParty.menuActor()) {
                this.updateActor();
                this.refreshActor();
            }
        };
    
  4. 2098 行目あたりから始まっている Scene_Skill.prototype.popScene というメソッドを、
    以下に変更する。

    コード: 全て選択

        Scene_Skill.prototype.popScene = function() {
            if (this._actorWindow.constructor === Window_SkillMenuActor && params.ShowActorWindow) {
                this._skillTypeWindow.deselect();
                this._skillTypeWindow.deactivate();
                this.showActorWindow();
                this._actorWindow.selectActor();
                this._actorWindow.forceSelect($gameParty.members().indexOf(this.actor()));
            } else {
                _Scene_Skill_popScene.apply(this, arguments);////
            }
        };
    
  5. 2111 行目あたりから始まっている Scene_Skill.prototype.onActorCancel というメソッドを、
    以下に変更する。

    コード: 全て選択

        Scene_Skill.prototype.onActorCancel = function() {
            if (this._actorWindow.constructor === Window_SkillMenuActor && params.ShowActorWindow && this._actorWindow.isSelectActor()) {
                _Scene_Skill_popScene.apply(this, arguments);////
            } else {
                _Scene_Skill_onActorCancel.apply(this, arguments);/////
            }
        };
    
以上で、エラーが発生せずに動作するようになるのではないかなと思います。

飽くまで、応急処置です。
あとで作者様に連絡を取って、きちんと直してもらってください。

ご確認ください。

Re: エラーメッセージについて

Posted: 2025年3月08日(土) 00:29
by ちゃみ
ecf5DTTzl6h6lJj02様
返信ありがとうございます。
わかりやすく教えて頂き、またコードの提供ありがとうございました。

ecf5DTTzl6h6lJj02様からいただいたコードをメモ帳を使い変更しました。
変更後、同様のテストをしてみたのですがエラーが発生してしまいました。
見比べると以前のものとは少し違いました。
以下が今回出たスタックトレースです。

TypeError: this._actorWindow.isSelectActor is not a function
at Scene_Skill.onActorOk (NUUN_SkillWindowEx.js:2073)
at Window_MenuActor.Window_Selectable.callHandler (rmmz_windows.js:1042)
at Window_MenuActor.Window_Selectable.callOkHandler (rmmz_windows.js:1283)
at Window_MenuActor.processOk (rmmz_windows.js:2069)
at Window_MenuActor.Window_Selectable.processHandling (rmmz_windows.js:1155)
at Window_MenuActor.Window_Selectable.update (rmmz_windows.js:1120)
at Window_MenuActor.Window_Selectable.update (FesCursor.js:578)
at WindowLayer.update (rmmz_core.js:4287)
at Scene_Skill.Scene_Base.updateChildren (rmmz_scenes.js:129)
at Scene_Skill.Scene_Base.update (rmmz_scenes.js:52)

またecf5DTTzl6h6lJj02様から今回の原因を聞きまして
自身のプラグインパラメータの設定に心当たりがありました。

このプラグインを導入する以前に同じくNUUN様の『NUUN_MenuScreenEX.js』というプラグインを導入しました。
これはメニュー画面レイアウトを変更できるもので、独自のメニュー画面を作らせてもらいました。

そして今回の『SkillWindowEx.md』のプラグインパラメータ内で【アクターウインドウ設定】をメニュー画面と同じにできるとのことで【ステータス項目設定】は入力する必要がないと思い、一切入力しなかったのです。

この【ステータス項目設定】を改めて入力したところエラーがでることはなくなりました。

しかしテストとして回復スキルのヒールⅠを使ったところ挙動がおかしかったです。
具体的にいうと
1.スキル選択
2.ヒールⅠ選択
3.回復対象アクター選択

ここまではよかったのですが、このあとアクター選択しても回復はせずMPも減りませんでした。
そしてメニュー画面に戻らずにそのまま立て続けに上記の1から実行すると正常にスキルが発動しました。
要するに一度目は実行しても強制的にキャンセルされてしまうような状態でした。

もう少しプラグインパラメータを見直してみて、折を見てNUUN様にご報告させていただこうと思います。

ecf5DTTzl6h6lJj02様 お時間をいただきましてありがとうございました。

『NUUN_MenuScreenEX.js』https://github.com/nuun888/MZ/blob/mast ... tatusEX.md

Re: エラーメッセージについて

Posted: 2025年3月08日(土) 02:48
by ecf5DTTzl6h6lJj02
こんにちは。
ちゃみ さんが書きました: ecf5DTTzl6h6lJj02様からいただいたコードをメモ帳を使い変更しました。
変更後、同様のテストをしてみたのですがエラーが発生してしまいました。
見比べると以前のものとは少し違いました。
以下が今回出たスタックトレースです。

TypeError: this._actorWindow.isSelectActor is not a function
at Scene_Skill.onActorOk (NUUN_SkillWindowEx.js:2073)
at Window_MenuActor.Window_Selectable.callHandler (rmmz_windows.js:1042)
at Window_MenuActor.Window_Selectable.callOkHandler (rmmz_windows.js:1283)
at Window_MenuActor.processOk (rmmz_windows.js:2069)
at Window_MenuActor.Window_Selectable.processHandling (rmmz_windows.js:1155)
at Window_MenuActor.Window_Selectable.update (rmmz_windows.js:1120)
at Window_MenuActor.Window_Selectable.update (FesCursor.js:578)
at WindowLayer.update (rmmz_core.js:4287)
at Scene_Skill.Scene_Base.updateChildren (rmmz_scenes.js:129)
at Scene_Skill.Scene_Base.update (rmmz_scenes.js:52)
ちゃみ さんが書きました: テストとして回復スキルのヒールⅠを使ったところ挙動がおかしかったです。
具体的にいうと
1.スキル選択
2.ヒールⅠ選択
3.回復対象アクター選択

ここまではよかったのですが、このあとアクター選択しても回復はせずMPも減りませんでした。
そしてメニュー画面に戻らずにそのまま立て続けに上記の1から実行すると正常にスキルが発動しました。
要するに一度目は実行しても強制的にキャンセルされてしまうような状態でした。
Scene_Skill.prototype.onActorOk というメソッドも変更しなければいけないのに、
前回の記事で、抜けてしまっていました。
また、Scene_Skill.prototype.update の変更内容も間違っていました。
大変失礼いたしました。

追加で、以下の編集を行ってください。
  1. 前回修正した Scene_Skill.prototype.update というメソッドを、
    以下に変更する。

    コード: 全て選択

        const _Scene_Skill_update = Scene_Skill.prototype.update;
        Scene_Skill.prototype.update = function() {
            _Scene_Skill_update.call(this);////
            if (this._actorWindow.constructor === Window_SkillMenuActor 
                && params.ShowActorWindow && this._actorWindow.isSelectActor()
                && this.actor() !== $gameParty.menuActor()) {
                this.updateActor();
                this.refreshActor();
                this._skillTypeWindow.deselect();
    
            }
        };
    
  2. 2072 行目あたりから始まっている Scene_Skill.prototype.onActorOk というメソッドを、
    以下に変更する。

    コード: 全て選択

        Scene_Skill.prototype.onActorOk = function() {
            if (this._actorWindow.constructor === Window_SkillMenuActor && this._actorWindow.isSelectActor()) {
                if (this.canUse()) {
                    this.useItem();
                    this.refreshActor();
                    this.hideActorWindow();
                    this._actorWindow.deselect();
                    this._actorWindow.deactivate();
                    this._skillTypeWindow.activate();
                    this._skillTypeWindow.selectLast();
                    this._itemWindow.deselect();
                    this._actorWindow.playOkSound();
                    this._actorWindow.selectSkill();
                } else {
                    SoundManager.playBuzzer();
                }
            } else {
                _Scene_Skill_onActorOk.apply(this, arguments);
            }
            if (this._skillInfoWindow && !this._actorWindow.active) {
                this._skillInfoWindow.show();
            }
    
恐らくこれで、本来のプラグインの想定に近い挙動になるのではないかと思います。
(ステータス項目設定を消してもきちんと動くはず)

ご確認ください。

Re: エラーメッセージについて

Posted: 2025年3月08日(土) 11:24
by ちゃみ
ecf5DTTzl6h6lJj02様
こんにちは。
重ね重ねありがとうございます。

いただいたコードを改めて変更しました。

テストプレイをしようとしたところエラーが発生してしまいました。

エラーの内容を添付いたします。

こちらもコード変更に不備がなかったか今一度確認します。

Re: エラーメッセージについて

Posted: 2025年3月08日(土) 13:13
by ecf5DTTzl6h6lJj02
こんにちは。
ちゃみ さんが書きました:ecf5DTTzl6h6lJj02様
こんにちは。
重ね重ねありがとうございます。

いただいたコードを改めて変更しました。

テストプレイをしようとしたところエラーが発生してしまいました。

エラーの内容を添付いたします。

こちらもコード変更に不備がなかったか今一度確認します。
エラーの内容としては、
2489 行目に余計な ) が あるというものですが、
記載したコードを確認する限り、タイプミスしてそうな部分などは発見できませんでした。
編集する部分が多かったので、
編集中に、どこかおかしくなってしまったものではないかと思います。

こちらで編集をしたものをアップしますので、
これで、動作を確認してみてください。

ダウンロードされたので削除しました。

しつこく書きますが、
応急処置として書いた、適当なコードなので、
作者様に連絡して、きちんと直してもらってください。

ご確認お願いします。

Re: エラーメッセージについて

Posted: 2025年3月08日(土) 13:37
by ちゃみ
ecf5DTTzl6h6lJj02様
こんにちは。

アップしていただいたプラグインを導入しテストプレイしたところ
異常なく動作を確認できました。

先ほどは私の方で編集ミスがあったようです。
大変失礼いたしました。

作者様には連絡しておこうと思います。

応急処置とはいえ何度も時間を割いて対応していただき感謝しております。
ありがとうございました。

Re: 【解決済】エラーメッセージについて

Posted: 2025年3月15日(土) 15:37
by ちゃみ
こんにちは。

NUUN様の『SkillWindowEx.md』https://github.com/nuun888/MZ/blob/mast ... indowEx.mdについて
本日、作者様から修正の報告をいただき私自身も修正済のプラグインを改めてダウンロードさせていただきましたので解決済とさせていただきます。

ecf5DTTzl6h6lJj02様
改めて、助言をくださりありがとうございました。