ページ 11

【解決済み】ショップ売却シーンで、「大事なもの」カテゴリ自体を非表示にしたい

Posted: 2022年10月05日(水) 23:36
by はあちむ
はじめまして。
ショップ売却シーンで、「大事なもの」カテゴリ自体を非表示にしたいのですが、
できずに困っております。
jsファイルへの書き足し等で実装できないかと思っております。
わからないなりに、
const _Scene_ShopWindowRect =  で色々試しているのですが、
なかなかできずに困っております…。

お分かりになる方がいましたら、何卒宜しくお願いいたします。

Re: ショップ売却シーンで、「大事なもの」カテゴリ自体を非表示にしたい

Posted: 2022年10月06日(木) 01:17
by 名無し蛙
考え方としてはrmmz_windows.jsの2119行目を見てください。
Window_ItemCategoryのmakeCommandList内

コード: 全て選択

Window_ItemCategory.prototype.makeCommandList = function() {
    if (this.needsCommand("item")) {
        this.addCommand(TextManager.item, "item");
    }
    if (this.needsCommand("weapon")) {
        this.addCommand(TextManager.weapon, "weapon");
    }
    if (this.needsCommand("armor")) {
        this.addCommand(TextManager.armor, "armor");
    }
    if (this.needsCommand("keyItem")) {
        this.addCommand(TextManager.keyItem, "keyItem");
    }
};
ここのthis.addCommand(TextManager.keyItem, "keyItem");をコメントアウトすれば
「大事なもの」が消える事を確認出来ると思います。
アイテムカテゴリウィンドウはアイテム画面と共用なので他に影響が出ないように
「今現在がショップシーンでなければ」という条件分岐さえ作れば希望の仕様になるという事です。
実装方法自体はいくつかありますけど一番簡単な方法は
現在シーン(SceneManager._scene)をinstanceofで広義の型チェックに掛ける事だと思います。
プラグインに切り出してしまうとこんな感じですね。

コード: 全て選択

/*:
 * @target MZ
 */

(() => {
    'use strict'

    Window_ItemCategory.prototype.makeCommandList = function() {
        if (this.needsCommand("item")) {
            this.addCommand(TextManager.item, "item");
        }
        if (this.needsCommand("weapon")) {
            this.addCommand(TextManager.weapon, "weapon");
        }
        if (this.needsCommand("armor")) {
            this.addCommand(TextManager.armor, "armor");
        }
        // 現在シーンがScene_Shopで無ければ
        if (!(SceneManager._scene instanceof Scene_Shop)) {
            if (this.needsCommand("keyItem")) {
                this.addCommand(TextManager.keyItem, "keyItem");
            }
        }
    };
})();

Re: 【解決】ショップ売却シーンで、「大事なもの」カテゴリ自体を非表示にしたい

Posted: 2022年10月31日(月) 03:18
by はあちむ
名無し蛙様
お礼が遅くなり申し訳ありませんでした…!
無事、実装することができました!
お忙しい中ご教授下さりありがとうございました。