【解決済み】特定のアイテムだけ残して他は削除したい

返信する
バルガ
記事: 3
登録日時: 2023年3月06日(月) 18:22

【解決済み】特定のアイテムだけ残して他は削除したい

投稿記事 by バルガ »

お世話になります。

件名のように特定のアイテムだけを残した状態で他を一括削除したいと考えてます。
周回するゲームを作る過程で必要なのですがアイテム量が非常に膨大で今回質問させていただきました。

何か良い案はありますでしょうか?
最後に編集したユーザー バルガ [ 2024年6月22日(土) 22:36 ], 累計 1 回
名無し蛙
記事: 352
登録日時: 2015年11月23日(月) 02:46

Re: 特定のアイテムだけ残して他は削除したい

投稿記事 by 名無し蛙 »

{id : 個数}のObjectでアイテム管理しているのでfilterも使えないしfor-inあたりでチェックするのが妥当では。
まずアイテムのメモ欄に<周回持越>というタグを付け

コード: 全て選択

const tempItems = {};
for (let id in $gameParty._items) {
    if ($dataItems[id].meta['周回持越']) tempItems[id] = $gameParty._items[id];
}
$gameParty._items = tempItems;
武器・防具も同様です。リセットだけならば{}代入だけでも良いですけど。

コード: 全て選択

const tempWeapons = {};
for (let id in $gameParty._weapons) {
    if ($dataWeapons[id].meta['周回持越']) tempWeapons[id] = $gameParty._weapons[id];
}
$gameParty._weapons = tempWeapons;

コード: 全て選択

const tempArmors = {};
for (let id in $gameParty._armors) {
    if ($dataArmors[id].meta['周回持越']) tempArmors[id] = $gameParty._armors[id];
}
$gameParty._armors = tempArmors;
無いとは思いますけどアクターが装備している武器・防具、
及びそのアクターをパーティから外した状態の場合は対象外です。
バルガ
記事: 3
登録日時: 2023年3月06日(月) 18:22

Re: 特定のアイテムだけ残して他は削除したい

投稿記事 by バルガ »

返信が遅れて申し訳ありません。
名無し蛙さん、教えていただきありがとうございました!

無事思っていたことが可能になり非常に助かりました!
これで処理も楽に行なえるようになり、更に多くのアイテムを増やせそうです。

アクターに関しては全て初期化してしまうので問題ありません。
本当に頭を悩ませていたので…重ね重ねですが、本当にありがとうございました!
返信する

“MV:質問”に戻る