查看: 2164|回复: 3

[已经解决] 读档时选项会被跳过.....

[复制链接]
梦石
1
星屑
985
在线时间
231 小时
注册时间
2006-2-3
回帖
53
发表于 2019-11-22 04:12:57 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 zsefvv 于 2019-11-22 04:23 编辑

我这边是用事件脚本即时读档存档......
我在选项出现的位置存档,而读档后选项会被自动跳过......
(不知道什么原因,贴一下脚本准没错)
没有使用其他存档脚本了,存档只用了下面这个脚本。
[pre lang="ruby"]class Interpreter
def tosave   #存档事件脚本
    file = File.open("Save/save.rxdata", "wb")
        # 生成描绘存档文件用的角色图形
        characters = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      characters.push([actor.character_name, actor.character_hue])
    end
        # 写入描绘存档文件用的角色数据
        Marshal.dump(characters, file)
        # 写入测量游戏时间用画面计数
        Marshal.dump(Graphics.frame_count, file)
        # 保存魔法编号
        # (将编辑器保存的值以随机值替换)
        $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  
      end

def toload    #读档事件脚本
        file = File.open("Save/save.rxdata", "rb")
        # 读取描绘存档文件用的角色数据
        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
        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
end
[/pre]
还有一个问题,而且这个问题的产生原因可能也和前面那个问题是一样。
我这边还用了一个记录对话文本的脚本,我是设置按右键呼出记录.......
但是每次呼出后,也都会跳过当前对话。


最后还有一点小担心,我游戏中的文本是以外部文件的形式进行加载。
如果因为玩家读档存档的原因产生同个文件反复加载,会出现什么隐性问题吗?
梦石
1
星屑
985
在线时间
231 小时
注册时间
2006-2-3
回帖
53
 楼主| 发表于 2019-11-22 07:37:56 | 显示全部楼层
好吧,比想象中的更严重,读档时会跳过存档位置的下一个执行的任何内容.......
QQ图片20191122073455.png
例如上图,我在事件过程中,房间的初始化与摸头模式之间进行了快速存档。
下次读档时,则摸头模式不执行。(因为被跳过了)
原理未知,只会跳过当前执行内容项+1的执行内容。
回复

使用道具 举报

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2019-11-22 10:57:54 | 显示全部楼层
这怕是最尴尬的情况了,你可以开个新的空白工程试试这一段脚本
它并没有帮你 事件执行index+1 ,所以在空白工程里,你在哪里保存了,读取时就在它下一条开始执行了

如果实在找不到原因,你就手动在存档前(tosave方法的第一行)加个 @index -= 1,然后在存档后(tosave方法的最后一个end的前面)加个 @index += 1 吧……

点评

已解决~谢啦  发表于 2019-11-22 20:46

评分

参与人数 1星屑 +20 收起 理由
RyanBern + 20 我很赞同

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部