Project1
标题:
求改个存档脚本
[打印本页]
作者:
日月星辰
时间:
2013-12-29 17:51
标题:
求改个存档脚本
本帖最后由 日月星辰 于 2013-12-29 17:56 编辑
主要涉及scene load和scene save 我想把自带脚本更改一下,改成只有一个存档位置。
换句话说:点下菜单的save直接存储,点下标题菜单的load直接读取。。这样很简洁不是么~
求大家帮忙更改~我自己尝试后。。表示弱渣无果==!
谢~!!!
补充:不是把scene那里4改成1就好了。。。。。而是。。不要这个界面了~!【这才是我的最终目的唔==~~~】
作者:
恐惧剑刃
时间:
2013-12-29 18:02
本帖最后由 恋′挂机 于 2013-12-29 18:21 编辑
默认Scene_Title 47行改为
@continue_enabled = false
if FileTest.exist?("Save.rxdata")
@continue_enabled = true
end
复制代码
145行左右改为
def command_continue
# 继续无效的情况下
unless @continue_enabled
# 演奏无效 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏读档 SE
$game_system.se_play($data_system.load_se)
$game_temp = Game_Temp.new
# 写入存档数据
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
复制代码
新加一个方法
#--------------------------------------------------------------------------
# ● 读取存档数据
# 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
复制代码
并在main前插入这段
class Scene_Save
#--------------------------------------------------------------------------
# ● 确定时的处理
#--------------------------------------------------------------------------
def on_decision(占场子)
# 演奏存档 SE
$game_system.se_play($data_system.save_se)
# 写入存档数据
file = File.open("Save.rxdata", "wb")
write_save_data(file)
file.close
# 如果被事件调用
if $game_temp.save_calling
# 清除存档调用标志
$game_temp.save_calling = false
# 切换到地图画面
$scene = Scene_Map.new
return
end
# 切换到菜单画面
#$scene = Scene_Menu.new(4)
end
end
复制代码
Scene_Menu 150行左右
when 4 # 存档
# 禁止存档的情况下
if $game_system.save_disabled
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到存档画面
#$scene = Scene_Save.new
file = File.open("Save.rxdata", "wb")
write_save_data(file)
file.close
复制代码
新加一个方法
#--------------------------------------------------------------------------
# ● 写入存档数据
# file : 写入用文件对像 (已经打开)
#--------------------------------------------------------------------------
def write_save_data(file)
# 生成描绘存档文件用的角色图形
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
# 写入描绘存档文件用的角色数据
Marshal.dump(characters, file)
# 写入测量游戏时间用画面计数
Marshal.dump(Graphics.frame_count, file)
# 增加 1 次存档次数
$game_system.save_count += 1
# 保存魔法编号
# (将编辑器保存的值以随机值替换)
$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)
end
复制代码
作者:
日月星辰
时间:
2013-12-29 20:21
恋′挂机 发表于 2013-12-29 18:02
默认Scene_Title 47行改为145行左右改为新加一个方法并在main前插入这段Scene_Menu 150行左右新加一个方法 ...
嗯。。。或者帮忙换个思路? 在事件里判断是否有存档,在事件里保存【调用一下你的写入数据】,在事件里读取【用一下 读取存档数据 这个方法】
如果能实现的话。。帮忙写几句吧~?谢谢~!
作者:
日月星辰
时间:
2013-12-30 18:40
恋′挂机 发表于 2013-12-29 18:02
默认Scene_Title 47行改为145行左右改为新加一个方法并在main前插入这段Scene_Menu 150行左右新加一个方法 ...
嗯,,赶紧去学习了~成功咯谢谢~ bz结贴吧~~
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1