| 
 
| 赞 | 274 |  
| VIP | 0 |  
| 好人卡 | 3 |  
| 积分 | 495 |  
| 经验 | 40966 |  
| 最后登录 | 2024-6-21 |  
| 在线时间 | 1919 小时 |  
 Lv5.捕梦者 
	梦石10 星屑39540 在线时间1919 小时注册时间2010-11-14帖子3319 
 | 
| 
我使用了战败可以重新战斗的脚本:
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  
   而我希望这时候右上角可以显示一张这个图片:
 
   并且图片是淡入的,从右上角直线向下移动并淡入
 那么应该在战斗脚本中哪里添加什么语句?
 复制代码=begin
      RGSS3
      
      ★ バトルリトライ ★
      
      戦闘敗北時に、リトライするかの選択を可能にします。
      
      ver1.00
      Last Update : 2012/02/06
      02/06 : 新規
      
      ろかん   http://kaisou-ryouiki.sakura.ne.jp/
=end
#===========================================
#   設定箇所
#===========================================
module Rokan
module Retry_Battle
    # リトライを許可するスイッチ番号
    RETRY_ENABLE_SWITCH = 10
    # コマンドに表示する文字列
    RETRY_COMMAND = "命运更新"
    GIVEUP_COMMAND = "放弃"
end
end
#===========================================
#   ここまで
#===========================================
$rsi ||= {}
$rsi["バトルリトライ"] = true
class << BattleManager
  #--------------------------------------------------------------------------
  # ● インクルード Rokan::Retry_Battle
  #--------------------------------------------------------------------------
  include Rokan::Retry_Battle
  #--------------------------------------------------------------------------
  # ● セットアップ
  #--------------------------------------------------------------------------
  alias _retry_battle_setup setup
  def setup(troop_id, can_escape = true, can_lose = false)
    _retry_battle_setup(troop_id, can_escape, can_lose)
    setup_retry_data
  end
  #--------------------------------------------------------------------------
  # ● オブジェクトをディープコピーして返す
  #--------------------------------------------------------------------------
  def deep_cp(obj)
    Marshal.load(Marshal.dump(obj))
  end
  #--------------------------------------------------------------------------
  # ● リトライ用にデータを保持する
  #--------------------------------------------------------------------------
  def backup_retry_data
    @retry_data = []
    @retry_data << deep_cp($game_switches)
    @retry_data << deep_cp($game_variables)
    @retry_data << deep_cp($game_actors)
    @retry_data << deep_cp($game_party)
    @retry_data << deep_cp($game_troop)
  end
  #--------------------------------------------------------------------------
  # ● リトライ用データを読み込む
  #--------------------------------------------------------------------------
  def restore_retry_data
    $game_switches = deep_cp(@retry_data[0])
    $game_variables = deep_cp(@retry_data[1])
    $game_actors = deep_cp(@retry_data[2])
    $game_party = deep_cp(@retry_data[3])
    $game_troop = deep_cp(@retry_data[4])
  end
  #--------------------------------------------------------------------------
  # ● リトライの為の準備を行う
  #--------------------------------------------------------------------------
  def setup_retry_data
    backup_retry_data
  end
  #--------------------------------------------------------------------------
  # ● リトライの是非の選択開始
  #--------------------------------------------------------------------------
  def start_retry_selection
    
    SceneManager.scene.start_retry_selection
  end
  #--------------------------------------------------------------------------
  # ● リトライの処理
  #--------------------------------------------------------------------------
  def process_retry
    Graphics.update
    Graphics.freeze
    restore_retry_data
    SceneManager.goto(Scene_Battle)
    BattleManager.play_battle_bgm
    Sound.play_battle_start
  end
  #--------------------------------------------------------------------------
  # ● 敗北の処理
  #--------------------------------------------------------------------------
  alias _retry_battle_process_defeat process_defeat
  def process_defeat
    if $game_switches[RETRY_ENABLE_SWITCH]
      start_retry_selection
    else
      _retry_battle_process_defeat
    end
  end
end
class Game_Screen
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_writer   :brightness               # 明るさ
end
class Retry_Window < Window_Command
  #--------------------------------------------------------------------------
  # ● インクルード Rokan::Retry_Battle
  #--------------------------------------------------------------------------
  include Rokan::Retry_Battle
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0)
    update_placement
    select_symbol(:reset_battle)
    self.openness = 0
    self.active = false
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ幅の取得
  #--------------------------------------------------------------------------
  def window_width
    return 160
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ位置の更新
  #--------------------------------------------------------------------------
  def update_placement
    self.x = (Graphics.width - width) / 2
    self.y = (Graphics.height - height) / 2
  end
  #--------------------------------------------------------------------------
  # ● コマンドリストの作成
  #--------------------------------------------------------------------------
  def make_command_list
    add_command(RETRY_COMMAND, :retry)
    add_command(GIVEUP_COMMAND, :giveup)
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウのアクティブ化
  #--------------------------------------------------------------------------
  def activate
    open
    super
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウの非アクティブ化
  #--------------------------------------------------------------------------
  def deactivate
    close
    super
  end
end
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  alias _retry_battle_start start
  def start
    _retry_battle_start
    create_command_window
  end
  #--------------------------------------------------------------------------
  # ● 終了処理
  #--------------------------------------------------------------------------
  alias _retry_battle_terminate terminate
  def terminate
    _retry_battle_terminate
    @command_window.dispose
    perform_battle_transition if SceneManager.scene_is?(Scene_Battle)
  end
  #--------------------------------------------------------------------------
  # ● 確認コマンドウィンドウの作成
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Retry_Window.new
    @command_window.set_handler(:retry, method(:reset_battle))
    @command_window.set_handler(:giveup, method(:giveup_battle))
  end
  #--------------------------------------------------------------------------
  # ● リトライの是非の選択開始
  #--------------------------------------------------------------------------
  def start_retry_selection
    @command_window.activate
    bgm = RPG::BGM.last
    bgm.volume -= 20
    bgm.play
    update_basic until @command_window.open?
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias _retry_battle_update update
  def update
    if @command_window.active
      super
    else
      _retry_battle_update
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新(基本)
  #--------------------------------------------------------------------------
  alias _retry_battle_update_basic update_basic
  def update_basic
    if @command_window && @command_window.active
      $game_troop.screen.brightness = [$game_troop.screen.brightness - 8, 160].max
    end
    _retry_battle_update_basic
  end
  #--------------------------------------------------------------------------
  # ● 戦闘をあきらめる
  #--------------------------------------------------------------------------
  def giveup_battle
    @command_window.deactivate
    BattleManager._retry_battle_process_defeat
  end
  #--------------------------------------------------------------------------
  # ● 戦闘のリセット
  #--------------------------------------------------------------------------
  def reset_battle
    @command_window.deactivate
    update_basic until @command_window.close?
    BattleManager.process_retry
  end
  #--------------------------------------------------------------------------
  # ● 戦闘前トランジション実行
  #--------------------------------------------------------------------------
  def perform_battle_transition
    Graphics.transition(60, "Graphics/System/BattleStart", 100)
    Graphics.freeze
  end
end
 | 
 |