制作剧情回想
Luckykeeper 2022/5/19
本节文档介绍如何制作制作剧情回想(也叫 Replay )
官方文档:https://www.renpy.cn/doc/rooms.html#replay
# 前置知识
textbutton、imagebutton,见“QuickMenu(快捷菜单)的制作”一节
相对坐标表示法、绝对坐标表示法,见“添加不同大小的小头像”一节
持久化变量,见“设置和持久化变量”一节
# 需求描述
Replay 是一般 Galgame 中非常常见的功能,在本节我们实现一个能够根据周目情况,判断是否开放 Replay 及开放多少回想的 Replay
# Replay 的实现
这个做起来比之前的 Gallery 和音乐回放简单一些
按照官方文档里面的说法,和 Gallery 以及音乐回放一样,我们的代码需要分两个部分写,一部分是 screen ,也就是前面制作主菜单那里提到的给玩家看的 GUI ,而还有一部分是 Replay 的具体内容(也就是回放的起止点),这部分需要放到剧情脚本里面,我们来看代码
# screen 部分
也就是给玩家看的 GUI
下面的 grid
类似 HTML 的 <table>
,能够生成一个表格(网格),需要注意的是 grid 生成的格子不能空着,一定要往里面放上东西,关于 grid
的参考文档,见:https://www.renpy.cn/doc/screens.html?highlight=grid#grid
同时,依然是通过持久化变量的方式来判断哪些剧情向玩家开放
# 参考 Ver1.0 screens.rpy 2588-2652行
# ______________________________________________________________________________________________
# Replay
# 问:HS都没有,Replay 放个毛啊!
# 所以这里就提供给大伙 jump scene 的功能吧
screen replay:
tag menu
add "gui/replay/back.png"
vbox:
xalign 0.1
yalign 0.1
text "Scene Replay"
hbox:
xalign 0.5
yalign 0.5
grid 3 8:
textbutton _("Scene01 序幕 我们的故事从这里开始") action Replay("scene01")
textbutton _("Scene02 真冬&心爱线 和心爱酱约会") action Replay("scene02")
textbutton _("Scene03 真冬&心爱线 心爱酱的夜访") action Replay("scene03")
textbutton _("Scene04 真冬&心爱线 真冬酱的心意") action Replay("scene04")
textbutton _("Scene05 真冬&心爱线 兄妹间的爱恋") action Replay("scene05")
textbutton _("Scene06 真冬&心爱线 寄的莲和二人") action Replay("scene06")
textbutton _("Scene07 真冬&心爱线 心爱酱的烦恼") action Replay("scene07")
textbutton _("Scene08 真冬&心爱线 心爱酱再夜访") action Replay("scene08")
textbutton _("Scene09 真冬&心爱线 从隔阂到幸终") action Replay("scene09")
textbutton _("Scene10 真冬&心爱线 三人新的开始") action Replay("scene10")
textbutton _("Scene11 真冬&心爱线 现在是女子会") action Replay("scene11")
textbutton _("Scene12 真冬&心爱线 二人奇妙体验") action Replay("scene12")
textbutton _("Scene13 真冬&心爱线 夏威夷我来啦") action Replay("scene13")
textbutton _("Scene14 真冬&心爱线 三人心跳时刻") action Replay("scene14")
textbutton _("Scene15 真冬&心爱线 故事还将继续") action Replay("scene15")
if persistent.two:
textbutton _("Scene16 里昂线 意料外的选择") action Replay("scene16")
textbutton _("Scene17 里昂线 初合演纸芝居") action Replay("scene17")
textbutton _("Scene18 里昂线 班主任的考验") action Replay("scene18")
textbutton _("Scene19 里昂线 和里昂初约会") action Replay("scene19")
textbutton _("Scene20 里昂线 考验后的幸福") action Replay("scene20")
textbutton _("Scene21 里昂线 梦想的第一战") action Replay("scene21")
textbutton _("Scene22 里昂线 忙碌快乐日常") action Replay("scene22")
textbutton _("Scene Replay By Luckykeeper")
textbutton _("Enjoy The Game!")
else:
textbutton _("Locked!")
textbutton _("Locked!")
textbutton _("Locked!")
textbutton _("Locked!")
textbutton _("Locked!")
textbutton _("Locked!")
textbutton _("Locked!")
textbutton _("Scene Replay By Luckykeeper")
textbutton _("Enjoy The Game!")
imagebutton:
xalign 0.99
yalign 0.99
idle "gui/saveload/btn_back_base.png"
hover "gui/saveload/btn_back_onMouse.png"
selected_hover "gui/saveload/btn_back_onClick.png"
action ShowMenu("main_menu_2")
# 页面下方的提示
vbox:
xalign 0
yalign 1.0
text "By Luckykeeper: 因为移植版莫得 HScene ,所以给带伙做了一个回顾大场景的功能, Scene 以过场人物动画为界"
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 剧情脚本部分
剧情脚本部分标明 Replay 的起止点
参考代码如下:
# 参考 Ver1.0 scene01.rpy,此处有所删改
label scene01: # label 后面的名字表示这个 scene 的名字,screen 里面 action Replay("scene01") 就用这个名字寻找要回放的场景,所以如果你需要 Replay 小的场景的话(比如 HScene ),你需要从大的 Scene 中把小场景切分出来,单独标一个 label ,而不是像我在本次汉化一样,以过场动画作为 Scene 的切分
…… # 省略号表示中间的代码
…… # 省略号表示中间的代码
…… # 省略号表示中间的代码
$ renpy.end_replay() # 这句表示回放结束,不一定放在 scene 的结尾,可以放在 Scene 的中间
1
2
3
4
5
6
2
3
4
5
6