读取最新存档功能
Luckykeeper 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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22