{解決済}各ウィンドウのコマンドやスキル選択不可時の文字の暗さを変更したい

godhand
記事: 19
登録日時: 2016年5月17日(火) 19:34

{解決済}各ウィンドウのコマンドやスキル選択不可時の文字の暗さを変更したい

投稿記事by godhand » 2022年11月11日(金) 22:53

こんにちは。
アイテムウィンドウやスキルウィンドウなどでアイテムが使えないときや、スキルのMPコストがなくてスキルを選択不可時などで文字が暗くなるときの色をもう少し濃くする(透明度の変更?)にはコアスクリプトのどこをいじればいいでしょうか?
選択不可時の文字色をもう少し濃くしてわかりやすくしたいなと思ってるんですがどこをいじればいいのかわからず困っています。
よろしくお願いします!
a.png
最後に編集したユーザー godhand on 2022年11月13日(日) 10:07 [ 編集 1 回目 ]

アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 各ウィンドウのコマンドやスキル選択不可時の文字の暗さを変更したい

投稿記事by Plasma Dark » 2022年11月12日(土) 12:09

選択ウィンドウにおける無効な要素をグレー表示にする、という挙動は、対象の文字列の不透明度を下げることによって実現されています。

不透明度の変更だけであれば、 Window_Base クラスの translucentOpacity メソッドを書き換えるようなプラグインを書けば良いですが、それでお望みの挙動を実現できるかどうかはわかりません。

コード: 全て選択

(() => {
  'use strict';

  Window_Base.prototype.translucentOpacity = function() {
    return 160;
  };
})();


デフォルトが160なので、この値を調整して目的が達成できるかどうか試してみてください。
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 各ウィンドウのコマンドやスキル選択不可時の文字の暗さを変更したい

投稿記事by Plasma Dark » 2022年11月12日(土) 12:13

もし、不透明度の変更だけでは目的達成できず、色指定で試したい場合は、有効かどうかで不透明度を変える changePaintOpacity を書き換えることになるかと思います。
こんな風に。

コード: 全て選択

(() => {
  'use strict';

  ColorManager.disableColor = function () {
    return "#696969";
  };

  Window_Base.prototype.changePaintOpacity = function(enabled) {
    if (enabled) {
      this.resetTextColor();
    } else {
      this.changeTextColor(ColorManager.disableColor());
    }
  };
})();


(ただし、これでは消費MPの不透明度が通常通りになってしまうので、不透明度の変更処理は残しつつ、無効な場合のみ色を変えるほうが良いかもしれません)
godhand
記事: 19
登録日時: 2016年5月17日(火) 19:34

Re: 各ウィンドウのコマンドやスキル選択不可時の文字の暗さを変更したい

投稿記事by godhand » 2022年11月12日(土) 17:13

Plasma Dark さんが書きました:選択ウィンドウにおける無効な要素をグレー表示にする、という挙動は、対象の文字列の不透明度を下げることによって実現されています。

不透明度の変更だけであれば、 Window_Base クラスの translucentOpacity メソッドを書き換えるようなプラグインを書けば良いですが、それでお望みの挙動を実現できるかどうかはわかりません。

コード: 全て選択

(() => {
  'use strict';

  Window_Base.prototype.translucentOpacity = function() {
    return 160;
  };
})();


デフォルトが160なので、この値を調整して目的が達成できるかどうか試してみてください。

Plasma Dark 様
ありがとうございます!
こちらで試しましたところ望み通りの不透明度に変更できました!





Plasma Dark さんが書きました:もし、不透明度の変更だけでは目的達成できず、色指定で試したい場合は、有効かどうかで不透明度を変える changePaintOpacity を書き換えることになるかと思います。
こんな風に。

コード: 全て選択

(() => {
  'use strict';

  ColorManager.disableColor = function () {
    return "#696969";
  };

  Window_Base.prototype.changePaintOpacity = function(enabled) {
    if (enabled) {
      this.resetTextColor();
    } else {
      this.changeTextColor(ColorManager.disableColor());
    }
  };
})();


(ただし、これでは消費MPの不透明度が通常通りになってしまうので、不透明度の変更処理は残しつつ、無効な場合のみ色を変えるほうが良いかもしれません)

↑ちなみにこちらのほうを試すと、消費MPの不透明度だけでなくスキルの文字色も変わっていませんでした。
ロード画面のセーブされてないスロットの色は変更されてたのですが^^;
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 各ウィンドウのコマンドやスキル選択不可時の文字の暗さを変更したい

投稿記事by Plasma Dark » 2022年11月12日(土) 19:14

不透明度の変更でお望みの挙動が実現できたとのことで、何よりです。

↑ちなみにこちらのほうを試すと、消費MPの不透明度だけでなくスキルの文字色も変わっていませんでした。
ロード画面のセーブされてないスロットの色は変更されてたのですが^^;


確かにそうですね……。もうちょっとコードをよく読むべきでした。
スキル名やスキルコストの描画の際に色が決められているので、色を変えたい場合はそこをうまいこと書き換えてあげないといけません。

ちょっと複雑なことをしないといけない上、今回は必要ないもののようなので具体的なコードは書かないでおきますが、方針の一例だけ書いておきます。

- drawItemNameメソッド内で resetTextColor を一時的に差し替える
- isEnableで分岐して文字色を変える
- (スキルコストも対応するなら) ColorManager.mpCostColor, ColorManager.tpCostColor を適当に差し替えるか、isEnabledで分岐して別のメソッドを呼ぶ
godhand
記事: 19
登録日時: 2016年5月17日(火) 19:34

Re: 各ウィンドウのコマンドやスキル選択不可時の文字の暗さを変更したい

投稿記事by godhand » 2022年11月12日(土) 23:22

ありがとうございます!
すみません、教えていただいたとおりコードを書き換えてみたのですが、どうもうまくいかなかったのでもういちど気が向いたときにやってみようとおもいます。
ひとまずは不透明度を変更できたのでこれにていったん解決済みとさせていただきます。
ほんとうにありがとうございました!

“MZ:質問” へ戻る