<解決済み>[Ace]ローグライクβスクリプトでのアイテム削除方法

まる0119
記事: 2
登録日時: 2019年11月06日(水) 18:25

<解決済み>[Ace]ローグライクβスクリプトでのアイテム削除方法

投稿記事by まる0119 » 2019年11月29日(金) 10:42

ひきも記さまがVX用に公開したローグライクβスクリプトを
faidaさまがACE用に変換してくださったスクリプトが
faidaさまのHP[点線上の文字の羅列]
の右下リンクの掲示板内にあるのですがそのスクリプトへの質問です。

ご本人様にはHPのメールフォームからメールをしてみましたが
お返事がないようなので失礼ながらこちらに聞かせていただきました。

特定のアイテムを追加したい場合はgain_ditemでできるのですが、
特定のアイテムを削除したいときの方法がわかりません。

どなたかご教示いただけませんでしょうか?
最後に編集したユーザー まる0119 on 2019年11月30日(土) 22:21 [ 編集 1 回目 ]

faida
記事: 241
登録日時: 2015年12月17日(木) 16:44

Re: [Ace]ローグライクβスクリプトでのアイテム削除方法

投稿記事by faida » 2019年11月30日(土) 13:41

こんにちは。

まずは、スクリプトをご利用いただきありがとうございます。
そして、メールを返信できず大変申し訳ありません。メールの質問に関しては別途返信させていただきます。

表題の件ですが、正規の手段がありません
ローグライクでは通常のツクールと異なり、全部のアイテムが一品ものである上、
所持品の並び順も決まっていません。
そのため、「特定のアイテムを追加する」のは簡単ですが、
「特定のアイテムを削除する」ことは難しいです。
実際、使ったアイテムを削除する処理は、
「使ったアイテムの並び順を保存しておいて、その場所のアイテムを削除する」
となっていて、種類を見ていません。

ではどうすればよいかと言いますと、

コード: 全て選択

$game_party.ditems.delete_if{|ditem|
 ditem.item.id == アイテムID
}
のように、アイテムIDを直接指定して削除する必要があります。
この方法だとそのIDのアイテムを全て削除します。
1個だけなら

コード: 全て選択

ditem = $game_party.ditems.find{|ditem|
 ditem.item.id == アイテムID
}
$game_party.ditems.delete(ditem)
でできると思います。

「特定のアイテムIDのアイテム」については多分こんな感じかと。
---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
まる0119
記事: 2
登録日時: 2019年11月06日(水) 18:25

Re: [Ace]ローグライクβスクリプトでのアイテム削除方法

投稿記事by まる0119 » 2019年11月30日(土) 22:20

ありがとうございます!
まさかご本人様がお返事くださるとは!!
しかもこんなに早く…

ご返信いただいた件、うまく動作させられまして感激です!
ひとまず解決済みとさせていただきます。

プロジェクトが完成いたしましたら必ず一番にご報告させていただきます!

“VX / Ace:スクリプト素材のリクエスト” へ戻る