Project1

标题: 求助:退出游戏时先执行公共事件1,之后存档到位置1 [打印本页]

作者: crow2006    时间: 2013-5-23 11:24
标题: 求助:退出游戏时先执行公共事件1,之后存档到位置1
本帖最后由 crow2006 于 2013-5-23 12:54 编辑

一个是死亡后执行公共事件1的脚本, 一个是退出或关闭时自动存档脚本,
请求修改,多谢!
要求实现 退出游戏时先执行公共事件1,之后存档到位置1的效果。
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 结束战斗
  3.   #     result : 结果(0:胜利,1:逃跑,2:失败)
  4.   #--------------------------------------------------------------------------
  5.   def battle_end(result)
  6.     if result == 2 and not $game_troop.can_lose
  7.       $game_party.clear_actions
  8.       $game_party.remove_states_battle
  9.       $game_troop.clear
  10.       if $game_temp.battle_proc != nil
  11.         $game_temp.battle_proc.call(result)
  12.         $game_temp.battle_proc = nil
  13.       end
  14.       unless $BTEST
  15.         $game_temp.map_bgm.play
  16.         $game_temp.map_bgs.play
  17.       end
  18.        $scene = Scene_Map.new
  19.        @message_window.clear
  20.        Graphics.fadeout(30)
  21.        $game_map.interpreter.setup($data_common_events[1].list, 0)
  22.     else
  23.       $game_party.clear_actions
  24.       $game_party.remove_states_battle
  25.       $game_troop.clear
  26.       if $game_temp.battle_proc != nil
  27.         $game_temp.battle_proc.call(result)
  28.         $game_temp.battle_proc = nil
  29.       end
  30.       unless $BTEST
  31.         $game_temp.map_bgm.play
  32.         $game_temp.map_bgs.play
  33.       end
  34.       $scene = Scene_Map.new
  35.       @message_window.clear
  36.       Graphics.fadeout(30)
  37.      end
  38.     $game_temp.in_battle = false
  39.   end

RUBY 代码复制
  1. module Kernel
  2.  
  3. alias origin_exit exit unless method_defined? :exit
  4.  
  5. def exit(*args)
  6.    case $scene
  7.    when Scene_Map
  8.      AutoSave.common_save unless $game_map.interpreter.running?
  9.    when Scene_Battle
  10.      AutoSave.common_save unless $game_battle.interpreter.running?
  11.    else
  12.      if $scene.type != NilClass and $scene.type != Scene_Title
  13.        AutoSave.common_save
  14.      end
  15.    end
  16.    origin_exit(*args)
  17. end
  18.  
  19. end
  20.  
  21.  
  22. module AutoSave
  23.  
  24. if @scene_proc.nil?
  25.    @last_scene = nil.class
  26.    @scene_proc = proc do |value|
  27.      if value.nil? or value.is_a?(Scene_Title)
  28.        if @last_scene != NilClass and @last_scene != Scene_Title
  29.          AutoSave.common_save
  30.        end
  31.      end
  32.      @last_scene = value.type
  33.    end
  34.    trace_var(:$scene,@scene_proc)
  35. end
  36.  
  37. module_function
  38.  
  39. def common_save
  40.    filename = "Save#{$game_temp.last_file_index + 1}.rvdata"
  41.    file = File.open(filename, "wb")
  42.    write_save_data(file)
  43.    file.close
  44. end
  45.  
  46.   def write_save_data(file)
  47.     characters = []
  48.     for actor in $game_party.members
  49.       characters.push([actor.character_name, actor.character_index])
  50.     end
  51.     $game_system.save_count += 1
  52.     $game_system.version_id = $data_system.version_id
  53.     @last_bgm = RPG::BGM::last
  54.     @last_bgs = RPG::BGS::last
  55.     Marshal.dump(characters,           file)
  56.     Marshal.dump(Graphics.frame_count, file)
  57.     Marshal.dump(@last_bgm,            file)
  58.     Marshal.dump(@last_bgs,            file)
  59.     Marshal.dump($game_system,         file)
  60.     Marshal.dump($game_message,        file)
  61.     Marshal.dump($game_switches,       file)
  62.     Marshal.dump($game_variables,      file)
  63.     Marshal.dump($game_self_switches,  file)
  64.     Marshal.dump($game_actors,         file)
  65.     Marshal.dump($game_party,          file)
  66.     Marshal.dump($game_troop,          file)
  67.     Marshal.dump($game_map,            file)
  68.     Marshal.dump($game_player,         file)
  69.   end
  70.  
  71. end








欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1