ページ 12

【解決】MP消費アイテム

Posted: 2016年8月21日(日) 08:57
by ネコタ
ツクマテのみなさん、いつもお世話になっております。

MP消費を伴うアイテムを作りたいのですが、そのようなプラグインがあると助かります。
よろしくお願いします。

<仕様>
・メモ欄などで消費MPを設定できる。
・MPが足りないときは灰色文字などにして選択できないようにしたいです。

Re: MP消費アイテム

Posted: 2016年10月07日(金) 21:54
by まっつUP
ネコタ様
お世話になります。

そろそろ夏も終わりでございますね。
なので、ご希望の機能を実現するプラグインをつくりました。
(バグが十分に取れていない可能性があるのでユーザーゲームに適用する場合は
お手数ですが十分にテストをしていただく必要があります。)

このプラグインの利用する場合は
readmeなどに「まっつUP」の名を入れてください。
また、素材のみの販売はダメです。
上記以外の規約等はございません。
もちろんツクールMVで使用する前提です。
何か不具合ありましたら気軽にどうぞ。

追記:初期のものはバグが多かったので削除しました。

Re: MP消費アイテム

Posted: 2016年10月07日(金) 22:40
by ネコタ
おお、お待ちしておりました!

早速、導入してやってみましたら、動きませんでした(笑)


まず、ほぼプラグインが入っていない(公式以外は一切入っていない)プロジェクトでは、一応、使用可能でしたが、

画像

初回の立ち上げ時、最初のアイテム名がなぜか灰色文字になっておりました。
一応、選択してみたら問題なく使えました。
2ターン目以降は、このアイテムは白字になっていました。

なぜでしょう?



次に、色々とプラグインが入って訳が分からなくなっている制作用のプロジェクトに入れてみましたところ、

画像

このように表示され、終わってしまいました。
デベロッパーツールを開いてみたところ、

画像

このように書かれていましたが、私には解読できませんので、丸投げさせていただきます。


ただ、この制作用に入れている他のプラグイン達は、制作中のゲームでも使用しているものが多々あるため、競合があるようだと実質的に使用不可となってしまいます(^^;

何とかできそうなら、お願いします。

Re: MP消費アイテム

Posted: 2016年10月07日(金) 22:56
by ネコタ
YED_TransferStealStatesをOFFにしてみたら、無事動きました。

やはり、最初のアイテム名が黒いままでしたが、それが解決できれば問題なく使用できそうです。

YEDのプラグインは前も色々競合していた気がするし、はずそうかなぁ・・・

Re: MP消費アイテム

Posted: 2016年10月08日(土) 00:04
by まっつUP
ネコタ様

うまく動作しないようで申し訳ございません。
こちらでもYED_TransferStealStatesが怪しいと睨んでいました。
(これ単体で競合する)
が、エラー内容がどれも弄っていないところが出力されており原因が謎です。

また、単体での利用を想定していたとはいえ
そのアクターの取得方法の追加(もう二度と弄りたくない)と
アイテムリストをがっつり改変しているのでこの辺りの競合が激しいようです。
(コスト表示追加だけなので簡素に済むように見えますが、
追加しなければならない処理は多く改変箇所も多いです。)

最初のアイテム名が黒いままというのも確認できました。
直し方が分かりません。誰か助けてください。

Re: MP消費アイテム

Posted: 2016年10月08日(土) 00:59
by トリアコンタン
こんにちは!
エラーについてですが、おそらくこちらのトピックで発生している現象と同じと思われます。
解決策を提案しましたので、お試しください。

http://tm.yumineko.com/viewtopic.php?f= ... 7115#p7094

Re: MP消費アイテム

Posted: 2016年10月08日(土) 01:44
by トリアコンタン
また、アイテムが黒い原因ですが、アクター(this._actor)の設定箇所が

コード: 全て選択

Window_ItemList.prototype.drawitemCost
になっているため、初回実行時の

コード: 全て選択

Window_ItemList.prototype.isEnabled
が正しい結果を返していないためです。

以下のコードによりアイテムリストを作成する前の段階でアクターを設定することができます。
また、競合のリスクを低減する方法として、関数を上書きする前の状態をローカル変数(_Window_ItemList_makeItemList)に保持しておき、関数の実行中に上書きする前の元関数を呼び出す方法があります。

コード: 全て選択

    // 上書きする前の関数を保持
    var _Window_ItemList_makeItemList = Window_ItemList.prototype.makeItemList;
    Window_ItemList.prototype.makeItemList = function() {
        if ($gameParty.inBattle()) this._actor = BattleManager.actor(); //戦闘中はバトルマネージャから直接取得
        // 保持したおいた関数を呼び出す
        _Window_ItemList_makeItemList.apply(this, arguments);
    };

Re: MP消費アイテム

Posted: 2016年10月08日(土) 01:58
by まっつUP
トリアコンタン様
お世話になります。

バグについての解決法をご教授いただきありがとうございます。

トリアコンタン様のおかげで
BCEやTransferStealStatesとも共存して正常な動作を期待できそうです。

念のため別にjsファイルを上げておきます。

追記:バグの多いバージョンだったので消しました。

Re: MP消費アイテム

Posted: 2016年10月08日(土) 21:34
by ネコタ
ありがとうございます!

YEDのプラグインのバグが消えました!

そして、動作確認をしてみましたが、初回立ち上げ時に黒くならなくなりました!
選択して、MPも消費され、動作に支障はなかったです!


しかし、新たなバグ?を発見しました(^^;

パーティ内で使用できるキャラクターがいるときは、MPが足りないキャラでは黒表示で使えない状態なのですが、パーティ内で使用できる状態のキャラクターが一人もいないときは、非表示になってしまいます。

メニュー画面では表示されており、数も合っているので、消えたわけではないみたいです。


持っていること自体は把握できた方が良いと思うので、これを使えないけど表示している状態にすることは出来るでしょうか?

Re: MP消費アイテム

Posted: 2016年10月08日(土) 22:13
by まっつUP
ネコタ様

いや、度々申し訳ないです。

このプラグインのバグだったので修正しました。

この時点でこのトピックの一番最後にアップしているところに更新したものを置いておきますね。