ページ 11

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

Posted: 2017年5月17日(水) 20:01
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])) {

を記述しましたがうまくいきませんでした。

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

Posted: 2017年5月17日(水) 20:57
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ゲージが表示されません。

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

Posted: 2017年5月17日(水) 21:27
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');
};
ありがとうございます!無事に動作を確認しました。
こんな簡単なことだとは思いませんでした。
非常に悔しいです。