读取最新存档功能

2022/5/9

本节文档介绍如何制作读取最新存档功能

参考教程:https://www.renpy.cn/thread-843-1-1.html

# 需求描述

Ren'Py 引擎为我们提供了 QuickLoad() 功能,但是这个功能只会读取最新的 QuickSave 存档,而不是最新存档,对位于主菜单的 Q.Load ,我们希望它能够搜索并读取所有存档中最新的那个

# 修改代码

Ren'Py 没有直接提供相关功能的参考代码,不过上面的教程里面有,我们把它稍稍修改一下即可使用

# 参考 ver1.0 screen.rpy 563-588行
# 这里省略掉了部分注释
# Q.Load 功能
    # 用 try 防止抛出错误(原因有二,一是第一次打开没有存档会找不到,二是这里使用的一个 Python2 库中有一个会抛出 Warning 的非恶性 Bug ,不影响运行,但是会抛出一个错误框给玩家,我们要屏蔽这个 Warning)

    $ latest_file = renpy.newest_slot(regexp=None)
    default l_f_page = "auto" # default,默认值,主要作用在于预定义变量
    default l_f_name = "1"

# try 部分,同样省略了部分无关代码和无关注释
# 参考 ver1.0 screen.rpy 2807-2823行
init python:
# 自动存档功能,用 try 防止抛出错误,该错误属于 Warning ,不影响运行
# 这个 Warning 是由于 Python2 自身的一个问题导致的
# except 的内容会在控制台(Release看不到)和 Linux 版(在终端能看到)输出
    try:
        l_f_page = latest_file_str.split('-',1)[0] #所在页 #auto-1表示自动存档页第一位
        l_f_name = latest_file_str.split('-',1)[1] #槽位名
    except:
        print("Powered By Luckykeeper and LOVE69 Ren'Py Remaster Project")
        print("Luckykeeper's Blog: https://luckykeeper.site/")
        print("Offical Website: https://love69renpyremasterproject.github.io/")
        print("GitHub: https://github.com/luckykeeper/LOVE69_renpy_remaster")
        print("Gitee: https://gitee.com/luckykeeper/LOVE69_renpy_remaster")
        print("GitLab: https://gitlab.com/luckykeeper/LOVE69_renpy_remaster")
        print("你 Star 了嘛?还没的话快去到 GitHub 或者 Gitee 或者 GitLab 给我们个 Star 呗!")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 调用

参考以下代码

重点关注 action 一行

也就是 action [FileLoad(name=l_f_name, confirm=True, page=l_f_page)]

# 参考 ver1.0 screen.rpy 592-609行
# Q.Load btn 的 vbox
    vbox:
        # 定位
        xalign 1.0
        yalign 0.25
        if persistent.gameStarted: # 防止没有开始游戏就去点击导致的出错
            imagebutton:
                # Q.Load btn 放大到 1080p 对应的大小是 191x304 px ,稍稍大几个像素方便定位
                ## idle 初始状态
                ## hover 鼠标放在上面的状态
                ## selected_hover 按下 btn 的状态
                idle "gui/main_menu/btn_qload_base.png"
                hover "gui/main_menu/btn_qload_onMouse.png"
                selected_hover "gui/main_menu/btn_qload_onClick.png"
                hover_sound "voice/effect/マウス乗せ音.ogg"
                activate_sound "voice/effect/メニュー決定音.ogg"
                # FileLoad() 读取存档, name=l_f_name 要读取的存档是刚刚代码搜索到的最新存档
                # confirm=True 这个操作需要玩家确认,page 存档所在页
                action [FileLoad(name=l_f_name, confirm=True, page=l_f_page)]
                # action [FileLoad(name=renpy.newest_slot(regexp=None).split('-',1)[0], confirm=True, page=renpy.newest_slot(regexp=None).split('-',1)[1])]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22