トリアコンタンさんの効果範囲拡張プラグインについて

アバター
シンゴビッチ
記事: 38
登録日時: 2020年5月25日(月) 03:12
連絡を取る:

トリアコンタンさんの効果範囲拡張プラグインについて

投稿記事by シンゴビッチ » 2021年5月16日(日) 22:04

お疲れ様です。

標記の件、トリアコンタン様の効果範囲拡張プラグインを使ってますが、実際にスキル欄にMETAタグを入れると止まってしまうので回避法を考えたいです。

今のところ原因は、当方スキル発動メッセージに”targetsの名前”を入れられるようにコアスクリプトを改変しているため、効果範囲拡張プラグインのmetaタグが入るとtargetsが書き換えられてエラーが発生しているのではと推察しています。

コード: 全て選択

 var _Game_Action_repeatTargets = Game_Action.prototype.repeatTargets;
    Game_Action.prototype.repeatTargets = function(targets) {
        if (this.isScopeExtendInfo(['敵味方', 'EnemiesAndAllies'])) {
            if (!this.subject().isConfused() || this._forcing) {
                targets = this.targetsForAll(targets);
                //ここでtargetsが書き換えられる。
            }
        }
        if (this.isScopeExtendInfo(['使用者追加', 'AdditionUser'])) {
            if (!targets.contains(this.subject())) {
                targets.push(this.subject());
            }
        }
        if (this.isScopeExtendInfo(['使用者除外', 'RemoveUser', '使用者削除'])) {
            targets = targets.filter(function(target) {
                return target !== this.subject();
            }.bind(this));
        }
        if (this.isScopeExtendInfo(['重複除外', 'RemoveDuplication', '重複削除'])) {
            targets = targets.filter(function(target, i) {
                return targets.indexOf(target) === i;
            }.bind(this));
        }
        if (this.isScopeExtendInfo(['ランダム', 'Random'])) {
            var number = this.getScopeExtendInfo(['ランダム', 'Random']);
            var targetsForRandom = [];
            while (targetsForRandom.length < number && targets.length > targetsForRandom.length) {
                var index = Math.floor(Math.random() * targets.length);
                if (!targetsForRandom.contains(targets[index])) {
                    targetsForRandom.push(targets[index]);
                }
            }
            targets = targetsForRandom;
        }
        if (this.isScopeExtendInfo(['グループ', 'Group']) && targets[0]) {
            var targetsForGroup, prevTarget = targets[0];
            if (prevTarget.isActor()) {
                targetsForGroup = prevTarget.friendsUnit().aliveMembers();
            } else {
                targetsForGroup = prevTarget.friendsUnit().aliveMembers().filter(function(member) {
                    //return prevTarget.enemyId() === member.enemyId();
                    return prevTarget.originalName() === member.originalName();
                });
            }
            targets = targetsForGroup;
        }
        arguments[0] = targets;
        return _Game_Action_repeatTargets.apply(this, arguments);
    };


コード: 全て選択

   if (DataManager.isSkill(item)) {
            if (!$gameSwitches.value(504) || $gameSwitches.value(505)){
            if ($gameSwitches.value(504) &&  $gameSwitches.value(505)){
                this.push('clear')
            }
            var target=  [targets];
            if (item.message1) {
                if (item.scope === 1 || item.scope=== 7 || item.scope=== 11) { 
                this.push('addText', subject.name() + item.message1.format(item.name, BattleManager._targets[0].name()));
                //ここでtargetsを使っている。
                } else {
                this.push('addText', subject.name() + item.message1.format(item.name));
                }
            }
            if (item.message2) {
                if (item.scope === 1 || item.scope=== 7 || item.scope=== 11) {
                    this.push('addText', item.message2.format(item.name, BattleManager._targets[0].name(),subject.name()));
                   } else {
                   this.push('addText',  item.message2.format(item.name,  target.name,subject.name()));
                   }
            }


市井で似たようなプラグインも見たことがありますが私は他のプラグインと干渉したので自作しましたが効果範囲拡張のタグを使ったらうまくいかなくなりました。ヒントだけでも良いのでよろしくお願いします。

ゲーム作成用Twitterアカウント作りました https://twitter.com/RPGVV1
アバター
Plasma Dark
記事: 668
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: トリアコンタンさんの効果範囲拡張プラグインについて

投稿記事by Plasma Dark » 2021年5月17日(月) 02:27

問題解決の補助となる情報は整理されていますか?

トリアコンタン様の効果範囲拡張プラグインを使ってますが、


対象プラグインのURLを貼ってください。
回答者にググる手間を与えるべきではありません。

当方スキル発動メッセージに”targetsの名前”を入れられるようにコアスクリプトを改変しているため


コアスクリプトは直ちに元に戻しましょう。
プラグイン化せずに改変する必要のあるコードは存在しないはずです。

エラーについて、その改変が原因であろうとは思いますが、改変内容が伝わる書き込みになっていません。

提示されているそれぞれのコード片の意味の説明が不足しています。
前者はScopeExtend.jsのコードの一部、後者は改変されたであろうWindow_BattleLog.prototype.displayActionの中身であるものと思われますが、この書き込みからそれを特定してくれというのは乱暴が過ぎます。

そして、肝心のエラー内容が欠片も提示されていません。
エラーメッセージとstacktraceから原因を探れば何かわかりそうなものですが、見方はわかりますか?
アバター
トリアコンタン
記事: 2311
登録日時: 2015年11月10日(火) 21:13
お住まい: きのこ王国
連絡を取る:

Re: トリアコンタンさんの効果範囲拡張プラグインについて

投稿記事by トリアコンタン » 2021年5月19日(水) 23:24

こんにちは!
プラグインのご利用ありがとうございます。

ひとまず、 Plasma Dark さんがご提示のとおり「Window_BattleLog.prototype.displayAction」と仮定して、コードを置き換えたところ、以下のエラーになりました。

コード: 全て選択

ReferenceError: targets is not defined


このエラーは以下のコードで発生しています。

コード: 全て選択

 var target=  [targets];


直接の原因は、変数「targets」がWindow_BattleLog.prototype.displayActionの引数でもなく、ご提示のコード内にも宣言がないことです。
エラーは、ScopeExtend.jsとは関係なく発生しているため、現状ではこれ以上の調査は難しいです……

「targets」がご提示のコード外で正しく宣言されている場合は、そこも含めたdisplayActionメソッドの全体の定義を改めてご提示いただければ、引き続き調査ができると思います。
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30

[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
アバター
シンゴビッチ
記事: 38
登録日時: 2020年5月25日(月) 03:12
連絡を取る:

Re: トリアコンタンさんの効果範囲拡張プラグインについて

投稿記事by シンゴビッチ » 2021年5月20日(木) 09:28

トリアコンタンさんありがとうございます!
ここまで確認いただけただけでも感謝します!
現状scopeextendで対応できる問題では無い事がわかっただけでも有り難いです!

そうなれば、これ以上手を煩わせるのもございます失礼なのであとはヒントを元に自力で対応します!

ありがとうございます。
ゲーム作成用Twitterアカウント作りました https://twitter.com/RPGVV1

“MV:質問” へ戻る