倉庫(PH_Warehouse、ItemStorage)の機能について

koji
記事: 3
登録日時: 2019年12月04日(水) 10:07

倉庫(PH_Warehouse、ItemStorage)の機能について

投稿記事by koji » 2019年12月04日(水) 10:24

はじめまして、どうぞよろしくお願いします。

PH_Warehouseの倉庫機能について2点ご質問があります。使用プラグインはムノクラ様の日本語化verです。→(https://fungamemake.com/archives/1836)

①倉庫内のアイテムをすべて引き出す、すべての手持ちアイテム(または指定の種類)を倉庫に預けるなどの処理はプラグインコマンドやスクリプトで可能か。
②「引き出す」「預ける」の位置を入れ替えることは可能か。(デフォルトでは左に「引き出す」、右に「預ける」の順です)

①について、預けるアイテムが倉庫の最大容量を超える場合については考慮しなくて問題ありません。

当方初のゲーム製作で、プラグイン等の勉強中のため理解が及ばない部分もあるかと思いますが、お知恵を頂けますと幸いです。
最後に編集したユーザー koji on 2019年12月06日(金) 09:30 [ 編集 1 回目 ]

アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: 倉庫(PH_Warehouse)の機能について

投稿記事by にゃたま » 2019年12月05日(木) 17:02

koji様

こんばんは。はじめまして。
①の件ですが実は私もPH_Warehouseを使っていて一括して預けたいと思っていたのですが
このプラグイン単体ではそういった機能を有していないようで、
仕方ないので自分用にプラグインとして作成しました。
一般には公開しない予定でしたがよければお使いください。
但しコレ以上の機能追加は私の技術不足によりできませんので申し訳ございません。
例えば指定したアイテム以外を預けるとか大事な物以外を預けるとかです。
何かこれに代わる便利なプラグインがあれば逆にどなたか紹介してほしいです(汗)
使い方はヘルプに記載してあります。
例えばアイテム武器防具を全て預けて持っているアイテム武器防具をクリアしたい場合以下のようにします。
◆プラグインコマンド:NYA_ItemStock keep
◆プラグインコマンド:NYA_ItemStock clear
アイテム武器防具を全て返してもらいたい場合以下のようにします。
◆プラグインコマンド:NYA_ItemStock restore
今持っているアイテムに預けてるアイテムを追加したい場合は以下
◆プラグインコマンド:NYA_ItemStock add
PH_Warehouseの機能追加というわけではないので変則的ですがこれで代用できないでしょうか?
NYA_ItemStock.js
ver1.1.0
(10.38 KiB) ダウンロード数: 22 回


②のDepositとWithdrawの入れ替えについては以下のように改変することでできました。
よろしければご参考ください。

コード: 全て選択

//    Window_WarehouseOption.prototype.refresh = function() {
//        var rectWithdraw = this.itemRectForText(0);
//        var rectDeposit = this.itemRectForText(1);
//        this.drawText(this.withdrawText, rectWithdraw.x, rectWithdraw.y, rectWithdraw.width, "center");
//        this.drawText(this.depositText, rectDeposit.x, rectDeposit.y, rectDeposit.width, "center");
//    };

    //上記メソッドを以下に変更
    Window_WarehouseOption.prototype.refresh = function() {
        var rectDeposit = this.itemRectForText(0);
        var rectWithdraw = this.itemRectForText(1);
        this.drawText(this.depositText, rectDeposit.x, rectDeposit.y, rectDeposit.width, "center");
        this.drawText(this.withdrawText, rectWithdraw.x, rectWithdraw.y, rectWithdraw.width, "center");
    };


コード: 全て選択

//以下メソッドを一部変更
    Window_WarehouseItemList.prototype.loadItems = function() {

        // Deposit
        if (PHPlugins.PHWarehouse._lastOption == 0) {//1を0にしました
            if (PHPlugins.Params.PHWarehouseAllTogether == true) {
                this.makeDepositAllItemList();
            } else {
                this.makeItemList();
            }
        }

        // Withdraw
        else if (PHPlugins.PHWarehouse._lastOption == 1) {//0を1にしました
            this.makeWarehouseItemList();
        }

    };


追記
すみません。以下の点が漏れてました。

コード: 全て選択

//ADD以下メソッドを一部変更
    Window_WarehouseItemList.prototype.drawItem = function(index) {
        var item = this._data[index];
        if (item) {
            var numberWidth = this.numberWidth();
            var rect = this.itemRect(index);
            rect.width -= this.textPadding();

            this.changePaintOpacity(PHPlugins.PHWarehouse.verifyItem(item));
            this.drawItemName(item, rect.x, rect.y, rect.width - numberWidth);

            if (PHPlugins.PHWarehouse._lastOption == 0) {//1を0にしました
                this.drawItemNumber(item, rect.x, rect.y, rect.width);
            } else if (PHPlugins.PHWarehouse._lastOption == 1) {//0を1にしました
                this.drawWarehouseItemNumber(item, rect.x, rect.y, rect.width);
            }

            this.changePaintOpacity(1);
        }
    };


コード: 全て選択

//ADD以下メソッドを一部変更
    Window_WarehouseItemList.prototype.moveItem = function() {

        var item = this.item();

        // Deposit
        if (PHPlugins.PHWarehouse._lastOption == 0) {//1を0にしました
            if (PHPlugins.PHWarehouse.checkCapacity() && PHPlugins.PHWarehouse.verifyItem(item)) {
                SoundManager.playEquip();
                PHPlugins.PHWarehouse.deposit(item);
                $gameParty.loseItem(item, 1);
            } else {
                SoundManager.playBuzzer();
            }
        }

        // Withdraw
        else if (PHPlugins.PHWarehouse._lastOption == 1) {//0を1にしました
            if (PHPlugins.PHWarehouse.verifyItem(item)) {
                var numItems = $gameParty.numItems(item);
                $gameParty.gainItem(item, 1);
                if (numItems < $gameParty.numItems(item)) {
                    SoundManager.playEquip();
                    PHPlugins.PHWarehouse.withdraw(item);
                } else {
                    SoundManager.playBuzzer();
                }
            } else {
                SoundManager.playBuzzer();
            }
        }

    };


コード: 全て選択

//ADD以下メソッドを一部変更
    Window_WarehouseItemList.prototype.isCurrentItemEnabled = function() {
        if (this._data.length > 0) {
            if (PHPlugins.PHWarehouse._lastOption == 0 && PHPlugins.PHWarehouse.checkCapacity()) {//1を0にしました
                return true;
            } else if (PHPlugins.PHWarehouse._lastOption == 1) {//0を1にしました
                return true;
            } else {
                return false;
            }
        }
        return false;
    };


追記
当方の環境で以下のようにしないと引き出しのとき正常に個数が表示されなかったので
個数が表示されないようでしたらお試しください。
yanfly氏のプラグインが入っていると症状が発生するようです。

コード: 全て選択

    Window_WarehouseItemList.prototype.drawWarehouseItemNumber = function(item, x, y, width) {
        var qtty = PHPlugins.PHWarehouse.getQuantity(item);
//        if (typeof Yanfly !== "undefined") {
//            this.contents.fontSize = Yanfly.Param.ItemQuantitySize;
//            this.drawText('\u00d7' + qtty, x, y, width, 'right');
//            this.resetFontSettings();
//        } else {
            this.drawText(':', x, y, width - this.textWidth('00'), 'right');
            this.drawText(qtty, x, y, width, 'right');
//        }
    };
koji
記事: 3
登録日時: 2019年12月04日(水) 10:07

Re: 倉庫(PH_Warehouse)の機能について

投稿記事by koji » 2019年12月06日(金) 09:30

にゃたま 様

ご返信ありがとうございます!
ご紹介頂いたプラグインは変数に所持アイテムを登録し、それを復活するというものでしょうか。
イメージしていた動作ではありませんが、ありがたく利用させて頂きます。

②について、正常に使用でき大変助かりました!ありがとうございます。(Item.core下でも大丈夫でした)

色々調べた中で似たような機能のプラグインにこちらがありました。
アイテムストレージ(やな様)  https://rpg.mitukasa.jp/src/ogrpg1618.zip
この中でTakeStorageという機能がイメージと近いです。
プラグインコマンドで、TakeStorage BOX W1:10 のように入力すると、BOXという名前のストレージから武器ID:1のアイテムを10個引き出す処理ができます。
これをBOX内の全ての武器に適用する方法はないでしょうか?
逆に預ける動作はIntoStorageと所持アイテムのクリアーを使って行えないでしょうか。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: 倉庫(PH_Warehouse)の機能について

投稿記事by にゃたま » 2019年12月07日(土) 00:36

koji様

koji さんが書きました:色々調べた中で似たような機能のプラグインにこちらがありました。
アイテムストレージ(やな様)  https://rpg.mitukasa.jp/src/ogrpg1618.zip
この中でTakeStorageという機能がイメージと近いです。
プラグインコマンドで、TakeStorage BOX W1:10 のように入力すると、BOXという名前のストレージから武器ID:1のアイテムを10個引き出す処理ができます。
これをBOX内の全ての武器に適用する方法はないでしょうか?
逆に預ける動作はIntoStorageと所持アイテムのクリアーを使って行えないでしょうか。


ということはあくまでもストレージプラグインから出し入れすることが前提ですね。
私製プラグインではアイテム、武器、防具それぞれのカテゴリで全てものをバックアップ復元するものなので
武器をそれぞれ10個だけ引き出すといったことはできませんのでお力になれず申し訳ございません。。
やな様のプラグインもざっと見てみましたが自分では技術力が不足しており
理解できないところがあるのでこちらのプラグインでのアドバイスも難しそうです。
ここはもっとスクリプトに詳しい方にバトンタッチさせていただきます。すみません。
koji
記事: 3
登録日時: 2019年12月04日(水) 10:07

Re: 倉庫(PH_Warehouse、ItemStorage)の機能について

投稿記事by koji » 2019年12月07日(土) 08:11

にゃたま 様

いえいえ、預ける引き出すの順番については解決しましたし、ご相談に乗ってくださってありがとうございました。

“MV:質問” へ戻る