【解決済み】DreamX_RandomPrefixesSuffixes.jsとGetInformation.jsの併用方法

Dante
記事: 12
登録日時: 2022年2月16日(水) 00:44

【解決済み】DreamX_RandomPrefixesSuffixes.jsとGetInformation.jsの併用方法

投稿記事by Dante » 2023年3月14日(火) 00:50

以下、ランダムエンチャントを付与するDreamX_RandomPrefixesSuffixes.jsと入手したアイテムをポップアップで表示するGetInformation.jsの併用についてご助言いただきたいです。
・DreamX_RandomPrefixesSuffixes.js
viewtopic.php?f=23&t=7114&hilit=DreamX&sid=bf5a9ccc256ae5a963190daa84f4970e#p25928
・GetInformation.js
https://plugin.fungamemake.com/archives/2042

この2つを併用したとき、アイテムを入手すると、まず初めにエンチャントが付与された武器の表示ポップアップが表示され、そのあとエンチャント付与がされていない状態の武器の入手ポップアップが表示されます。
実際に入手できているのはエンチャント付与済みの武器のみです。

おそらく内部的に付与されてない武器を入手してその後すぐに破棄してるのかなーとか思ってプラグインを見てみたのですが、私の知識ではどこをどうすればいいのか理解できず・・・
解決方法についてご助言いただけますと幸いです。
最後に編集したユーザー Dante on 2023年3月14日(火) 23:10 [ 編集 1 回目 ]

アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: DreamX_RandomPrefixesSuffixes.jsとGetInformation.jsの併用方法

投稿記事by Plasma Dark » 2023年3月14日(火) 10:06

アイテムの入手は Game_Party.prototype.gainItem で行います。

DreamX_RandomPrefixesSuffixes.js は、配布元の記事でも触れられている通り複雑怪奇なプラグインです。
アイテムを入手する際に gainItem の処理を中断して独自に定義した関数を呼び出し、アイテムにエンチャントを付与して再度 gainItem を呼び出しています。

GetInformation.js は gainItem が呼ばれた際に、条件を満たしていればポップアップを表示します。
DreamX_RandomPrefixesSuffixes.js で gainItem が2回 (アイテム入手数+1回) 呼ばれているので、その回数分ポップアップが出てしまいます。

試してない上、複雑なプラグイン同士の組み合わせなので必ず直るとは言えませんが、対応のアプローチとして2通りの方法が考えられます。

1. DreamX_RandomPrefixesSuffixes で gainItem を複数回呼ばないようにする
gainItem の処理を中断して別の関数を呼び、更に gainItem を新たに呼び出しているのが問題です。
エンチャントを付与しつつ、退避した元の gainItem の処理を呼ぶように変更し、 GetInformation を DreamX_RandomPrefixesSuffixes より上に配置すると、エンチャントが付与された後のアイテムに対してのみポップアップを出す処理をしてくれると思います。
元々、なぜ別の関数を経由して gainItem を新たに呼び出すようにしているのか、その意図がわからないので、何か別種の問題が生じる恐れはあります。

2. GetInformation で条件を工夫して不要なポップアップを出さないようにする
DreamX.RandomPrefixSuffix.isConfiguredForPrefixSuffix 関数を利用して、エンチャントを付与すべきアイテムにはポップアップを出さないようにしてあげる方法もあります。
シンプルですが、明確にプラグイン間の依存を増やす行為なので、今後これらのプラグインに関する問題が発生した際に、その原因特定を妨げる恐れはあります。
Dante
記事: 12
登録日時: 2022年2月16日(水) 00:44

Re: DreamX_RandomPrefixesSuffixes.jsとGetInformation.jsの併用方法

投稿記事by Dante » 2023年3月14日(火) 22:30

Plasma Dark さんが書きました:アイテムの入手は Game_Party.prototype.gainItem で行います。

DreamX_RandomPrefixesSuffixes.js は、配布元の記事でも触れられている通り複雑怪奇なプラグインです。
アイテムを入手する際に gainItem の処理を中断して独自に定義した関数を呼び出し、アイテムにエンチャントを付与して再度 gainItem を呼び出しています。

GetInformation.js は gainItem が呼ばれた際に、条件を満たしていればポップアップを表示します。
DreamX_RandomPrefixesSuffixes.js で gainItem が2回 (アイテム入手数+1回) 呼ばれているので、その回数分ポップアップが出てしまいます。

試してない上、複雑なプラグイン同士の組み合わせなので必ず直るとは言えませんが、対応のアプローチとして2通りの方法が考えられます。

1. DreamX_RandomPrefixesSuffixes で gainItem を複数回呼ばないようにする
gainItem の処理を中断して別の関数を呼び、更に gainItem を新たに呼び出しているのが問題です。
エンチャントを付与しつつ、退避した元の gainItem の処理を呼ぶように変更し、 GetInformation を DreamX_RandomPrefixesSuffixes より上に配置すると、エンチャントが付与された後のアイテムに対してのみポップアップを出す処理をしてくれると思います。
元々、なぜ別の関数を経由して gainItem を新たに呼び出すようにしているのか、その意図がわからないので、何か別種の問題が生じる恐れはあります。

2. GetInformation で条件を工夫して不要なポップアップを出さないようにする
DreamX.RandomPrefixSuffix.isConfiguredForPrefixSuffix 関数を利用して、エンチャントを付与すべきアイテムにはポップアップを出さないようにしてあげる方法もあります。
シンプルですが、明確にプラグイン間の依存を増やす行為なので、今後これらのプラグインに関する問題が発生した際に、その原因特定を妨げる恐れはあります。


Plasma Dark様
貴重なご助言いただきましてありがとうございます。
アプローチ方法について理解できました。
2のアプローチを参考にGetInformationのGame_Party.prototype.gainItem内で対象がエンチャントされたものかどうかを判断し、ポップアップを出すか判断する処理を追加することができました。
このアプローチによるリスクについては、また別途問題が起きた時に考えます。。。
本当に助かりました、ありがとうございました。

“MV:質問” へ戻る