お世話になっております。
現在、装備などのアイテムが大量に手に入るハクスラタイプのゲームを制作しているのですが、
そこに装備を一括でアイテムに変換するシステムを実装したいです。
装備は全てコモンやレアなどにレアリティ分けしていますので、
メタデータを活用し、現在所持しているメモ欄に<rarity:1>と書かれている武器(防具)の数を取得、
その後条件に当てはまる武器を全て削除し、取得した数だけアイテムを配布する
(さらに言えば、これを装備タイプごとに分けて行えると最高です、、、)
という挙動が理想なのですが、
こちらをスクリプトコマンドで行うことは可能でしょうか?
もし可能であれば、どのようなスクリプトになるか教えていただけませんでしょうか。
ゲームのハクスラ部分は、 YanflyさまのItem Coreをお借りしての実装を考えております。
http://www.yanfly.moe/wiki/Item_Core_(YEP)
メタデータを使用して装備を一括削除(アイテムと交換)したい
Re: メタデータを使用して装備を一括削除(アイテムと交換)したい
やりたいことを完全には把握できてないので部分的な話にはなりますが
持っている装備の一覧を取得
rality = 1 でフィルタ
rality = 1 かつ etypeId = 1 でフィルタ
フィルタしたものを持っている数の配列に変換
↑の配列の合計
rality = 1 かつ etypeId = 1 の装備を全部捨てる ただし装備しているものは除く
こんな感じでどうにかなるでしょうか
持っている装備の一覧を取得
コード: 全て選択
// 装備全部
$gameParty.equipItems()
// 武器だけ
$gameParty.weapons()
// 防具だけ
$gameParty.armors()
コード: 全て選択
$gameParty.equipItems()
.filter(equip => equip.meta.rality == 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)
コード: 全て選択
$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/
https://twitter.com/wtr_in_reverie/
Re: メタデータを使用して装備を一括削除(アイテムと交換)したい
WTR さま、
やりたいことは今回頂いたスクリプトで完璧に再現できました、本当にありがとうございます!
(はじめ中々うまくいかず悩んでいましたが、最初に投稿したトピックスのralityのスペルがrarityとなっていたことが原因でした、、、お恥ずかしい、、)
なにはともあれ感謝しかありません、ありがとうございました!!
やりたいことは今回頂いたスクリプトで完璧に再現できました、本当にありがとうございます!
(はじめ中々うまくいかず悩んでいましたが、最初に投稿したトピックスのralityのスペルがrarityとなっていたことが原因でした、、、お恥ずかしい、、)
なにはともあれ感謝しかありません、ありがとうございました!!
Re: メタデータを使用して装備を一括削除(アイテムと交換)したい
あ、これ私が間違ってますね > rarity
各所読み替えてください…
各所読み替えてください…
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
https://twitter.com/wtr_in_reverie/