commit e22a8656b6014896df87850c9ae4e047e74ae808 Author: shuangye <2019438694@qq.com> Date: Thu Mar 7 23:50:43 2024 +0800 初始版本 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e8e5bed --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +games/saves + +.vscode/ + +log.txt + +traceback.txt + +cache/ \ No newline at end of file diff --git a/errors.txt b/errors.txt new file mode 100644 index 0000000..9af9db5 --- /dev/null +++ b/errors.txt @@ -0,0 +1,10 @@ +I'm sorry, but errors were detected in your script. Please correct the +errors listed below, and try again. + + +File "game/rpy/script.rpy", line 128: is not terminated with a newline. (Check strings and parenthesis.) +(Perhaps you left out a " at the end of the first line.) + """ + +Ren'Py Version: Ren'Py 8.1.3.23091805 +Tue Mar 5 23:38:12 2024 diff --git a/game/SourceHanSerifSC-Heavy.ttf b/game/SourceHanSerifSC-Heavy.ttf new file mode 100644 index 0000000..ad28720 Binary files /dev/null and b/game/SourceHanSerifSC-Heavy.ttf differ diff --git a/game/gui/bar/bottom.png b/game/gui/bar/bottom.png new file mode 100644 index 0000000..6c5c499 Binary files /dev/null and b/game/gui/bar/bottom.png differ diff --git a/game/gui/bar/left.png b/game/gui/bar/left.png new file mode 100644 index 0000000..76e7941 Binary files /dev/null and b/game/gui/bar/left.png differ diff --git a/game/gui/bar/right.png b/game/gui/bar/right.png new file mode 100644 index 0000000..9d31283 Binary files /dev/null and b/game/gui/bar/right.png differ diff --git a/game/gui/bar/top.png b/game/gui/bar/top.png new file mode 100644 index 0000000..c571fb2 Binary files /dev/null and b/game/gui/bar/top.png differ diff --git a/game/gui/bubble.png b/game/gui/bubble.png new file mode 100644 index 0000000..3b23ff3 Binary files /dev/null and b/game/gui/bubble.png differ diff --git a/game/gui/button/check_foreground.png b/game/gui/button/check_foreground.png new file mode 100644 index 0000000..4113f1a Binary files /dev/null and b/game/gui/button/check_foreground.png differ diff --git a/game/gui/button/check_selected_foreground.png b/game/gui/button/check_selected_foreground.png new file mode 100644 index 0000000..01b4962 Binary files /dev/null and b/game/gui/button/check_selected_foreground.png differ diff --git a/game/gui/button/choice_hover_background.png b/game/gui/button/choice_hover_background.png new file mode 100644 index 0000000..6faca80 Binary files /dev/null and b/game/gui/button/choice_hover_background.png differ diff --git a/game/gui/button/choice_idle_background.png b/game/gui/button/choice_idle_background.png new file mode 100644 index 0000000..0b43428 Binary files /dev/null and b/game/gui/button/choice_idle_background.png differ diff --git a/game/gui/button/hover_background.png b/game/gui/button/hover_background.png new file mode 100644 index 0000000..266d53b Binary files /dev/null and b/game/gui/button/hover_background.png differ diff --git a/game/gui/button/idle_background.png b/game/gui/button/idle_background.png new file mode 100644 index 0000000..266d53b Binary files /dev/null and b/game/gui/button/idle_background.png differ diff --git a/game/gui/button/quick_hover_background.png b/game/gui/button/quick_hover_background.png new file mode 100644 index 0000000..0ecc7c9 Binary files /dev/null and b/game/gui/button/quick_hover_background.png differ diff --git a/game/gui/button/quick_idle_background.png b/game/gui/button/quick_idle_background.png new file mode 100644 index 0000000..0ecc7c9 Binary files /dev/null and b/game/gui/button/quick_idle_background.png differ diff --git a/game/gui/button/radio_foreground.png b/game/gui/button/radio_foreground.png new file mode 100644 index 0000000..4113f1a Binary files /dev/null and b/game/gui/button/radio_foreground.png differ diff --git a/game/gui/button/radio_selected_foreground.png b/game/gui/button/radio_selected_foreground.png new file mode 100644 index 0000000..01b4962 Binary files /dev/null and b/game/gui/button/radio_selected_foreground.png differ diff --git a/game/gui/button/slot_hover_background.png b/game/gui/button/slot_hover_background.png new file mode 100644 index 0000000..ba111ca Binary files /dev/null and b/game/gui/button/slot_hover_background.png differ diff --git a/game/gui/button/slot_idle_background.png b/game/gui/button/slot_idle_background.png new file mode 100644 index 0000000..8b835f2 Binary files /dev/null and b/game/gui/button/slot_idle_background.png differ diff --git a/game/gui/frame.png b/game/gui/frame.png new file mode 100644 index 0000000..095e4d0 Binary files /dev/null and b/game/gui/frame.png differ diff --git a/game/gui/game_menu.png b/game/gui/game_menu.png new file mode 100644 index 0000000..14c5f22 Binary files /dev/null and b/game/gui/game_menu.png differ diff --git a/game/gui/main_menu.png b/game/gui/main_menu.png new file mode 100644 index 0000000..14c5f22 Binary files /dev/null and b/game/gui/main_menu.png differ diff --git a/game/gui/namebox.png b/game/gui/namebox.png new file mode 100644 index 0000000..c24135c Binary files /dev/null and b/game/gui/namebox.png differ diff --git a/game/gui/notify.png b/game/gui/notify.png new file mode 100644 index 0000000..03e071a Binary files /dev/null and b/game/gui/notify.png differ diff --git a/game/gui/nvl.png b/game/gui/nvl.png new file mode 100644 index 0000000..92e7afa Binary files /dev/null and b/game/gui/nvl.png differ diff --git a/game/gui/overlay/confirm.png b/game/gui/overlay/confirm.png new file mode 100644 index 0000000..0ff98f5 Binary files /dev/null and b/game/gui/overlay/confirm.png differ diff --git a/game/gui/overlay/game_menu.png b/game/gui/overlay/game_menu.png new file mode 100644 index 0000000..4c988e3 Binary files /dev/null and b/game/gui/overlay/game_menu.png differ diff --git a/game/gui/overlay/main_menu.png b/game/gui/overlay/main_menu.png new file mode 100644 index 0000000..29e76f9 Binary files /dev/null and b/game/gui/overlay/main_menu.png differ diff --git a/game/gui/phone/bar/bottom.png b/game/gui/phone/bar/bottom.png new file mode 100644 index 0000000..6c5c499 Binary files /dev/null and b/game/gui/phone/bar/bottom.png differ diff --git a/game/gui/phone/bar/left.png b/game/gui/phone/bar/left.png new file mode 100644 index 0000000..76e7941 Binary files /dev/null and b/game/gui/phone/bar/left.png differ diff --git a/game/gui/phone/bar/right.png b/game/gui/phone/bar/right.png new file mode 100644 index 0000000..9d31283 Binary files /dev/null and b/game/gui/phone/bar/right.png differ diff --git a/game/gui/phone/bar/top.png b/game/gui/phone/bar/top.png new file mode 100644 index 0000000..c571fb2 Binary files /dev/null and b/game/gui/phone/bar/top.png differ diff --git a/game/gui/phone/button/check_foreground.png b/game/gui/phone/button/check_foreground.png new file mode 100644 index 0000000..c334a43 Binary files /dev/null and b/game/gui/phone/button/check_foreground.png differ diff --git a/game/gui/phone/button/check_selected_foreground.png b/game/gui/phone/button/check_selected_foreground.png new file mode 100644 index 0000000..41bb211 Binary files /dev/null and b/game/gui/phone/button/check_selected_foreground.png differ diff --git a/game/gui/phone/button/choice_hover_background.png b/game/gui/phone/button/choice_hover_background.png new file mode 100644 index 0000000..6faca80 Binary files /dev/null and b/game/gui/phone/button/choice_hover_background.png differ diff --git a/game/gui/phone/button/choice_idle_background.png b/game/gui/phone/button/choice_idle_background.png new file mode 100644 index 0000000..0b43428 Binary files /dev/null and b/game/gui/phone/button/choice_idle_background.png differ diff --git a/game/gui/phone/button/hover_background.png b/game/gui/phone/button/hover_background.png new file mode 100644 index 0000000..6264b8b Binary files /dev/null and b/game/gui/phone/button/hover_background.png differ diff --git a/game/gui/phone/button/idle_background.png b/game/gui/phone/button/idle_background.png new file mode 100644 index 0000000..6264b8b Binary files /dev/null and b/game/gui/phone/button/idle_background.png differ diff --git a/game/gui/phone/button/radio_foreground.png b/game/gui/phone/button/radio_foreground.png new file mode 100644 index 0000000..c334a43 Binary files /dev/null and b/game/gui/phone/button/radio_foreground.png differ diff --git a/game/gui/phone/button/radio_selected_foreground.png b/game/gui/phone/button/radio_selected_foreground.png new file mode 100644 index 0000000..41bb211 Binary files /dev/null and b/game/gui/phone/button/radio_selected_foreground.png differ diff --git a/game/gui/phone/button/slot_hover_background.png b/game/gui/phone/button/slot_hover_background.png new file mode 100644 index 0000000..ba111ca Binary files /dev/null and b/game/gui/phone/button/slot_hover_background.png differ diff --git a/game/gui/phone/button/slot_idle_background.png b/game/gui/phone/button/slot_idle_background.png new file mode 100644 index 0000000..8b835f2 Binary files /dev/null and b/game/gui/phone/button/slot_idle_background.png differ diff --git a/game/gui/phone/nvl.png b/game/gui/phone/nvl.png new file mode 100644 index 0000000..64afe88 Binary files /dev/null and b/game/gui/phone/nvl.png differ diff --git a/game/gui/phone/overlay/game_menu.png b/game/gui/phone/overlay/game_menu.png new file mode 100644 index 0000000..db5bff5 Binary files /dev/null and b/game/gui/phone/overlay/game_menu.png differ diff --git a/game/gui/phone/overlay/main_menu.png b/game/gui/phone/overlay/main_menu.png new file mode 100644 index 0000000..fe6f386 Binary files /dev/null and b/game/gui/phone/overlay/main_menu.png differ diff --git a/game/gui/phone/scrollbar/horizontal_hover_bar.png b/game/gui/phone/scrollbar/horizontal_hover_bar.png new file mode 100644 index 0000000..cdcae27 Binary files /dev/null and b/game/gui/phone/scrollbar/horizontal_hover_bar.png differ diff --git a/game/gui/phone/scrollbar/horizontal_hover_thumb.png b/game/gui/phone/scrollbar/horizontal_hover_thumb.png new file mode 100644 index 0000000..7a3bdf1 Binary files /dev/null and b/game/gui/phone/scrollbar/horizontal_hover_thumb.png differ diff --git a/game/gui/phone/scrollbar/horizontal_idle_bar.png b/game/gui/phone/scrollbar/horizontal_idle_bar.png new file mode 100644 index 0000000..1582658 Binary files /dev/null and b/game/gui/phone/scrollbar/horizontal_idle_bar.png differ diff --git a/game/gui/phone/scrollbar/horizontal_idle_thumb.png b/game/gui/phone/scrollbar/horizontal_idle_thumb.png new file mode 100644 index 0000000..7a3bdf1 Binary files /dev/null and b/game/gui/phone/scrollbar/horizontal_idle_thumb.png differ diff --git a/game/gui/phone/scrollbar/vertical_hover_bar.png b/game/gui/phone/scrollbar/vertical_hover_bar.png new file mode 100644 index 0000000..b23bb20 Binary files /dev/null and b/game/gui/phone/scrollbar/vertical_hover_bar.png differ diff --git a/game/gui/phone/scrollbar/vertical_hover_thumb.png b/game/gui/phone/scrollbar/vertical_hover_thumb.png new file mode 100644 index 0000000..4c4bf6a Binary files /dev/null and b/game/gui/phone/scrollbar/vertical_hover_thumb.png differ diff --git a/game/gui/phone/scrollbar/vertical_idle_bar.png b/game/gui/phone/scrollbar/vertical_idle_bar.png new file mode 100644 index 0000000..d5c5efc Binary files /dev/null and b/game/gui/phone/scrollbar/vertical_idle_bar.png differ diff --git a/game/gui/phone/scrollbar/vertical_idle_thumb.png b/game/gui/phone/scrollbar/vertical_idle_thumb.png new file mode 100644 index 0000000..4c4bf6a Binary files /dev/null and b/game/gui/phone/scrollbar/vertical_idle_thumb.png differ diff --git a/game/gui/phone/slider/horizontal_hover_bar.png b/game/gui/phone/slider/horizontal_hover_bar.png new file mode 100644 index 0000000..0f44b26 Binary files /dev/null and b/game/gui/phone/slider/horizontal_hover_bar.png differ diff --git a/game/gui/phone/slider/horizontal_hover_thumb.png b/game/gui/phone/slider/horizontal_hover_thumb.png new file mode 100644 index 0000000..cd4adb3 Binary files /dev/null and b/game/gui/phone/slider/horizontal_hover_thumb.png differ diff --git a/game/gui/phone/slider/horizontal_idle_bar.png b/game/gui/phone/slider/horizontal_idle_bar.png new file mode 100644 index 0000000..50ff3f9 Binary files /dev/null and b/game/gui/phone/slider/horizontal_idle_bar.png differ diff --git a/game/gui/phone/slider/horizontal_idle_thumb.png b/game/gui/phone/slider/horizontal_idle_thumb.png new file mode 100644 index 0000000..cd4adb3 Binary files /dev/null and b/game/gui/phone/slider/horizontal_idle_thumb.png differ diff --git a/game/gui/phone/slider/vertical_hover_bar.png b/game/gui/phone/slider/vertical_hover_bar.png new file mode 100644 index 0000000..c0f3a0b Binary files /dev/null and b/game/gui/phone/slider/vertical_hover_bar.png differ diff --git a/game/gui/phone/slider/vertical_hover_thumb.png b/game/gui/phone/slider/vertical_hover_thumb.png new file mode 100644 index 0000000..ce16413 Binary files /dev/null and b/game/gui/phone/slider/vertical_hover_thumb.png differ diff --git a/game/gui/phone/slider/vertical_idle_bar.png b/game/gui/phone/slider/vertical_idle_bar.png new file mode 100644 index 0000000..31b586d Binary files /dev/null and b/game/gui/phone/slider/vertical_idle_bar.png differ diff --git a/game/gui/phone/slider/vertical_idle_thumb.png b/game/gui/phone/slider/vertical_idle_thumb.png new file mode 100644 index 0000000..ce16413 Binary files /dev/null and b/game/gui/phone/slider/vertical_idle_thumb.png differ diff --git a/game/gui/phone/textbox.png b/game/gui/phone/textbox.png new file mode 100644 index 0000000..7eb4c0c Binary files /dev/null and b/game/gui/phone/textbox.png differ diff --git a/game/gui/scrollbar/horizontal_hover_bar.png b/game/gui/scrollbar/horizontal_hover_bar.png new file mode 100644 index 0000000..cdcae27 Binary files /dev/null and b/game/gui/scrollbar/horizontal_hover_bar.png differ diff --git a/game/gui/scrollbar/horizontal_hover_thumb.png b/game/gui/scrollbar/horizontal_hover_thumb.png new file mode 100644 index 0000000..7a3bdf1 Binary files /dev/null and b/game/gui/scrollbar/horizontal_hover_thumb.png differ diff --git a/game/gui/scrollbar/horizontal_idle_bar.png b/game/gui/scrollbar/horizontal_idle_bar.png new file mode 100644 index 0000000..1582658 Binary files /dev/null and b/game/gui/scrollbar/horizontal_idle_bar.png differ diff --git a/game/gui/scrollbar/horizontal_idle_thumb.png b/game/gui/scrollbar/horizontal_idle_thumb.png new file mode 100644 index 0000000..7a3bdf1 Binary files /dev/null and b/game/gui/scrollbar/horizontal_idle_thumb.png differ diff --git a/game/gui/scrollbar/vertical_hover_bar.png b/game/gui/scrollbar/vertical_hover_bar.png new file mode 100644 index 0000000..b23bb20 Binary files /dev/null and b/game/gui/scrollbar/vertical_hover_bar.png differ diff --git a/game/gui/scrollbar/vertical_hover_thumb.png b/game/gui/scrollbar/vertical_hover_thumb.png new file mode 100644 index 0000000..4c4bf6a Binary files /dev/null and b/game/gui/scrollbar/vertical_hover_thumb.png differ diff --git a/game/gui/scrollbar/vertical_idle_bar.png b/game/gui/scrollbar/vertical_idle_bar.png new file mode 100644 index 0000000..d5c5efc Binary files /dev/null and b/game/gui/scrollbar/vertical_idle_bar.png differ diff --git a/game/gui/scrollbar/vertical_idle_thumb.png b/game/gui/scrollbar/vertical_idle_thumb.png new file mode 100644 index 0000000..4c4bf6a Binary files /dev/null and b/game/gui/scrollbar/vertical_idle_thumb.png differ diff --git a/game/gui/skip.png b/game/gui/skip.png new file mode 100644 index 0000000..104092a Binary files /dev/null and b/game/gui/skip.png differ diff --git a/game/gui/slider/horizontal_hover_bar.png b/game/gui/slider/horizontal_hover_bar.png new file mode 100644 index 0000000..91f4e97 Binary files /dev/null and b/game/gui/slider/horizontal_hover_bar.png differ diff --git a/game/gui/slider/horizontal_hover_thumb.png b/game/gui/slider/horizontal_hover_thumb.png new file mode 100644 index 0000000..0517b10 Binary files /dev/null and b/game/gui/slider/horizontal_hover_thumb.png differ diff --git a/game/gui/slider/horizontal_idle_bar.png b/game/gui/slider/horizontal_idle_bar.png new file mode 100644 index 0000000..9d31283 Binary files /dev/null and b/game/gui/slider/horizontal_idle_bar.png differ diff --git a/game/gui/slider/horizontal_idle_thumb.png b/game/gui/slider/horizontal_idle_thumb.png new file mode 100644 index 0000000..0517b10 Binary files /dev/null and b/game/gui/slider/horizontal_idle_thumb.png differ diff --git a/game/gui/slider/vertical_hover_bar.png b/game/gui/slider/vertical_hover_bar.png new file mode 100644 index 0000000..58e6a27 Binary files /dev/null and b/game/gui/slider/vertical_hover_bar.png differ diff --git a/game/gui/slider/vertical_hover_thumb.png b/game/gui/slider/vertical_hover_thumb.png new file mode 100644 index 0000000..6f44eeb Binary files /dev/null and b/game/gui/slider/vertical_hover_thumb.png differ diff --git a/game/gui/slider/vertical_idle_bar.png b/game/gui/slider/vertical_idle_bar.png new file mode 100644 index 0000000..c571fb2 Binary files /dev/null and b/game/gui/slider/vertical_idle_bar.png differ diff --git a/game/gui/slider/vertical_idle_thumb.png b/game/gui/slider/vertical_idle_thumb.png new file mode 100644 index 0000000..6f44eeb Binary files /dev/null and b/game/gui/slider/vertical_idle_thumb.png differ diff --git a/game/gui/textbox.png b/game/gui/textbox.png new file mode 100644 index 0000000..9867924 Binary files /dev/null and b/game/gui/textbox.png differ diff --git a/game/gui/thoughtbubble.png b/game/gui/thoughtbubble.png new file mode 100644 index 0000000..8d5d44b Binary files /dev/null and b/game/gui/thoughtbubble.png differ diff --git a/game/gui/window_icon.png b/game/gui/window_icon.png new file mode 100644 index 0000000..21f37fb Binary files /dev/null and b/game/gui/window_icon.png differ diff --git a/game/rpy/SourceHanSansLite.ttf b/game/rpy/SourceHanSansLite.ttf new file mode 100644 index 0000000..1924547 Binary files /dev/null and b/game/rpy/SourceHanSansLite.ttf differ diff --git a/game/rpy/gui.rpy b/game/rpy/gui.rpy new file mode 100644 index 0000000..ec2271c --- /dev/null +++ b/game/rpy/gui.rpy @@ -0,0 +1,449 @@ +################################################################################ +## 初始化 +################################################################################ + +## “init offset”语句可使此文件中的初始化语句在任何其他文件中的“init”语句之前运 +## 行。 +init offset = -2 + +## 调用 gui.init 会将样式重置为合理的默认值,并设置游戏的宽度和高度(基准分辨 +## 率)。 +init python: + gui.init(1920, 1080) + +## 启用对屏幕或变换中无效或不稳定属性的检查 +define config.check_conflicting_properties = True + + +################################################################################ +## GUI 配置变量 +################################################################################ + + +## 颜色 ########################################################################## +## +## 界面中文本的颜色。 + +## 整个界面中使用的强调色,用于标记和突出显示文本。 +define gui.accent_color = '#0099ff' + +## 当文本按钮既未被选中也未被悬停时使用的颜色。 +define gui.idle_color = '#707070' + +## 小的颜色用于小的文本,需要更亮/更暗才能达到同样的效果。 +define gui.idle_small_color = '#606060' + +## 当按钮和滑条被悬停时使用的颜色。 +define gui.hover_color = '#0099ff' + +## 当文本按钮被选中但非焦点时使用的颜色。当一个按钮为当前屏幕或设置选项值时,会 +## 处于选中状态。 +define gui.selected_color = '#555555' + +## 当文本按钮无法被选择时使用的颜色。 +define gui.insensitive_color = '#7070707f' + +## 滑条未填充的部分使用的颜色。这些颜色不直接使用,但在重新生成条形图像文件时使 +## 用。 +define gui.muted_color = '#66c1ff' +define gui.hover_muted_color = '#99d6ff' + +## 对话和菜单选择文本使用的颜色。 +define gui.text_color = '#404040' +define gui.interface_text_color = '#404040' + + +## 字体和字体大小 ##################################################################### + +## 游戏内文本使用的字体。 +define gui.text_font = "SourceHanSerifSC-Heavy.ttf" + +## 角色名称使用的字体。 +define gui.name_text_font = "SourceHanSerifSC-Heavy.ttf" + +## 游戏外文本使用的字体。 +define gui.interface_text_font = "SourceHanSerifSC-Heavy.ttf" + +## 普通对话文本的大小。 +define gui.text_size = 33 + +## 角色名称的大小。 +define gui.name_text_size = 45 + +## 游戏用户界面中文本的大小。 +define gui.interface_text_size = 33 + +## 游戏用户界面中标签的大小。 +define gui.label_text_size = 36 + +## 通知屏幕上文本的大小。 +define gui.notify_text_size = 24 + +## 游戏标题的大小。 +define gui.title_text_size = 75 + + +## 标题和游戏菜单 ##################################################################### + +## 标题菜单和游戏菜单使用的图像。 +define gui.main_menu_background = "gui/main_menu.png" +define gui.game_menu_background = "gui/game_menu.png" + + +## 对话 ########################################################################## +## +## 这些变量控制对话如何在屏幕上逐行显示。 + +## 包含对话的文本框的高度。 +define gui.textbox_height = 278 + +## 文本框在屏幕上的垂直位置。0.0 是顶部,0.5 是居中,1.0 是底部。 +define gui.textbox_yalign = 1.0 + + +## 叙述角色名字相对于文本框的位置。可以是从左侧或顶部起的整数像素,或设为 0.5 来 +## 居中。 +define gui.name_xpos = 360 +define gui.name_ypos = 0 + +## 角色名字的水平对齐方式。0.0 为左侧对齐,0.5 为居中显示,而 1.0 为右侧对齐。 +define gui.name_xalign = 0.0 + +## 包含角色名字的方框的宽度、高度和边框尺寸,或设为 None 来自动确定其大小。 +define gui.namebox_width = None +define gui.namebox_height = None + +## 包含角色名字的方框的边界尺寸,以左、上、右、下顺序排列。 +define gui.namebox_borders = Borders(5, 5, 5, 5) + +## 若为 True,则名字框的背景将平铺;若为 False,则名字框的背景将缩放。 +define gui.namebox_tile = False + + +## 对话相对于文本框的位置。可以是相对于文本框从左侧或顶部起的整数像素,或设为 +## 0.5 来居中。 +define gui.dialogue_xpos = 402 +define gui.dialogue_ypos = 75 + +## 对话文本的最大宽度,以像素为单位。 +define gui.dialogue_width = 1116 + +## 对话文本的水平对齐方式。0.0 为左侧对齐,0.5 为居中显示,而 1.0 为右侧对齐。 +define gui.dialogue_text_xalign = 0.0 + + +## 按钮 ########################################################################## +## +## 这些变量以及 gui/button 中的图像文件控制着按钮显示方式。 + +## 按钮的宽度和高度像素数。如果为 None,则 Ren'Py 将计算大小。 +define gui.button_width = None +define gui.button_height = None + +## 按钮两侧的边框,按左、上、右、下的顺序排列。 +define gui.button_borders = Borders(6, 6, 6, 6) + +## 若为 True,则背景图像将平铺。若为 False,则背景图像将线性缩放。 +define gui.button_tile = False + +## 按钮使用的字体。 +define gui.button_text_font = gui.interface_text_font + +## 按钮所使用的文本大小。 +define gui.button_text_size = gui.interface_text_size + +## 按钮文本在各种状态下的颜色。 +define gui.button_text_idle_color = gui.idle_color +define gui.button_text_hover_color = gui.hover_color +define gui.button_text_selected_color = gui.selected_color +define gui.button_text_insensitive_color = gui.insensitive_color + +## 按钮文本的水平对齐方式。(0.0 为左侧对齐,0.5 为居中对齐,而 1.0 为右侧对 +## 齐)。 +define gui.button_text_xalign = 0.0 + + +## 这些变量覆盖了不同类型按钮的设置。关于可用的按钮种类以及每种按钮的用途,请参 +## 阅 gui 文档。 +## +## 这些定制由默认界面使用: + +define gui.radio_button_borders = Borders(27, 6, 6, 6) + +define gui.check_button_borders = Borders(27, 6, 6, 6) + +define gui.confirm_button_text_xalign = 0.5 + +define gui.page_button_borders = Borders(15, 6, 15, 6) + +define gui.quick_button_borders = Borders(15, 6, 15, 0) +define gui.quick_button_text_size = 21 +define gui.quick_button_text_idle_color = gui.idle_small_color +define gui.quick_button_text_selected_color = gui.accent_color + +## 您还可以通过添加正确命名的变量来添加自己的定制。例如,您可以将以下几行取消注 +## 释来设置导航按钮的宽度。 + +# define gui.navigation_button_width = 250 + + +## 选项按钮 ######################################################################## +## +## 游戏内菜单使用的选项按钮。 + +define gui.choice_button_width = 1185 +define gui.choice_button_height = None +define gui.choice_button_tile = False +define gui.choice_button_borders = Borders(150, 8, 150, 8) +define gui.choice_button_text_font = gui.text_font +define gui.choice_button_text_size = gui.text_size +define gui.choice_button_text_xalign = 0.5 +define gui.choice_button_text_idle_color = '#707070' +define gui.choice_button_text_hover_color = "#ffffff" +define gui.choice_button_text_insensitive_color = '#7070707f' + + +## 存档按钮 ######################################################################## +## +## 存档按钮是一种特殊的按钮。它包含一个缩略图和描述该存档内容的文本。存档使用 +## gui/button 中的图像文件,就像其他类型的按钮一样。 + +## 存档位按钮。 +define gui.slot_button_width = 414 +define gui.slot_button_height = 309 +define gui.slot_button_borders = Borders(15, 15, 15, 15) +define gui.slot_button_text_size = 21 +define gui.slot_button_text_xalign = 0.5 +define gui.slot_button_text_idle_color = gui.idle_small_color +define gui.slot_button_text_selected_idle_color = gui.selected_color +define gui.slot_button_text_selected_hover_color = gui.hover_color + +## 存档所用缩略图的宽度和高度。 +define config.thumbnail_width = 384 +define config.thumbnail_height = 216 + +## 存档网格中的列数和行数。 +define gui.file_slot_cols = 3 +define gui.file_slot_rows = 2 + + +## 定位和间距 ####################################################################### +## +## 这些变量控制各种用户界面元素的位置和间距。 + +## 导航按钮左侧相对于屏幕左侧的位置。 +define gui.navigation_xpos = 60 + +## 快进指示器的垂直位置。 +define gui.skip_ypos = 15 + +## 通知界面的垂直位置。 +define gui.notify_ypos = 68 + +## 菜单选项之间的间距。 +define gui.choice_spacing = 33 + +## 标题菜单和游戏菜单的导航部分中的按钮。 +define gui.navigation_spacing = 6 + +## 控制设置项目之间的间隔量。 +define gui.pref_spacing = 15 + +## 控制设置按钮之间的间距。 +define gui.pref_button_spacing = 0 + +## 存档页面按钮之间的间距。 +define gui.page_spacing = 0 + +## 存档按钮之间的间距。 +define gui.slot_spacing = 15 + +## 标题菜单文本的位置。 +define gui.main_menu_text_xalign = 1.0 + + +## 框架 ########################################################################## +## +## 这些变量控制在不存在覆盖层或窗口时可以包含用户界面组件的框架的外观。 + +## 通用框架。 +define gui.frame_borders = Borders(6, 6, 6, 6) + +## 用作确认界面部分的框架。 +define gui.confirm_frame_borders = Borders(60, 60, 60, 60) + +## 用作快进界面部分的框架。 +define gui.skip_frame_borders = Borders(24, 8, 75, 8) + +## 用作通知界面部分的框架。 +define gui.notify_frame_borders = Borders(24, 8, 60, 8) + +## 框架背景是否应平铺? +define gui.frame_tile = False + + +## 条,滚动条和滑块 #################################################################### +## +## 这些语句控制条,滚动条和滑块的外观和大小。 +## +## 默认的 GUI 仅使用滑块和垂直滚动条。所有其他栏仅在创建者编写的屏幕中使用。 + +## 水平条,滚动条和滑块的高度。垂直条,滚动条和滑块的宽度。 +define gui.bar_size = 38 +define gui.scrollbar_size = 18 +define gui.slider_size = 38 + +## 若为 True,则条的底图平铺。若为 False,则条的底图线性缩放。 +define gui.bar_tile = False +define gui.scrollbar_tile = False +define gui.slider_tile = False + +## 水平边框。 +define gui.bar_borders = Borders(6, 6, 6, 6) +define gui.scrollbar_borders = Borders(6, 6, 6, 6) +define gui.slider_borders = Borders(6, 6, 6, 6) + +## 垂直边框。 +define gui.vbar_borders = Borders(6, 6, 6, 6) +define gui.vscrollbar_borders = Borders(6, 6, 6, 6) +define gui.vslider_borders = Borders(6, 6, 6, 6) + +## 如何处理 GUI 中不可滚动的滚动条。 hide 为隐藏, None 为显示。 +define gui.unscrollable = "hide" + + +## 历史 ########################################################################## +## +## 历史记录屏幕显示玩家已经阅读过的对话。 + +## Ren'Py 将保留的对话历史块数。 +define config.history_length = 250 + +## 历史屏幕条目的高度,或设置为 None 以使高度变量自适应。 +define gui.history_height = 210 + +## 所指定叙述角色的标签的坐标、宽度和对齐方式。 +define gui.history_name_xpos = 233 +define gui.history_name_ypos = 0 +define gui.history_name_width = 233 +define gui.history_name_xalign = 1.0 + +## 对话文本的坐标、宽度和对齐方式。 +define gui.history_text_xpos = 255 +define gui.history_text_ypos = 3 +define gui.history_text_width = 1110 +define gui.history_text_xalign = 0.0 + + +## NVL 模式 ###################################################################### +## +## NVL 模式屏幕显示 NVL 模式的角色所产生的对话。 + +## NVL 模式背景窗口的背景边框。 +define gui.nvl_borders = Borders(0, 15, 0, 30) + +## Ren'Py 所显示的 NVL 模式条目的最大数量。当要显示的条目多于此数量时,最旧的条 +## 目将被删除。 +define gui.nvl_list_length = 6 + +## NVL 模式条目的高度。将此设置为 None 可使条目动态调整高度。 +define gui.nvl_height = 173 + +## 当 gui.nvl_height 为 None 时,NVL 模式条目之间的间距,以及 NVL 模式条目和 NVL +## 模式菜单之间的间距。 +define gui.nvl_spacing = 15 + +## 所指定叙述角色的标签的坐标、宽度和对齐方式。 +define gui.nvl_name_xpos = 645 +define gui.nvl_name_ypos = 0 +define gui.nvl_name_width = 225 +define gui.nvl_name_xalign = 1.0 + +## 对话文本的坐标、宽度和对齐方式。 +define gui.nvl_text_xpos = 675 +define gui.nvl_text_ypos = 12 +define gui.nvl_text_width = 885 +define gui.nvl_text_xalign = 0.0 + +## nvl_thought 文本(由 nvl_narrator 字符表示的文本)的位置,宽度和对齐方式。 +define gui.nvl_thought_xpos = 360 +define gui.nvl_thought_ypos = 0 +define gui.nvl_thought_width = 1170 +define gui.nvl_thought_xalign = 0.0 + +## NVL menu_buttons 的位置。 +define gui.nvl_button_xpos = 675 +define gui.nvl_button_xalign = 0.0 + + +## 本地化 ######################################################################### + +## 该变量控制允许在何时换行。默认值适用于大多数语言。可用的值请参见 https:// +## www.renpy.org/doc/html/style_properties.html#style-property-language + +define gui.language = "unicode" + + +################################################################################ +## 移动设备 +################################################################################ + +init python: + + ## 该变量增加快捷菜单按钮的尺寸来使它们在平板和手机上更容易被按到。 + @gui.variant + def touch(): + + gui.quick_button_borders = Borders(60, 21, 60, 0) + + ## 该变量更改各个 GUI 元素的尺寸和间距来确保它们在手机上更容易被辨识。 + @gui.variant + def small(): + + ## 字体大小。 + gui.text_size = 45 + gui.name_text_size = 54 + gui.notify_text_size = 38 + gui.interface_text_size = 45 + gui.button_text_size = 45 + gui.label_text_size = 51 + + ## 调整对话框的位置。 + gui.textbox_height = 360 + gui.name_xpos = 120 + gui.dialogue_xpos = 135 + gui.dialogue_width = 1650 + + ## 更改各元素的尺寸和间距。 + gui.slider_size = 54 + + gui.choice_button_width = 1860 + gui.choice_button_text_size = 45 + + gui.navigation_spacing = 30 + gui.pref_button_spacing = 15 + + gui.history_height = 285 + gui.history_text_width = 1035 + + gui.quick_button_text_size = 30 + + ## 文件按钮布局。 + gui.file_slot_cols = 2 + gui.file_slot_rows = 2 + + ## NVL 模式。 + gui.nvl_height = 255 + + gui.nvl_name_width = 458 + gui.nvl_name_xpos = 488 + + gui.nvl_text_width = 1373 + gui.nvl_text_xpos = 518 + gui.nvl_text_ypos = 8 + + gui.nvl_thought_width = 1860 + gui.nvl_thought_xpos = 30 + + gui.nvl_button_width = 1860 + gui.nvl_button_xpos = 30 diff --git a/game/rpy/gui.rpyc b/game/rpy/gui.rpyc new file mode 100644 index 0000000..e1b607c Binary files /dev/null and b/game/rpy/gui.rpyc differ diff --git a/game/rpy/options.rpy b/game/rpy/options.rpy new file mode 100644 index 0000000..907b40a --- /dev/null +++ b/game/rpy/options.rpy @@ -0,0 +1,193 @@ +## 此文件包含有可自定义您游戏的设置。 +## +## 以“##”开头的语句是注释,您不应该对其取消注释。以“#”开头的语句是注释掉的代码, +## 在适用的时候您可能需要对其取消注释。 + + +## 基础 ########################################################################## + +## 用户可读的游戏名称。此命令用来设置默认窗口标题,并且会在界面和错误报告中出 +## 现。 +## +## 带有 _() 的字符串表示其可被翻译。 + +define config.name = _("teach_1") + + +## 决定上面给出的标题是否显示在标题界面屏幕。设置为 False 来隐藏标题。 + +define gui.show_name = True + + +## 游戏版本号。 + +define config.version = "1.0" + + +## 放置在游戏内“关于”屏幕上的文本。将文本放在三个引号之间,并在段落之间留出空 +## 行。 + +define gui.about = _p(""" +""") + + +## 在构建的发布版中,可执行文件和目录所使用的短名称。此处仅限使用 ASCII 字符,并 +## 且不能包含空格、冒号或分号。 + +define build.name = "teach_1" + + +## 音效和音乐 ####################################################################### + +## 这三个变量控制哪些内置的混音器会默认显示给用户。将其中一个设置为 False 将隐藏 +## 对应的混音器。 + +define config.has_sound = True +define config.has_music = True +define config.has_voice = True + + +## 为了让用户在音效或语音轨道上播放测试音频,请取消对下面一行的注释并设置播放的 +## 样本声音。 + +# define config.sample_sound = "sample-sound.ogg" +# define config.sample_voice = "sample-voice.ogg" + + +## 将以下语句取消注释就可以设置标题界面播放的背景音乐文件。此文件将在整个游戏中 +## 持续播放,直至音乐停止或其他文件开始播放。 + +# define config.main_menu_music = "main-menu-theme.ogg" + + +## 转场 ########################################################################## +## +## 这些变量用来控制某些事件发生时的转场。每一个变量都应设置成一个转场,或者是 +## None 来表示无转场。 + +## 进入或退出游戏菜单。 + +define config.enter_transition = dissolve +define config.exit_transition = dissolve + + +## 各个游戏菜单之间的转场。 + +define config.intra_transition = dissolve + + +## 载入游戏后使用的转场。 + +define config.after_load_transition = None + + +## 在游戏结束之后进入主菜单时使用的转场。 + +define config.end_game_transition = None + + +## 用于控制在游戏开始标签不存在时转场的变量。作为替代,在显示初始化场景后使用 +## with 语句。 + + +## 窗口管理 ######################################################################## +## +## 此命令控制对话框窗口何时显示。若为 show,对话框将总是显示。若为 hide,对话框 +## 仅在对话出现时显示。若为 auto,对话框会在 scene 语句前隐藏,并在有新对话时重 +## 新显示。 +## +## 在游戏开始后,可以用 window show、window hide 和 window auto 语句来改变其状 +## 态。 + +define config.window = "auto" + + +## 用于显示和隐藏对话框窗口的转场 + +define config.window_show_transition = Dissolve(.2) +define config.window_hide_transition = Dissolve(.2) + + +## 默认设置 ######################################################################## + +## 控制默认的文字显示速度。默认的 0 为瞬间,而其他数字则是每秒显示出的字符数。 + +default preferences.text_cps = 0 + + +## 默认的自动前进延迟。数字越大,等待时间越长,有效范围为 0 - 30。 + +default preferences.afm_time = 15 + + +## 存档目录 ######################################################################## +## +## 控制 Ren'Py 放置游戏存档的特定操作系统目录。存档文件将放置在: +## +## Windows:%APPDATA\RenPy\ +## +## Macintosh:$HOME/Library/RenPy/ +## +## Linux:$HOME/.renpy/ +## +## 该语句通常不应变更,若要变更,应为有效字符串而不是表达式。 + +define config.save_directory = "teach_1-1709648337" + + +## 图标 ########################################################################## +## +## 在任务栏或 Dock 上显示的图标。 + +define config.window_icon = "gui/window_icon.png" + + +## 构建配置 ######################################################################## +## +## 此部分控制 Ren'Py 如何将您的项目转变为发行版文件。 + +init python: + + ## 以下函数接受文件模式。文件模式不区分大小写,并与基础目录的相对路径相匹 + ## 配,包括或不包括 /。如果多个模式匹配,则使用第一个模式。 + ## + ## 在一个模式中: + ## + ## / 是目录分隔符。 + ## + ## * 匹配所有字符,目录分隔符除外。 + ## + ## ** 匹配所有字符,包括目录分隔符。 + ## + ## 例如,“*.txt”匹配基础目录中的 txt 文件,“game/**.ogg”匹配游戏目录或任何子 + ## 目录中的 ogg 文件,“**.psd”匹配项目中任何位置的 psd 文件。 + + ## 将文件列为 None 来使其从构建的发行版中排除。 + + build.classify('**~', None) + build.classify('**.bak', None) + build.classify('**/.**', None) + build.classify('**/#**', None) + build.classify('**/thumbs.db', None) + + ## 若要封装文件,需将其列为“archive”。 + + # build.classify('game/**.png', 'archive') + # build.classify('game/**.jpg', 'archive') + + ## 匹配为文档模式的文件会在 Mac 应用程序构建中被复制,因此它们同时出现在 APP + ## 和 ZIP 文件中。 + + build.documentation('*.html') + build.documentation('*.txt') + + +## 执行应用内购需要一个 Google Play 许可密钥。许可密钥可以在 Google Play 开发者 +## 控制台的“Monetize” > “Monetization Setup” > “Licensing”页面找到。 + +# define build.google_play_key = "..." + + +## 与 itch.io 项目相关的用户名和项目名,以 / 分隔。 + +# define build.itch_project = "renpytom/test-project" diff --git a/game/rpy/options.rpyc b/game/rpy/options.rpyc new file mode 100644 index 0000000..47e450e Binary files /dev/null and b/game/rpy/options.rpyc differ diff --git a/game/rpy/screens.rpy b/game/rpy/screens.rpy new file mode 100644 index 0000000..076fb12 --- /dev/null +++ b/game/rpy/screens.rpy @@ -0,0 +1,1583 @@ +################################################################################ +## 初始化 +################################################################################ + +init offset = -1 + + +################################################################################ +## 样式 +################################################################################ + +style default: + properties gui.text_properties() + language gui.language + +style input: + properties gui.text_properties("input", accent=True) + adjust_spacing False + +style hyperlink_text: + properties gui.text_properties("hyperlink", accent=True) + hover_underline True + +style gui_text: + properties gui.text_properties("interface") + + +style button: + properties gui.button_properties("button") + +style button_text is gui_text: + properties gui.text_properties("button") + yalign 0.5 + + +style label_text is gui_text: + properties gui.text_properties("label", accent=True) + +style prompt_text is gui_text: + properties gui.text_properties("prompt") + + +style bar: + ysize gui.bar_size + left_bar Frame("gui/bar/left.png", gui.bar_borders, tile=gui.bar_tile) + right_bar Frame("gui/bar/right.png", gui.bar_borders, tile=gui.bar_tile) + +style vbar: + xsize gui.bar_size + top_bar Frame("gui/bar/top.png", gui.vbar_borders, tile=gui.bar_tile) + bottom_bar Frame("gui/bar/bottom.png", gui.vbar_borders, tile=gui.bar_tile) + +style scrollbar: + ysize gui.scrollbar_size + base_bar Frame("gui/scrollbar/horizontal_[prefix_]bar.png", gui.scrollbar_borders, tile=gui.scrollbar_tile) + thumb Frame("gui/scrollbar/horizontal_[prefix_]thumb.png", gui.scrollbar_borders, tile=gui.scrollbar_tile) + +style vscrollbar: + xsize gui.scrollbar_size + base_bar Frame("gui/scrollbar/vertical_[prefix_]bar.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile) + thumb Frame("gui/scrollbar/vertical_[prefix_]thumb.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile) + +style slider: + ysize gui.slider_size + base_bar Frame("gui/slider/horizontal_[prefix_]bar.png", gui.slider_borders, tile=gui.slider_tile) + thumb "gui/slider/horizontal_[prefix_]thumb.png" + +style vslider: + xsize gui.slider_size + base_bar Frame("gui/slider/vertical_[prefix_]bar.png", gui.vslider_borders, tile=gui.slider_tile) + thumb "gui/slider/vertical_[prefix_]thumb.png" + + +style frame: + padding gui.frame_borders.padding + background Frame("gui/frame.png", gui.frame_borders, tile=gui.frame_tile) + + + +################################################################################ +## 游戏内屏幕 +################################################################################ + + +## 对话屏幕 ######################################################################## +## +## 对话屏幕用于向用户显示对话。它需要两个参数,who 和 what,分别是叙述角色的名字 +## 和所叙述的文本。(如果没有名字,参数 who 可以是 None。) +## +## 此屏幕必须创建一个 id 为 what 的文本可视控件,因为 Ren'Py 使用它来管理文本显 +## 示。它还可以创建 id 为 who 和 id 为 window 的可视控件来应用样式属性。 +## +## https://www.renpy.cn/doc/screen_special.html#say + +screen say(who, what): + style_prefix "say" + + window: + id "window" + + if who is not None: + + window: + id "namebox" + style "namebox" + text who id "who" + + text what id "what" + + + ## 如果有对话框头像,会将其显示在文本之上。请不要在手机界面下显示这个,因为 + ## 没有空间。 + if not renpy.variant("small"): + add SideImage() xalign 0.0 yalign 1.0 + + +## 通过 Character 对象使名称框可用于样式化。 +init python: + config.character_id_prefixes.append('namebox') + +style window is default +style say_label is default +style say_dialogue is default +style say_thought is say_dialogue + +style namebox is default +style namebox_label is say_label + + +style window: + xalign 0.5 + xfill True + yalign gui.textbox_yalign + ysize gui.textbox_height + + background Image("gui/textbox.png", xalign=0.5, yalign=1.0) + +style namebox: + xpos gui.name_xpos + xanchor gui.name_xalign + xsize gui.namebox_width + ypos gui.name_ypos + ysize gui.namebox_height + + background Frame("gui/namebox.png", gui.namebox_borders, tile=gui.namebox_tile, xalign=gui.name_xalign) + padding gui.namebox_borders.padding + +style say_label: + properties gui.text_properties("name", accent=True) + xalign gui.name_xalign + yalign 0.5 + +style say_dialogue: + properties gui.text_properties("dialogue") + + xpos gui.dialogue_xpos + xsize gui.dialogue_width + ypos gui.dialogue_ypos + + adjust_spacing False + +## 输入屏幕 ######################################################################## +## +## 此屏幕用于显示 renpy.input。prompt 参数用于传递文本提示。 +## +## 此屏幕必须创建一个 id 为 input 的输入可视控件来接受各种输入参数。 +## +## https://www.renpy.cn/doc/screen_special.html#input + +screen input(prompt): + style_prefix "input" + + window: + + vbox: + xanchor gui.dialogue_text_xalign + xpos gui.dialogue_xpos + xsize gui.dialogue_width + ypos gui.dialogue_ypos + + text prompt style "input_prompt" + input id "input" + +style input_prompt is default + +style input_prompt: + xalign gui.dialogue_text_xalign + properties gui.text_properties("input_prompt") + +style input: + xalign gui.dialogue_text_xalign + xmaximum gui.dialogue_width + + +## 选择屏幕 ######################################################################## +## +## 此屏幕用于显示由 menu 语句生成的游戏内选项。参数 items 是一个对象列表,每个对 +## 象都有字幕和动作字段。 +## +## https://www.renpy.cn/doc/screen_special.html#choice + +screen choice(items): + style_prefix "choice" + + vbox: + for i in items: + textbutton i.caption action i.action + + +style choice_vbox is vbox +style choice_button is button +style choice_button_text is button_text + +style choice_vbox: + xalign 0.5 + ypos 405 + yanchor 0.5 + + spacing gui.choice_spacing + +style choice_button is default: + properties gui.button_properties("choice_button") + +style choice_button_text is default: + properties gui.button_text_properties("choice_button") + + +## 快捷菜单屏幕 ###################################################################### +## +## 快捷菜单显示于游戏内,以便于访问游戏外的菜单。 + +screen quick_menu(): + + ## 确保该菜单出现在其他屏幕之上, + zorder 100 + + if quick_menu: + + hbox: + style_prefix "quick" + + xalign 0.5 + yalign 1.0 + + textbutton _("回退") action Rollback() + textbutton _("历史") action ShowMenu('history') + textbutton _("快进") action Skip() alternate Skip(fast=True, confirm=True) + textbutton _("自动") action Preference("auto-forward", "toggle") + textbutton _("保存") action ShowMenu('save') + textbutton _("快存") action QuickSave() + textbutton _("快读") action QuickLoad() + textbutton _("设置") action ShowMenu('preferences') + + +## 此代码确保只要用户没有主动隐藏界面,就会在游戏中显示 quick_menu 屏幕。 +init python: + config.overlay_screens.append("quick_menu") + +default quick_menu = True + +style quick_button is default +style quick_button_text is button_text + +style quick_button: + properties gui.button_properties("quick_button") + +style quick_button_text: + properties gui.button_text_properties("quick_button") + + +################################################################################ +## 标题和游戏菜单屏幕 +################################################################################ + +## 导航屏幕 ######################################################################## +## +## 该屏幕包含在标题菜单和游戏菜单中,并提供导航到其他菜单,以及启动游戏。 + +screen navigation(): + + vbox: + style_prefix "navigation" + + xpos gui.navigation_xpos + yalign 0.5 + + spacing gui.navigation_spacing + + if main_menu: + + textbutton _("开始游戏") action Start() + + else: + + textbutton _("历史") action ShowMenu("history") + + textbutton _("保存") action ShowMenu("save") + + textbutton _("读取游戏") action ShowMenu("load") + + textbutton _("设置") action ShowMenu("preferences") + + if _in_replay: + + textbutton _("结束回放") action EndReplay(confirm=True) + + elif not main_menu: + + textbutton _("标题菜单") action MainMenu() + + textbutton _("关于") action ShowMenu("about") + + if renpy.variant("pc") or (renpy.variant("web") and not renpy.variant("mobile")): + + ## “帮助”对移动设备来说并非必需或相关。 + textbutton _("帮助") action ShowMenu("help") + + if renpy.variant("pc"): + + ## 退出按钮在 iOS 上是被禁止使用的,在安卓和网页上也不是必要的。 + textbutton _("退出") action Quit(confirm=not main_menu) + + +style navigation_button is gui_button +style navigation_button_text is gui_button_text + +style navigation_button: + size_group "navigation" + properties gui.button_properties("navigation_button") + +style navigation_button_text: + properties gui.button_text_properties("navigation_button") + + +## 标题菜单屏幕 ###################################################################### +## +## 用于在 Ren'Py 启动时显示标题菜单。 +## +## https://www.renpy.cn/doc/screen_special.html#main-menu + +screen main_menu(): + + ## 此语句可确保替换掉任何其他菜单屏幕。 + tag menu + + add gui.main_menu_background + + ## 此空框可使标题菜单变暗。 + frame: + style "main_menu_frame" + + ## use 语句将其他的屏幕包含进此屏幕。标题屏幕的实际内容在导航屏幕中。 + use navigation + + if gui.show_name: + + vbox: + style "main_menu_vbox" + + text "[config.name!t]": + style "main_menu_title" + + text "[config.version]": + style "main_menu_version" + + +style main_menu_frame is empty +style main_menu_vbox is vbox +style main_menu_text is gui_text +style main_menu_title is main_menu_text +style main_menu_version is main_menu_text + +style main_menu_frame: + xsize 420 + yfill True + + background "gui/overlay/main_menu.png" + +style main_menu_vbox: + xalign 1.0 + xoffset -30 + xmaximum 1200 + yalign 1.0 + yoffset -30 + +style main_menu_text: + properties gui.text_properties("main_menu", accent=True) + +style main_menu_title: + properties gui.text_properties("title") + +style main_menu_version: + properties gui.text_properties("version") + + +## 游戏菜单屏幕 ###################################################################### +## +## 此屏幕列出了游戏菜单的基本共同结构。可使用屏幕标题调用,并显示背景、标题和导 +## 航菜单。 +## +## scroll 参数可以是 None,也可以是 viewport 或 vpgrid。此屏幕旨在与一个或多个子 +## 屏幕同时使用,这些子屏幕将被嵌入(放置)在其中。 + +screen game_menu(title, scroll=None, yinitial=0.0): + + style_prefix "game_menu" + + if main_menu: + add gui.main_menu_background + else: + add gui.game_menu_background + + frame: + style "game_menu_outer_frame" + + hbox: + + ## 导航部分的预留空间。 + frame: + style "game_menu_navigation_frame" + + frame: + style "game_menu_content_frame" + + if scroll == "viewport": + + viewport: + yinitial yinitial + scrollbars "vertical" + mousewheel True + draggable True + pagekeys True + + side_yfill True + + vbox: + transclude + + elif scroll == "vpgrid": + + vpgrid: + cols 1 + yinitial yinitial + + scrollbars "vertical" + mousewheel True + draggable True + pagekeys True + + side_yfill True + + transclude + + else: + + transclude + + use navigation + + textbutton _("返回"): + style "return_button" + + action Return() + + label title + + if main_menu: + key "game_menu" action ShowMenu("main_menu") + + +style game_menu_outer_frame is empty +style game_menu_navigation_frame is empty +style game_menu_content_frame is empty +style game_menu_viewport is gui_viewport +style game_menu_side is gui_side +style game_menu_scrollbar is gui_vscrollbar + +style game_menu_label is gui_label +style game_menu_label_text is gui_label_text + +style return_button is navigation_button +style return_button_text is navigation_button_text + +style game_menu_outer_frame: + bottom_padding 45 + top_padding 180 + + background "gui/overlay/game_menu.png" + +style game_menu_navigation_frame: + xsize 420 + yfill True + +style game_menu_content_frame: + left_margin 60 + right_margin 30 + top_margin 15 + +style game_menu_viewport: + xsize 1380 + +style game_menu_vscrollbar: + unscrollable gui.unscrollable + +style game_menu_side: + spacing 15 + +style game_menu_label: + xpos 75 + ysize 180 + +style game_menu_label_text: + size gui.title_text_size + color gui.accent_color + yalign 0.5 + +style return_button: + xpos gui.navigation_xpos + yalign 1.0 + yoffset -45 + + +## 关于屏幕 ######################################################################## +## +## 此屏幕提供有关游戏和 Ren'Py 的制作人员和版权信息。 +## +## 此屏幕没有什么特别之处,因此它也可以作为一个例子来说明如何制作一个自定义屏 +## 幕。 + +screen about(): + + tag menu + + ## 此 use 语句将 game_menu 屏幕包含到了这个屏幕内。子级 vbox 将包含在 + ## game_menu 屏幕的 viewport 内。 + use game_menu(_("关于"), scroll="viewport"): + + style_prefix "about" + + vbox: + + label "[config.name!t]" + text _("版本 [config.version!t]\n") + + ## gui.about 通常在 options.rpy 中设置。 + if gui.about: + text "[gui.about!t]\n" + + text _("引擎:{a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only]\n\n[renpy.license!t]") + + +style about_label is gui_label +style about_label_text is gui_label_text +style about_text is gui_text + +style about_label_text: + size gui.label_text_size + + +## 读取和保存屏幕 ##################################################################### +## +## 这些屏幕负责让用户保存游戏并能够再次读取。由于它们几乎完全一样,因此这两个屏 +## 幕都是以第三个屏幕 file_slots 来实现的。 +## +## https://www.renpy.cn/doc/screen_special.html#save https://www.renpy.cn/doc/ +## screen_special.html#load + +screen save(): + + tag menu + + use file_slots(_("保存")) + + +screen load(): + + tag menu + + use file_slots(_("读取游戏")) + + +screen file_slots(title): + + default page_name_value = FilePageNameInputValue(pattern=_("第 {} 页"), auto=_("自动存档"), quick=_("快速存档")) + + use game_menu(title): + + fixed: + + ## 此代码确保输入控件在任意按钮执行前可以获取 enter 事件。 + order_reverse True + + ## 页面名称,可以通过单击按钮进行编辑。 + button: + style "page_label" + + key_events True + xalign 0.5 + action page_name_value.Toggle() + + input: + style "page_label_text" + value page_name_value + + ## 存档位网格。 + grid gui.file_slot_cols gui.file_slot_rows: + style_prefix "slot" + + xalign 0.5 + yalign 0.5 + + spacing gui.slot_spacing + + for i in range(gui.file_slot_cols * gui.file_slot_rows): + + $ slot = i + 1 + + button: + action FileAction(slot) + + has vbox + + add FileScreenshot(slot) xalign 0.5 + + text FileTime(slot, format=_("{#file_time}%Y-%m-%d %H:%M"), empty=_("空存档位")): + style "slot_time_text" + + text FileSaveName(slot): + style "slot_name_text" + + key "save_delete" action FileDelete(slot) + + ## 用于访问其他页面的按钮。 + vbox: + style_prefix "page" + + xalign 0.5 + yalign 1.0 + + hbox: + xalign 0.5 + + spacing gui.page_spacing + + textbutton _("<") action FilePagePrevious() + + if config.has_autosave: + textbutton _("{#auto_page}A") action FilePage("auto") + + if config.has_quicksave: + textbutton _("{#quick_page}Q") action FilePage("quick") + + ## range(1, 10) 给出 1 到 9 之间的数字。 + for page in range(1, 10): + textbutton "[page]" action FilePage(page) + + textbutton _(">") action FilePageNext() + + if config.has_sync: + if CurrentScreenName() == "save": + textbutton _("上传同步"): + action UploadSync() + xalign 0.5 + else: + textbutton _("下载同步"): + action DownloadSync() + xalign 0.5 + + +style page_label is gui_label +style page_label_text is gui_label_text +style page_button is gui_button +style page_button_text is gui_button_text + +style slot_button is gui_button +style slot_button_text is gui_button_text +style slot_time_text is slot_button_text +style slot_name_text is slot_button_text + +style page_label: + xpadding 75 + ypadding 5 + +style page_label_text: + textalign 0.5 + layout "subtitle" + hover_color gui.hover_color + +style page_button: + properties gui.button_properties("page_button") + +style page_button_text: + properties gui.button_text_properties("page_button") + +style slot_button: + properties gui.button_properties("slot_button") + +style slot_button_text: + properties gui.button_text_properties("slot_button") + + +## 设置屏幕 ######################################################################## +## +## 设置屏幕允许用户配置游戏,使其更适合自己。 +## +## https://www.renpy.cn/doc/screen_special.html#preferences + +screen preferences(): + + tag menu + + use game_menu(_("设置"), scroll="viewport"): + + vbox: + + hbox: + box_wrap True + + if renpy.variant("pc") or renpy.variant("web"): + + vbox: + style_prefix "radio" + label _("显示") + textbutton _("窗口") action Preference("display", "window") + textbutton _("全屏") action Preference("display", "fullscreen") + + vbox: + style_prefix "check" + label _("快进") + textbutton _("未读文本") action Preference("skip", "toggle") + textbutton _("选项后继续") action Preference("after choices", "toggle") + textbutton _("忽略转场") action InvertSelected(Preference("transitions", "toggle")) + + ## 可在此处添加 radio_pref 或 check_pref 类型的额外 vbox,以添加 + ## 额外的创建者定义的偏好设置。 + + null height (4 * gui.pref_spacing) + + hbox: + style_prefix "slider" + box_wrap True + + vbox: + + label _("文字速度") + + bar value Preference("text speed") + + label _("自动前进时间") + + bar value Preference("auto-forward time") + + vbox: + + if config.has_music: + label _("音乐音量") + + hbox: + bar value Preference("music volume") + + if config.has_sound: + + label _("音效音量") + + hbox: + bar value Preference("sound volume") + + if config.sample_sound: + textbutton _("测试") action Play("sound", config.sample_sound) + + + if config.has_voice: + label _("语音音量") + + hbox: + bar value Preference("voice volume") + + if config.sample_voice: + textbutton _("测试") action Play("voice", config.sample_voice) + + if config.has_music or config.has_sound or config.has_voice: + null height gui.pref_spacing + + textbutton _("全部静音"): + action Preference("all mute", "toggle") + style "mute_all_button" + + +style pref_label is gui_label +style pref_label_text is gui_label_text +style pref_vbox is vbox + +style radio_label is pref_label +style radio_label_text is pref_label_text +style radio_button is gui_button +style radio_button_text is gui_button_text +style radio_vbox is pref_vbox + +style check_label is pref_label +style check_label_text is pref_label_text +style check_button is gui_button +style check_button_text is gui_button_text +style check_vbox is pref_vbox + +style slider_label is pref_label +style slider_label_text is pref_label_text +style slider_slider is gui_slider +style slider_button is gui_button +style slider_button_text is gui_button_text +style slider_pref_vbox is pref_vbox + +style mute_all_button is check_button +style mute_all_button_text is check_button_text + +style pref_label: + top_margin gui.pref_spacing + bottom_margin 3 + +style pref_label_text: + yalign 1.0 + +style pref_vbox: + xsize 338 + +style radio_vbox: + spacing gui.pref_button_spacing + +style radio_button: + properties gui.button_properties("radio_button") + foreground "gui/button/radio_[prefix_]foreground.png" + +style radio_button_text: + properties gui.button_text_properties("radio_button") + +style check_vbox: + spacing gui.pref_button_spacing + +style check_button: + properties gui.button_properties("check_button") + foreground "gui/button/check_[prefix_]foreground.png" + +style check_button_text: + properties gui.button_text_properties("check_button") + +style slider_slider: + xsize 525 + +style slider_button: + properties gui.button_properties("slider_button") + yalign 0.5 + left_margin 15 + +style slider_button_text: + properties gui.button_text_properties("slider_button") + +style slider_vbox: + xsize 675 + + +## 历史屏幕 ######################################################################## +## +## 这是一个向用户显示对话历史的屏幕。虽然此屏幕没有什么特别之处,但它必须访问储 +## 存在 _history_list 中的对话历史记录。 +## +## https://www.renpy.cn/doc/history.html + +screen history(): + + tag menu + + ## 避免预缓存此屏幕,因为它可能非常大。 + predict False + + use game_menu(_("历史"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0): + + style_prefix "history" + + for h in _history_list: + + window: + + ## 此代码可确保如果 history_height 为 None 时仍可正常显示条目。 + has fixed: + yfit True + + if h.who: + + label h.who: + style "history_name" + substitute False + + ## 从 Character 对象中获取叙述角色的文字颜色,如果设置了 + ## 的话。 + if "color" in h.who_args: + text_color h.who_args["color"] + + $ what = renpy.filter_text_tags(h.what, allow=gui.history_allow_tags) + text what: + substitute False + + if not _history_list: + label _("尚无对话历史记录。") + + +## 此代码决定了允许在历史记录屏幕上显示哪些标签。 + +define gui.history_allow_tags = { "alt", "noalt", "rt", "rb", "art" } + + +style history_window is empty + +style history_name is gui_label +style history_name_text is gui_label_text +style history_text is gui_text + +style history_label is gui_label +style history_label_text is gui_label_text + +style history_window: + xfill True + ysize gui.history_height + +style history_name: + xpos gui.history_name_xpos + xanchor gui.history_name_xalign + ypos gui.history_name_ypos + xsize gui.history_name_width + +style history_name_text: + min_width gui.history_name_width + textalign gui.history_name_xalign + +style history_text: + xpos gui.history_text_xpos + ypos gui.history_text_ypos + xanchor gui.history_text_xalign + xsize gui.history_text_width + min_width gui.history_text_width + textalign gui.history_text_xalign + layout ("subtitle" if gui.history_text_xalign else "tex") + +style history_label: + xfill True + +style history_label_text: + xalign 0.5 + + +## 帮助屏幕 ######################################################################## +## +## 提供有关键盘和鼠标映射信息的屏幕。它使用其它屏幕(keyboard_help、mouse_help +## 和 gamepad_help)来显示实际的帮助内容。 + +screen help(): + + tag menu + + default device = "keyboard" + + use game_menu(_("帮助"), scroll="viewport"): + + style_prefix "help" + + vbox: + spacing 23 + + hbox: + + textbutton _("键盘") action SetScreenVariable("device", "keyboard") + textbutton _("鼠标") action SetScreenVariable("device", "mouse") + + if GamepadExists(): + textbutton _("手柄") action SetScreenVariable("device", "gamepad") + + if device == "keyboard": + use keyboard_help + elif device == "mouse": + use mouse_help + elif device == "gamepad": + use gamepad_help + + +screen keyboard_help(): + + hbox: + label _("回车") + text _("推进对话并激活界面。") + + hbox: + label _("空格") + text _("在没有选择的情况下推进对话。") + + hbox: + label _("方向键") + text _("导航界面。") + + hbox: + label _("Esc") + text _("访问游戏菜单。") + + hbox: + label _("键盘") + text _("按住时快进对话。") + + hbox: + label _("Tab") + text _("切换对话快进。") + + hbox: + label _("上一页") + text _("回退至先前的对话。") + + hbox: + label _("下一页") + text _("向前至后来的对话。") + + hbox: + label "H" + text _("隐藏用户界面。") + + hbox: + label "S" + text _("截图。") + + hbox: + label "V" + text _("切换辅助{a=https://www.renpy.cn/doc/self_voicing.html}机器朗读{/a}。") + + hbox: + label "Shift+A" + text _("打开无障碍菜单。") + + +screen mouse_help(): + + hbox: + label _("左键点击") + text _("推进对话并激活界面。") + + hbox: + label _("中键点击") + text _("隐藏用户界面。") + + hbox: + label _("右键点击") + text _("访问游戏菜单。") + + hbox: + label _("鼠标滚轮上\n点击回退操作区") + text _("回退至先前的对话。") + + hbox: + label _("鼠标滚轮下") + text _("向前至后来的对话。") + + +screen gamepad_help(): + + hbox: + label _("右扳机键\nA/底键") + text _("推进对话并激活界面。") + + hbox: + label _("左扳机键\n左肩键") + text _("回退至先前的对话。") + + hbox: + label _("右肩键") + text _("向前至后来的对话。") + + + hbox: + label _("十字键,摇杆") + text _("导航界面。") + + hbox: + label _("开始,向导") + text _("访问游戏菜单。") + + hbox: + label _("Y/顶键") + text _("隐藏用户界面。") + + textbutton _("校准") action GamepadCalibrate() + + +style help_button is gui_button +style help_button_text is gui_button_text +style help_label is gui_label +style help_label_text is gui_label_text +style help_text is gui_text + +style help_button: + properties gui.button_properties("help_button") + xmargin 12 + +style help_button_text: + properties gui.button_text_properties("help_button") + +style help_label: + xsize 375 + right_padding 30 + +style help_label_text: + size gui.text_size + xalign 1.0 + textalign 1.0 + + + +################################################################################ +## 其他屏幕 +################################################################################ + + +## 确认屏幕 ######################################################################## +## +## 当 Ren'Py 需要询问用户有关确定或取消的问题时,会调用确认屏幕。 +## +## https://www.renpy.cn/doc/screen_special.html#confirm + +screen confirm(message, yes_action, no_action): + + ## 显示此屏幕时,确保其他屏幕无法输入。 + modal True + + zorder 200 + + style_prefix "confirm" + + add "gui/overlay/confirm.png" + + frame: + + vbox: + xalign .5 + yalign .5 + spacing 45 + + label _(message): + style "confirm_prompt" + xalign 0.5 + + hbox: + xalign 0.5 + spacing 150 + + textbutton _("确定") action yes_action + textbutton _("取消") action no_action + + ## 右键点击退出并答复 no(取消)。 + key "game_menu" action no_action + + +style confirm_frame is gui_frame +style confirm_prompt is gui_prompt +style confirm_prompt_text is gui_prompt_text +style confirm_button is gui_medium_button +style confirm_button_text is gui_medium_button_text + +style confirm_frame: + background Frame([ "gui/confirm_frame.png", "gui/frame.png"], gui.confirm_frame_borders, tile=gui.frame_tile) + padding gui.confirm_frame_borders.padding + xalign .5 + yalign .5 + +style confirm_prompt_text: + textalign 0.5 + layout "subtitle" + +style confirm_button: + properties gui.button_properties("confirm_button") + +style confirm_button_text: + properties gui.button_text_properties("confirm_button") + + +## 快进指示屏幕 ###################################################################### +## +## skip_indicator 屏幕用于指示快进正在进行中。 +## +## https://www.renpy.cn/doc/screen_special.html#skip-indicator + +screen skip_indicator(): + + zorder 100 + style_prefix "skip" + + frame: + + hbox: + spacing 9 + + text _("正在快进") + + text "▸" at delayed_blink(0.0, 1.0) style "skip_triangle" + text "▸" at delayed_blink(0.2, 1.0) style "skip_triangle" + text "▸" at delayed_blink(0.4, 1.0) style "skip_triangle" + + +## 此变换用于一个接一个地闪烁箭头。 +transform delayed_blink(delay, cycle): + alpha .5 + + pause delay + + block: + linear .2 alpha 1.0 + pause .2 + linear .2 alpha 0.5 + pause (cycle - .4) + repeat + + +style skip_frame is empty +style skip_text is gui_text +style skip_triangle is skip_text + +style skip_frame: + ypos gui.skip_ypos + background Frame("gui/skip.png", gui.skip_frame_borders, tile=gui.frame_tile) + padding gui.skip_frame_borders.padding + +style skip_text: + size gui.notify_text_size + +style skip_triangle: + ## 我们必须使用包含“▸”(黑色右旋小三角)字形的字体。 + font "DejaVuSans.ttf" + + +## 通知屏幕 ######################################################################## +## +## 通知屏幕用于向用户显示消息。(例如,当游戏快速保存或进行截屏时。) +## +## https://www.renpy.cn/doc/screen_special.html#notify-screen + +screen notify(message): + + zorder 100 + style_prefix "notify" + + frame at notify_appear: + text "[message!tq]" + + timer 3.25 action Hide('notify') + + +transform notify_appear: + on show: + alpha 0 + linear .25 alpha 1.0 + on hide: + linear .5 alpha 0.0 + + +style notify_frame is empty +style notify_text is gui_text + +style notify_frame: + ypos gui.notify_ypos + + background Frame("gui/notify.png", gui.notify_frame_borders, tile=gui.frame_tile) + padding gui.notify_frame_borders.padding + +style notify_text: + properties gui.text_properties("notify") + + +## NVL 模式屏幕 #################################################################### +## +## 此屏幕用于 NVL 模式的对话和菜单。 +## +## https://www.renpy.cn/doc/screen_special.html#nvl + + +screen nvl(dialogue, items=None): + + window: + style "nvl_window" + + has vbox: + spacing gui.nvl_spacing + + ## 在 vpgrid 或 vbox 中显示对话框。 + if gui.nvl_height: + + vpgrid: + cols 1 + yinitial 1.0 + + use nvl_dialogue(dialogue) + + else: + + use nvl_dialogue(dialogue) + + ## 显示菜单,如果给定的话。如果 config.narrator_menu 设置为 True,则菜单 + ## 可能显示不正确。 + for i in items: + + textbutton i.caption: + action i.action + style "nvl_button" + + add SideImage() xalign 0.0 yalign 1.0 + + +screen nvl_dialogue(dialogue): + + for d in dialogue: + + window: + id d.window_id + + fixed: + yfit gui.nvl_height is None + + if d.who is not None: + + text d.who: + id d.who_id + + text d.what: + id d.what_id + + +## 此语句控制一次可以显示的 NVL 模式条目的最大数量。 +define config.nvl_list_length = gui.nvl_list_length + +style nvl_window is default +style nvl_entry is default + +style nvl_label is say_label +style nvl_dialogue is say_dialogue + +style nvl_button is button +style nvl_button_text is button_text + +style nvl_window: + xfill True + yfill True + + background "gui/nvl.png" + padding gui.nvl_borders.padding + +style nvl_entry: + xfill True + ysize gui.nvl_height + +style nvl_label: + xpos gui.nvl_name_xpos + xanchor gui.nvl_name_xalign + ypos gui.nvl_name_ypos + yanchor 0.0 + xsize gui.nvl_name_width + min_width gui.nvl_name_width + textalign gui.nvl_name_xalign + +style nvl_dialogue: + xpos gui.nvl_text_xpos + xanchor gui.nvl_text_xalign + ypos gui.nvl_text_ypos + xsize gui.nvl_text_width + min_width gui.nvl_text_width + textalign gui.nvl_text_xalign + layout ("subtitle" if gui.nvl_text_xalign else "tex") + +style nvl_thought: + xpos gui.nvl_thought_xpos + xanchor gui.nvl_thought_xalign + ypos gui.nvl_thought_ypos + xsize gui.nvl_thought_width + min_width gui.nvl_thought_width + textalign gui.nvl_thought_xalign + layout ("subtitle" if gui.nvl_text_xalign else "tex") + +style nvl_button: + properties gui.button_properties("nvl_button") + xpos gui.nvl_button_xpos + xanchor gui.nvl_button_xalign + +style nvl_button_text: + properties gui.button_text_properties("nvl_button") + + +## 对话气泡屏幕 ###################################################################### +## +## 对话气泡屏幕用于以对话气泡的形式向玩家显示对话。对话气泡屏幕的参数与 say 屏幕 +## 相同,必须创建一个 id 为 what 的可视控件,并且可以创建 id 为 namebox、who 和 +## window 的可视控件。 +## +## https://www.renpy.org/doc/html/bubble.html#bubble-screen + +screen bubble(who, what): + style_prefix "bubble" + + window: + id "window" + + if who is not None: + + window: + id "namebox" + style "bubble_namebox" + + text who: + id "who" + + text what: + id "what" + +style bubble_window is empty +style bubble_namebox is empty +style bubble_who is default +style bubble_what is default + +style bubble_window: + xpadding 30 + top_padding 5 + bottom_padding 5 + +style bubble_namebox: + xalign 0.5 + +style bubble_who: + xalign 0.5 + textalign 0.5 + color "#000" + +style bubble_what: + align (0.5, 0.5) + text_align 0.5 + layout "subtitle" + color "#000" + +define bubble.frame = Frame("gui/bubble.png", 55, 55, 55, 95) +define bubble.thoughtframe = Frame("gui/thoughtbubble.png", 55, 55, 55, 55) + +define bubble.properties = { + "bottom_left" : { + "window_background" : Transform(bubble.frame, xzoom=1, yzoom=1), + "window_bottom_padding" : 27, + }, + + "bottom_right" : { + "window_background" : Transform(bubble.frame, xzoom=-1, yzoom=1), + "window_bottom_padding" : 27, + }, + + "top_left" : { + "window_background" : Transform(bubble.frame, xzoom=1, yzoom=-1), + "window_top_padding" : 27, + }, + + "top_right" : { + "window_background" : Transform(bubble.frame, xzoom=-1, yzoom=-1), + "window_top_padding" : 27, + }, + + "thought" : { + "window_background" : bubble.thoughtframe, + } +} + +define bubble.expand_area = { + "bottom_left" : (0, 0, 0, 22), + "bottom_right" : (0, 0, 0, 22), + "top_left" : (0, 22, 0, 0), + "top_right" : (0, 22, 0, 0), + "thought" : (0, 0, 0, 0), +} + + + +################################################################################ +## 移动设备界面 +################################################################################ + +style pref_vbox: + variant "medium" + xsize 675 + +## 由于可能没有鼠标,我们将快捷菜单替换为一个使用更少、更大按钮的版本,这样更容 +## 易触摸。 +screen quick_menu(): + variant "touch" + + zorder 100 + + if quick_menu: + + hbox: + style_prefix "quick" + + xalign 0.5 + yalign 1.0 + + textbutton _("回退") action Rollback() + textbutton _("快进") action Skip() alternate Skip(fast=True, confirm=True) + textbutton _("自动") action Preference("auto-forward", "toggle") + textbutton _("菜单") action ShowMenu() + + +style window: + variant "small" + background "gui/phone/textbox.png" + +style radio_button: + variant "small" + foreground "gui/phone/button/radio_[prefix_]foreground.png" + +style check_button: + variant "small" + foreground "gui/phone/button/check_[prefix_]foreground.png" + +style nvl_window: + variant "small" + background "gui/phone/nvl.png" + +style main_menu_frame: + variant "small" + background "gui/phone/overlay/main_menu.png" + +style game_menu_outer_frame: + variant "small" + background "gui/phone/overlay/game_menu.png" + +style game_menu_navigation_frame: + variant "small" + xsize 510 + +style game_menu_content_frame: + variant "small" + top_margin 0 + +style pref_vbox: + variant "small" + xsize 600 + +style bar: + variant "small" + ysize gui.bar_size + left_bar Frame("gui/phone/bar/left.png", gui.bar_borders, tile=gui.bar_tile) + right_bar Frame("gui/phone/bar/right.png", gui.bar_borders, tile=gui.bar_tile) + +style vbar: + variant "small" + xsize gui.bar_size + top_bar Frame("gui/phone/bar/top.png", gui.vbar_borders, tile=gui.bar_tile) + bottom_bar Frame("gui/phone/bar/bottom.png", gui.vbar_borders, tile=gui.bar_tile) + +style scrollbar: + variant "small" + ysize gui.scrollbar_size + base_bar Frame("gui/phone/scrollbar/horizontal_[prefix_]bar.png", gui.scrollbar_borders, tile=gui.scrollbar_tile) + thumb Frame("gui/phone/scrollbar/horizontal_[prefix_]thumb.png", gui.scrollbar_borders, tile=gui.scrollbar_tile) + +style vscrollbar: + variant "small" + xsize gui.scrollbar_size + base_bar Frame("gui/phone/scrollbar/vertical_[prefix_]bar.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile) + thumb Frame("gui/phone/scrollbar/vertical_[prefix_]thumb.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile) + +style slider: + variant "small" + ysize gui.slider_size + base_bar Frame("gui/phone/slider/horizontal_[prefix_]bar.png", gui.slider_borders, tile=gui.slider_tile) + thumb "gui/phone/slider/horizontal_[prefix_]thumb.png" + +style vslider: + variant "small" + xsize gui.slider_size + base_bar Frame("gui/phone/slider/vertical_[prefix_]bar.png", gui.vslider_borders, tile=gui.slider_tile) + thumb "gui/phone/slider/vertical_[prefix_]thumb.png" + +style slider_vbox: + variant "small" + xsize None + +style slider_slider: + variant "small" + xsize 900 diff --git a/game/rpy/screens.rpyc b/game/rpy/screens.rpyc new file mode 100644 index 0000000..244ef91 Binary files /dev/null and b/game/rpy/screens.rpyc differ diff --git a/game/rpy/script.rpy b/game/rpy/script.rpy new file mode 100644 index 0000000..ff85791 --- /dev/null +++ b/game/rpy/script.rpy @@ -0,0 +1,335 @@ +define a = Character("A") +define b = Character("帕戈鲁") +define c = Character("c") +define A = Character("虎兽人") +define B = Character("熊兽人") +define C = Character("雌虎兽人") +define D = Character("全部人") +label start: + """ + 在另一个世界上有一片大陆,被分为几个不同的国家。 + + 起初,这里还是牧歌与篝火的王国。 + + 青草遥接天际,峰峦延绵万里。 + + 这里生活的兽人与人类过着打猎,畜牧之间的原始生活。 + + 兽人天生就比人类身体强上不少,在实力为尊的世界上,显然人类是劣势的那一方。 + + 因此人类生活的版图被压缩到了一隅。 + + 直到最弱的人类发现钢铁的力量,这是足以对抗野兽的力量,对他们来说,这大概就是扭转命运的力量。 + + 在十年人们的开拓发展下,这个国家,洛普,成为这个大陆上无可匹敌的国家。 + + 力量的发展是抗争的资本,也是野心的温床。当兽人的力量在与钢铁的对抗中败下阵来,当力量的天平终于倾向弱者的一方时,当被欺凌的败者成为高高在上的胜利者。 +睚眦必报,更何况是数以百年的欺辱。 + + 奴役和征服开始了。 + + 霎时间,点点战火蔓延开来,直至吞噬了整片大陆的… + + 欲望的风煽动着侵略的萌芽… + + 为了自己的人民与自由,其他的国家都奋起抗争。各国的勇士也前赴后继地赶往战场,对着冰冷的钢铁怪兽发起一波又一波的反抗。 + 每个战士都随着欢呼与呐喊出征,想要还自己一个国家太平。 + + 只是童话的结局无法在现实中上演了。 + + 坚硬的盾牌被子弹击穿,飘扬百年的旗帜被坦克压弯。 + + 越来越多的战士倒在敌人的面前。 + + 满目破败,空气弥漫着烧焦的味道,分不清是枯草还是尸体了。 + + 大概从蒸汽推动的第一个活塞开始,这里的风就不再有悠扬民谣的回应了。 + + """ + + A "…怎么样了。" + + """ + 一只虎兽人脸色阴郁,坐在会议室的椅子上。这里是最后还没被普洛占领的地方,是这个仅存的希望之地了。 + + 曾经无往不利的利剑,却从洛普开战以来,从来没有打过一场胜仗。 + + 一场都没有... + """ + B "刚刚…又…" + """ + 一个熊兽人掀起帘子,走了进来. + + 身上露出来的盔甲的皮肤上,混着泥土和干掉的血渍,握着腰间的剑的手再颤抖,眼睛红红的,不知道有几天没合眼了. + + 面前的,这是这个部族的族长。 + + 大概也才二十来岁的样子,但眼睛的冷静和语气里的镇定却显得有点和年龄有点不搭。 + """ + A "洛普的军队,大概还有多久到这。" + + B """ + …… + + 一天… + """ + """ + 不详地沉默蔓延开来,他们明白,他们不能再退了,或许说,他们已经没有地方可退了。 + + 这已经是最后一座城了。 + + 轻轻的一声叹息荡了开来。 + + """ + A """ + 明天…你先走吧. + + 已经没有送死的必要了。 + """ + + " + 他难得地放缓了语气,带着些微笑,眼睛却没有笑意,只是冷静和果断。 + " + B """ + 不要… + + 我宁可战死在战场上, + + 我...... + """ + """ + 刚满二十岁的熊兽有些久违地梗咽,他有着超群的力量,当上最年轻的将领的他此刻说不出什么话。 + + 他的胸口闷闷的。 + + 一个月之前,他的那些前辈还在部族的草原上给他举办庆祝会。当时在庆祝会上喝得酩酊大醉的战士们,现在已经长眠于他们深爱的土地了。 + """ + + A "帕格鲁。" + + B "…" + + A "帕格鲁!" + + B "!" + + """ + A将熊兽人搀扶起来。 + """ + A "已经没有必要了。" + + A "我是这里的王,我不能离开。但是你不一样。" + + B """ + …… + + 请让我跟我的前辈们一样战死!!我不想当唯一的懦夫…… + """ + """ + 熊兽人注视着面前尊敬的王。鼻子有些酸楚。 + + 这一个月里,当冰冷的刀片插入熊兽的身体里时,他都没有哭泣。当自己的好兄弟战死时,他也没有落泪。 + + 但此刻…熊兽却有些崩溃。 + """ + A """帕格鲁,我还有件私事…拜托你。 + + 他的王依然保持微笑,这是王者的从容,亮亮地棕色眼睛看着他。 + + """ + + A "请你带着布卡和我的妻子逃离诺冉达亚。" + + B"""… + + 他似乎也了解到了王的软肋,即使最英明的王者也有难以割舍的亲情。 + + “至少,也要让王没有后顾之忧,王室的火种不能在这熄灭,那于我而言,当个懦夫,又算得了什么呢。” + + 熊兽向后一步,最后一次向虎王做了一次诺冉达亚的最高礼节。 + + """ + B "俺明白了,交给我吧。" + + """ + 帕戈鲁站起身走向国王,抱了一下。 + + 这一抱,就不想松手了。 + """ + A"这么多年,你也长大了啊。" + + B "……" + + """ + + 感受到手掌在自己头上的抚摸,他终于哭了出来。 + + 最英明的王有舍弃不掉的人,那最强壮的战士呢? + + 夜晚升空的烽火炮弹,脱离了尘世的包裹。 + + 左手缠绕着划上的伤口,右手紧握着欲望堕落的恶果。 + + 人们尖叫着...奔跑着。 + + 诺冉达亚,曾经一个天堂。现在却变成了恶魔狂欢的派对夜场。 + + 对这些嗜血的恶魔来讲,血液,就像蜂蜜般甘甜。 + + 他们垂涎着这这片乐土的任意一处角落。 + + 虎王回到军营,就算他曾经是高高在上的荣誉的象征,现在也与其他勇士一起驻扎在简陋的帐篷里。 + + 看到虎王的归来,一只雌性虎兽人迎了上来。 + + """ + C "怎么样?" + + """ + 虎王亚瓦图什么都没讲,只是沉默地拥抱着自己的爱妻,抚摸着妻子的头发。 + + 雌A也才猜到了现在的形势,也只是默默回应着丈夫的拥抱,她明白自开战以来,A每个夜晚都借着昏暗的灯光对地图发着呆,那个为国家操劳的王就没好好休息过了。 + """ + a "塔雅莉…" + + "虎王温柔地注视着诺冉达亚的王后,尽全力挤出一丝微笑。" + + A"我将布卡托付给帕格鲁了,明天他就会带着布卡离开这里。你去收拾一下东西,也跟着他们一起走吧。" + + c"那你呢..." + + A "我随后就到。" + + "虎王深呼吸,温柔地看着深爱自己的王后,他清楚,自己拙劣的谎言怎么骗得过她呢。" + + c "你不必瞒着我的,我不会和你分开的,这是我们的约定。" + + A "可是布卡。" + + c"让帕格鲁先带着补卡走吧,我留下来跟你一起。" + + A"可孩子不能没有母亲,他甚至才刚刚学会如何走路。" + + c"可你也不能没有我,诺冉达亚也不可能有临阵脱逃的王后!!" + + """雌虎正色道,坚定的双眸里倒映着夜晚的烽火。 + + 但是看到便于携带的简陋小床的老虎幼崽,他的神色又柔软下来。 + """ + + c"我爱布卡,胜过爱我自己。" + + c"如果我是普通的平民,我一定会带着小布卡逃到他们找不到的地方…至少让我看着他长大…" + + """ + 雌虎美丽的绿色瞳孔里流露出无限的期待和向往,她走到老虎幼崽床边,用爪子轻轻顺着虎崽的毛发。 + + 塔雅莉注视着虎崽,鼻子感到有些酸楚。双眸中几滴泪水开始打转。 + + """ + c"但是,我同样也是诺冉达亚的母亲,我是诺冉达亚的王后,是将与你贯彻诺冉达亚的荣誉的女性。" + + a "…" + + c"这是命运的诅咒和馈赠。" + + """ + 虎王知道自己妻子的意思,他再一次将妻子搂入怀中,眼里的眼泪止不住的留下,颤抖的双唇什么都没说出来。 + + 塔雅莉抚摸着亚瓦图背后的毛发,她知道眼前的男人承受着多大的压力…对自己的国民来讲,他再怎么是一位值得尊敬的,带来无数荣耀的王,但说到底。 + + …他也只不过是肉体凡胎之身而已。 + + 并不是全能的神… + + 两兽拥抱足足十多分钟,亚瓦图终于稳定了情绪,有些尴尬地用大爪子擦了擦他棕色的眼睛,闪躲着c的目光。 + """ + c"怎么了?骄傲的小猫咪这是害羞了?" + + A"……" + + """ + + 面对妻子的打趣,亚瓦图愣了一下,绽放出这几个月来第一次灿烂的笑容。 + + 那一瞬间,亚瓦图仿佛看到还是少女时的塔雅莉又回到他的身边。 + + 曾经那个天真,喜欢去田野里采野花的小姑娘。不知何时,早已变成一位带着母性光辉,知性而又成熟的王后。 + + 亚瓦图感叹这无情的时光走过的痕迹,但也同时为自己的妻子骄傲着。 + + 两兽相视一笑,又紧紧拥抱到一起。 + + + 是啊,这本是一对普通夫妻的常态,但对他们来说,此刻便是奢侈… + + 两兽紧紧相拥,金黄色的灯火勾勒着彼此的轮廓。他们奢求着此刻的幸福,能变成永恒。 + + 床上的老虎幼崽不知何时又醒了过来,透过灯火看到父母咯咯笑了起来。 + + """ + c"亲爱的,这应该是最后一晚了吧。我们多陪陪小卡吧。" + + """ + …… + + 黎明来临,渐渐吞没掉暗夜与灯火。 + + 不知何时,头顶又一次传来轰隆隆的声音。这无规律却不间断的噪音,也朝霞推了出来。 + + 多美啊。 + + 帕格鲁出现在帐篷外,瓦亚图和塔利亚明白,这将是与他们的孩子分别的时刻。 + + 两虎抱着熟睡的孩子来到帐篷外,分别将虎崽的脸颊两侧轻轻落下一吻。同时,也将象征着诺冉达亚皇室的吊坠挂在孩子的脖子上。 + + 吊坠的一面是虎头,另一面刻着卡布的“卡”字。 + + 这枚吊坠是诺冉达亚的传统,当每一位孩子满月时都会获得属于自己的身份吊坠。这不仅代表着孩子的身份代表,更是诺冉达亚勇气与荣耀的象征。 + + 虎王轻轻抚摸着吊坠,仿佛传来诺冉达亚全民都在为王子的降临欢呼声。可下一刻,他的目光又坚定起来,一咬牙,将幼崽放在了帕格鲁怀里的襁褓中。一点头,帕格鲁遍转身离开了。 + + 塔雅莉望着黑熊将军奔跑的身影渐渐远去,不禁感到一阵眩晕。 + + 这一次,便是永别了。 + + 孩子,愿你平安度过你的一生啊。 + + 瓦亚图扶住自己的妻子,将她揽入怀中。但是这一刻,他们再脆弱再痛苦,在国家生死存亡之时,不得不做出这样的决定… + + 空中的轰鸣的声音越来越密集。他们都拂去泪水,他们明白,这一刻已经到了。 + + 他们回到军营的帐篷里,换上诺冉达亚皇族的战袍。 + + 他们明白,此刻是为了这个国家的自尊和荣耀而战,就算战死,也要带着诺冉达亚的不屈和勇气。 + + 亚瓦图昨天就已通知帕格鲁将现在的形式通知给军队,告诉他们可以自行离去。但意外的是,离去的士兵一位都没有,甚至一些女性也自愿参军。 + """ + A "各位,不知是昨天帕格鲁没有通知到大家。想离开兄弟姐妹们,请带着诺冉达亚的荣耀离开吧!" + """ + ... + + 无人回应 + """ + A"听着!这一战便是有去无回!!你们可以离开!至少山林里,任然有我们的藏身之所。" + "..." + "又是一片沉默" + """ + 我们的王也在这里!!我们不会退缩!! + + 我将为诺冉达亚显出身躯!! + + 为诺冉达亚的荣耀而战!!! + + 为诺冉达亚的荣耀所战!! + + 不知是谁先开了口,声音在人们中传递,最后汇成汪洋大河 + + 全体士兵同时举起手中的武器,亚瓦图明白,这些战士想用行动表示自己的决心。于是翻身上马,举起利剑。 + """ + D "为 诺冉达亚的荣耀所战!!" + """ + 随着金色的剑柄闪烁着代表朝阳的金光,略微朦胧的早晨格外闪耀。这闪耀的不仅是诺冉达亚的信仰,更是他们生命的绝唱。 + 漂亮的棕色眼睛衬着金光,他忽然笑了 + 诺冉达亚的星火必将重燃,只是对于一个孩子来说太不公平了。 + """ diff --git a/game/rpy/script.rpyc b/game/rpy/script.rpyc new file mode 100644 index 0000000..8b65197 Binary files /dev/null and b/game/rpy/script.rpyc differ diff --git a/game/saves/auto-1-LT1.save b/game/saves/auto-1-LT1.save new file mode 100644 index 0000000..360c68d Binary files /dev/null and b/game/saves/auto-1-LT1.save differ diff --git a/game/saves/auto-2-LT1.save b/game/saves/auto-2-LT1.save new file mode 100644 index 0000000..0b78684 Binary files /dev/null and b/game/saves/auto-2-LT1.save differ diff --git a/game/saves/navigation.json b/game/saves/navigation.json new file mode 100644 index 0000000..eaf015d --- /dev/null +++ b/game/saves/navigation.json @@ -0,0 +1 @@ +{"error": false, "size": [1920, 1080], "name": "teach_1", "version": "1.0", "location": {"label": {"start": ["game/rpy/script.rpy", 8]}, "define": {"gui.system_font": ["game/tl/None/common.rpym", 1380], "config.check_conflicting_properties": ["game/rpy/gui.rpy", 15], "gui.accent_color": ["game/rpy/gui.rpy", 28], "gui.idle_color": ["game/rpy/gui.rpy", 31], "gui.idle_small_color": ["game/rpy/gui.rpy", 34], "gui.hover_color": ["game/rpy/gui.rpy", 37], "gui.selected_color": ["game/rpy/gui.rpy", 41], "gui.insensitive_color": ["game/rpy/gui.rpy", 44], "gui.muted_color": ["game/rpy/gui.rpy", 48], "gui.hover_muted_color": ["game/rpy/gui.rpy", 49], "gui.text_color": ["game/rpy/gui.rpy", 52], "gui.interface_text_color": ["game/rpy/gui.rpy", 53], "gui.text_font": ["game/rpy/gui.rpy", 59], "gui.name_text_font": ["game/rpy/gui.rpy", 62], "gui.interface_text_font": ["game/rpy/gui.rpy", 65], "gui.text_size": ["game/rpy/gui.rpy", 68], "gui.name_text_size": ["game/rpy/gui.rpy", 71], "gui.interface_text_size": ["game/rpy/gui.rpy", 74], "gui.label_text_size": ["game/rpy/gui.rpy", 77], "gui.notify_text_size": ["game/rpy/gui.rpy", 80], "gui.title_text_size": ["game/rpy/gui.rpy", 83], "gui.main_menu_background": ["game/rpy/gui.rpy", 89], "gui.game_menu_background": ["game/rpy/gui.rpy", 90], "gui.textbox_height": ["game/rpy/gui.rpy", 98], "gui.textbox_yalign": ["game/rpy/gui.rpy", 101], "gui.name_xpos": ["game/rpy/gui.rpy", 106], "gui.name_ypos": ["game/rpy/gui.rpy", 107], "gui.name_xalign": ["game/rpy/gui.rpy", 110], "gui.namebox_width": ["game/rpy/gui.rpy", 113], "gui.namebox_height": ["game/rpy/gui.rpy", 114], "gui.namebox_borders": ["game/rpy/gui.rpy", 117], "gui.namebox_tile": ["game/rpy/gui.rpy", 120], "gui.dialogue_xpos": ["game/rpy/gui.rpy", 125], "gui.dialogue_ypos": ["game/rpy/gui.rpy", 126], "gui.dialogue_width": ["game/rpy/gui.rpy", 129], "gui.dialogue_text_xalign": ["game/rpy/gui.rpy", 132], "gui.button_width": ["game/rpy/gui.rpy", 140], "gui.button_height": ["game/rpy/gui.rpy", 141], "gui.button_borders": ["game/rpy/gui.rpy", 144], "gui.button_tile": ["game/rpy/gui.rpy", 147], "gui.button_text_font": ["game/rpy/gui.rpy", 150], "gui.button_text_size": ["game/rpy/gui.rpy", 153], "gui.button_text_idle_color": ["game/rpy/gui.rpy", 156], "gui.button_text_hover_color": ["game/rpy/gui.rpy", 157], "gui.button_text_selected_color": ["game/rpy/gui.rpy", 158], "gui.button_text_insensitive_color": ["game/rpy/gui.rpy", 159], "gui.button_text_xalign": ["game/rpy/gui.rpy", 163], "gui.radio_button_borders": ["game/rpy/gui.rpy", 171], "gui.check_button_borders": ["game/rpy/gui.rpy", 173], "gui.confirm_button_text_xalign": ["game/rpy/gui.rpy", 175], "gui.page_button_borders": ["game/rpy/gui.rpy", 177], "gui.quick_button_borders": ["game/rpy/gui.rpy", 179], "gui.quick_button_text_size": ["game/rpy/gui.rpy", 180], "gui.quick_button_text_idle_color": ["game/rpy/gui.rpy", 181], "gui.quick_button_text_selected_color": ["game/rpy/gui.rpy", 182], "gui.choice_button_width": ["game/rpy/gui.rpy", 194], "gui.choice_button_height": ["game/rpy/gui.rpy", 195], "gui.choice_button_tile": ["game/rpy/gui.rpy", 196], "gui.choice_button_borders": ["game/rpy/gui.rpy", 197], "gui.choice_button_text_font": ["game/rpy/gui.rpy", 198], "gui.choice_button_text_size": ["game/rpy/gui.rpy", 199], "gui.choice_button_text_xalign": ["game/rpy/gui.rpy", 200], "gui.choice_button_text_idle_color": ["game/rpy/gui.rpy", 201], "gui.choice_button_text_hover_color": ["game/rpy/gui.rpy", 202], "gui.choice_button_text_insensitive_color": ["game/rpy/gui.rpy", 203], "gui.slot_button_width": ["game/rpy/gui.rpy", 212], "gui.slot_button_height": ["game/rpy/gui.rpy", 213], "gui.slot_button_borders": ["game/rpy/gui.rpy", 214], "gui.slot_button_text_size": ["game/rpy/gui.rpy", 215], "gui.slot_button_text_xalign": ["game/rpy/gui.rpy", 216], "gui.slot_button_text_idle_color": ["game/rpy/gui.rpy", 217], "gui.slot_button_text_selected_idle_color": ["game/rpy/gui.rpy", 218], "gui.slot_button_text_selected_hover_color": ["game/rpy/gui.rpy", 219], "config.thumbnail_width": ["game/rpy/gui.rpy", 222], "config.thumbnail_height": ["game/rpy/gui.rpy", 223], "gui.file_slot_cols": ["game/rpy/gui.rpy", 226], "gui.file_slot_rows": ["game/rpy/gui.rpy", 227], "gui.navigation_xpos": ["game/rpy/gui.rpy", 235], "gui.skip_ypos": ["game/rpy/gui.rpy", 238], "gui.notify_ypos": ["game/rpy/gui.rpy", 241], "gui.choice_spacing": ["game/rpy/gui.rpy", 244], "gui.navigation_spacing": ["game/rpy/gui.rpy", 247], "gui.pref_spacing": ["game/rpy/gui.rpy", 250], "gui.pref_button_spacing": ["game/rpy/gui.rpy", 253], "gui.page_spacing": ["game/rpy/gui.rpy", 256], "gui.slot_spacing": ["game/rpy/gui.rpy", 259], "gui.main_menu_text_xalign": ["game/rpy/gui.rpy", 262], "gui.frame_borders": ["game/rpy/gui.rpy", 270], "gui.confirm_frame_borders": ["game/rpy/gui.rpy", 273], "gui.skip_frame_borders": ["game/rpy/gui.rpy", 276], "gui.notify_frame_borders": ["game/rpy/gui.rpy", 279], "gui.frame_tile": ["game/rpy/gui.rpy", 282], "gui.bar_size": ["game/rpy/gui.rpy", 292], "gui.scrollbar_size": ["game/rpy/gui.rpy", 293], "gui.slider_size": ["game/rpy/gui.rpy", 294], "gui.bar_tile": ["game/rpy/gui.rpy", 297], "gui.scrollbar_tile": ["game/rpy/gui.rpy", 298], "gui.slider_tile": ["game/rpy/gui.rpy", 299], "gui.bar_borders": ["game/rpy/gui.rpy", 302], "gui.scrollbar_borders": ["game/rpy/gui.rpy", 303], "gui.slider_borders": ["game/rpy/gui.rpy", 304], "gui.vbar_borders": ["game/rpy/gui.rpy", 307], "gui.vscrollbar_borders": ["game/rpy/gui.rpy", 308], "gui.vslider_borders": ["game/rpy/gui.rpy", 309], "gui.unscrollable": ["game/rpy/gui.rpy", 312], "config.history_length": ["game/rpy/gui.rpy", 320], "gui.history_height": ["game/rpy/gui.rpy", 323], "gui.history_name_xpos": ["game/rpy/gui.rpy", 326], "gui.history_name_ypos": ["game/rpy/gui.rpy", 327], "gui.history_name_width": ["game/rpy/gui.rpy", 328], "gui.history_name_xalign": ["game/rpy/gui.rpy", 329], "gui.history_text_xpos": ["game/rpy/gui.rpy", 332], "gui.history_text_ypos": ["game/rpy/gui.rpy", 333], "gui.history_text_width": ["game/rpy/gui.rpy", 334], "gui.history_text_xalign": ["game/rpy/gui.rpy", 335], "gui.nvl_borders": ["game/rpy/gui.rpy", 343], "gui.nvl_list_length": ["game/rpy/gui.rpy", 347], "gui.nvl_height": ["game/rpy/gui.rpy", 350], "gui.nvl_spacing": ["game/rpy/gui.rpy", 354], "gui.nvl_name_xpos": ["game/rpy/gui.rpy", 357], "gui.nvl_name_ypos": ["game/rpy/gui.rpy", 358], "gui.nvl_name_width": ["game/rpy/gui.rpy", 359], "gui.nvl_name_xalign": ["game/rpy/gui.rpy", 360], "gui.nvl_text_xpos": ["game/rpy/gui.rpy", 363], "gui.nvl_text_ypos": ["game/rpy/gui.rpy", 364], "gui.nvl_text_width": ["game/rpy/gui.rpy", 365], "gui.nvl_text_xalign": ["game/rpy/gui.rpy", 366], "gui.nvl_thought_xpos": ["game/rpy/gui.rpy", 369], "gui.nvl_thought_ypos": ["game/rpy/gui.rpy", 370], "gui.nvl_thought_width": ["game/rpy/gui.rpy", 371], "gui.nvl_thought_xalign": ["game/rpy/gui.rpy", 372], "gui.nvl_button_xpos": ["game/rpy/gui.rpy", 375], "gui.nvl_button_xalign": ["game/rpy/gui.rpy", 376], "gui.language": ["game/rpy/gui.rpy", 384], "quick_menu": ["game/rpy/screens.rpy", 259], "gui.history_allow_tags": ["game/rpy/screens.rpy", 907], "config.nvl_list_length": ["game/rpy/screens.rpy", 1329], "bubble.frame": ["game/rpy/screens.rpy", 1437], "bubble.thoughtframe": ["game/rpy/screens.rpy", 1438], "bubble.properties": ["game/rpy/screens.rpy", 1440], "bubble.expand_area": ["game/rpy/screens.rpy", 1466], "config.name": ["game/rpy/options.rpy", 14], "gui.show_name": ["game/rpy/options.rpy", 19], "config.version": ["game/rpy/options.rpy", 24], "gui.about": ["game/rpy/options.rpy", 30], "build.name": ["game/rpy/options.rpy", 37], "config.has_sound": ["game/rpy/options.rpy", 45], "config.has_music": ["game/rpy/options.rpy", 46], "config.has_voice": ["game/rpy/options.rpy", 47], "config.enter_transition": ["game/rpy/options.rpy", 70], "config.exit_transition": ["game/rpy/options.rpy", 71], "config.intra_transition": ["game/rpy/options.rpy", 76], "config.after_load_transition": ["game/rpy/options.rpy", 81], "config.end_game_transition": ["game/rpy/options.rpy", 86], "config.window": ["game/rpy/options.rpy", 102], "config.window_show_transition": ["game/rpy/options.rpy", 107], "config.window_hide_transition": ["game/rpy/options.rpy", 108], "config.save_directory": ["game/rpy/options.rpy", 135], "config.window_icon": ["game/rpy/options.rpy", 142], "a": ["game/rpy/script.rpy", 1], "b": ["game/rpy/script.rpy", 2], "c": ["game/rpy/script.rpy", 3], "A": ["game/rpy/script.rpy", 4], "B": ["game/rpy/script.rpy", 5], "C": ["game/rpy/script.rpy", 6], "D": ["game/rpy/script.rpy", 7]}, "screen": {"say": ["game/rpy/screens.rpy", 95], "input": ["game/rpy/screens.rpy", 170], "choice": ["game/rpy/screens.rpy", 202], "quick_menu": ["game/rpy/screens.rpy", 1486], "navigation": ["game/rpy/screens.rpy", 279], "main_menu": ["game/rpy/screens.rpy", 341], "game_menu": ["game/rpy/screens.rpy", 404], "about": ["game/rpy/screens.rpy", 530], "save": ["game/rpy/screens.rpy", 568], "load": ["game/rpy/screens.rpy", 575], "file_slots": ["game/rpy/screens.rpy", 582], "preferences": ["game/rpy/screens.rpy", 708], "history": ["game/rpy/screens.rpy", 867], "help": ["game/rpy/screens.rpy", 954], "keyboard_help": ["game/rpy/screens.rpy", 983], "mouse_help": ["game/rpy/screens.rpy", 1034], "gamepad_help": ["game/rpy/screens.rpy", 1057], "confirm": ["game/rpy/screens.rpy", 1122], "skip_indicator": ["game/rpy/screens.rpy", 1184], "notify": ["game/rpy/screens.rpy", 1238], "nvl": ["game/rpy/screens.rpy", 1277], "nvl_dialogue": ["game/rpy/screens.rpy", 1309], "bubble": ["game/rpy/screens.rpy", 1395]}, "transform": {"delayed_blink": ["game/rpy/screens.rpy", 1202], "notify_appear": ["game/rpy/screens.rpy", 1249]}, "callable": {"touch": ["game/rpy/gui.rpy", 395], "small": ["game/rpy/gui.rpy", 401]}}, "build": {"directory_name": "teach_1-1.0", "executable_name": "teach_1", "include_update": false, "packages": [{"name": "pc", "formats": ["zip"], "file_lists": ["windows", "linux", "renpy", "all"], "description": "PC: Windows and Linux", "update": true, "dlc": false, "hidden": false}, {"name": "linux", "formats": ["tar.bz2"], "file_lists": ["linux", "linux_arm", "renpy", "all"], "description": "Linux", "update": true, "dlc": false, "hidden": false}, {"name": "mac", "formats": ["app-zip", "app-dmg"], "file_lists": ["mac", "renpy", "all"], "description": "Macintosh", "update": true, "dlc": false, "hidden": false}, {"name": "win", "formats": ["zip"], "file_lists": ["windows", "renpy", "all"], "description": "Windows", "update": true, "dlc": false, "hidden": false}, {"name": "market", "formats": ["bare-zip"], "file_lists": ["windows", "linux", "mac", "renpy", "all"], "description": "Windows, Mac, Linux for Markets", "update": true, "dlc": false, "hidden": false}, {"name": "steam", "formats": ["zip"], "file_lists": ["windows", "linux", "mac", "renpy", "all"], "description": "steam", "update": true, "dlc": false, "hidden": true}, {"name": "android", "formats": ["directory"], "file_lists": ["android", "all"], "description": "android", "update": false, "dlc": true, "hidden": true}, {"name": "ios", "formats": ["directory"], "file_lists": ["ios", "all"], "description": "ios", "update": false, "dlc": true, "hidden": true}, {"name": "web", "formats": ["zip"], "file_lists": ["web", "renpy", "all"], "description": "web", "update": false, "dlc": true, "hidden": true}], "archives": [["archive", ["all"]]], "documentation_patterns": ["*.html", "*.txt"], "base_patterns": [["*.py", null], ["*.sh", null], ["*.app/", null], ["*.dll", null], ["*.manifest", null], ["*.keystore", null], ["lib/", null], ["renpy/", null], ["update/", null], ["common/", null], ["update/", null], ["old-game/", null], ["icon.ico", null], ["icon.icns", null], ["project.json", null], ["log.txt", null], ["errors.txt", null], ["traceback.txt", null], ["image_cache.txt", null], ["text_overflow.txt", null], ["dialogue.txt", null], ["dialogue.tab", null], ["profile_screen.txt", null], ["files.txt", null], ["memory.txt", null], ["tmp/", null], ["game/saves/", null], ["game/bytecode.rpyb", null], ["archived/", null], ["launcherinfo.py", null], ["android.txt", null], ["game/presplash*.*", ["all"]], ["android.json", ["android"]], [".android.json", ["android"]], ["android-*.png", ["android"]], ["android-*.jpg", ["android"]], ["ouya_icon.png", null], ["ios-presplash.*", ["ios"]], ["ios-launchimage.png", null], ["ios-icon.png", null], ["web-presplash.png", ["web"]], ["web-presplash.jpg", ["web"]], ["web-presplash.webp", ["web"]], ["progressive_download.txt", ["web"]], ["steam_appid.txt", null], ["game/cache/bytecode-39.rpyb", ["all"]], ["game/cache/bytecode-311.rpyb", ["web"]], ["game/cache/bytecode-*.rpyb", null], ["**~", null], ["**.bak", null], ["**/.**", null], ["**/#**", null], ["**/thumbs.db", null], [".*", null], ["**", ["all"]]], "renpy_patterns": [["renpy/common/_compat/**", null], ["renpy/common/_roundrect/**", null], ["renpy/common/_outline/**", null], ["renpy/common/_theme**", null], ["lib/**/_ssl.*", null], ["renpy/**__pycache__/**.cpython-39.pyc", ["all"]], ["renpy/**__pycache__", ["all"]], ["**~", null], ["**/#*", null], ["**/.*", null], ["**.old", null], ["**.new", null], ["**.rpa", null], ["**/steam_appid.txt", null], ["renpy.py", ["all"]], ["renpy/", ["all"]], ["renpy/**.py", ["renpy"]], ["renpy/**.pxd", null], ["renpy/**.pxi", null], ["renpy/**.pyx", null], ["renpy/**.pyc", null], ["renpy/**.pyo", null], ["renpy/common/", ["all"]], ["renpy/common/_compat/**", ["renpy"]], ["renpy/common/**.rpy", ["renpy"]], ["renpy/common/**.rpym", ["renpy"]], ["renpy/common/_compat/**", ["renpy"]], ["renpy/common/**", ["all"]], ["renpy/**", ["all"]], ["lib/*/renpy", null], ["lib/*/renpy.exe", null], ["lib/*/pythonw.exe", null], ["lib/py2-*/", null], ["lib/py*-windows-i686/**", ["windows_i686"]], ["lib/py*-windows-x86_64/**", ["windows"]], ["lib/py*-linux-i686/**", ["linux_i686"]], ["lib/py*-linux-aarch64/**", ["linux_arm"]], ["lib/py*-linux-armv7l/**", ["linux_arm"]], ["lib/py*-linux-*/**", ["linux"]], ["lib/py*-mac-*/**", ["mac"]], ["lib/python2.*/**", null], ["lib/**", ["windows", "linux", "mac", "android", "ios"]], ["renpy.sh", ["linux", "mac"]]], "xbit_patterns": ["**.sh", "lib/py*-linux-*/*", "lib/py*-mac-*/*", "**.app/Contents/MacOS/*"], "version": "1.0", "display_name": "teach_1", "exclude_empty_directories": true, "allow_integrated_gpu": true, "renpy": false, "script_version": true, "destination": "teach_1-1.0-dists", "itch_channels": [["*-all.zip", "win-osx-linux"], ["*-market.zip", "win-osx-linux"], ["*-pc.zip", "win-linux"], ["*-win.zip", "win"], ["*-mac.zip", "osx"], ["*-linux.tar.bz2", "linux"], ["*-release.apk", "android"]], "mac_info_plist": {}, "merge": [["linux_i686", "linux"], ["windows_i686", "windows"]], "include_i686": true, "change_icon_i686": true, "android_permissions": [], "_sdk_fonts": false}} \ No newline at end of file diff --git a/game/saves/persistent b/game/saves/persistent new file mode 100644 index 0000000..f74641f Binary files /dev/null and b/game/saves/persistent differ diff --git a/game/tl/None/common.rpym b/game/tl/None/common.rpym new file mode 100644 index 0000000..b883c50 --- /dev/null +++ b/game/tl/None/common.rpym @@ -0,0 +1,1380 @@ + +translate None strings: + + # renpy/common/00accessibility.rpy:28 + old "Self-voicing disabled." + new "机器朗读已禁用。" + + # renpy/common/00accessibility.rpy:29 + old "Clipboard voicing enabled. " + new "剪贴板朗读已启用。" + + # renpy/common/00accessibility.rpy:30 + old "Self-voicing enabled. " + new "机器朗读已启用。" + + # renpy/common/00accessibility.rpy:32 + old "bar" + new "bar" + + # renpy/common/00accessibility.rpy:33 + old "selected" + new "selected" + + # renpy/common/00accessibility.rpy:34 + old "viewport" + new "viewport" + + # renpy/common/00accessibility.rpy:35 + old "horizontal scroll" + new "horizontal scroll" + + # renpy/common/00accessibility.rpy:36 + old "vertical scroll" + new "vertical scroll" + + # renpy/common/00accessibility.rpy:37 + old "activate" + new "activate" + + # renpy/common/00accessibility.rpy:38 + old "deactivate" + new "deactivate" + + # renpy/common/00accessibility.rpy:39 + old "increase" + new "increase" + + # renpy/common/00accessibility.rpy:40 + old "decrease" + new "decrease" + + # renpy/common/00accessibility.rpy:138 + old "Font Override" + new "字体覆盖" + + # renpy/common/00accessibility.rpy:142 + old "Default" + new "默认" + + # renpy/common/00accessibility.rpy:146 + old "DejaVu Sans" + new "DejaVu Sans" + + # renpy/common/00accessibility.rpy:150 + old "Opendyslexic" + new "Opendyslexic" + + # renpy/common/00accessibility.rpy:156 + old "Text Size Scaling" + new "字号缩放" + + # renpy/common/00accessibility.rpy:162 + old "Reset" + new "重置" + + # renpy/common/00accessibility.rpy:168 + old "Line Spacing Scaling" + new "行距缩放" + + # renpy/common/00accessibility.rpy:180 + old "High Contrast Text" + new "高对比度文本" + + # renpy/common/00accessibility.rpy:182 + old "Enable" + new "启用" + + # renpy/common/00accessibility.rpy:186 + old "Disable" + new "禁用" + + # renpy/common/00accessibility.rpy:193 + old "Self-Voicing" + new "机器朗读" + + # renpy/common/00accessibility.rpy:197 + old "Off" + new "关闭" + + # renpy/common/00accessibility.rpy:201 + old "Text-to-speech" + new "语音合成" + + # renpy/common/00accessibility.rpy:205 + old "Clipboard" + new "剪贴板" + + # renpy/common/00accessibility.rpy:209 + old "Debug" + new "调试" + + # renpy/common/00accessibility.rpy:215 + old "Voice Volume" + new "语音音量" + + # renpy/common/00accessibility.rpy:223 + old "Self-Voicing Volume Drop" + new "机器朗读音量降低" + + # renpy/common/00accessibility.rpy:234 + old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was." + new "此菜单上的选项旨在改善无障碍文本可读性。这些选项可能不适用于所有游戏,某些选项的组合甚至会导致游戏无法游玩。这不是游戏或引擎的问题。为了在更改字体时获得最佳效果,请尽量保持文字大小与原本相同。" + + # renpy/common/00accessibility.rpy:239 + old "Return" + new "返回" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Monday" + new "{#weekday}星期一" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Tuesday" + new "{#weekday}星期二" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Wednesday" + new "{#weekday}星期三" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Thursday" + new "{#weekday}星期四" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Friday" + new "{#weekday}星期五" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Saturday" + new "{#weekday}星期六" + + # renpy/common/00action_file.rpy:26 + old "{#weekday}Sunday" + new "{#weekday}星期日" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Mon" + new "{#weekday_short}周一" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Tue" + new "{#weekday_short}周二" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Wed" + new "{#weekday_short}周三" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Thu" + new "{#weekday_short}周四" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Fri" + new "{#weekday_short}周五" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Sat" + new "{#weekday_short}周六" + + # renpy/common/00action_file.rpy:37 + old "{#weekday_short}Sun" + new "{#weekday_short}周日" + + # renpy/common/00action_file.rpy:47 + old "{#month}January" + new "{#month}1月" + + # renpy/common/00action_file.rpy:47 + old "{#month}February" + new "{#month}2月" + + # renpy/common/00action_file.rpy:47 + old "{#month}March" + new "{#month}3月" + + # renpy/common/00action_file.rpy:47 + old "{#month}April" + new "{#month}4月" + + # renpy/common/00action_file.rpy:47 + old "{#month}May" + new "{#month}5月" + + # renpy/common/00action_file.rpy:47 + old "{#month}June" + new "{#month}6月" + + # renpy/common/00action_file.rpy:47 + old "{#month}July" + new "{#month}7月" + + # renpy/common/00action_file.rpy:47 + old "{#month}August" + new "{#month}8月" + + # renpy/common/00action_file.rpy:47 + old "{#month}September" + new "{#month}9月" + + # renpy/common/00action_file.rpy:47 + old "{#month}October" + new "{#month}10月" + + # renpy/common/00action_file.rpy:47 + old "{#month}November" + new "{#month}11月" + + # renpy/common/00action_file.rpy:47 + old "{#month}December" + new "{#month}12月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Jan" + new "{#month_short}1月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Feb" + new "{#month_short}2月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Mar" + new "{#month_short}3月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Apr" + new "{#month_short}4月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}May" + new "{#month_short}5月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Jun" + new "{#month_short}6月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Jul" + new "{#month_short}7月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Aug" + new "{#month_short}8月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Sep" + new "{#month_short}9月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Oct" + new "{#month_short}10月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Nov" + new "{#month_short}11月" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Dec" + new "{#month_short}12月" + + # renpy/common/00action_file.rpy:258 + old "%b %d, %H:%M" + new "%m-%d %H:%M" + + # renpy/common/00action_file.rpy:378 + old "Save slot %s: [text]" + new "保存存档 %s:[text]" + + # renpy/common/00action_file.rpy:461 + old "Load slot %s: [text]" + new "读取存档 %s:[text]" + + # renpy/common/00action_file.rpy:514 + old "Delete slot [text]" + new "删除存档 [text]" + + # renpy/common/00action_file.rpy:593 + old "File page auto" + new "自动存档" + + # renpy/common/00action_file.rpy:595 + old "File page quick" + new "快速存档" + + # renpy/common/00action_file.rpy:597 + old "File page [text]" + new "第 [text] 页存档" + + # renpy/common/00action_file.rpy:655 + old "Page {}" + new "第 {} 页" + + # renpy/common/00action_file.rpy:655 + old "Automatic saves" + new "自动存档" + + # renpy/common/00action_file.rpy:655 + old "Quick saves" + new "快速存档" + + # renpy/common/00action_file.rpy:796 + old "Next file page." + new "下一页存档。" + + # renpy/common/00action_file.rpy:868 + old "Previous file page." + new "上一页存档。" + + # renpy/common/00action_file.rpy:929 + old "Quick save complete." + new "快速保存完成。" + + # renpy/common/00action_file.rpy:944 + old "Quick save." + new "快速保存。" + + # renpy/common/00action_file.rpy:963 + old "Quick load." + new "快速读取。" + + # renpy/common/00action_other.rpy:383 + old "Language [text]" + new "语言 [text]" + + # renpy/common/00action_other.rpy:724 + old "Open [text] directory." + new "打开 [text] 目录。" + + # renpy/common/00director.rpy:705 + old "The interactive director is not enabled here." + new "交互式编导器未能在此处启动。" + + # renpy/common/00director.rpy:1504 + old "⬆" + new "⬆" + + # renpy/common/00director.rpy:1510 + old "⬇" + new "⬇" + + # renpy/common/00director.rpy:1574 + old "Done" + new "完成" + + # renpy/common/00director.rpy:1584 + old "(statement)" + new "(语句)" + + # renpy/common/00director.rpy:1585 + old "(tag)" + new "(标签)" + + # renpy/common/00director.rpy:1586 + old "(attributes)" + new "(属性)" + + # renpy/common/00director.rpy:1587 + old "(transform)" + new "(变换)" + + # renpy/common/00director.rpy:1612 + old "(transition)" + new "(转场)" + + # renpy/common/00director.rpy:1624 + old "(channel)" + new "(轨道)" + + # renpy/common/00director.rpy:1625 + old "(filename)" + new "(文件名)" + + # renpy/common/00director.rpy:1654 + old "Change" + new "更改" + + # renpy/common/00director.rpy:1656 + old "Add" + new "添加" + + # renpy/common/00director.rpy:1659 + old "Cancel" + new "取消" + + # renpy/common/00director.rpy:1662 + old "Remove" + new "移除" + + # renpy/common/00director.rpy:1697 + old "Statement:" + new "语句:" + + # renpy/common/00director.rpy:1718 + old "Tag:" + new "标签:" + + # renpy/common/00director.rpy:1734 + old "Attributes:" + new "属性:" + + # renpy/common/00director.rpy:1745 + old "Click to toggle attribute, right click to toggle negative attribute." + new "点击切换属性,右键点击切换反面属性。" + + # renpy/common/00director.rpy:1757 + old "Transforms:" + new "变换:" + + # renpy/common/00director.rpy:1768 + old "Click to set transform, right click to add to transform list." + new "点击设置变换,右键点击添加到变换列表。" + + # renpy/common/00director.rpy:1780 + old "Behind:" + new "置后于:" + + # renpy/common/00director.rpy:1789 + old "Click to set, right click to add to behind list." + new "点击设置,右键点击添加到置后(behind)列表。" + + # renpy/common/00director.rpy:1801 + old "Transition:" + new "转场:" + + # renpy/common/00director.rpy:1819 + old "Channel:" + new "轨道:" + + # renpy/common/00director.rpy:1837 + old "Audio Filename:" + new "音频文件:" + + # renpy/common/00gui.rpy:446 + old "Are you sure?" + new "您确定吗?" + + # renpy/common/00gui.rpy:447 + old "Are you sure you want to delete this save?" + new "您确定要删除此存档吗?" + + # renpy/common/00gui.rpy:448 + old "Are you sure you want to overwrite your save?" + new "您确定要覆盖此存档吗?" + + # renpy/common/00gui.rpy:449 + old "Loading will lose unsaved progress.\nAre you sure you want to do this?" + new "读取存档将会使未保存的进度丢失。\n您确定要继续吗?" + + # renpy/common/00gui.rpy:450 + old "Are you sure you want to quit?" + new "您确定要退出吗?" + + # renpy/common/00gui.rpy:451 + old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress." + new "您确定要返回到标题界面吗?\n此操作将会使未保存的进度丢失。" + + # renpy/common/00gui.rpy:452 + old "Are you sure you want to end the replay?" + new "您确定要结束回想吗?" + + # renpy/common/00gui.rpy:453 + old "Are you sure you want to begin skipping?" + new "您确定要开始快进吗?" + + # renpy/common/00gui.rpy:454 + old "Are you sure you want to skip to the next choice?" + new "您确定要直接快进到下个选项吗?" + + # renpy/common/00gui.rpy:455 + old "Are you sure you want to skip unseen dialogue to the next choice?" + new "您确定要跳过未读对话,直接快进到下个选项吗?" + + # renpy/common/00gui.rpy:456 + old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?" + new "此存档是在其他设备上创建的。恶意构造的存档文件可能会对您的计算机造成损害。您是否信任此存档的创建者以及所有可能更改过该文件的人?" + + # renpy/common/00gui.rpy:457 + old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user." + new "您是否信任创建此存档的设备?只有当您是设备的唯一用户时,才应选择是。" + + # renpy/common/00keymap.rpy:322 + old "Failed to save screenshot as %s." + new "截图保存到以下位置时失败:%s" + + # renpy/common/00keymap.rpy:334 + old "Saved screenshot as %s." + new "截图已保存到以下位置:%s" + + # renpy/common/00library.rpy:248 + old "Skip Mode" + new "快进" + + # renpy/common/00library.rpy:335 + old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}." + new "本程序包含了由数个许可证授权的自由软件,包括 MIT 许可证和 GNU 宽松通用公共许可证。完整软件列表及源代码链接,请{a=https://www.renpy.org/l/license}访问此处{/a}。" + + # renpy/common/00preferences.rpy:271 + old "display" + new "display" + + # renpy/common/00preferences.rpy:287 + old "transitions" + new "transitions" + + # renpy/common/00preferences.rpy:296 + old "skip transitions" + new "skip transitions" + + # renpy/common/00preferences.rpy:298 + old "video sprites" + new "video sprites" + + # renpy/common/00preferences.rpy:307 + old "show empty window" + new "show empty window" + + # renpy/common/00preferences.rpy:316 + old "text speed" + new "text speed" + + # renpy/common/00preferences.rpy:324 + old "joystick" + new "joystick" + + # renpy/common/00preferences.rpy:324 + old "joystick..." + new "joystick..." + + # renpy/common/00preferences.rpy:331 + old "skip" + new "skip" + + # renpy/common/00preferences.rpy:334 + old "skip unseen [text]" + new "skip unseen [text]" + + # renpy/common/00preferences.rpy:339 + old "skip unseen text" + new "skip unseen text" + + # renpy/common/00preferences.rpy:341 + old "begin skipping" + new "begin skipping" + + # renpy/common/00preferences.rpy:345 + old "after choices" + new "after choices" + + # renpy/common/00preferences.rpy:352 + old "skip after choices" + new "skip after choices" + + # renpy/common/00preferences.rpy:354 + old "auto-forward time" + new "auto-forward time" + + # renpy/common/00preferences.rpy:368 + old "auto-forward" + new "auto-forward" + + # renpy/common/00preferences.rpy:375 + old "Auto forward" + new "Auto forward" + + # renpy/common/00preferences.rpy:378 + old "auto-forward after click" + new "auto-forward after click" + + # renpy/common/00preferences.rpy:387 + old "automatic move" + new "automatic move" + + # renpy/common/00preferences.rpy:396 + old "wait for voice" + new "wait for voice" + + # renpy/common/00preferences.rpy:405 + old "voice sustain" + new "voice sustain" + + # renpy/common/00preferences.rpy:414 + old "self voicing" + new "self voicing" + + # renpy/common/00preferences.rpy:423 + old "self voicing volume drop" + new "self voicing volume drop" + + # renpy/common/00preferences.rpy:431 + old "clipboard voicing" + new "clipboard voicing" + + # renpy/common/00preferences.rpy:440 + old "debug voicing" + new "debug voicing" + + # renpy/common/00preferences.rpy:449 + old "emphasize audio" + new "emphasize audio" + + # renpy/common/00preferences.rpy:458 + old "rollback side" + new "rollback side" + + # renpy/common/00preferences.rpy:468 + old "gl powersave" + new "gl powersave" + + # renpy/common/00preferences.rpy:474 + old "gl framerate" + new "gl framerate" + + # renpy/common/00preferences.rpy:477 + old "gl tearing" + new "gl tearing" + + # renpy/common/00preferences.rpy:480 + old "font transform" + new "font transform" + + # renpy/common/00preferences.rpy:483 + old "font size" + new "font size" + + # renpy/common/00preferences.rpy:491 + old "font line spacing" + new "font line spacing" + + # renpy/common/00preferences.rpy:499 + old "system cursor" + new "system cursor" + + # renpy/common/00preferences.rpy:508 + old "renderer menu" + new "renderer menu" + + # renpy/common/00preferences.rpy:511 + old "accessibility menu" + new "accessibility menu" + + # renpy/common/00preferences.rpy:514 + old "high contrast text" + new "high contrast text" + + # renpy/common/00preferences.rpy:523 + old "audio when minimized" + new "audio when minimized" + + # renpy/common/00preferences.rpy:532 + old "audio when unfocused" + new "audio when unfocused" + + # renpy/common/00preferences.rpy:541 + old "web cache preload" + new "web cache preload" + + # renpy/common/00preferences.rpy:556 + old "voice after game menu" + new "voice after game menu" + + # renpy/common/00preferences.rpy:575 + old "main volume" + new "main volume" + + # renpy/common/00preferences.rpy:576 + old "music volume" + new "music volume" + + # renpy/common/00preferences.rpy:577 + old "sound volume" + new "sound volume" + + # renpy/common/00preferences.rpy:578 + old "voice volume" + new "voice volume" + + # renpy/common/00preferences.rpy:579 + old "mute main" + new "mute main" + + # renpy/common/00preferences.rpy:580 + old "mute music" + new "mute music" + + # renpy/common/00preferences.rpy:581 + old "mute sound" + new "mute sound" + + # renpy/common/00preferences.rpy:582 + old "mute voice" + new "mute voice" + + # renpy/common/00preferences.rpy:583 + old "mute all" + new "mute all" + + # renpy/common/00preferences.rpy:657 + old "Clipboard voicing enabled. Press 'shift+C' to disable." + new "剪贴板朗读已启用。按 Shift+C 来禁用。" + + # renpy/common/00preferences.rpy:659 + old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable." + new "机器朗读会朗读“[renpy.display.tts.last]”。按 Alt+Shift+V 来禁用。" + + # renpy/common/00preferences.rpy:661 + old "Self-voicing enabled. Press 'v' to disable." + new "机器朗读已启用。按 V 来禁用。" + + # renpy/common/00speechbubble.rpy:344 + old "Speech Bubble Editor" + new "对话气泡编辑器" + + # renpy/common/00speechbubble.rpy:349 + old "(hide)" + new "(hide)" + + # renpy/common/00sync.rpy:70 + old "Sync downloaded." + new "同步下载完成。" + + # renpy/common/00sync.rpy:190 + old "Could not connect to the Ren'Py Sync server." + new "无法连接到 Ren'Py 同步服务器。" + + # renpy/common/00sync.rpy:192 + old "The Ren'Py Sync server timed out." + new "Ren'Py 同步服务器已超时。" + + # renpy/common/00sync.rpy:194 + old "An unknown error occurred while connecting to the Ren'Py Sync server." + new "在连接到 Ren'Py 同步服务器时发生了未知错误。" + + # renpy/common/00sync.rpy:267 + old "The Ren'Py Sync server does not have a copy of this sync. The sync ID may be invalid, or it may have timed out." + new "Ren'Py 同步服务器没有该同步副本。同步 ID 可能无效,或者可能已经超时。" + + # renpy/common/00sync.rpy:412 + old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself." + new "请输入您生成的同步 ID。\n切勿输入并非由您创建的同步 ID。" + + # renpy/common/00sync.rpy:431 + old "The sync ID is not in the correct format." + new "同步 ID 的格式不正确。" + + # renpy/common/00sync.rpy:451 + old "The sync could not be decrypted." + new "无法解密该同步。" + + # renpy/common/00sync.rpy:474 + old "The sync belongs to a different game." + new "该同步属于另一款游戏。" + + # renpy/common/00sync.rpy:479 + old "The sync contains a file with an invalid name." + new "该同步包含一个文件,其文件名无效。" + + # renpy/common/00sync.rpy:532 + old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?" + new "此操作将把您的存档上传到 {a=https://sync.renpy.org}Ren'Py 同步服务器{/a} 。\n您想要继续吗?" + + # renpy/common/00sync.rpy:540 + old "Yes" + new "确定" + + # renpy/common/00sync.rpy:541 + old "No" + new "取消" + + # renpy/common/00sync.rpy:561 + old "Enter Sync ID" + new "输入同步 ID" + + # renpy/common/00sync.rpy:572 + old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}." + new "此操作将联系 {a=https://sync.renpy.org}Ren'Py 同步服务器{/a}。" + + # renpy/common/00sync.rpy:599 + old "Sync Success" + new "同步成功" + + # renpy/common/00sync.rpy:602 + old "The Sync ID is:" + new "同步 ID 是:" + + # renpy/common/00sync.rpy:608 + old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}." + new "你可以使用此 ID 在另一设备上下载您的存档。\n此同步将在一小时后失效。\nRen'Py 同步由{a=https://www.renpy.org/sponsors.html}Ren'Py 赞助者{/a}赞助。" + + # renpy/common/00sync.rpy:612 + old "Continue" + new "继续" + + # renpy/common/00sync.rpy:634 + old "Sync Error" + new "同步错误" + + # renpy/common/00iap.rpy:219 + old "Contacting App Store\nPlease Wait..." + new "正在连接 App Store\n请稍后……" + + # renpy/common/00updater.rpy:419 + old "The Ren'Py Updater is not supported on mobile devices." + new "Ren'Py 更新程序不支持移动设备。" + + # renpy/common/00updater.rpy:548 + old "An error is being simulated." + new "正在模拟一个错误。" + + # renpy/common/00updater.rpy:738 + old "Either this project does not support updating, or the update status file was deleted." + new "此项目不支持更新,或者是更新状态文件已被删除。" + + # renpy/common/00updater.rpy:752 + old "This account does not have permission to perform an update." + new "此帐号没有执行更新的权限。" + + # renpy/common/00updater.rpy:755 + old "This account does not have permission to write the update log." + new "此帐号没有写入更新日志的权限。" + + # renpy/common/00updater.rpy:783 + old "Could not verify update signature." + new "无法验证更新签名。" + + # renpy/common/00updater.rpy:1084 + old "The update file was not downloaded." + new "更新文件未能下载。" + + # renpy/common/00updater.rpy:1102 + old "The update file does not have the correct digest - it may have been corrupted." + new "更新文件校验失败。文件可能已损坏。" + + # renpy/common/00updater.rpy:1252 + old "While unpacking {}, unknown type {}." + new "解压 {} 时出现错误,文件类型 {} 无法解压。" + + # renpy/common/00updater.rpy:1624 + old "Updater" + new "更新程序" + + # renpy/common/00updater.rpy:1631 + old "An error has occured:" + new "发生错误:" + + # renpy/common/00updater.rpy:1633 + old "Checking for updates." + new "正在检查更新。" + + # renpy/common/00updater.rpy:1635 + old "This program is up to date." + new "此程序已是最新版本。" + + # renpy/common/00updater.rpy:1637 + old "[u.version] is available. Do you want to install it?" + new "[u.version] 现已可用。您希望现在安装吗?" + + # renpy/common/00updater.rpy:1639 + old "Preparing to download the updates." + new "正在准备下载更新。" + + # renpy/common/00updater.rpy:1641 + old "Downloading the updates." + new "正在下载更新。" + + # renpy/common/00updater.rpy:1643 + old "Unpacking the updates." + new "正在解压更新。" + + # renpy/common/00updater.rpy:1645 + old "Finishing up." + new "完成。" + + # renpy/common/00updater.rpy:1647 + old "The updates have been installed. The program will restart." + new "此更新已安装。程序将重新启动。" + + # renpy/common/00updater.rpy:1649 + old "The updates have been installed." + new "更新已安装。" + + # renpy/common/00updater.rpy:1651 + old "The updates were cancelled." + new "更新已取消。" + + # renpy/common/00updater.rpy:1666 + old "Proceed" + new "继续" + + # renpy/common/00compat.rpy:409 + old "Fullscreen" + new "全屏" + + # renpy/common/00gallery.rpy:627 + old "Image [index] of [count] locked." + new "图片 [count] / [index] 尚未解锁。" + + # renpy/common/00gallery.rpy:647 + old "prev" + new "上一页" + + # renpy/common/00gallery.rpy:648 + old "next" + new "下一页" + + # renpy/common/00gallery.rpy:649 + old "slideshow" + new "幻灯片" + + # renpy/common/00gallery.rpy:650 + old "return" + new "返回" + + # renpy/common/00gltest.rpy:89 + old "Renderer" + new "渲染器" + + # renpy/common/00gltest.rpy:93 + old "Automatically Choose" + new "自动选择" + + # renpy/common/00gltest.rpy:100 + old "Force GL Renderer" + new "强制使用 GL 渲染器" + + # renpy/common/00gltest.rpy:105 + old "Force ANGLE Renderer" + new "强制使用 ANGLE 渲染器" + + # renpy/common/00gltest.rpy:110 + old "Force GLES Renderer" + new "强制使用 GLES 渲染器" + + # renpy/common/00gltest.rpy:116 + old "Force GL2 Renderer" + new "强制使用 GL2 渲染器" + + # renpy/common/00gltest.rpy:121 + old "Force ANGLE2 Renderer" + new "强制使用 ANGLE2 渲染器" + + # renpy/common/00gltest.rpy:126 + old "Force GLES2 Renderer" + new "强制使用 GLES2 渲染器" + + # renpy/common/00gltest.rpy:132 + old "Gamepad" + new "手柄" + + # renpy/common/00gltest.rpy:136 + old "Enable (No Blocklist)" + new "启用(无阻止项)" + + # renpy/common/00gltest.rpy:150 + old "Calibrate" + new "校准" + + # renpy/common/00gltest.rpy:159 + old "Powersave" + new "省电模式" + + # renpy/common/00gltest.rpy:173 + old "Framerate" + new "帧率" + + # renpy/common/00gltest.rpy:177 + old "Screen" + new "基于显示器" + + # renpy/common/00gltest.rpy:181 + old "60" + new "60" + + # renpy/common/00gltest.rpy:185 + old "30" + new "30" + + # renpy/common/00gltest.rpy:191 + old "Tearing" + new "允许画面撕裂" + + # renpy/common/00gltest.rpy:207 + old "Changes will take effect the next time this program is run." + new "更改将在下次运行该程序时生效。" + + # renpy/common/00gltest.rpy:214 + old "Quit" + new "退出" + + # renpy/common/00gltest.rpy:242 + old "Performance Warning" + new "性能警告" + + # renpy/common/00gltest.rpy:247 + old "This computer is using software rendering." + new "此计算机正在使用软件渲染。" + + # renpy/common/00gltest.rpy:249 + old "This game requires use of GL2 that can't be initialised." + new "此游戏需要使用 GL2 渲染器,但其无法初始化。" + + # renpy/common/00gltest.rpy:251 + old "This computer has a problem displaying graphics: [problem]." + new "此计算机显示图形时遇到问题:[problem]" + + # renpy/common/00gltest.rpy:255 + old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display." + new "图形驱动程序可能已过期或未能正确运行。这会导致图形显示缓慢或者错误。" + + # renpy/common/00gltest.rpy:259 + old "The {a=edit:1:log.txt}log.txt{/a} file may contain information to help you determine what is wrong with your computer." + new "{a=edit:1:log.txt}log.txt{/a} 文件可能包含一些信息,这些信息可以帮助确定您的计算机出了什么问题。" + + # renpy/common/00gltest.rpy:264 + old "More details on how to fix this can be found in the {a=[url]}documentation{/a}." + new "关于如何解决该问题的更多详情可以在{a=[url]}文档{/a}中找到。" + + # renpy/common/00gltest.rpy:269 + old "Continue, Show this warning again" + new "继续,下次仍然显示该警告" + + # renpy/common/00gltest.rpy:273 + old "Continue, Don't show warning again" + new "继续,不再显示该警告" + + # renpy/common/00gltest.rpy:281 + old "Change render options" + new "更改渲染选项" + + # renpy/common/00gamepad.rpy:32 + old "Select Gamepad to Calibrate" + new "选择要校准的手柄" + + # renpy/common/00gamepad.rpy:35 + old "No Gamepads Available" + new "无可用手柄" + + # renpy/common/00gamepad.rpy:54 + old "Calibrating [name] ([i]/[total])" + new "正在校准 [name]([i]/[total])" + + # renpy/common/00gamepad.rpy:58 + old "Press or move the '[control!s]' [kind]." + new "按下或移动 '[control!s]' [kind]。" + + # renpy/common/00gamepad.rpy:68 + old "Skip (A)" + new "跳过(A)" + + # renpy/common/00gamepad.rpy:71 + old "Back (B)" + new "返回(B)" + + # renpy/common/_errorhandling.rpym:555 + old "Open" + new "打开" + + # renpy/common/_errorhandling.rpym:557 + old "Opens the traceback.txt file in a text editor." + new "在文本编辑器中打开追溯报告(traceback.txt)。" + + # renpy/common/_errorhandling.rpym:559 + old "Copy BBCode" + new "复制 BBCode" + + # renpy/common/_errorhandling.rpym:561 + old "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/." + new "复制追溯报告(traceback.txt)的内容到剪贴板并转换为 BBcode 以供诸如 https://lemmasoft.renai.us/ 等论坛使用。" + + # renpy/common/_errorhandling.rpym:563 + old "Copy Markdown" + new "复制 Markdown" + + # renpy/common/_errorhandling.rpym:565 + old "Copies the traceback.txt file to the clipboard as Markdown for Discord." + new "复制追溯报告(traceback.txt)的内容到剪贴板并转换为 Markdown 以供 Discord 使用。" + + # renpy/common/_errorhandling.rpym:594 + old "An exception has occurred." + new "发生异常。" + + # renpy/common/_errorhandling.rpym:617 + old "Rollback" + new "回滚" + + # renpy/common/_errorhandling.rpym:619 + old "Attempts a roll back to a prior time, allowing you to save or choose a different choice." + new "尝试回滚到先前的状态,使您可以存档或者选择不同选项。" + + # renpy/common/_errorhandling.rpym:622 + old "Ignore" + new "忽略" + + # renpy/common/_errorhandling.rpym:626 + old "Ignores the exception, allowing you to continue." + new "忽略异常,让您可以继续。" + + # renpy/common/_errorhandling.rpym:628 + old "Ignores the exception, allowing you to continue. This often leads to additional errors." + new "忽略异常,让您可以继续。但这通常会引起更多错误。" + + # renpy/common/_errorhandling.rpym:632 + old "Reload" + new "重新加载" + + # renpy/common/_errorhandling.rpym:634 + old "Reloads the game from disk, saving and restoring game state if possible." + new "从硬盘重新加载游戏,尝试保存和恢复游戏状态。" + + # renpy/common/_errorhandling.rpym:637 + old "Console" + new "控制台" + + # renpy/common/_errorhandling.rpym:639 + old "Opens a console to allow debugging the problem." + new "打开控制台,允许您对问题进行调试。" + + # renpy/common/_errorhandling.rpym:652 + old "Quits the game." + new "退出游戏。" + + # renpy/common/_errorhandling.rpym:673 + old "Parsing the script failed." + new "解析脚本失败。" + + # renpy/common/_developer/developer.rpym:38 + old "Developer Menu" + new "开发者菜单" + + # renpy/common/_developer/developer.rpym:43 + old "Interactive Director (D)" + new "交互式编导器 (D)" + + # renpy/common/_developer/developer.rpym:45 + old "Reload Game (Shift+R)" + new "重新加载游戏 (Shift+R)" + + # renpy/common/_developer/developer.rpym:47 + old "Console (Shift+O)" + new "控制台 (Shift+O)" + + # renpy/common/_developer/developer.rpym:49 + old "Variable Viewer" + new "变量查看器" + + # renpy/common/_developer/developer.rpym:51 + old "Persistent Viewer" + new "持久化数据查看器" + + # renpy/common/_developer/developer.rpym:53 + old "Image Location Picker" + new "图像坐标选取器" + + # renpy/common/_developer/developer.rpym:55 + old "Filename List" + new "文件列表" + + # renpy/common/_developer/developer.rpym:59 + old "Show Image Load Log (F4)" + new "显示图像加载日志 (F4)" + + # renpy/common/_developer/developer.rpym:62 + old "Hide Image Load Log (F4)" + new "隐藏图像加载日志 (F4)" + + # renpy/common/_developer/developer.rpym:65 + old "Image Attributes" + new "图像属性" + + # renpy/common/_developer/developer.rpym:70 + old "Speech Bubble Editor (Shift+B)" + new "对话气泡编辑器(Shift+B)" + + # renpy/common/_developer/developer.rpym:97 + old "[name] [attributes] (hidden)" + new "[name] [attributes](隐藏)" + + # renpy/common/_developer/developer.rpym:101 + old "[name] [attributes]" + new "[name] [attributes]" + + # renpy/common/_developer/developer.rpym:151 + old "Nothing to inspect." + new "没有可查验的对象。" + + # renpy/common/_developer/developer.rpym:162 + old "Hide deleted" + new "隐藏已删除项" + + # renpy/common/_developer/developer.rpym:162 + old "Show deleted" + new "显示已删除项" + + # renpy/common/_developer/developer.rpym:318 + old "Rectangle copied to clipboard." + new "矩形坐标已复制到剪贴板。" + + # renpy/common/_developer/developer.rpym:321 + old "Position copied to clipboard." + new "鼠标坐标已复制到剪贴板。" + + # renpy/common/_developer/developer.rpym:333 + old "Rectangle: %r" + new "矩形坐标:%r" + + # renpy/common/_developer/developer.rpym:336 + old "Mouse position: %r" + new "鼠标坐标:%r" + + # renpy/common/_developer/developer.rpym:341 + old "Right-click or escape to quit." + new "右键点击或按下 Esc 键来退出。" + + # renpy/common/_developer/developer.rpym:389 + old "Type to filter: " + new "输入关键字筛选:" + + # renpy/common/_developer/developer.rpym:507 + old "Textures: [tex_count] ([tex_size_mb:.1f] MB)" + new "贴图:[tex_count] ([tex_size_mb:.1f] MB)" + + # renpy/common/_developer/developer.rpym:511 + old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)" + new "图像缓存:[cache_pct:.1f]% ([cache_size_mb:.1f] MB)" + + # renpy/common/_developer/developer.rpym:521 + old "✔ " + new "✔ " + + # renpy/common/_developer/developer.rpym:524 + old "✘ " + new "✘ " + + # renpy/common/_developer/developer.rpym:529 + old "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}" + new "\n{color=#cfc}✔ 已预载图像(良好){/color}\n{color=#fcc}✘ 未预载图像(糟糕){/color}\n{color=#fff}拖曳来移动位置。{/color}" + + # renpy/common/_developer/inspector.rpym:38 + old "Displayable Inspector" + new "可视组件查验器" + + # renpy/common/_developer/inspector.rpym:61 + old "Size" + new "大小" + + # renpy/common/_developer/inspector.rpym:65 + old "Style" + new "样式" + + # renpy/common/_developer/inspector.rpym:71 + old "Location" + new "源码位置" + + # renpy/common/_developer/inspector.rpym:122 + old "Inspecting Styles of [displayable_name!q]" + new "正在查验 [displayable_name!q] 的样式" + + # renpy/common/_developer/inspector.rpym:139 + old "displayable:" + new "可视组件:" + + # renpy/common/_developer/inspector.rpym:145 + old " (no properties affect the displayable)" + new " (无任何属性影响可视组件)" + + # renpy/common/_developer/inspector.rpym:147 + old " (default properties omitted)" + new " (已省略默认属性)" + + # renpy/common/_developer/inspector.rpym:185 + old "" + new "" + + # renpy/common/00console.rpy:537 + old "Press to exit console. Type help for help.\n" + new "按 Esc 来退出控制台。输入 help 来查看帮助。\n" + + # renpy/common/00console.rpy:541 + old "Ren'Py script enabled." + new "Ren'Py 脚本已启用。" + + # renpy/common/00console.rpy:543 + old "Ren'Py script disabled." + new "Ren'Py 脚本已禁用。" + + # renpy/common/00console.rpy:793 + old "help: show this help\n help : show signature and documentation of " + new "help:显示此帮助信息\n help <表达式>:显示 <表达式> 的签名和文档" + + # renpy/common/00console.rpy:817 + old "Help may display undocumented functions. Please check that the function or\nclass you want to use is documented.\n\n" + new "帮助功能可能会显示未记录文档的函数。请确认您想使用的函数或类是否已经被记录文档。\n\n" + + # renpy/common/00console.rpy:826 + old "commands:\n" + new "命令:\n" + + # renpy/common/00console.rpy:836 + old " : run the statement\n" + new " :运行此语句\n" + + # renpy/common/00console.rpy:838 + old " : run the expression or statement" + new " :运行此表达式或语句" + + # renpy/common/00console.rpy:846 + old "clear: clear the console history" + new "clear:清除控制台历史记录" + + # renpy/common/00console.rpy:850 + old "exit: exit the console" + new "exit:退出控制台" + + # renpy/common/00console.rpy:858 + old "stack: print the return stack" + new "stack:打印返回栈" + + # renpy/common/00console.rpy:880 + old "load : loads the game from slot" + new "load <档位>:读取该档位的存档" + + # renpy/common/00console.rpy:893 + old "save : saves the game in slot" + new "save <档位>:存储存档到该档位" + + # renpy/common/00console.rpy:904 + old "reload: reloads the game, refreshing the scripts" + new "reload:重新加载游戏,并刷新脚本" + + # renpy/common/00console.rpy:912 + old "watch : watch a python expression\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is" + new "watch <表达式>:监视该 python 表达式\n watch short:简短表征所跟踪的表达式(默认)\n watch long:按原样表征所跟踪的表达式" + + # renpy/common/00console.rpy:949 + old "unwatch : stop watching an expression" + new "unwatch <表达式>:停止监视该表达式" + + # renpy/common/00console.rpy:995 + old "unwatchall: stop watching all expressions" + new "unwatchall:停止监视所有表达式" + + # renpy/common/00console.rpy:1016 + old "jump