アイテムの全てを捨てるが大事なものだけは残す

返信する
tanaka1105
記事: 51
登録日時: 2020年12月28日(月) 23:16

アイテムの全てを捨てるが大事なものだけは残す

投稿記事 by tanaka1105 »

いつもお世話になります。

以下は、所持しているアイテムの全てを捨てる(所持数を0にする)スクリプトなのですが、「大事なもの」だけは残すようにしたいです。ご教示頂きたく、よろしくお願いします。

$dataItems.forEach(function(item) {
if (item && item.id > 0) {
$gameParty.loseItem(item, $gameParty.numItems(item));
}
});
ecf5DTTzl6h6lJj02
記事: 778
登録日時: 2018年12月23日(日) 13:55

Re: アイテムの全てを捨てるが大事なものだけは残す

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。
tanaka1105 さんが書きました: 2026年2月18日(水) 02:39 いつもお世話になります。

以下は、所持しているアイテムの全てを捨てる(所持数を0にする)スクリプトなのですが、「大事なもの」だけは残すようにしたいです。ご教示頂きたく、よろしくお願いします。

$dataItems.forEach(function(item) {
if (item && item.id > 0) {
$gameParty.loseItem(item, $gameParty.numItems(item));
}
});
細かいことですが、コードを載せる際は、上にあるボタンの内、 </> と書かれているボタンを押すと、コード表示用のタグが挿入されるので、それを利用して、記述するようにしてください。

また、コードを記述する際は、読みやすくするために、きちんとインデントを意識し、整形した方が良いです。
某 〇〇学ラジオの方が、動画の中で、情報学の教授が、「できない奴はタヒんだ方が良い」という発言をしていたと言っているぐらい、整形されていないコードは嫌われています。
記載されているコードを整形するなら、

コード: 全て選択

$dataItems.forEach(function(item) {
  if (item && item.id > 0) {
    $gameParty.loseItem(item, $gameParty.numItems(item));
  }
});
といったところでしょうか。

話題を元に戻しまして、
大事なものを除外するようにしたいということですが、
大事なものは、通常、itypeId が 2 に設定されています。
なので、アイテムのデータから、itypeId が 2 に設定されているものを除外するよう、フィルタを掛ければいいかなと思います。
配列(Array)オブジェクトには、filter というそのものずばりな関数があるので、それを利用して、
その関数で出力された結果に対して、forEach で個数を減らすようにコードを作ってください。

filter 関数に関する詳しい使い方は、

https://developer.mozilla.org/ja/docs/W ... ray/filter

を参照してください。

コード: 全て選択

if (item && item.id > 0)
という条件式も、このフィルタで一緒に設定してしまえばいいかな。
アイテムのIDは 0 以下に設定されることは無いはずなので、id が 0 より大きいことをチェックする部分は無くても大丈夫です。

以上、ご確認ください。
返信する

“MZ:質問”に戻る