MOG_BattleHudのフェイス処理についてです

kanzume
記事: 11
登録日時: 2016年9月01日(木) 01:49

MOG_BattleHudのフェイス処理についてです

投稿記事by kanzume » 2016年9月26日(月) 11:12

お世話になります。
Atelier Rgssさんのプラグイン「MOG_BattleHud」について質問させていただきます。
https://atelierrgss.wordpress.com/rmv-battle-hud/

こちらの「8 – Eternal Sonata」をフロントビューで、フェイス画像を立ち絵に差し替えて使用しております。
「Face Flame Animation」という機能をONにし、ダメージやHP減少で立ち絵が変わる仕組みです。
(ちょうど紹介URL中段にある「ANIMATED FACES」の動画のような形です)

この「Face Flame Animation」をONにすると画像を5分割して表示されるのですが、
左から「通常」「回復時」「用途不明?」「被ダメ+瀕死時」「戦闘不能時」となっています。
(紹介URLの顔が5つ並んでる画像ですね)
これを「通常」「被ダメ+瀕死時」「ステート2にかかっている時」「ステート2で被ダメ+瀕死時」「戦闘不能時」
としたいのですが可能でしょうか?
スクリプトさっぱりなので、どうしても被ダメ時のフェイス書き換えがどこで行われているかわかりませんでした。

どなたかお力を貸していただけると幸いです。

kanzume
記事: 11
登録日時: 2016年9月01日(木) 01:49

Re: MOG_BattleHudのフェイス処理についてです

投稿記事by kanzume » 2016年9月30日(金) 04:28

お世話になります。
無知なりに以前質問させていただいた「MOG_BattleHud」をいじってたところ、
解決した点とできなかった点が出てきたため連投させていただきます。

■戦闘中の立ち絵の表情を変えたい→解決。

コード: 全て選択

Battle_Hud.prototype.update_face_animation = function() {
   if (this._battler._bhud_face_data[3] > 0) {this._battler._bhud_face_data[3] -= 1;
       if (this._battler._bhud_face_data[3] === 0) {
         if (this._battler.isDead()) {this._battler._bhud_face_data[2] = 4}
         else if (this._battler.hp <= 30 * this._battler.mhp / 100) {this._battler._bhud_face_data[2] = 3}
         else {this._battler._bhud_face_data[2] = 0};
         };
   };
};

の記述を

コード: 全て選択

Battle_Hud.prototype.update_face_animation = function() {
 if (this._battler._bhud_face_data[3] > 0) {this._battler._bhud_face_data[3] -= 1;
     if (this._battler._bhud_face_data[3] === 0) {
   if (this._battler.isDead()) {this._battler._bhud_face_data[2] = 4}
   else if ((this._battler._states[0] == 2) && (this._battler.hp <= 30 * this._battler.mhp / 100)) {this._battler._bhud_face_data[2] = 3}//■瀕死&ステート2の時立ち絵を3番に。成功!
   else if (this._battler._states[0] == 2) {this._battler._bhud_face_data[2] = 2}//■ステート2の時立ち絵を2番に。成功!
   else if (this._battler.hp <= 30 * this._battler.mhp / 100) {this._battler._bhud_face_data[2] = 1}//■瀕死時の立ち絵を1番に。成功!
   else {this._battler._bhud_face_data[2] = 0};
   };
 };
};

に変更することで、状態異常時に立ち絵が変わるようにできました。こちらに関しては解決しました。

■ダメージ時の立ち絵変更
「MOG_BattleHud」ではフェイスアニメをONにすると、ダメージ時に瀕死時と同じ立ち絵になります。
これも上記の立ち絵と同じような記述にしたところ、うまくいきませんでした。

コード: 全て選択

//=============================================================================
// ** Game Action
//=============================================================================

//==============================
// * Apply
//==============================
var _alias_mog_bhud_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
    var oldhp = target.hp
    _alias_mog_bhud_apply.call(this,target);
    if (target.isActor()) {
       if ((this._battler._states[0] == 2) && (oldhp > target.hp)) {target._bhud_face_data = [30,20,3,30]}//■ステート2でダメージ時は3番の立ち絵にしたいが失敗…
       else if (oldhp > target.hp) {target._bhud_face_data = [30,20,1,30]};//■ステート2以外でのダメージでは1番の立ち絵に
//       if (oldhp > target.hp) {target._bhud_face_data = [30,20,3,30]} ■本来はダメージで3番の立ち絵に変更
//       else if (oldhp < target.hp) {target._bhud_face_data = [0,20,1,30]};■本来は回復で1番の立ち絵になる
    };
};

こうするとツクールで起動した時、
TypeError Cannot read property '_states' of undefind
と出てしまいます。
立ち絵表示ではうまくいったステート表記ですが、なぜダメージ表現時にはエラーになるんでしょうか?
プログラム知識がないため頓珍漢なことを書いているのかもしれませんが、どなたかご教授いただけると幸いです。
kanzume
記事: 11
登録日時: 2016年9月01日(木) 01:49

Re: MOG_BattleHudのフェイス処理についてです

投稿記事by kanzume » 2016年10月03日(月) 17:07

フェイス切り替えの問題ですが自己解決しました。
失礼しました。
あみお
記事: 44
登録日時: 2015年12月13日(日) 09:53

Re: MOG_BattleHudのフェイス処理についてです

投稿記事by あみお » 2017年5月06日(土) 17:13

自分も同じような状況で躓いています。
もし見ていたら助言お願いします。
自分は回復アイテムや回復スキル使用時に2番目の表情になる仕様をカットしたいのです。(2番目の表情自体は別の用途に使用したい)
回復で変化しない方法をお願いします。
kanzume
記事: 11
登録日時: 2016年9月01日(木) 01:49

Re: MOG_BattleHudのフェイス処理についてです

投稿記事by kanzume » 2018年1月27日(土) 20:40

>あみおさん
しばらくログインせず気付くのが遅くなってしまい申し訳ありません。
自分もjavaはわからないので手探りでの回答になってしまいますが、
おそらく回復時の画像処理は下記の部分だと思います。

コード: 全て選択

//=============================================================================
// ** Game Action
//=============================================================================

//==============================
// * Apply
//==============================
var _alias_mog_bhud_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
    var oldhp = target.hp
    _alias_mog_bhud_apply.call(this,target);
    if (target.isActor()) {
       if (oldhp > target.hp) {target._bhud_face_data = [30,20,3,30]}
       else if (oldhp < target.hp) {target._bhud_face_data = [0,20,1,30]};
    };
};


この「else if (oldhp < target.hp)……[0,20,1,30]};」が「回復時に(0番開始で数えて)1番の表情にする」でした。
なので上記を [0,20,0,30] に変更すれば回復で表情が変わらなくなるはずです。

“MV:質問” へ戻る