Project1
标题:
自动存档脚本错误,请教高手帮忙解答
[打印本页]
作者:
gzliujie
时间:
2011-7-4 17:03
标题:
自动存档脚本错误,请教高手帮忙解答
本帖最后由 「旅」 于 2011-7-4 17:09 编辑
我下了个自动存档脚本,能存档,直接关掉游戏,默认存档最后时间。
关掉游戏后,重新进,选择继续,结果不想继续想重新开始,BUG出来了,脚本错误,然后存档丢失,不能再使用存档了,怎么弄都不行,我想写个直接跳过选择存档的那里,选继续直接进游戏,但是这样的话就只能玩一个号了,自动存档默认存档第一个(暂时我发现是这样的,刚用不久。)
希望高手帮个忙看看脚本是否存在问题,帮忙改下,感激不尽~~~。如果能给我个装备属性随机脚本就更好了~~~
#==============================================================
#以下是脚本
#==============================================================
module Kernel
alias origin_exit exit unless method_defined? :exit
def exit(*args)
case $scene
when Scene_Map
AutoSave.common_save unless $game_system.map_interpreter.running?
when Scene_Battle
AutoSave.common_save unless $game_system.battle_interpreter.running?
else
if $scene.type != NilClass and $scene.type != Scene_Title
AutoSave.common_save
end
end
origin_exit(*args)
end
end
module AutoSave
if @scene_proc.nil?
@last_scene = nil.class
@scene_proc = proc do |value|
if value.nil? or value.is_a?(Scene_Title)
if @last_scene != NilClass and @last_scene != Scene_Title
AutoSave.common_save
end
end
@last_scene = value.type
end
trace_var(:$scene,@scene_proc)
end
module_function
def common_save
filename = "Save#{$game_temp.last_file_index + 1}.rxdata"
file = File.open(filename, "wb")
write_save_data(file)
file.close
end
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)
$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
end
复制代码
进入继续后按Esc导致脚本错误。
for i in 0...$game_party.actors.size
这个是错误行,另外还有个BUG,就是使用自动存档后,不能再手动存档,不然也会出错
在Windows_SaveFile脚本里面第28行
@characters = Marshal.load(file)
这里又会出错~~~
谁帮忙看看怎么改改。
gzliujie于2011-7-4 17:14补充以下内容:
几分钟的事情,就没个高手花个几分钟帮我看看改改?这里高手都这样的? dsu_plus_rewardpost_czw
作者:
160445706
时间:
2011-7-6 13:42
本帖最后由 fux2 于 2011-7-6 14:33 编辑
这样
如下
def auto_save
filename = "autosave.rxdata"
# 演奏存档 SE
# 写入存档数据
file = File.open(filename, "wb")
write_save_data(file)
file.close
end
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
复制代码
作者:
gzliujie
时间:
2011-7-6 18:28
160445706 发表于 2011-7-6 13:42
这样
如下
十分感谢,我去测试下。
gzliujie于2011-7-6 18:31补充以下内容:
===========
=
============
没有自动存档的效果~~~~~~直接关掉游戏不自动保存。
作者:
160445706
时间:
2011-7-6 18:39
试一下这样
def exit(n)
filename = "autosave.rxdata"
# 演奏存档 SE
# 写入存档数据
file = File.open(filename, "wb")
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)
file.close
$scene=nil
end
160445706于2011-7-6 18:51补充以下内容:
注:仅用于Alt+F4和红叉叉还有exit的指令
如要用在其它地方
请在本脚本def exit(n)之后$scene=nil之前的东东
放在任何脚本的$scene=nil之前
例如:Scene_Title
作者:
gzliujie
时间:
2011-7-7 14:55
继续测试中,:loveliness:
gzliujie于2011-7-7 14:56补充以下内容:
还是不行:L有点小悲剧。兄弟,帮忙测试后告诉我具体方法可以么~~~~拜托
gzliujie于2011-7-7 14:57补充以下内容:
帮忙测试后告诉我完整使用方法吧?拜托咯大好人呐,帮忙帮到底嘛。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1