ページ 11

【RGSS3】戦闘中、エネミー選択時にHP・MP等の表示

Posted: 2020年5月31日(日) 20:51
by せくもん
いつもお世話になっております。

現在製作中のゲームではWindow_BattleEnemyスクリプトの24~29行目を

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● 桁数の取得
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
 

のように改変し、攻撃対象のエネミーを選択する際にディフォルトの

スライムA スライムB
スライムC

ではなく

スライムA
スライムB
スライムC

と、縦に1体づつ表示する形式に変更しているのですが、この状態だと
エネミーの名前の右側にかなりの余白部分が発生します。
この余白部分にアクターと同様にステートのアイコンやHP・MP・TPのゲージを表示したいのですが
どのように設定したらよろしいのでしょうか?

Re: 【RGSS3】戦闘中、エネミー選択時にHP・MP等の表示

Posted: 2021年4月01日(木) 21:56
by せくもん
↓こちらのトピックでTOMO様が制作したスクリプトを基に

https://tm.lucky-duet.com/viewtopic.php?f=46&t=4687

↓の様に手を加えてみました。

コード: 全て選択

class Window_BattleEnemy
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  alias tomo_enemy_hp_gauge_draw_item draw_item
  def draw_item(index)
    rect = item_rect_for_text(index)
    draw_gauge(rect.x + 0, rect.y, 72,
    $game_troop.alive_members[index].hp_rate, hp_gauge_color1, hp_gauge_color2)
    draw_gauge(rect.x + 82, rect.y, 64,
    $game_troop.alive_members[index].mp_rate, mp_gauge_color1, mp_gauge_color2)
    draw_gauge(rect.x + 156, rect.y, 64,
    $game_troop.alive_members[index].tp_rate, tp_gauge_color1, tp_gauge_color2)
    tomo_enemy_hp_gauge_draw_item(index)
  end
end


ゲージの位置に関しては『rect.x + 』の右の数値で調整できそうですが
ここにアクターの選択肢の様にステートのアイコンを追加したり
HPやMPの値を数字で表示するには、どうすればよいでしょうか?

download/file.php?mode=view&id=17745

Re: 【RGSS3】戦闘中、エネミー選択時にHP・MP等の表示

Posted: 2021年4月02日(金) 03:14
by 名無し蛙
どうもこんばんは
軽く見る限りゲージ表示も含めてデフォルトで用意されているこちらを使用した方が良いでしょうね

コード: 全て選択

def draw_actor_hp(actor, x, y, width = 124)
def draw_actor_mp(actor, x, y, width = 124)
def draw_actor_tp(actor, x, y, width = 124)
def draw_actor_icons(actor, x, y, width = 96)

メソッド名にactorと付いてますが中身はbattler共通部分の処理しか使用していないので流用可能です
ただし、actorのパラメータ表示メソッドにそのままenemyを突っ込むのは行儀が悪いので
最低限別名定義くらいした方が良いかな

コード: 全て選択

class Window_BattleEnemy < Window_Selectable
  #--------------------------------------------------------------------------
  # ○ 桁数の取得
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
  #--------------------------------------------------------------------------
  # ○ 項目の描画
  #--------------------------------------------------------------------------
  alias :draw_enemy_hp :draw_actor_hp
  alias :draw_enemy_mp :draw_actor_mp
  alias :draw_enemy_tp :draw_actor_tp
  alias :draw_enemy_icons :draw_actor_icons
  alias :_old_draw_item :draw_item
  def draw_item(index)
    rect = item_rect_for_text(index)
    enemy = $game_troop.alive_members[index]
    draw_enemy_hp(enemy, rect.x + 110, rect.y, 72)
    draw_enemy_mp(enemy, rect.x + 192, rect.y, 64)
    draw_enemy_tp(enemy, rect.x + 266, rect.y, 64)
    draw_enemy_icons(enemy, rect.x + 340, rect.y, rect.width - 340)
    _old_draw_item(index)
  end
end

Re: 【RGSS3】戦闘中、エネミー選択時にHP・MP等の表示

Posted: 2021年4月02日(金) 22:17
by せくもん
名無し蛙様、ご返答ありがとうございます。

ご制作いただいたスクリプトを導入したところ
大分イメージ通りのデザインに変更することが出来ました。
ただ、そのままだと名前の長いエネミー名がHPのゲージに被ったり
アイコンを左側に移動すると無数にアイコンが表示されてしまう為
こちらで少し手を加えさせていただきました。

コード: 全て選択

class Window_BattleEnemy
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  alias :draw_enemy_hp :draw_actor_hp
  alias :draw_enemy_mp :draw_actor_mp
  alias :draw_enemy_tp :draw_actor_tp
  alias :draw_enemy_icons :draw_actor_icons
  alias :_old_draw_item :draw_item
  def draw_item(index)
   rect = item_rect_for_text(index)
   enemy =
   $game_troop.alive_members[index]
   draw_enemy_hp(enemy,rect.x + 222, rect.y, 56)
   draw_enemy_mp(enemy,rect.x + 283, rect.y, 48)
   draw_enemy_tp(enemy,rect.x + 336, rect.y, 48)
   draw_enemy_icons(enemy,rect.x + 166, rect.y, 48)
   _old_draw_item(index)
  end
end


どうもありがとうございました。

download/file.php?mode=view&id=17755