ページ 58

Re: アイテムなどの所持できる数を重量制にするプラグイン

Posted: 2019年12月03日(火) 22:12
by youseityan
パンダコ様
にゃたま様
貴重なプラグインを作成、更新していただきありがとうございます。
こちら使わせていただいております。

この度、御相談があるのですが
メニュー画面やアイテム画面に表示される
重量表示のウィンドウを装備画面にも表示させたいのですが
どの様にしたら良いでしょうか?
自身でも試行錯誤して試してみたのですが上手くいかず・・・

お時間があるときで結構ですので
御教示いただけましたら幸いです。

Re: アイテムなどの所持できる数を重量制にするプラグイン

Posted: 2019年12月03日(火) 23:40
by にゃたま
youseityan様

恐らく装備画面ではCPを知る必要が無いとの判断でそういった機能の
用意がされてないのだと思いますが、もしどうしても表示したいのであれば
以下の箇所を改変して当方の環境でできました。
よろしければご参考ください。

尚、CPウィンドウ配置箇所はショップと同様にしています。

追記
デフォ状態で装備の有無にかかわらずCPは変化しません。


コード: 全て選択

//装備画面のヘルプウィンドウを小さくする---------------------------------------------------------------
   Scene_Equip.prototype.createHelpWindow = function() {
      this._helpWindow = new Window_Help(2, true);
      this.addWindow(this._helpWindow);
   };

   //装備画面にCPウィンドウを追加---------------------------------------------------------------
   var _Scene_Equip_create = Scene_Equip.prototype.create;
   Scene_Equip.prototype.create = function() {
      _Scene_Equip_create.call(this);
      //
      this.createCpWindow('Default', 255);
   };

上記コードを

コード: 全て選択

//shop画面のヘルプウィンドウを小さくする---------------------------------------------------------------
   Scene_Shop.prototype.createHelpWindow = function() {
      this._helpWindow = new Window_Help(2, true);
      this.addWindow(this._helpWindow);
   };

の上のあたりに追加。

Re: アイテムなどの所持できる数を重量制にするプラグイン

Posted: 2019年12月04日(水) 14:26
by youseityan
にゃたま様
お返事ありがとうございます。
無事、装備画面にも重量表示ウインドウを表示させる事ができました。
本当にありがとううございました。

Re: アイテムなどの所持できる数を重量制にするプラグイン

Posted: 2020年3月20日(金) 22:42
by kemusi
とても便利なシステムですね!
できれば
「重量オーバーしているとアイテム画面を閉じることができなくなります。」
とありますが、いったん閉じてそのアイテムをその場では諦める、といったことは可能でしょうか?
捨てられないアイテムで固まっていた場合はフリーズ状態になってしまうので…

Re: アイテムなどの所持できる数を重量制にするプラグイン

Posted: 2020年3月21日(土) 01:56
by にゃたま
kemusi様

確かに捨てられないアイテムが溜まってしまうとアイテム画面から抜け出せなくなってしまいますね。

私が考えた限り思いついたのは以下の3つです。
①捨てられないアイテムには重量を0設定にする。
②捨てられないアイテム入手する前に重量計算して重量オーバーで入手できない旨のメッセージを表示する
③捨てられないアイテムを全て入手したときの重量が持てるアイテムの重量より常に少なくする設計にする

イベントで入手するケースなら②のその場で計算して入手できなければそのメッセージを表示する方法が良い
と思います。戦闘で入手の場合はそうった計算が難しいので②以外になってしまいます…
戦闘では基本的に捨てられないアイテムそのものを入手しない設計にするべきです。
プラグインコマンドで重量など取得できますので条件分岐を駆使して試されてみたらいかがでしょうか?

Re: アイテムなどの所持できる数を重量制にするプラグイン

Posted: 2020年3月21日(土) 15:42
by kemusi
にゃたま様
返信ありがとうございます!

実はPHwarehouseというプラグインと一緒に使おうと思っていたのですが、
重量が最大時に倉庫から取り出した場合に抜け出せず困ってしまいまして…
何か良い方法があればと思ったのですが。

Re: アイテムなどの所持できる数を重量制にするプラグイン

Posted: 2020年3月23日(月) 03:05
by にゃたま
kemusi様

こちらのプラグイン以外を使っているとは知らなかったので
前回の案内をさせていただきました。
そのことも前の記事に載せておくとそのような誤解もなかったと思います。。
それはとても重要な事項かと思われます…

これはもはやPHwarehouseを改変するしか方法がないと思います。
以前に私もこのプラグインに対応すべく調整を行っておりました。
今回遂にその時がきましたね…やっと完成できました。
調べながらでかなり時間がかかったということはお伝えしておきます。
スクリプトの得意な人ならサクサクっと終わってしまうことなのかもしれませんがね(苦笑)
尚バグなどありましたら報告ください。

★★★★★★★★★★★★★★★★★★★
若干本体に修正を加える部分があります。(最新版にて)
<本体修正1>
以下を(function() {のすぐ上あたりに追加してください。

コード: 全て選択

var Imported = Imported || {};
Imported.PNDK_LuggageCapacity = true;


<本体修正2>
以下を(function() {のすぐ下あたりに追加してください。

コード: 全て選択

//Window_CPを他のプラグインでも参照できるようにする
    Imported.Window_CP = Window_CP;//Nyatama ADD


<本体修正3>
前回投稿した改変項目の以下5点を適用してください
○アイテムオブジェクトの重量をスクリプトから取得
○アイテム重量をスクリプトから取得
○武器重量をスクリプトから取得
○防具重量をスクリプトから取得
○余剰積載量をスクリプトから取得
★★★★★★★★★★★★★★★★★★★

改変バージョンなので区別するためにファイル名を変更してあります。


追記
尚、このバージョンでは預けると引き出しが逆になっています。
要望があれば戻すか選択出来るようにする事も検討します。

英語版のヘルプは更新していません。ご了承ください。
The English version of the help has not been updated. Thank you for your understanding.

Re: アイテムなどの所持できる数を重量制にするプラグイン

Posted: 2020年3月23日(月) 23:21
by kemusi
にゃたま様

ご返信ありがとうございます。
PHwarehouse改変の件、まことにありがとうございます!

今ちょっと試させていただいたのですが、
特に挙動として変わっていなかったのですが
ひょっとしたら私の勘違いというか初心者なもので使い方が間違っているだけかもしれないので
一度ご確認させていただけますでしょうか^^;

まず、PNDK_LuggageCapacityではご教示いただきました通り
(function() {
の直下に

コード: 全て選択

//Window_CPを他のプラグインでも参照できるようにする
    Imported.Window_CP = Window_CP;//Nyatama ADD

を入れ、さらに前回にゃたま様がご投稿されていた

コード: 全て選択

    //getItemWeightsを$gameSystemに登録
    Game_System.prototype.getItemWeights = function(value, num) {
        return getItemWeights(String(value), String(num));
    }


コード: 全て選択

    //getWeaponWeightsを$gameSystemに登録
    Game_System.prototype.getWeaponWeights = function(value, num) {
        return getgetWeaponWeights(String(value), String(num));
    }


コード: 全て選択

    //getArmorWeightsを$gameSystemに登録
    Game_System.prototype.getArmorWeights = function(value, num) {
        return getArmorWeights(String(value), String(num));
    }


をそれぞれのPNDK_LuggageCapacity直下に記述いたしました。

そしてこの度いただきました NYA_PH_Warehouse_PNDK_LC.jsを新たに追加し、
元から導入していたPHwarehouseはOFFにしました。

現在はこの状態なのですが、変わらず重量が最大時に倉庫から取り出そうとすると
変わらずアイテム画面から抜け出せなくなってしまっている状態なのですが
本来はどのように抜け出せる仕様となっているのでしょうか?

Re: アイテムなどの所持できる数を重量制にするプラグイン

Posted: 2020年3月24日(火) 00:18
by にゃたま
まず動作している動画をみてもらったほうがわかりやすいと思います。
https://youtu.be/R_J5GkKex_A

そもそもなんですが重量オーバーしてもアイテム画面に強制的に遷移することはありません。

あと修正したはずなんですがすみません。

コード: 全て選択

//getWeaponWeightsを$gameSystemに登録
    Game_System.prototype.getWeaponWeights = function(value, num) {
        return getgetWeaponWeights(String(value), String(num));
    }

のreturnのあとはgetgetではなくgetになります。

あと順番はPNDK_LuggageCapacityの下に
NYA_PH_Warehouse_PNDK_LCの順を推奨します。

コード: 全て選択

そしてこの度いただきました NYA_PH_Warehouse_PNDK_LC.jsを新たに追加し、
元から導入していたPHwarehouseはOFFにしました。


この件は問題ありません。

今一度こちらでも確認してみますので少々おまちください。

追記
すみません。動画は音声が入ってなくブザー音が聞こえないので押していることがわかりませんね…
とにもかくにもアイテム画面には遷移しなくなります。

追記
確かにこちらで確認しましたが何故かCPウィンドウが表示されないですね…
少し調査します。

追記
すみません。わかりました。

コード: 全て選択

var Imported = Imported || {};
Imported.PNDK_LuggageCapacity = true;

を(function() {の上に追記してください。

前の説明文も修正しました。

Re: アイテムなどの所持できる数を重量制にするプラグイン

Posted: 2020年3月24日(火) 00:58
by kemusi
すみません。ご対応ありがとうございます!
上記を(function() {の上に記述することで確かに以前とは違う挙動にはなったのですが
倉庫にて引き出すor預けるのいずれかの動作を行った際、

TypeError
$gameSystem.getSurplusCP is not a function

と発生してしまうようです…
こちらに関しましては重量オーバーしていようがいまいが変わらないようです。

以下がログになるのですが何か追加でこちら側で行う処理が必要でしょうか?

コード: 全て選択

rpg_managers.js:1949 TypeError: $gameSystem.getWeight is not a function
    at PHWarehouseManager.deposit (NYA_PH_Warehouse_PNDK_LC.js:924)
    at Window_WarehouseItemList.moveItem (NYA_PH_Warehouse_PNDK_LC.js:1416)
    at Scene_Warehouse.onItemOk (NYA_PH_Warehouse_PNDK_LC.js:1602)
    at Window_WarehouseItemList.Window_Selectable.callHandler (rpg_windows.js:902)
    at Window_WarehouseItemList.Window_Selectable.callOkHandler (rpg_windows.js:1171)
    at Window_WarehouseItemList.Window_Selectable.processOk (rpg_windows.js:1156)
    at Window_WarehouseItemList.Window_Selectable.processHandling (rpg_windows.js:1027)
    at Window_WarehouseItemList.Window_Selectable.update (rpg_windows.js:984)
    at rpg_core.js:7035
    at Array.forEach (<anonymous>)