メタデータを使用して装備を一括削除(アイテムと交換)したい

返信する
miyomi
記事: 22
登録日時: 2024年10月25日(金) 02:32

メタデータを使用して装備を一括削除(アイテムと交換)したい

投稿記事 by miyomi »

お世話になっております。
現在、装備などのアイテムが大量に手に入るハクスラタイプのゲームを制作しているのですが、
そこに装備を一括でアイテムに変換するシステムを実装したいです。

装備は全てコモンやレアなどにレアリティ分けしていますので、
メタデータを活用し、現在所持しているメモ欄に<rarity:1>と書かれている武器(防具)の数を取得、
その後条件に当てはまる武器を全て削除し、取得した数だけアイテムを配布する
(さらに言えば、これを装備タイプごとに分けて行えると最高です、、、)

という挙動が理想なのですが、
こちらをスクリプトコマンドで行うことは可能でしょうか?
もし可能であれば、どのようなスクリプトになるか教えていただけませんでしょうか。



ゲームのハクスラ部分は、 YanflyさまのItem Coreをお借りしての実装を考えております。

http://www.yanfly.moe/wiki/Item_Core_(YEP)
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

Re: メタデータを使用して装備を一括削除(アイテムと交換)したい

投稿記事 by WTR »

やりたいことを完全には把握できてないので部分的な話にはなりますが

持っている装備の一覧を取得

コード: 全て選択

// 装備全部
$gameParty.equipItems()

// 武器だけ
$gameParty.weapons()

// 防具だけ
$gameParty.armors()
rality = 1 でフィルタ

コード: 全て選択

$gameParty.equipItems()
.filter(equip => equip.meta.rality == 1)
rality = 1 かつ etypeId = 1 でフィルタ

コード: 全て選択

$gameParty.equipItems()
.filter(equip => (equip.meta.rality == 1) && (equip.etypeId == 1))
フィルタしたものを持っている数の配列に変換

コード: 全て選択

$gameParty.equipItems()
.filter(equip => (equip.meta.rality == 1) && (equip.etypeId == 1))
.map(equip => $gameParty.numItems(equip))
↑の配列の合計

コード: 全て選択

$gameParty.equipItems()
.filter(equip => (equip.meta.rality == 1) && (equip.etypeId == 1))
.map(equip => $gameParty.numItems(equip))
.reduce((sum, num) => sum += num, 0)
rality = 1 かつ etypeId = 1 の装備を全部捨てる ただし装備しているものは除く

コード: 全て選択

$gameParty.equipItems()
.filter(equip => (equip.meta.rality == 1) && (equip.etypeId == 1))
.forEach(equip => $gameParty.loseItem(equip, $gameParty.numItems(equip), false))
こんな感じでどうにかなるでしょうか
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
miyomi
記事: 22
登録日時: 2024年10月25日(金) 02:32

Re: メタデータを使用して装備を一括削除(アイテムと交換)したい

投稿記事 by miyomi »

WTR さま、
やりたいことは今回頂いたスクリプトで完璧に再現できました、本当にありがとうございます!
(はじめ中々うまくいかず悩んでいましたが、最初に投稿したトピックスのralityのスペルがrarityとなっていたことが原因でした、、、お恥ずかしい、、)

なにはともあれ感謝しかありません、ありがとうございました!!
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

Re: メタデータを使用して装備を一括削除(アイテムと交換)したい

投稿記事 by WTR »

あ、これ私が間違ってますね > rarity
各所読み替えてください…
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
返信する

“MV:質問”に戻る