(解決済み)戦闘時にアイテムを使用した時に、アイテムのアイコンを表示させたい

ぺんぺん

ユーザー
投稿失礼いたします、環境はMVになります。
戦闘時にアイテムを使用した場合、用語に設定された「%1は%2を使った!」が表示されますが、できれば「\I[5]%1は%2を使った!」のように使用したアイテムのアイコンを先頭に表示できれば・・・と考えております。

以下のプラグインなどをご利用させていただこうとおもったのですが、用途が違うのか、私の利用方法が違うのか実現にはいたっていない状況になります・・・。https://plugin.fungamemake.com/archives/19471

\ポーション
\I[ポーション]
...
などいろいろ試してみましたが動かず・・・

1.他の手法があるか
2.このプラグインで解決できるか

大変恐縮ではございますが、どなかた上記につきましてにご知見をいただけないでしょうか・・・。
 

Attachments

  • 1.png
    1.png
    114.5 KB · 閲覧: 33
  • 2.png
    2.png
    5.7 KB · 閲覧: 40
戦闘ログはツクールの中でも特殊な仕組みで動いているので、通常のウィンドウ向けのプラグインは使えないことが多いです。
ご提示いただいた BB_ItemIcon.js も例に漏れず、戦闘ログの行動表示に対しては特に効果がありません。

戦闘ログ内でアイコンを表示する、というだけであれば
rpg_windows.js Window_BattleLog.prototype.displayAction とその関連コードを読んでプラグインを書く(あるいは人に依頼して書いてもらう)のが手っ取り早いと思います。
itemが渡されているのでアイコンのインデックスは取得できるし、公式プラグインの SimpleMsgSideView.js を参考にdrawTextExを使うなりdrawIconを使うなりで、アイコン描画は可能です。
 
DarkPlasma様
この度はご返信およびご教示いただきありがとうございます。

そうなのですね!ご教示いただいた通り関連コードを読んでプラグインを書くか、プラグイン依頼を行ってみたいと思います。

お忙しい中ご返信いただき本当にありがとうございます!
 
こちらのスレッドは既に解決済みとなっていますが、個人的な興味から『RPGツクールMV』における表題の件について検証してみましたので閲覧者向けに共有したいと思います。
 検証環境は以下になります。

RPGツクールMV(コアスクリプトv1.6.2)


 今回は新規プラグインを作成して対応します。念のためプラグインファイルの作成方法も以下に付記しておきます(『RPGツクールMZ』向けの情報をコピペしていますが、下記のテンプレートは『RPGツクールMV』でも動作します)。
1. 任意のテキストエディタを用意します(メモ帳でも可。その場合は編集後に拡張子を「js」に変更します)。

2. 新規のテキストファイルを作成します。

3. ファイル内に以下のようなテンプレートを入力します。「@」から始まる文字列はアノテーションと呼ばれる識別用の注釈です。個人利用であれば @target MZ だけでも十分です。アノテーションの詳細については『RPGツクールMZ』公式サイトを参考にしてください。


コード:
/*:ja
 * @target MZ
 * @plugindesc エディターで表示される説明を入力します。
 * @author プラグインの製作者(新規プラグインなので自分の名前を入力しましょう)
 * @url エディターからブラウザに飛べるリンクを作成します。日本語を含むURLは変換されて長くなります。
 *
 * @help プラグインの設定画面でのヘルプ欄に表示する文章を入力します。機能の詳細などが一般的です。
 *
 */

4. 以下のように JavaScript の即時実行関数式を入力します。 ※現在では主にプラグインの競合対策として一般的な方式ですが『RPGツクールMV』用の古いプラグインなどではその限りではないため、古いプラグインの利用時は注意が必要です。
JavaScript:
(() => {
    "use strict";

    // ここからコードを入力していきます。

})();

5. プラグインを作成する準備ができました!

 戦闘シーンでアイテムを使用した時、バトルログの行の戦闘にアイテムのアイコンを表示するということで、まずプラグインファイル内には以下のコードを入力します。
JavaScript:
    // 『RPGツクールMV』のコードの応用。
    Window_BattleLog.prototype.drawItemIcon = function(iconIndex) {
        return "\x1b" + "I" + "[" + iconIndex + "]";
    };
 Window_BattleLog 関数にアイコン描画用の新規メソッドを定義します。戻り値に『RPGツクールMV』のデータベースで扱っているような制御文字を設定します。最大限に文字列を分解していますが、ダブルクォーテーション内の文字列同士は "\x1bI[" のような感じでくっつけても良いです。

 次はコアスクリプトの以下のメソッドを上書きするため、コアスクリプトからプラグインファイル内へコピペします。
JavaScript:
    // 『RPGツクールMV』v1.6.2
    Window_BattleLog.prototype.displayAction = function(subject, item) {
        var numMethods = this._methods.length;
        if (DataManager.isSkill(item)) {
            if (item.message1) {
                this.push('addText', subject.name() + item.message1.format(item.name));
            }
            if (item.message2) {
                this.push('addText', item.message2.format(item.name));
            }
        } else {
              this.push('addText', TextManager.useItem.format(subject.name(), item.name));
        }
        if (this._methods.length === numMethods) {
            this.push('wait');
        }
    };
 else 文の中がアイテム使用時の処理です。ここを以下のように改変します。

Rich (BB code):
    // 変更前のコード。
    this.push('addText', TextManager.useItem.format(subject.name(), item.name));

    // 変更後のコード。赤字が追加部分。
    this.push('addText', this.drawItemIcon(item.iconIndex) + TextManager.useItem.format(subject.name(), item.name));
 処理内でアイテムがオブジェクトとして渡されていたため、アイコンの番号を取得できました。これを先ほどのメソッドで制御文字として成立させ、アイテムのアイコンを表示させます。
 実際の戦闘では以下の画像のようにデータベースで設定したアイコンがバトルログに反映されていることを確認できました。

2026-03-20-01.png

2026-03-20-02.png
2026-03-20-03.png


 以上となります。よろしければお試しください。
 
こちらご確認が遅れて大変もうしわけございません!!
本当にありがとうございます!こちらプラグインを実装及び導入したところ、期待する動作が確認できました!

ご丁寧に説明およびご教示いただき感謝しかございません!

貴重なお時間をさいていただき、重ねて感謝を申し上げます!
この度はありがとうございました・・・!
 
Back
トップ