ページ 11

【解決】毒や吸収のSE

Posted: 2017年11月16日(木) 16:42
by much
http://kaisou-ryouiki.sakura.ne.jp/mate ... _voice.txt

こちらのスプリクトを用いて毒や吸収の際のSEを再生したいのですが可能でしょうか?

Re: 毒や吸収のSE

Posted: 2017年11月16日(木) 17:54
by faida
質問の意図がやや不明瞭です。
「バトルボイス」では「毒」という「特定のステート」に対する「ボイス」の再生も、
「吸収時の回復」による「ボイス」の再生も、
そもそも「SE(Audioフォルダ内のSEフォルダに入っているファイル)」の再生もできません。

元々「バトルボイス」を使用する予定で、それに付随して毒や吸収の際のSEを再生したいのか、
毒や吸収の際のSEを再生したいだけで、別に「バトルボイス」でなくても構わないのか、
これが分からないと答えようがないと思います。

というわけで、質問の答えは「改造すればできますが、このスクリプトを使う必要性はありません」。

※あと前回のアレを使う場合、「バトルボイス」で再生したファイルは「SE」扱いなのでそれも止まります。

申し訳ないです。

Posted: 2017年11月18日(土) 01:26
by much
返信ありがとうございます。
すいません。言葉足らずでした。

①毎ターンで毒によるダメージの際、アクター、エネミーに指定した効果音を鳴らしたい。
②吸収でのダメージの際、吸収される側に指定した効果音を鳴らしたい。

というのを、添付したスプリクトを改造してするには可能なのでしょうか。
というのが文面の意図です。

Re: 毒や吸収のSE

Posted: 2017年11月18日(土) 12:39
by faida
質問の答えは「改造すればできますが、このスクリプトを使う必要性はありません」。
まだ最後の疑問が残っていて、それは「そのSEは『ボイス』なのかどうか」ということです。
だから添付したスクリプトを使えば、バトルボイスの使用可否にかかわらず「SEの」再生はできます。

コード: 全て選択

# ID指定:アクターが正の数、エネミーが負の数
module FAI_DDSDSE
  DRAIN_DAMAGE_SE = {}
  DRAIN_DAMAGE_SE[1] = ["Absorb1", 80, 100]
  DRAIN_DAMAGE_SE[-1] = ["Absorb1", 80, 100]
   
  SLIP_DAMAGE_SE = {}
  SLIP_DAMAGE_SE[1] = ["Poison", 80, 100]
  SLIP_DAMAGE_SE[-1] = ["Poison", 80, 100]
end

class Game_Battler
  include FAI_DDSDSE
  def play_drain_damage
    id = actor? ? self.id : -enemy_id
    data = DRAIN_DAMAGE_SE[id]
    Audio.se_play("Audio/SE/"+data[0], data[1], data[2]) if data
  end
  def play_slip_damage
    id = actor? ? self.id : -enemy_id
    data = SLIP_DAMAGE_SE[id]
    Audio.se_play("Audio/SE/"+data[0], data[1], data[2]) if data
  end
  #--------------------------------------------------------------------------
  # ● HP の再生
  #--------------------------------------------------------------------------
  alias fai_ddsdse_regenerate_hp regenerate_hp
  def regenerate_hp
    fai_ddsdse_regenerate_hp
    play_slip_damage if @result.hp_damage > 0
  end
end

class Window_BattleLog < Window_Selectable
  #--------------------------------------------------------------------------
  # ● HP ダメージ表示
  #--------------------------------------------------------------------------
  alias fai_ddsdse_display_hp_damage display_hp_damage
  def display_hp_damage(target, item)
    return if target.result.hp_damage == 0 && item && !item.damage.to_hp?
    target.play_drain_damage if target.result.hp_drain > 0
    fai_ddsdse_display_hp_damage(target, item)
  end
  #--------------------------------------------------------------------------
  # ● MP ダメージ表示
  #--------------------------------------------------------------------------
  alias fai_ddsdse_display_mp_damage display_mp_damage
  def display_mp_damage(target, item)
    return if target.dead? || target.result.mp_damage == 0
    target.play_drain_damage if target.result.mp_drain > 0
    Sound.play_recovery if target.result.mp_damage < 0
    fai_ddsdse_display_mp_damage(target, item)
  end
end
どうしても「ボイス」でなくてはいけない理由を除いては、これで事足りるわけです。
勿論併用も可能です。

※しかも「"Audio/SE/"+」という箇所を「"Audio/VOICE/"+」に変えればボイスになります。

Re: 毒や吸収のSE

Posted: 2017年11月19日(日) 10:39
by much
ありがとうございます。

ちなみになのですが、SEを複数設定しておいて、その中からランダムで1つ選出して再生することって可能ですか…?
たびたび、付け加えてしまい申し訳ありません汗

Re: 毒や吸収のSE

Posted: 2017年11月19日(日) 10:50
by faida
前にRGSS2のですが別の依頼に書いたので正直自分でやってもらいたいんですが、
まぁそうもいかなさそうなので適当に出しておきます。

コード: 全て選択

# ID指定:アクターが正の数、エネミーが負の数
module FAI_DDSDSE
  DRAIN_DAMAGE_SE = {}
  DRAIN_DAMAGE_SE[1] = [["Absorb1", 80, 100], ["Absorb2", 80, 100]]
  DRAIN_DAMAGE_SE[-1] = [["Absorb1", 80, 100], ["Absorb2", 80, 100]]
   
  SLIP_DAMAGE_SE = {}
  SLIP_DAMAGE_SE[1] = [["Poison", 80, 100], ["Paralyze2", 80, 100]]
  SLIP_DAMAGE_SE[-1] = [["Poison", 80, 100], ["Paralyze2", 80, 100]]
end

class Game_Battler
  include FAI_DDSDSE
  def play_drain_damage
    id = actor? ? self.id : -enemy_id
    array = DRAIN_DAMAGE_SE[id]
    if array
      data = array[rand(array.size)]
      Audio.se_play("Audio/SE/"+data[0], data[1], data[2]) if data
    end
  end
  def play_slip_damage
    id = actor? ? self.id : -enemy_id
    array = SLIP_DAMAGE_SE[id]
    if array
      data = array[rand(array.size)]
      Audio.se_play("Audio/SE/"+data[0], data[1], data[2]) if data
    end
  end
  #--------------------------------------------------------------------------
  # ● HP の再生
  #--------------------------------------------------------------------------
  alias fai_ddsdse_regenerate_hp regenerate_hp
  def regenerate_hp
    fai_ddsdse_regenerate_hp
    play_slip_damage if @result.hp_damage > 0
  end
end

class Window_BattleLog < Window_Selectable
  #--------------------------------------------------------------------------
  # ● HP ダメージ表示
  #--------------------------------------------------------------------------
  alias fai_ddsdse_display_hp_damage display_hp_damage
  def display_hp_damage(target, item)
    return if target.result.hp_damage == 0 && item && !item.damage.to_hp?
    target.play_drain_damage if target.result.hp_drain > 0
    fai_ddsdse_display_hp_damage(target, item)
  end
  #--------------------------------------------------------------------------
  # ● MP ダメージ表示
  #--------------------------------------------------------------------------
  alias fai_ddsdse_display_mp_damage display_mp_damage
  def display_mp_damage(target, item)
    return if target.dead? || target.result.mp_damage == 0
    target.play_drain_damage if target.result.mp_drain > 0
    Sound.play_recovery if target.result.mp_damage < 0
    fai_ddsdse_display_mp_damage(target, item)
  end
end

Re: 毒や吸収のSE

Posted: 2017年12月01日(金) 03:02
by much
なるほど!
ありがとうございます!解決しました!!