ページ 11

【解決済】YEP_ItemCoreで1個1個 店売りする以外では所持装備品を減らしてもセーブデーター容量が減りません

Posted: 2019年1月04日(金) 17:48
by kumatokuma
似たような質問は見つけたのですが、解決していなかったので質問させていただきます。

YEP_ItemCore1.3のみ入れた状態で、例えば1000個装備を持っていて
1つ1つ売却すれば、何百個も減らすとセーブデータも大幅に減るのですが、
それ以外の方法で装備品を大量に減らして所持品を0個にしても
セーブデーターの容量が減らず、困っています。



どなたか、イベントから正しく減らす方法をご存知の方は
教えていただけるとありがたいです。

以下では所持品が減るだけで、セーブデータを減らすことは出来ませんでした。
●イベントコマンドの武器の増減や防具の増減から減らす。
 (まとめて減らしても、1個ずつ減らすを何度も繰り返してもダメでした)
●イベントコマンドのスクリプトで$gameParty._weapons = {}
●ItemCoreはID3000から始まるからと、
イベントスクリプトで
 for(var i = 3000; i < 5000; i++){
$gameParty.loseItem($dataWeapons, 1)
}

Re: YEP_ItemCoreで1個1個 店売りする以外では所持装備品を減らしてもセーブデーター容量が減りません

Posted: 2019年1月04日(金) 19:41
by 剣崎 宗二
前の質問に対し、時間が無くて回答できていなかった剣崎です。
この度インフルに当たったが故に皮肉にも時間が出来たので改めて解析を掛けました。

結論としては、前回の質問のコードの引用となりますが例えば武器全売りの場合

コード: 全て選択

var price = 0;
var score = 0;
$gameParty.weapons().forEach(function(item){
    if(item.price > 0){//売却可能か
        price = Math.floor($gameParty.numItems(item) * item.price / 2);
        score += price;
        $gameParty.loseItem(item, $gameParty.numItems(item), false);
        DataManager.removeIndependentItem(item); //この1行を追加!!!
    }
});
$gameVariables.setValue(15,score);//第一引数に変数IDを入れて下さい。
とすればセーブデータを削減する事が可能です。
要は
DataManager.removeIndependentItem(item); 
(itemにはアイテムの実データ。$dataWeapons等から取得した物など)
を実行すれば済む話ですね。

Re: YEP_ItemCoreで1個1個 店売りする以外では所持装備品を減らしてもセーブデーター容量が減りません

Posted: 2019年1月04日(金) 19:52
by 剣崎 宗二
(以下は仕組みや今回の現象の理由となります。プログラム内容などに興味がない方は見なくても問題ありません)

loseItemの仕組みは実質、量を-にしたgainItemとなります。
YEP_ItemCoreは一見、loseItemの際にremoveIndependentItemが走って問題なく排除されているように見えるのですが、ここで走っているのはGame_Party.prototype.removeIndependentItemの方(所持データから該当アイテムを削除するのを担当している)の方であり、DataManager.removeIndependentItem(アイテム基礎データから削除するのを担当)の方ではありませんでした。

そして、実際にセーブデータに追記されているのは基礎データの方なので…

Re: 【解決済】YEP_ItemCoreで1個1個 店売りする以外では所持装備品を減らしてもセーブデーター容量が減りません

Posted: 2019年1月05日(土) 00:14
by kumatokuma
剣崎 宗二様、丁寧にご回答頂き、ありがとうございます。
お陰様で、セーブ容量を減らすことができました!!
本当に困っていたので、凄く助かりました。
この度は、ありがとうございました。