Project1
标题:
关于战败读档会弹出……
[打印本页]
作者:
550806810
时间:
2014-8-10 10:29
标题:
关于战败读档会弹出……
本帖最后由 550806810 于 2014-8-10 19:36 编辑
P.S. 已经解决
QQ图片20140810102758.jpg
(14.74 KB, 下载次数: 3)
下载附件
保存到相册
2014-8-10 10:28 上传
就是这样,下面是脚本。
#==============================================================================
# ■ Scene_Gameover
#------------------------------------------------------------------------------
# 处理游戏结束画面的类。
#==============================================================================
class Scene_Gameover
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
# 生成游戏结束图形
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.gameover($data_system.gameover_name)
# 停止 BGM、BGS
$game_system.bgm_play(nil)
$game_system.bgs_play(nil)
# 演奏游戏结束 ME
$game_system.me_play($data_system.gameover_me)
# 执行过渡
Graphics.transition(120)
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面情报
update
# 如果画面被切换的话就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放游戏结束图形
@sprite.bitmap.dispose
@sprite.dispose
# ■■■■■ [战斗失败再挑战]释放战斗失败后的选择窗口 ■■■■■
if @gameover_command_window != nil
@gameover_command_window.dispose
end
# ■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■
# 执行过度
Graphics.transition(40)
# 准备过渡
Graphics.freeze
# 战斗测试的情况下
if $BTEST
$scene = nil
end
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# ■■■■■■■■ [战斗失败再挑战] ■■■■■■■■
# 如果战斗失败后的选择窗口活动中
if @gameover_command_window != nil
@gameover_command_window.update
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到标题画面
$scene = Scene_Title.new
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
case @gameover_command_window.index
# 选择[重新挑战]
when 0
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 再生成临时对像
$game_temp = Game_Temp.new
# 再次存档时,光标移到最近存的档案
latest_time = Time.at(0)
for i in 0..39
filename = "Save/Save#{i + 1}.rxdata"
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
# 读取战斗临时存档
file = File.open("Save/Battle_Auto_Save.rxdata", "rb")
# 增加 1 次存档次数
#(战败后选择再挑战才有实际使用临时存档,故在这里增加,而不是存档时)
$game_system.save_count += 1
# 读取描绘存档文件用的角色数据
$game_map_name = 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)
# 刷新同伴成员
$game_party.refresh
# 如果重新挑战对象为地图遇暗敌
if $fight_again_map == 1
# 读取敌人队伍ID
$vs_troop_id = Marshal.load(file)
end
file.close
# 停止演奏 ME
Audio.me_stop
# 还原 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
return
# 选择[回去读档]
when 1
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到标题画面
$scene = Scene_Title.new
return
end
end
# 此外(如果战斗失败后的选择窗口不活动)
else
# 不论按下 B 键还是 C 键
if Input.trigger?(Input::B) or Input.trigger?(Input::C)
# 如果是战斗失败
if $game_temp.in_battle == true
s1 = " 重新挑战"
s2 = " 返回标题"
@gameover_command_window = Window_Command.new(192, [s1, s2])
@gameover_command_window.x = 320 - @gameover_command_window.width / 2
@gameover_command_window.y = 240 - @gameover_command_window.height / 2
@gameover_command_window.index = 0
else # 平时非战斗导致死亡
# 切换到标题画面
$scene = Scene_Title.new
return
end
end
end
# ■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■
end
end
作者:
550806810
时间:
2014-8-10 10:45
#==============================================================================
# ■ Interpreter (分割定义 6)
#------------------------------------------------------------------------------
# 执行事件命令的解释器。本类在 Game_System 类
# 和 Game_Event 类的内部使用。
#==============================================================================
class Interpreter
#--------------------------------------------------------------------------
# ● 战斗处理
#--------------------------------------------------------------------------
def command_301
# 如果不是无效的队伍
if $data_troops[@parameters[0]] != nil
# ■■■■■■■■ [战斗失败再挑战]战斗前自动存临时档 ■■■■■■■■
file = File.open("Save/Battle_Auto_Save.rxdata", "wb")
# ■END■
# 保存魔法编号
# (将编辑器保存的值以随机值替换)
$game_system.magic_number = $data_system.magic_number
# 写入各种游戏对像
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
file.close
# 关闭地图遇暗敌标记
$fight_again_map = nil
# ■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■
# 设置中断战斗标志
$game_temp.battle_abort = true
# 设置战斗调用标志
$game_temp.battle_calling = true
$game_temp.battle_troop_id = @parameters[0]
$game_temp.battle_can_escape = @parameters[1]
$game_temp.battle_can_lose = @parameters[2]
# 设置返回调用
current_indent = @list[@index].indent
$game_temp.battle_proc = Proc.new { |n| @branch[current_indent] = n }
end
# 推进索引
@index += 1
# 结束
return false
end
#--------------------------------------------------------------------------
# ● 胜利的情况下
#--------------------------------------------------------------------------
def command_601
# 战斗结果为胜利的情况下
if @branch[@list[@index].indent] == 0
# 删除分支数据
@branch.delete(@list[@index].indent)
# 继续
return true
end
# 不符合条件的情况下 : 指令跳转
return command_skip
end
#--------------------------------------------------------------------------
# ● 逃跑的情况下
#--------------------------------------------------------------------------
def command_602
# 战斗结果为逃跑的情况下
if @branch[@list[@index].indent] == 1
# 删除分支数据
@branch.delete(@list[@index].indent)
# 继续
return true
end
# 不符合条件的情况下 : 指令跳转
return command_skip
end
还有这个一小段
作者:
kuerlulu
时间:
2014-8-10 18:50
一看看就觉得像<囧魂>里的没想到真的是= =
使用这个脚本时必须把Scene_File/Load/Save/Window_SaveFile一起使用才行, 或者你自己把有关game_map_name的Marshal的代码删掉也行
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1