ページ 11

【解決済み】ItemsortとYEPItemcoerの競合について

Posted: 2025年10月13日(月) 19:11
by miyomi
こんにちは
現在、自分のゲームでは以下のプラグインをお借りしております

アイテムソートプラグイン
https://plugin.fungamemake.com/archives/2086
アイテムコアプラグイン
https://plugin.fungamemake.com/archives/10569

こちらのアイテムソートプラグインには、新規入手したアイテムにNEWの文字を付ける機能があるのですが、
アイテムコアプラグインを入れた際に、武器や防具にこれがつかなくなってしまいます
アイテムコアプラグインはベースアイテムとは違う独立IDを持つため、アイテムソートプラグインのエンコード処理が正しく動いていないのだと思うのですが……対応の仕方が分かりません。

どなたか、解決方法が分かる方はいらっしゃいますでしょうか。
宜しければ、助言などを頂けますと幸いです。

Re: ItemsortとYEPItemcoerの競合について

Posted: 2025年10月14日(火) 20:39
by ecf5DTTzl6h6lJj02
こんにちは。
miyomi さんが書きました: 2025年10月13日(月) 19:11 こんにちは
現在、自分のゲームでは以下のプラグインをお借りしております

アイテムソートプラグイン
https://plugin.fungamemake.com/archives/2086
アイテムコアプラグイン
https://plugin.fungamemake.com/archives/10569

こちらのアイテムソートプラグインには、新規入手したアイテムにNEWの文字を付ける機能があるのですが、
アイテムコアプラグインを入れた際に、武器や防具にこれがつかなくなってしまいます
アイテムコアプラグインはベースアイテムとは違う独立IDを持つため、アイテムソートプラグインのエンコード処理が正しく動いていないのだと思うのですが……対応の仕方が分かりません。

どなたか、解決方法が分かる方はいらっしゃいますでしょうか。
宜しければ、助言などを頂けますと幸いです。
アイテムソートプラグイン(ItemSort.js) をバックアップしてから、
JavaScript を編集できるソフトウェアでアイテムソートプラグインのファイルを開き、
以下の編集を行ってみてください。
  • 256行目あたりに あたりから、gainItem というメソッドの定義がされている部分があるので、
    その部分を以下のように変更する。

    コード: 全て選択

        var __GParty_gainItem = Game_Party.prototype.gainItem;
        Game_Party.prototype.gainItem = function(item, amount, includeEquip) {
            if (Yanfly.Item && Yanfly.Item.version === 1.30 && DataManager.isIndependent(item)) {
                var itemArray = this.gainIndependentItem(item, amount, includeEquip);
                if (!$gameTemp._notNewerItem && item && amount > 0) {
                    if (DataManager.isItem(item) && item. itypeId > 2)  return;
                    itemArray.forEach(item => {
                        $gameSystem.pushNewerItems(item);
                    });
                }
            } else {
                __GParty_gainItem.call(this, item, amount, includeEquip);
                if (!$gameTemp._notNewerItem && item && amount > 0){
                    if (DataManager.isItem(item) && item.itypeId > 2) return;
                    $gameSystem.pushNewerItems(item);
                }
            }
        };
    
    (元のプラグインの書き方に合わせて、本当はよろしくありませんが var を使っています)
恐らく、これで、New という文字の表示はされるようになるかと思います。

ただ、YEP_ItemCore の方で、独立アイテムの並び替えをする際に、
元となっているアイテムのアイテムIDでソートするようになっている仕様の影響か、
アイテムの表示にある 1/100 や 2/100 などとなっている部分と、取得順として記録されている情報とが一致しません。
直そうとすると、ちょっと面倒なことになりそうなので、
これに関してはノータッチにさせてください。

ご確認お願いします。

Re: ItemsortとYEPItemcoerの競合について

Posted: 2025年10月16日(木) 13:26
by miyomi
ecf5DTTzl6h6lJj02さま、ありがとうございます。
大変お世話になっております。

頂いたコードを試してみたところ、確かに武器や防具にもNEWの文字がつくようになったのですが……。

DreamX_RandomPrefixesSuffixes
https://wikiwiki.jp/doublingc/DreamX/Ra ... %20Affixes
(解説 プラグイン自体は本稿に直接添付してあります)

こちらのプラグインを使用したところ、
武器に個別の接頭辞を付ける機能がうまく動作しなくなってしまいました。

というかそもそも、itemcoerプラグインの採用理由自体が、こちらのプラグインを使いたかったというのが主な理由だったのです……なので最初からこちらのプラグインを使いたいということを記載しておくべきでした……。
本当に申し訳ございません。

1/100 や 2/100という数字自体は現状、UIとして扱うつもりはないので、そちらはこのままでも構わないのですが、RandomPrefixeプラグインのほうは、可能であれば残したいのです。
なんとか、機能を残したままにする方法はありますでしょうか。

二度手間になってしまい、大変申し訳ないのですが、ご教授いただけましたら幸いに思います。
何卒、よろしくお願いいたします。

Re: ItemsortとYEPItemcoerの競合について

Posted: 2025年10月16日(木) 14:42
by ecf5DTTzl6h6lJj02
こんにちは。
miyomi さんが書きました: 2025年10月16日(木) 13:26 ecf5DTTzl6h6lJj02さま、ありがとうございます。
大変お世話になっております。

頂いたコードを試してみたところ、確かに武器や防具にもNEWの文字がつくようになったのですが……。

DreamX_RandomPrefixesSuffixes
https://wikiwiki.jp/doublingc/DreamX/Ra ... %20Affixes
(解説 プラグイン自体は本稿に直接添付してあります)

こちらのプラグインを使用したところ、
武器に個別の接頭辞を付ける機能がうまく動作しなくなってしまいました。

というかそもそも、itemcoerプラグインの採用理由自体が、こちらのプラグインを使いたかったというのが主な理由だったのです……なので最初からこちらのプラグインを使いたいということを記載しておくべきでした……。
本当に申し訳ございません。

1/100 や 2/100という数字自体は現状、UIとして扱うつもりはないので、そちらはこのままでも構わないのですが、RandomPrefixeプラグインのほうは、可能であれば残したいのです。
なんとか、機能を残したままにする方法はありますでしょうか。

二度手間になってしまい、大変申し訳ないのですが、ご教授いただけましたら幸いに思います。
何卒、よろしくお願いいたします。
修正してもらったコード部分をを以下に変更してみてください。

コード: 全て選択

    const __GParty_gainItem = Game_Party.prototype.gainItem;
    Game_Party.prototype.gainItem = function(item, amount, includeEquip) {
        if (Yanfly.Item && Yanfly.Item.version === 1.30 && DataManager.isIndependent(item)) {
            let itemArray = [];
            if (Imported && Imported.DreamX_RandomPrefixSuffix && amount > 0) {
                for(let i=0; i<amount; i++) {
                    itemArray = itemArray.concat(this.gainIndependentItem(DreamX.RandomPrefixSuffix.makeItem(item), 1, includeEquip));
                }
            } else {
                itemArray = this.gainIndependentItem(item, amount, includeEquip);
            }
            if (!$gameTemp._notNewerItem && item && amount > 0) {
                if (DataManager.isItem(item) && item. itypeId > 2)  return;
                itemArray.forEach(item => {
                    console.log(item.name);
                    $gameSystem.pushNewerItems(item);
                });
            }
        } else {
            __GParty_gainItem.call(this, item, amount, includeEquip);
            if (!$gameTemp._notNewerItem && item && amount > 0){
                if (DataManager.isItem(item) && item.itypeId > 2) return;
                console.log(item.name);
                $gameSystem.pushNewerItems(item);
            }
        }
    };
きちんと、動作チェックできていないので、修正できていなかったり、変な動きをする場合は、ごめんなさい。

Re: ItemsortとYEPItemcoerの競合について

Posted: 2025年10月19日(日) 17:00
by miyomi
ecf5DTTzl6h6lJj02 さま! 返信が遅くなり申し訳ございません!
頂いたコードを試したところ、うまくいきました!
毎日スレッド上の返信の数は確認していたのですが、今回のお返事がとても早かったこともあって、返信数がずっと同じものと勘違いしてしまいました……ごめんなさい!

二度目にもかかわらず迅速なご返答、感謝いたします!!
これで無事制作に打ち込めます!

重ね重ねにはなりますが、本当にありがとうございました!