<<解決済>>【RGSS2】ダメージに単位を付けたいのですが・・・。

Mirin
記事: 38
登録日時: 2018年10月20日(土) 15:52

<<解決済>>【RGSS2】ダメージに単位を付けたいのですが・・・。

投稿記事by Mirin » 2021年2月25日(木) 19:50

下記URLを使用しようとするのですが、HP吸収、MP吸収の設定がわからない状態です。
製作者さんに複数回メールで送っていますが、返信がなく諦めよう。と思ったのですが、
コチラに投稿させていただきました。
http://rpgツクールvx.seesaa.net/article/220953643.html


現在の状況:HP/ MPダメージをできたのですが、回復の設定がわからない状態です。
状態:回復スキルを使用すると、「キャラ名は -10000万のダメージを受けた!」と表示されますが回復はしている状態ですHP/MPも同じ設定になっています。
どうか、よろしくおねがいします。

コード: 全て選択

#==============================================================================
# ■ Vocab
#------------------------------------------------------------------------------
#  用語とメッセージを定義するモジュールです。定数でメッセージなどを直接定義す
# るほか、グローバル変数 $data_system から用語データを取得します。
#==============================================================================

module Vocab
  # アクター対象の行動結果
  ActorDamage     = "%sは %s%s のダメージを受けた!"
  ActorLoss       = "%sの%sが %s 減った!"
  ActorDrain      = "%sは%sを %s 奪われた!"
  ActorNoDamage   = "%sはダメージを受けていない!"
  ActorNoHit      = "%sに命中しなかった……。"
  ActorEvasion    = "%sは回避した。"
  ActorRecovery   = "%sの%sが %s%s 回復した!"

  # 敵キャラ対象の行動結果
  EnemyDamage     = "%sに %s%s のダメージを与えた!"
  EnemyLoss       = "%sの%sが %s 減った!"
  EnemyDrain      = "%sの%sを %s 奪った!"
  EnemyNoDamage   = "%sに攻撃が効かない。"
  EnemyNoHit      = "%sに命中しなかった……。"
  EnemyEvasion    = "%sは回避した。"
  EnemyRecovery   = "%sの%sが %s 回復した!"

コード: 全て選択

  #--------------------------------------------------------------------------
  # ○ HP ダメージ表示
  #     target : 対象者
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_hp_damage(target, obj = nil)
    if target.hp_damage == 0                # ノーダメージ
      return if obj != nil and obj.damage_to_mp
      return if obj != nil and obj.base_damage == 0
      fmt = target.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
      text = sprintf(fmt, target.name)
    elsif target.absorbed                  # 吸収
      fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      text = sprintf(fmt, target.name, Vocab::hp, target.hp_damage)
    elsif target.hp_damage < 9999 #9999ダメージまで
      if target.actor?
        text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage, ' ')
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage, ' ')
        Sound.play_enemy_damage
        target.blink = true
      end
    elsif target.hp_damage > 9999 and target.hp_damage < 100000000 #1万~1億未満
      if target.actor?
        text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage / 10000,'万')
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage / 10000,'万')
        Sound.play_enemy_damage
        target.blink = true
      end
    elsif target.hp_damage > 100000000 and target.hp_damage < 1000000000000 #1億~1京未満
      if target.actor?
        text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage / 1000000000, '億')
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage / 1000000000, '億')
        Sound.play_enemy_damage
        target.blink = true
      end
    else                                    # 回復
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::hp, -target.hp_damage)
      Sound.play_recovery
    end
    @message_window.add_instant_text(text)
    wait(30)
  end
最後に編集したユーザー Mirin on 2021年5月24日(月) 17:52 [ 編集 2 回目 ]

faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: 【RGSS2】ダメージに単位を付けたいのですが・・・。

投稿記事by faida » 2021年2月25日(木) 21:29

こんばんは。

コード: 全て選択

elsif target.hp_damage < 9999 #9999ダメージまで
この部分がありますが、この条件分岐だと回復(target.hp_damage < 0)も含むため、
記載された現象が起きていると思われます。

なので該当部分を

コード: 全て選択

elsif target.hp_damage > 0 and target.hp_damage < 9999 #9999ダメージまで
にしたうえで、

コード: 全て選択

elsif target.hp_damage > -9999 #9999回復まで
(中略)
 elsif target.hp_damage < -9999 and target.hp_damage > -100000000 #1万~1億未満
 (中略)
 elsif target.hp_damage < -100000000 and target.hp_damage > -1000000000000 #1億~1京未満
のように回復条件を追加するとよいでしょう。
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
Mirin
記事: 38
登録日時: 2018年10月20日(土) 15:52

Re: 【RGSS2】ダメージに単位を付けたいのですが・・・。

投稿記事by Mirin » 2021年2月25日(木) 22:14

返信ありがとうございます。
これらのコードはVX純正スクリプトからの抜粋です。
回復というところに、下記コードをいれればいいのですか?

コード: 全て選択

elsif target.hp_damage > -9999 #9999回復まで
(中略)
 elsif target.hp_damage < -9999 and target.hp_damage > -100000000 #1万~1億未満
 (中略)
 elsif target.hp_damage < -100000000 and target.hp_damage > -1000000000000 #1億~1京未満
 


下記のような感じでしょうか?

コード: 全て選択

  #--------------------------------------------------------------------------
  # ○ HP ダメージ表示
  #     target : 対象者
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_hp_damage(target, obj = nil)
    if target.hp_damage == 0                # ノーダメージ
      return if obj != nil and obj.damage_to_mp
      return if obj != nil and obj.base_damage == 0
      fmt = target.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
      text = sprintf(fmt, target.name)
    elsif target.absorbed                  # 吸収
      fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      text = sprintf(fmt, target.name, Vocab::hp, target.hp_damage)
    elsif target.hp_damage > 0 and target.hp_damage < 9999 #9999ダメージまで
      if target.actor?
        text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage, ' ')
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage, ' ')
        Sound.play_enemy_damage
        target.blink = true
      end
    elsif target.hp_damage > -9999 #9999ダメージまで
      if target.actor?
        text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage, ' ')
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage, ' ')
        Sound.play_enemy_damage
        target.blink = true
      end
    elsif target.hp_damage < -9999 and target.hp_damage > -100000000 #1万~1億未満
      if target.actor?
        text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage / 10000,'万')
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage / 10000,'万')
        Sound.play_enemy_damage
        target.blink = true
      end
    elsif target.hp_damage < -100000000 and target.hp_damage > -1000000000000 #1億~1京
      if target.actor?
        text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage / 1000000000, '億')
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage / 1000000000, '億')
        Sound.play_enemy_damage
        target.blink = true
      end
    else                                    # 回復
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::hp, -target.hp_damage)
      Sound.play_recovery
    end
    @message_window.add_instant_text(text)
    wait(30)
  end
faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: 【RGSS2】ダメージに単位を付けたいのですが・・・。

投稿記事by faida » 2021年2月25日(木) 22:43

大体そのような感じですね。
あとは回復メッセージに変更すれば大丈夫そうです。
※条件文のダメージの値を一部修正しました。

コード: 全て選択

  #--------------------------------------------------------------------------
  # ○ HP ダメージ表示
  #     target : 対象者
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_hp_damage(target, obj = nil)
    if target.hp_damage == 0                # ノーダメージ
      return if obj != nil and obj.damage_to_mp
      return if obj != nil and obj.base_damage == 0
      fmt = target.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
      text = sprintf(fmt, target.name)
    elsif target.absorbed                  # 吸収
      fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      text = sprintf(fmt, target.name, Vocab::hp, target.hp_damage)
    # ダメージ
    elsif target.hp_damage > 0 and target.hp_damage <= 9999 #9999ダメージまで
      if target.actor?
        text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage, ' ')
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage, ' ')
        Sound.play_enemy_damage
        target.blink = true
      end
    elsif target.hp_damage > 9999 and target.hp_damage < 100000000 #1万~1億未満
      if target.actor?
        text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage / 10000,'万')
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage / 10000,'万')
        Sound.play_enemy_damage
        target.blink = true
      end
    elsif target.hp_damage > 99999999 and target.hp_damage < 1000000000000 #1億~1京未満
      if target.actor?
        text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage / 1000000000, '億')
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage / 1000000000, '億')
        Sound.play_enemy_damage
        target.blink = true
      end
    # 回復
    elsif target.hp_damage < 0 and target.hp_damage => -9999 #9999回復まで
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::hp, -target.hp_damage, ' ')
      Sound.play_recovery
    elsif target.hp_damage < -9999 and target.hp_damage > -100000000 #1万~1億未満
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::hp, -target.hp_damage / 10000, '万')
      Sound.play_recovery
    elsif target.hp_damage < -99999999 and target.hp_damage > -1000000000000 #1億~1京
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::hp, -target.hp_damage / 1000000000, '億')
      Sound.play_recovery
    end
    @message_window.add_instant_text(text)
    wait(30)
  end
※22:50 エフェクトがおかしいので修正

※共通化できるところは共通化したほうがいいような気がした版

コード: 全て選択

  #--------------------------------------------------------------------------
  # ○ HP ダメージ表示
  #     target : 対象者
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_hp_damage(target, obj = nil)
    if target.hp_damage == 0                # ノーダメージ
      return if obj != nil and obj.damage_to_mp
      return if obj != nil and obj.base_damage == 0
      fmt = target.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
      text = sprintf(fmt, target.name)
    elsif target.absorbed                  # 吸収
      fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      text = sprintf(fmt, target.name, Vocab::hp, target.hp_damage)
    # ダメージ
    elsif target.hp_damage > 0
      if target.hp_damage > 99999999 # 億
        digit = '億'
        value = target.hp_damage / 100000000
      elsif target.hp_damage > 9999
        digit = '万'
        value = target.hp_damage / 10000
      else
        digit = ' '
        value = target.hp_damage
      end
      fmt = target.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
      text = sprintf(fmt, target.name, value, digit)
      if target.actor?
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        Sound.play_enemy_damage
        target.blink = true
      end
    # 回復
    else target.hp_damage < 0
      if target.hp_damage < -99999999 # 億
        digit = '億'
        value = target.hp_damage / 100000000
      elsif target.hp_damage < -9999
        digit = '万'
        value = target.hp_damage / 10000
      else
        digit = ' '
        value = target.hp_damage
      end
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::hp, -value, digit)
      Sound.play_recovery
    end
    @message_window.add_instant_text(text)
    wait(30)
  end
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
Mirin
記事: 38
登録日時: 2018年10月20日(土) 15:52

Re: 【RGSS2】ダメージに単位を付けたいのですが・・・。

投稿記事by Mirin » 2021年2月25日(木) 23:13

1番目と2番目(共通化)ありがとうございます。
1,2番目の動作確認で回復、ダメも万と表示しました。(共通化が、わかりやすく使用させていただきます。)

キャラがHP/ MP吸収スキルを使用すると2桁と表示されるので、別対応が必要なのかな?と思いました。

コード: 全て選択

Vocab
  ActorLoss       = "%sの%sが %s 減った!"#%s1個のみ
  ActorDrain      = "%sは%sを %s 奪われた!"
  (中略)
  EnemyLoss       = "%sの%sが %s 減った!"#%s1個のみ
  EnemyDrain      = "%sの%sを %s 奪った!"
faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: 【RGSS2】ダメージに単位を付けたいのですが・・・。

投稿記事by faida » 2021年2月25日(木) 23:58

吸収も対応するなら、メッセージの部分は%sを2つにした上で

コード: 全て選択

    elsif target.absorbed                  # 吸収
      if target.hp_damage > 99999999 # 億
        digit = '億'
        value = target.hp_damage / 100000000
      elsif target.hp_damage > 9999
        digit = '万'
        value = target.hp_damage / 10000
      else
        digit = ' '
        value = target.hp_damage
      end
      fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      text = sprintf(fmt, target.name, Vocab::hp, value, digit)
と変更するとできるはずです。

ちなみにメッセージの○○LossはMPダメージの時の文章ですね。
これも同様の対応をすると単位がつくはずです。
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
Mirin
記事: 38
登録日時: 2018年10月20日(土) 15:52

Re: 【RGSS2】ダメージに単位を付けたいのですが・・・。

投稿記事by Mirin » 2021年2月26日(金) 00:58

なんども連絡して、すみません。
MP3ダメージは、こんな感じかな?と思いましたが何かが違うらしく。
ご伝授お願い致します。

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● MP ダメージ表示
  #     target : 対象者
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_mp_damage(target, obj = nil)
    return if target.dead?
    return if target.mp_damage == 0
    elsif target.absorbed                      # 吸収
      if target.mp_damage > 99999999 #億
        digit = '億'
        value = target.mp_damage / 100000000
      elsif target.mp_damage > 9999
        digit = '万'
        value = target.mp_damage / 10000
      else
        digit = ' '
        value = target.mp_damage
      end
      fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      text = sprintf(fmt, target.name, Vocab::mp, value, digit)
    # MPダメージ
    elsif target.mp_damage > 0              # 9999ダメージまで
      if target.mp_damage > 99999999 #億
        digit = '億'
        value = target.mp_damage / 100000000
      elsif target.mp_damage > 9999
        digit = '万'
        value = target.mp_damage / 10000
      else
        digit = ' '
        value = target.mp_damage
      end
      fmt = target.actor? ? Vocab::ActorLoss : Vocab::EnemyLoss
      text = sprintf(fmt, target.name, value, digit)
      if target.actor?
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        Sound.play_enemy_damage
        target.blink = true
      end
    # 回復
    elsif target.mp_damage > 0              # 9999ダメージまで
      if target.mp_damage > 99999999 #億
        digit = '億'
        value = target.mp_damage / 100000000
      elsif target.mp_damage > 9999
        digit = '万'
        value = target.mp_damage / 10000
      else
        digit = ' '
        value = target.mp_damage
      end
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::mp, -value, digit)
      Sound.play_recovery
    end
    @message_window.add_instant_text(text)
    wait(30)
  end
faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: 【RGSS2】ダメージに単位を付けたいのですが・・・。

投稿記事by faida » 2021年2月26日(金) 13:12

回復の部分がダメージのものと同じだったので、回復がうまくいかないと思われます。
また、条件文の一部にも不具合があったので、そこも併せて修正したものが以下です。

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● MP ダメージ表示
  #     target : 対象者
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_mp_damage(target, obj = nil)
    return if target.dead?
    return if target.mp_damage == 0
    if target.absorbed                      # 吸収
      if target.mp_damage > 99999999 #億
        digit = '億'
        value = target.mp_damage / 100000000
      elsif target.mp_damage > 9999
        digit = '万'
        value = target.mp_damage / 10000
      else
        digit = ' '
        value = target.mp_damage
      end
      fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      text = sprintf(fmt, target.name, Vocab::mp, value, digit)
    # MPダメージ
    elsif target.mp_damage > 0              # 9999ダメージまで
      if target.mp_damage > 99999999 #億
        digit = '億'
        value = target.mp_damage / 100000000
      elsif target.mp_damage > 9999
        digit = '万'
        value = target.mp_damage / 10000
      else
        digit = ' '
        value = target.mp_damage
      end
      fmt = target.actor? ? Vocab::ActorLoss : Vocab::EnemyLoss
      text = sprintf(fmt, target.name, value, digit)
    # 回復
    elsif target.mp_damage < 0              # 9999ダメージまで
      if target.mp_damage < -99999999 #億
        digit = '億'
        value = target.mp_damage / 100000000
      elsif target.mp_damage < -9999
        digit = '万'
        value = target.mp_damage / 10000
      else
        digit = ' '
        value = target.mp_damage
      end
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::mp, -value, digit)
      Sound.play_recovery
    end
    @message_window.add_instant_text(text)
    wait(30)
  end
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
Mirin
記事: 38
登録日時: 2018年10月20日(土) 15:52

Re: 【RGSS2】ダメージに単位を付けたいのですが・・・。

投稿記事by Mirin » 2021年2月26日(金) 21:52

ご丁寧に指摘ありがとうございます。
無事、HP/ MP吸収でダメージ単位が表示されました。
最後に確認用です。何もなければいいのですが・・・。
Faidaさんをエンドロール or Readmeに記載します。

コード: 全て選択

#==============================================================================
# ■ Vocab
#------------------------------------------------------------------------------
#  用語とメッセージを定義するモジュールです。定数でメッセージなどを直接定義す
# るほか、グローバル変数 $data_system から用語データを取得します。
#==============================================================================

module Vocab
  # アクター対象の行動結果
  ActorDamage     = "%sは %s%s のダメージを受けた!"
  ActorLoss       = "%sの%sが %s%s 減った!"
  ActorDrain      = "%sは%sを %s%s 奪われた!"
(中略)
  ActorRecovery   = "%sの%sが %s%s 回復した!"

  # 敵キャラ対象の行動結果
  EnemyDamage     = "%sに %s%s のダメージを与えた!"
  EnemyLoss       = "%sの%sが %s%s 減った!"#%s1個のみ
  EnemyDrain      = "%sの%sを %s%s 奪った!"
(中略)
  EnemyRecovery   = "%sの%sが %s%s 回復した!"
  end

コード: 全て選択

  #--------------------------------------------------------------------------
  # ○ HP ダメージ表示
  #     target : 対象者
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_hp_damage(target, obj = nil)
    if target.hp_damage == 0                # ノーダメージ
      return if obj != nil and obj.damage_to_mp
      return if obj != nil and obj.base_damage == 0
      fmt = target.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
      text = sprintf(fmt, target.name)
    elsif target.absorbed                  # 吸収
      if target.hp_damage > 99999999 # 億
        digit = '億'
        value = target.hp_damage / 100000000
      elsif target.hp_damage > 9999
        digit = '万'
        value = target.hp_damage / 10000
      else
        digit = ' '
        value = target.hp_damage
      end
      fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      text = sprintf(fmt, target.name, Vocab::hp, value, digit)
    # ダメージ
    elsif target.hp_damage > 0
      if target.hp_damage > 99999999 # 億
        digit = '億'
        value = target.hp_damage / 100000000
      elsif target.hp_damage > 9999
        digit = '万'
        value = target.hp_damage / 10000
      else
        digit = ' '
        value = target.hp_damage
      end
      fmt = target.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
      text = sprintf(fmt, target.name, value, digit)
      if target.actor?
        Sound.play_actor_damage
        $game_troop.screen.start_shake(5, 5, 10)
      else
        Sound.play_enemy_damage
        target.blink = true
      end
    # 回復
    else target.hp_damage < 0
      if target.hp_damage < -99999999 # 億
        digit = '億'
        value = target.hp_damage / 100000000
      elsif target.hp_damage < -9999
        digit = '万'
        value = target.hp_damage / 10000
      else
        digit = ' '
        value = target.hp_damage
      end
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::hp, -value, digit)
      Sound.play_recovery
    end
    @message_window.add_instant_text(text)
    wait(30)
  end

コード: 全て選択

  #--------------------------------------------------------------------------
  # ● MP ダメージ表示
  #     target : 対象者
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_mp_damage(target, obj = nil)
    return if target.dead?
    return if target.mp_damage == 0
    if target.absorbed                      # 吸収
      if target.mp_damage > 99999999 #億
        digit = '億'
        value = target.mp_damage / 100000000
      elsif target.mp_damage > 9999
        digit = '万'
        value = target.mp_damage / 10000
      else
        digit = ' '
        value = target.mp_damage
      end
      fmt = target.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
      text = sprintf(fmt, target.name, Vocab::mp, value, digit)
    # MPダメージ
    elsif target.mp_damage > 0              # 9999ダメージまで
      if target.mp_damage > 99999999 #億
        digit = '億'
        value = target.mp_damage / 100000000
      elsif target.mp_damage > 9999
        digit = '万'
        value = target.mp_damage / 10000
      else
        digit = ' '
        value = target.mp_damage
      end
      fmt = target.actor? ? Vocab::ActorLoss : Vocab::EnemyLoss
      text = sprintf(fmt, target.name, value, digit)
    # 回復
    elsif target.mp_damage < 0              # 9999ダメージまで
      if target.mp_damage < -99999999 #億
        digit = '億'
        value = target.mp_damage / 100000000
      elsif target.mp_damage < -9999
        digit = '万'
        value = target.mp_damage / 10000
      else
        digit = ' '
        value = target.mp_damage
      end
      fmt = target.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
      text = sprintf(fmt, target.name, Vocab::mp, -value, digit)
      Sound.play_recovery
    end
    @message_window.add_instant_text(text)
    wait(30)
  end

“VX / Ace:スクリプト素材のリクエスト” へ戻る