ゲージの非表示を条件で分岐する。

返信する
アバター
エコー
記事: 35
登録日時: 2016年6月14日(火) 09:25

ゲージの非表示を条件で分岐する。

投稿記事 by エコー »

こんにちは。
こちらのトピックでまだ解決に至らず、横ヤリになってしまうと申し訳ないので別で立てさせていただきました。
http://tm.yumineko.com/viewtopic.php?f=23&t=3796
トリアコンタンさんの提示してくださったコードでゲージの非表示を確認できたので、ひょっとしたらあの方法も可能かもしれないと思い質問させていただきました。
このゲージの非表示をクラス(現在の職業)ごとに指定する方法はどうやればいいでしょうか?
現在製作中のゲームで魔法使いというクラスだけはMPのみを使い、TPは使わないという設定にしているのですが、TPゲージがあると不自然に感じていたところです。
また逆にウォーリアー系はMPを全く使わないのにMPゲージが表示されているのも不自然でたまりません。
ですので、アクターのクラスを条件に「表示、非表示」をさせたいと思っています。
簡単そうでいろいろ調べてみたのですが、クラスを指定する方法がわからず・・・
よろしければ教えてくださるとありがたいです。

追記:ちなみにWindow_Base.prototype.drawActorTpより下に、

if ($gameActors.actor(1).isClass($dataClasses[2])) {

を記述しましたがうまくいきませんでした。
アバター
フトコロ
記事: 1029
登録日時: 2017年2月06日(月) 21:32

Re: ゲージの非表示を条件で分岐する。

投稿記事 by フトコロ »

こんにちは。
エコー さんが書きました:追記:ちなみにWindow_Base.prototype.drawActorTpより下に、

if ($gameActors.actor(1).isClass($dataClasses[2])) {

を記述しましたがうまくいきませんでした。
アクターのクラスIDは「_classId」で取得できます。
例)
$gameActors.actor(x)._classId  :アクターID x のクラスID

$gameParty.members()[n]._classId:n番目のパーティーメンバーのクラスID(先頭が0番)

なお、drawActorTp関数内の場合は、引数のactorがアクターのゲームデータを参照しているので、以下を追加するといいと思います。

コード: 全て選択

Window_Base.prototype.drawActorTp = function(actor, x, y, width) {
    if (actor._classId !== 2) return;//追加
    width = width || 96;
    var color1 = this.tpGaugeColor1();
    var color2 = this.tpGaugeColor2();
    this.drawGauge(x, y, width, actor.tpRate(), color1, color2);
    this.changeTextColor(this.systemColor());
    this.drawText(TextManager.tpA, x, y, 44);
    this.changeTextColor(this.tpColor(actor));
    this.drawText(actor.tp, x + width - 64, y, 64, 'right');
};
これで、クラスIDが 2 以外はTPゲージが表示されません。
---------------------------------------------------------------------------------------------------
プラグイン置き場(GitHub)
https://github.com/futokoro/RPGMaker/bl ... /README.md

検討中の内容は上記リンク先の「対応するかもしれないプラグインのメモ」を参照してください。
アバター
エコー
記事: 35
登録日時: 2016年6月14日(火) 09:25

Re: ゲージの非表示を条件で分岐する。

投稿記事 by エコー »

>>フトコロ様

コード: 全て選択

Window_Base.prototype.drawActorTp = function(actor, x, y, width) {
    if (actor._classId !== 2) return;//追加
    width = width || 96;
    var color1 = this.tpGaugeColor1();
    var color2 = this.tpGaugeColor2();
    this.drawGauge(x, y, width, actor.tpRate(), color1, color2);
    this.changeTextColor(this.systemColor());
    this.drawText(TextManager.tpA, x, y, 44);
    this.changeTextColor(this.tpColor(actor));
    this.drawText(actor.tp, x + width - 64, y, 64, 'right');
};
ありがとうございます!無事に動作を確認しました。
こんな簡単なことだとは思いませんでした。
非常に悔しいです。
返信する

“MV:質問”に戻る