VXace[RGSS3]_静的バトルリザルト改造依頼!

みるく
記事: 22
登録日時: 2017年7月15日(土) 01:05

VXace[RGSS3]_静的バトルリザルト改造依頼!

投稿記事by みるく » 2017年11月23日(木) 16:33

肉まんの美味しい季節になってまいりました(´~`)モグモグ みるくです!

たびたびすみません(>_<!)
スクリプト主コミュ太郎様の作られた「静的バトルリザルト」で
一個だけ、追加してほしい機能があって・・・助けてほしいのです :(


それは・・・
バトルが終わった時に、「エリックたちの勝利!」みたいに出る、勝利時メッセージです!!

経験値とかゴールドとかは、この「静的バトルリザルト」のウィンドウ内で表示されるので、
そのへんはスクリプト通り、メッセージ無しで良いんです

でも、バトルがはじまるときに
「スライムが出現!」
と表示されるので、終わった時も攻め手一言、「エリックたちの勝利!」みたいな一文欲しいのです・・・(´Д⊂ヽ
ほんとに、その一文だけ、下ウィンドウに出したいのですが・・・できるかた、いらっしゃいませんか( ;∀;)


コード: 全て選択

#==============================================================================
# ■ 静的バトルリザルト Ver1.36 by コミュ障(@hennatokoro)
#------------------------------------------------------------------------------
#  アニメーションとかしないタイプのリザルト画面を提供します。
#   そこ!作者の技術不足とか言わない!事実だけど!
#==============================================================================

# ここから設定項目

class Window_Result < Window_Selectable
  def draw_zero_param
    # 上昇も低下もしていない能力の変化は描画しない
    return false
  end

  def draw_area
    # 描画する行数の最大値
    # 小さすぎると描画しきれない可能性が有ります
    # 大きくし過ぎると表示が遅くなるかもしれません
    return 200
  end

  # 各種テキスト
  def result_text
    return "リザルト"
  end

  def exp_text
    return "獲得経験値"
  end

  def g_gold_text
    return "獲得ゴールド"
  end

  def n_gold_text
    return "現在のゴールド"
  end

  def item_text
    return "獲得アイテム"
  end

  def next_text
    return "次のレベルまで"
  end

  def lvup_text
    return "レベルアップ!"
  end

  def skill_text
    return "スキルゲット!"
  end

  def item_sound
    # アイテム取得時の効果音
    return RPG::SE.new('Up4', 80, 100)
  end

  def lvup_sound
    # レベルアップ時の効果音
    return RPG::SE.new('Up4', 80, 100)
  end

  def draw_original_contents
    # 追加で描画する項目 ※中級者向け?
   
    # 経験値・金額・アイテムの下に描画されます。
    # 何かを描画する際は、一番最初に
    # draw_line("")
    # と入れておくことをおすすめします。
    # また、描画処理以外のスクリプトを記入することで、
    # リザルト表示時に様々な処理を実行させることも可能です。
   
    # draw_line(text, color = normal_color, align = 0, x = 0)
   
    # 1行分改行して文字を描画します。
    # 色、揃え位置、描画する X 座標(align = 0 時のみ)を指定することが可能です。
   
    #draw_line("")
    #draw_line("#{$game_system.battle_count} 回目")
  end
end

class Game_Actor < Game_Battler
  def reserve_members_exp_rate
    # 控えメンバーの獲得経験値倍率

    # 戦闘メンバーが獲得する経験値量に次の値を掛けます。
    # なお、「データベース>システム」の「控えメンバーも経験値を獲得」が
    # オンの場合、控えメンバーの情報も描画されます。
    return 0.5
  end
end

# 設定項目ここまで。

#==============================================================================
# ■ Window_Result
#------------------------------------------------------------------------------
#  戦闘終了時に表示するリザルトウィンドウです。経験値・Gold・ドロップアイテム
#   の取得処理も内蔵しています。
#==============================================================================

class Window_Result < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 384, Graphics.height - line_height * 4 - standard_padding * 2)
    self.arrows_visible = false
    self.padding = 12
    self.x = (Graphics.width - 384) / 2
    @draw_y = -line_height
    @level_up = false
    refresh
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ内容の高さを計算
  #--------------------------------------------------------------------------
  def contents_height
    line_height * draw_area
  end
  #--------------------------------------------------------------------------
  # ● 行の描画
  #--------------------------------------------------------------------------
  def draw_line(text, color = normal_color, align = 0, x = 0)
    x = 0 unless align == 0
    change_color(color)
    draw_text(x, @draw_y += line_height, self.width - standard_padding * 2, line_height, text, align)
    change_color(normal_color)
  end
  #--------------------------------------------------------------------------
  # ● 描画先の Y 座標を 1 行分戻す
  #--------------------------------------------------------------------------
  def back_line
    @draw_y -= line_height
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    draw_line(result_text, system_color, 1)
    draw_exp_and_golds
    draw_items
    draw_original_contents
    draw_characters
    lvup_sound.play if @level_up
    @draw_end = true
  end
  #--------------------------------------------------------------------------
  # ● 経験値と Golds の獲得と描画
  #--------------------------------------------------------------------------
  def draw_exp_and_golds
    if $game_troop.exp_total > 0
      draw_line(exp_text, system_color)
      draw_text(120, @draw_y, 144, line_height, $game_troop.exp_total, 2)
    end
    if $game_troop.gold_total > 0
      draw_line(g_gold_text, system_color)
      draw_currency_value($game_troop.gold_total, Vocab::currency_unit, 120, @draw_y, 164)
      $game_party.gain_gold($game_troop.gold_total)
      draw_line(n_gold_text, system_color)
      draw_currency_value($game_party.gold, Vocab::currency_unit, 120, @draw_y, 164)
    end
  end
  #--------------------------------------------------------------------------
  # ● ドロップアイテムの獲得と描画
  #--------------------------------------------------------------------------
  def draw_items
    return if (items = $game_troop.make_drop_items).empty?
    draw_line("")
    draw_line(item_text, system_color)
    item_sound.play
    items.each do |item|
      $game_party.gain_item(item, 1)
      draw_item_name(item, 0, @draw_y += 24)
    end
  end
  #--------------------------------------------------------------------------
  # ● 各キャラクターの情報の更新と描画
  #--------------------------------------------------------------------------
  def draw_characters
    ($data_system.opt_extra_exp ? $game_party.all_members : $game_party.members).each do |actor|
      draw_line("")
      draw_actor_graphic(actor, 16, @draw_y + line_height + 32)
      draw_line("")
      draw_text(40, @draw_y, 230, line_height, actor.name, 0)
      draw_actor_level(actor, 192, @draw_y)
      last_level = actor.level
      last_param = Array.new
      for i in 0..7 do
        last_param[i] = actor.param(i)
      end
      last_skills = actor.skills
      actor.gain_exp($game_troop.exp_total, false)
      if actor.level > last_level
        @level_up = true
        draw_line(lvup_text, system_color, 0, 40)
        draw_line("")
        draw_line(Vocab.level, system_color, 0, 40)
        draw_text(140, @draw_y, 60, line_height, last_level, 2)
        change_color(system_color)
        draw_text(200, @draw_y, 30, line_height, "→")
        change_color(normal_color)
        draw_text(212, @draw_y, 60, line_height, actor.level, 2)
        change_color(system_color)
        draw_text(288, @draw_y, 20, line_height, (actor.level - last_level) >= 0 ? "+" : "-")
        change_color(normal_color)
        draw_text(296, @draw_y, 50, line_height, (actor.level - last_level).abs, 2)
        for j in 0..7 do
          next if actor.param(j) - last_param[j] == 0 && draw_zero_param
          draw_line(Vocab.param(j), system_color, 0, 40)
          draw_text(140, @draw_y, 60, line_height, last_param[j], 2)
          change_color(system_color)
          draw_text(200, @draw_y, 30, line_height, "→")
          change_color(normal_color)
          draw_text(212, @draw_y, 60, line_height, actor.param(j), 2)
          change_color(system_color)
          draw_text(288, @draw_y, 20, line_height, (actor.param(j) - last_param[j]) >= 0 ? "+" : "-")
          change_color(normal_color)
          draw_text(296, @draw_y, 50, line_height, (actor.param(j) - last_param[j]).abs, 2)
        end
        draw_line("")
        unless (learned = (actor.skills - last_skills)).empty?
          draw_line(skill_text, system_color, 0, 40)
          learned.each do |skill|
            draw_item_name(skill, 40, @draw_y += 24)
          end
          draw_line("") unless actor.max_level?
        end
      end
      next if actor.max_level?
      exp_rate = (actor.exp - actor.current_level_exp).to_f / (actor.next_level_exp - actor.current_level_exp)
      draw_gauge(40, @draw_y + line_height, 230, exp_rate, text_color(30), text_color(31))
      draw_line(next_text, system_color, 0, 40)
      draw_text(150, @draw_y, 120, line_height, actor.next_level_exp - actor.exp, 2)
    end
    @cur_height = [(self.height - 24 - self.padding_bottom*2) * ((self.height - self.padding_bottom*2) / (@draw_y + line_height).to_f), self.height - standard_padding*2].min
  end
  #--------------------------------------------------------------------------
  # ● カーソルの移動処理
  #--------------------------------------------------------------------------
  def process_cursor_move
    self.oy += 4  if Input.press?(:DOWN)  && self.oy <= @draw_y + line_height + standard_padding * 2 - self.height
    self.oy -= 4  if Input.press?(:UP)    && self.oy != 0
    cur_y = @draw_end ? (self.oy + ((self.height - 32 - @cur_height) * (self.oy.to_f / (@draw_y + line_height - (self.height - standard_padding*2)))).to_i) : 0
    cursor_rect.set(self.width-standard_padding*2-8, cur_y, 8, @cur_height)
  end
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
# の内部で使用され、Game_Party クラス($game_party)からも参照されます。
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 経験値の獲得(経験獲得率を考慮)
  #--------------------------------------------------------------------------
  def gain_exp(exp, show = true)
    change_exp(self.exp + (exp * final_exp_rate).to_i, show)
  end
end
#==============================================================================
# ■ BattleManager
#------------------------------------------------------------------------------
#  戦闘の進行を管理するモジュールです。
#==============================================================================

module BattleManager
  def self.phase
    @phase
  end
end

#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
#  バトル画面の処理を行うクラスです。
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    if BattleManager.in_turn?
      process_event
      process_action
    end
    judge_win_loss
  end
  #--------------------------------------------------------------------------
  # ● イベントの処理
  #--------------------------------------------------------------------------
  def process_event
    while !scene_changing?
      $game_troop.interpreter.update
      $game_troop.setup_battle_event
      wait_for_message
      wait_for_effect if $game_troop.all_dead?
      process_forced_action
      judge_win_loss
      break unless $game_troop.interpreter.running?
      update_for_wait
    end
  end
  #--------------------------------------------------------------------------
  # ● 戦闘行動終了時の処理
  #--------------------------------------------------------------------------
  def process_action_end
    @subject.on_action_end
    refresh_status
    @log_window.display_auto_affected_status(@subject)
    @log_window.wait_and_clear
    @log_window.display_current_state(@subject)
    @log_window.wait_and_clear
    judge_win_loss
  end
  #--------------------------------------------------------------------------
  # ● 勝敗判定
  #--------------------------------------------------------------------------
  def judge_win_loss
    if BattleManager.phase
      return BattleManager.process_abort   if $game_party.members.empty?
      return BattleManager.process_defeat  if $game_party.all_dead?
      return process_victory if $game_troop.all_dead?
      return BattleManager.process_abort   if BattleManager.aborting?
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 勝利の処理
  #--------------------------------------------------------------------------
  def process_victory
    return unless @result_window.nil?
    create_result_window
    return true
  end
  #--------------------------------------------------------------------------
  # ● 戦闘行動の処理
  #--------------------------------------------------------------------------
  alias cs_process_action process_action
  def process_action
    return unless @result_window.nil?
    cs_process_action
  end
  #--------------------------------------------------------------------------
  # ● リザルトウィンドウの作成
  #--------------------------------------------------------------------------
  def create_result_window
    @result_window = Window_Result.new
    @result_window.openness = 0
    @result_window.activate
    @result_window.set_handler(:ok,     method(:on_result_ok))
    @result_window.open
  end

  def on_result_ok
    Sound.play_ok
    @result_window.close
    SceneManager.return
    BattleManager.replay_bgm_and_bgs
    BattleManager.battle_end(0)
  end
end



一応、素材はちょこーっと改造してるので、規約違反はしてないはずです('_')
お願いできたら嬉しいです

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