イベント(MV)のアイテムを使いたい

皆さん、こんにちは。コードでオブジェクトを使用する方法はありますか?特定の条件が満たされたときに、特定のオブジェクトを自動的に消費したいのです。関連するメソッドやアドオンをご存知の方がいましたら、教えてください。

オブジェクトを削除する方法は存在することは知っていますが、それは私のニーズには合いません。私はオブジェクトを「使用」したいのです。なぜなら、効果が発動するのは「使用」した場合だからです。

@Baz 前の投稿へのコメントに対して。その方法は私には適用できません。なぜなら、タグ付きのインベントリ内のランダムなアイテムを消費する必要があるからです。私には「食品」「飲料」「薬」「精神安定」としてタグ付けされたアイテムがあり、イベントではキャラクターの空腹、喉の渇き、精神安定度、または健康状態が特定の値以下かどうかをチェックし、強化すべきステータスに応じてランダムなアイテムを消費する条件があります。

現在、アイテムが食品、飲料、またはその他のカテゴリに属するかを判別するシステムは構築していますが、唯一の問題は、それらを正しく消費できないことです。

なお、私はRPG Maker MVを使用しています。

MV にはこれ専用のイベントコマンドはありませんが、アイテムメニューが構築するのと同じ Game_Action を作成することで実現できます。Script コマンド内で以下のように記述します:

var item = $dataItems[$gameVariables.value(1)];
if (item) {
    var user = $gameParty.leader();
    var action = new Game_Action(user);
    action.setItemObject(item);
    action.apply(user);
    action.applyGlobal();
    user.useItem(item);
}

上記の「Variable 1」はアイテム ID を示しているため、タグシステムで選択された ID を変数に格納するだけで、このコードがそれを受け取ります。apply() は渡した対象(ここではパーティのリーダー)に対して効果を実行し、applyGlobal() はアイテムの「共通イベント」効果を処理する部分です。また、useItem() は実際にインベントリからアイテムを使用する処理を行います。

知っておくと役立つ情報ですが、applyGlobal() は共通イベントをその場で実行するのではなく、予約(キューへの追加)を行います。そのため、現在のイベントが終了した時点で発動し、実行中の途中ではなく完了後に処理されます。

このコードはあなたの環境でテストしていませんが、確認すべき点として、MV は「効果がない」と判断した場合に効果をスキップする場合があります。例えば、HP が満タンのキャラクターに対して HP 回復アイテムを使用した場合などです。その場合でも、アイテムは消費される点に注意してください。

できました!!!このように設定したら、完璧に動作するようになりました。本当にありがとうございます :smiley:

ちなみに、私のゲームを試してみたい方は、「Eternal Levels」という名前で、Steamからデモをダウンロードできます。バックルームズをテーマにした2Dサバイバルゲームです: Steam:Eternal Levels