- 注册时间
- 2004-12-27
- 最后登录
- 2005-1-10
③业余
- 积分
- 137
|
发表于 2004-12-30 21:37:43
|
显示全部楼层
完整修改如下:
在RGSS中Scene_Load文件下新建Scene_Load_2文件 其内容如下
#==============================================================================
# ■ Scene_Load_2
#------------------------------------------------------------------------------
# 处理读档画面的类。
#==============================================================================
class Scene_Load_2 < Scene_File
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
# 再生成临时对像
$game_temp = Game_Temp.new
# 选择存档时间最新的文件
$game_temp.last_file_index = 0
latest_time = Time.at(0)
for i in 0..3
filename = make_filename(i)
if FileTest.exist?(filename)
file = File.open(filename, \"r\")
if file.mtime > latest_time
latest_time = file.mtime
$game_temp.last_file_index = i
end
file.close
end
end
super(\"要载入哪个文件?\")
end
#--------------------------------------------------------------------------
# ● 确定时的处理
#--------------------------------------------------------------------------
def on_decision(filename)
# 文件不存在的情况下
unless FileTest.exist?(filename)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏读档 SE
$game_system.se_play($data_system.load_se)
# 写入存档数据
file = File.open(filename, \"rb\")
read_save_data(file)
file.close
# 还原 BGM、BGS
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
# 刷新地图 (执行并行事件)
$game_map.update
# 切换到地图画面
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# ● 取消时的处理
#--------------------------------------------------------------------------
def on_cancel
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到地图画面
$scene = Scene_Menu.new(5) (修改这里 才不至于后期按B取消读档会直接跳到地图)
end
#--------------------------------------------------------------------------
# ● 读取存档数据
# file : 读取用文件对像 (已经打开)
#--------------------------------------------------------------------------
def read_save_data(file)
# 读取描绘存档文件用的角色数据
characters = Marshal.load(file)
# 读取测量游戏时间用画面计数
Graphics.frame_count = Marshal.load(file)
# 读取各种游戏对像
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
# 魔法编号与保存时有差异的情况下
# (加入编辑器的编辑过的数据)
if $game_system.magic_number != $data_system.magic_number
# 重新装载地图
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
# 刷新同伴成员
$game_party.refresh
end
end
然后在Scene_Menu的def main中加入
s6 = \"读档\"
s7 = \"结束游戏\" *或是你想要叫什幺都可以 (原s6 = \"结束游戏\" 删除)
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
在def update_command加入
when 5 # 读档
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到读档画面
$scene = Scene_Load_2.new
when 6 # 游戏结束
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到游戏结束画面
$scene = Scene_End.new
end
return (原when 5 # 游戏结束一段删除)
end
end
修改@playtime_window.y = 240
@steps_window.y = 340
修改Scene_End中 def update
# 刷新命令窗口
@command_window.update
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
$scene = Scene_Menu.new(6)
def command_cancel
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到菜单画面
$scene = Scene_Menu.new(6)
return
感谢楼上几位兄弟的指点 按照你们的方法我成功的解决了这个问题 只是其中有存在些许不足 所以我在此做点补充
|
|