From 6994bbbf7afe7a4fd2109b67f6a4b97001e97a1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C5=A1a=20Ceviel?= Date: Wed, 22 Apr 2026 20:08:42 +0300 Subject: [PATCH] initial commit --- .gitattributes | 43 + .gitignore | 26 + game/gui.rpy | 486 +++++ game/gui/bar/bottom.png | 3 + game/gui/bar/left.png | 3 + game/gui/bar/right.png | 3 + game/gui/bar/top.png | 3 + game/gui/bubble.png | 3 + game/gui/button/check_foreground.png | 3 + game/gui/button/check_selected_foreground.png | 3 + game/gui/button/choice_hover_background.png | 3 + game/gui/button/choice_idle_background.png | 3 + game/gui/button/hover_background.png | 3 + game/gui/button/idle_background.png | 3 + game/gui/button/quick_hover_background.png | 3 + game/gui/button/quick_idle_background.png | 3 + game/gui/button/radio_foreground.png | 3 + game/gui/button/radio_selected_foreground.png | 3 + game/gui/button/slot_hover_background.png | 3 + game/gui/button/slot_idle_background.png | 3 + game/gui/frame.png | 3 + game/gui/game_menu.png | 3 + game/gui/main_menu.png | 3 + game/gui/namebox.png | 3 + game/gui/notify.png | 3 + game/gui/nvl.png | 3 + game/gui/overlay/confirm.png | 3 + game/gui/overlay/game_menu.png | 3 + game/gui/overlay/main_menu.png | 3 + game/gui/phone/bar/bottom.png | 3 + game/gui/phone/bar/left.png | 3 + game/gui/phone/bar/right.png | 3 + game/gui/phone/bar/top.png | 3 + game/gui/phone/button/check_foreground.png | 3 + .../button/check_selected_foreground.png | 3 + .../phone/button/choice_hover_background.png | 3 + .../phone/button/choice_idle_background.png | 3 + game/gui/phone/button/hover_background.png | 3 + game/gui/phone/button/idle_background.png | 3 + game/gui/phone/button/radio_foreground.png | 3 + .../button/radio_selected_foreground.png | 3 + .../phone/button/slot_hover_background.png | 3 + .../gui/phone/button/slot_idle_background.png | 3 + game/gui/phone/nvl.png | 3 + game/gui/phone/overlay/game_menu.png | 3 + game/gui/phone/overlay/main_menu.png | 3 + .../phone/scrollbar/horizontal_hover_bar.png | 3 + .../scrollbar/horizontal_hover_thumb.png | 3 + .../phone/scrollbar/horizontal_idle_bar.png | 3 + .../phone/scrollbar/horizontal_idle_thumb.png | 3 + .../phone/scrollbar/vertical_hover_bar.png | 3 + .../phone/scrollbar/vertical_hover_thumb.png | 3 + .../gui/phone/scrollbar/vertical_idle_bar.png | 3 + .../phone/scrollbar/vertical_idle_thumb.png | 3 + .../gui/phone/slider/horizontal_hover_bar.png | 3 + .../phone/slider/horizontal_hover_thumb.png | 3 + game/gui/phone/slider/horizontal_idle_bar.png | 3 + .../phone/slider/horizontal_idle_thumb.png | 3 + game/gui/phone/slider/vertical_hover_bar.png | 3 + .../gui/phone/slider/vertical_hover_thumb.png | 3 + game/gui/phone/slider/vertical_idle_bar.png | 3 + game/gui/phone/slider/vertical_idle_thumb.png | 3 + game/gui/phone/textbox.png | 3 + game/gui/scrollbar/horizontal_hover_bar.png | 3 + game/gui/scrollbar/horizontal_hover_thumb.png | 3 + game/gui/scrollbar/horizontal_idle_bar.png | 3 + game/gui/scrollbar/horizontal_idle_thumb.png | 3 + game/gui/scrollbar/vertical_hover_bar.png | 3 + game/gui/scrollbar/vertical_hover_thumb.png | 3 + game/gui/scrollbar/vertical_idle_bar.png | 3 + game/gui/scrollbar/vertical_idle_thumb.png | 3 + game/gui/skip.png | 3 + game/gui/slider/horizontal_hover_bar.png | 3 + game/gui/slider/horizontal_hover_thumb.png | 3 + game/gui/slider/horizontal_idle_bar.png | 3 + game/gui/slider/horizontal_idle_thumb.png | 3 + game/gui/slider/vertical_hover_bar.png | 3 + game/gui/slider/vertical_hover_thumb.png | 3 + game/gui/slider/vertical_idle_bar.png | 3 + game/gui/slider/vertical_idle_thumb.png | 3 + game/gui/textbox.png | 3 + game/gui/thoughtbubble.png | 3 + game/gui/window_icon.png | 3 + game/libs/libs.txt | 6 + game/options.rpy | 211 +++ game/screens.rpy | 1620 +++++++++++++++++ game/script.rpy | 22 + game/tl/None/common.rpym | 1535 ++++++++++++++++ 88 files changed, 4189 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 game/gui.rpy create mode 100644 game/gui/bar/bottom.png create mode 100644 game/gui/bar/left.png create mode 100644 game/gui/bar/right.png create mode 100644 game/gui/bar/top.png create mode 100644 game/gui/bubble.png create mode 100644 game/gui/button/check_foreground.png create mode 100644 game/gui/button/check_selected_foreground.png create mode 100644 game/gui/button/choice_hover_background.png create mode 100644 game/gui/button/choice_idle_background.png create mode 100644 game/gui/button/hover_background.png create mode 100644 game/gui/button/idle_background.png create mode 100644 game/gui/button/quick_hover_background.png create mode 100644 game/gui/button/quick_idle_background.png create mode 100644 game/gui/button/radio_foreground.png create mode 100644 game/gui/button/radio_selected_foreground.png create mode 100644 game/gui/button/slot_hover_background.png create mode 100644 game/gui/button/slot_idle_background.png create mode 100644 game/gui/frame.png create mode 100644 game/gui/game_menu.png create mode 100644 game/gui/main_menu.png create mode 100644 game/gui/namebox.png create mode 100644 game/gui/notify.png create mode 100644 game/gui/nvl.png create mode 100644 game/gui/overlay/confirm.png create mode 100644 game/gui/overlay/game_menu.png create mode 100644 game/gui/overlay/main_menu.png create mode 100644 game/gui/phone/bar/bottom.png create mode 100644 game/gui/phone/bar/left.png create mode 100644 game/gui/phone/bar/right.png create mode 100644 game/gui/phone/bar/top.png create mode 100644 game/gui/phone/button/check_foreground.png create mode 100644 game/gui/phone/button/check_selected_foreground.png create mode 100644 game/gui/phone/button/choice_hover_background.png create mode 100644 game/gui/phone/button/choice_idle_background.png create mode 100644 game/gui/phone/button/hover_background.png create mode 100644 game/gui/phone/button/idle_background.png create mode 100644 game/gui/phone/button/radio_foreground.png create mode 100644 game/gui/phone/button/radio_selected_foreground.png create mode 100644 game/gui/phone/button/slot_hover_background.png create mode 100644 game/gui/phone/button/slot_idle_background.png create mode 100644 game/gui/phone/nvl.png create mode 100644 game/gui/phone/overlay/game_menu.png create mode 100644 game/gui/phone/overlay/main_menu.png create mode 100644 game/gui/phone/scrollbar/horizontal_hover_bar.png create mode 100644 game/gui/phone/scrollbar/horizontal_hover_thumb.png create mode 100644 game/gui/phone/scrollbar/horizontal_idle_bar.png create mode 100644 game/gui/phone/scrollbar/horizontal_idle_thumb.png create mode 100644 game/gui/phone/scrollbar/vertical_hover_bar.png create mode 100644 game/gui/phone/scrollbar/vertical_hover_thumb.png create mode 100644 game/gui/phone/scrollbar/vertical_idle_bar.png create mode 100644 game/gui/phone/scrollbar/vertical_idle_thumb.png create mode 100644 game/gui/phone/slider/horizontal_hover_bar.png create mode 100644 game/gui/phone/slider/horizontal_hover_thumb.png create mode 100644 game/gui/phone/slider/horizontal_idle_bar.png create mode 100644 game/gui/phone/slider/horizontal_idle_thumb.png create mode 100644 game/gui/phone/slider/vertical_hover_bar.png create mode 100644 game/gui/phone/slider/vertical_hover_thumb.png create mode 100644 game/gui/phone/slider/vertical_idle_bar.png create mode 100644 game/gui/phone/slider/vertical_idle_thumb.png create mode 100644 game/gui/phone/textbox.png create mode 100644 game/gui/scrollbar/horizontal_hover_bar.png create mode 100644 game/gui/scrollbar/horizontal_hover_thumb.png create mode 100644 game/gui/scrollbar/horizontal_idle_bar.png create mode 100644 game/gui/scrollbar/horizontal_idle_thumb.png create mode 100644 game/gui/scrollbar/vertical_hover_bar.png create mode 100644 game/gui/scrollbar/vertical_hover_thumb.png create mode 100644 game/gui/scrollbar/vertical_idle_bar.png create mode 100644 game/gui/scrollbar/vertical_idle_thumb.png create mode 100644 game/gui/skip.png create mode 100644 game/gui/slider/horizontal_hover_bar.png create mode 100644 game/gui/slider/horizontal_hover_thumb.png create mode 100644 game/gui/slider/horizontal_idle_bar.png create mode 100644 game/gui/slider/horizontal_idle_thumb.png create mode 100644 game/gui/slider/vertical_hover_bar.png create mode 100644 game/gui/slider/vertical_hover_thumb.png create mode 100644 game/gui/slider/vertical_idle_bar.png create mode 100644 game/gui/slider/vertical_idle_thumb.png create mode 100644 game/gui/textbox.png create mode 100644 game/gui/thoughtbubble.png create mode 100644 game/gui/window_icon.png create mode 100644 game/libs/libs.txt create mode 100644 game/options.rpy create mode 100644 game/screens.rpy create mode 100644 game/script.rpy create mode 100644 game/tl/None/common.rpym diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..7205e72 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,43 @@ +# В последующем может быть расширен или изменён, если посчитаем нужным + +* text=auto + +# ====================================== +# 3D МОДЕЛИ И АНИМАЦИИ +# ====================================== +*.blend filter=lfs diff=lfs merge=lfs -text +*.fbx filter=lfs diff=lfs merge=lfs -text +*.obj filter=lfs diff=lfs merge=lfs -text +*.3ds filter=lfs diff=lfs merge=lfs -text +*.dae filter=lfs diff=lfs merge=lfs -text +*.max filter=lfs diff=lfs merge=lfs -text +*.c4d filter=lfs diff=lfs merge=lfs -text + +# ====================================== +# ГРАФИКА (ИСХОДНИКИ) +# ====================================== +*.psd filter=lfs diff=lfs merge=lfs -text +*.ai filter=lfs diff=lfs merge=lfs -text +*.skp filter=lfs diff=lfs merge=lfs -text +*.tga filter=lfs diff=lfs merge=lfs -text +*.exr filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.jpg filter=lfs diff=lfs merge=lfs -text +*.jpeg filter=lfs diff=lfs merge=lfs -text + +# ====================================== +# АУДИО (ИСХОДНИКИ) +# ====================================== +*.wav filter=lfs diff=lfs merge=lfs -text +*.mp3 filter=lfs diff=lfs merge=lfs -text +*.ogg filter=lfs diff=lfs merge=lfs -text +*.aiff filter=lfs diff=lfs merge=lfs -text +*.flac filter=lfs diff=lfs merge=lfs -text + +# ====================================== +# ВИДЕО И КИНЕМАТИКА +# ====================================== +*.mp4 filter=lfs diff=lfs merge=lfs -text +*.mov filter=lfs diff=lfs merge=lfs -text +*.avi filter=lfs diff=lfs merge=lfs -text +*.webm filter=lfs diff=lfs merge=lfs -text \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..21e7266 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# Directories that Ren'Py changes files in. +/game/saves +/game/cache + +# Compiled script files. These are important for saving, and so should +# be preserved by developer and build systems after the game has been released. +/game/**/*.rpyc +/game/**/*.rpymc + +# Files Ren'Py can generate. +/game/**/*.bak +/game/**/*.new +/game/**/*.old + +# Error, log, and output files. +/errors.txt +/files.txt +/image_cache.txt +/log.txt +/save_dump.txt +/traceback.txt + +# Launcher-generated files. +/dialogue.tab +/dialogue.txt +/strings.json diff --git a/game/gui.rpy b/game/gui.rpy new file mode 100644 index 0000000..9148612 --- /dev/null +++ b/game/gui.rpy @@ -0,0 +1,486 @@ +################################################################################ +## Инициализация +################################################################################ + +## Оператор init offset повышает приоритет инициализации в этом файле над +## другими файлами, из-за чего инициализация здесь запускается первее. +init offset = -2 + +## Вызываю gui.init, чтобы сбросить стили, чувствительные к стандартным +## значениям, и задать высоту и ширину окна игры. +init python: + gui.init(1920, 1080) + +## Включить проверку на недопустимые или нестабильные свойства в экранах или +## преобразованиях +define config.check_conflicting_properties = True + + +################################################################################ +## Конфигурируемые Переменные GUI +################################################################################ + + +## Цвета ####################################################################### +## +## Цвета текста в интерфейсе. + +## Акцентный цвет используется в заголовках и подчёркнутых текстах. +define gui.accent_color = '#0099cc' + +## Цвет, используемый в текстовой кнопке, когда она не выбрана и не наведена. +define gui.idle_color = '#888888' + +## Small_color используется в маленьком тексте, который должен быть ярче/темнее, +## для того, чтобы выделяться. +define gui.idle_small_color = '#aaaaaa' + +## Цвет, используемых в кнопках и панелях, когда они наведены. +define gui.hover_color = '#66c1e0' + +## Цвет, используемый текстовой кнопкой, когда она выбрана, но не наведена. +## Кнопка может быть выбрана, если это текущий экран или текущее значение +## настройки. +define gui.selected_color = '#ffffff' + +## Цвет, используемый текстовой кнопкой, когда она не может быть выбрана. +define gui.insensitive_color = '#8888887f' + +## Цвета, используемые для частей панелей, которые не заполняются. Они +## используются не напрямую, а только при воссоздании файлов изображений. +define gui.muted_color = '#003d51' +define gui.hover_muted_color = '#005b7a' + +## Цвета, используемые в тексте диалогов и выборов. +define gui.text_color = '#ffffff' +define gui.interface_text_color = '#ffffff' + + +## Шрифты и их размеры ######################################################### + +## Шрифт, используемый внутриигровым текстом. +define gui.text_font = "DejaVuSans.ttf" + +## Шрифт, используемый именами персонажей. +define gui.name_text_font = "DejaVuSans.ttf" + +## Шрифт, используемый текстом вне игры. +define gui.interface_text_font = "DejaVuSans.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 = '#888888' +define gui.choice_button_text_hover_color = "#ffffff" +define gui.choice_button_text_insensitive_color = '#8888887f' + + +## Кнопки Слотов ############################################################### +## +## Кнопка слотов — особый вид кнопки. Она содержит миниатюру и текст, +## описывающий слот сохранения. Слот сохранения использует файлы из 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) + +## What to do with unscrollable scrollbars in the game menu. "hide" hides them, +## while None shows them. +define gui.unscrollable = "hide" + + +## История ##################################################################### +## +## Экран истории показывает диалог, который игрок уже прошёл. + +## Количество диалоговых блоков истории, которые Ren'Py будет хранить. +define config.history_length = 250 + +## Высота доступных записей на экране истории, или None, чтобы задать высоту в +## зависимости от производительности. +define gui.history_height = 210 + +## Дополнительное пространство добавляемое между записями экрана истории. +define gui.history_spacing = 0 + +## Местоположение, ширина и выравнивание заголовка, показывающего имя говорящего +## персонажа. +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) + +## Максимальное число показываемых строк в режиме NVL. Когда количество строчек +## начинает превышать это значение, старые строчки очищаются. +define gui.nvl_list_length = 6 + +## Высота доступных строчек в режиме NVL. Установите на None, чтобы строчки +## динамически регулировали свою высоту. +define gui.nvl_height = 173 + +## Интервал между строчками в режиме NVL, если gui.nvl_height имеет значение +## None, а также между строчками и меню режима 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. +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/gui/bar/bottom.png b/game/gui/bar/bottom.png new file mode 100644 index 0000000..5ee693b --- /dev/null +++ b/game/gui/bar/bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf177fa50f3bd67bdb891004a893936092ee5691064b39cd91c70b9440f9a8ea +size 622 diff --git a/game/gui/bar/left.png b/game/gui/bar/left.png new file mode 100644 index 0000000..af15071 --- /dev/null +++ b/game/gui/bar/left.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9208b3770ac0225be62a13cd024250e8798f67bda232f7799b4bdbfd76dc0fe3 +size 248 diff --git a/game/gui/bar/right.png b/game/gui/bar/right.png new file mode 100644 index 0000000..b3f2046 --- /dev/null +++ b/game/gui/bar/right.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df4c246078f278730d3c61f35f629d30a7248ab7ad0e927a1080da78ec133b26 +size 247 diff --git a/game/gui/bar/top.png b/game/gui/bar/top.png new file mode 100644 index 0000000..c9b0979 --- /dev/null +++ b/game/gui/bar/top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef4994dc4de68284f04f0831776a73d55349007d0c1ebcf13e9d7ce396f1a9f0 +size 621 diff --git a/game/gui/bubble.png b/game/gui/bubble.png new file mode 100644 index 0000000..168ea4e --- /dev/null +++ b/game/gui/bubble.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1d09a38be1acf64e305e225614f994c6ca758a38908f2f8cd87ea5714947133 +size 6886 diff --git a/game/gui/button/check_foreground.png b/game/gui/button/check_foreground.png new file mode 100644 index 0000000..404a324 --- /dev/null +++ b/game/gui/button/check_foreground.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b81518e827d5fc27aef7445684c2efc67e001254abd5f414e20a5aabee6f0aae +size 85 diff --git a/game/gui/button/check_selected_foreground.png b/game/gui/button/check_selected_foreground.png new file mode 100644 index 0000000..154fd5a --- /dev/null +++ b/game/gui/button/check_selected_foreground.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:905c0969e2305db96b5c4c495533a92eb1199fb3d25a05e58620c8235a816413 +size 139 diff --git a/game/gui/button/choice_hover_background.png b/game/gui/button/choice_hover_background.png new file mode 100644 index 0000000..49ca280 --- /dev/null +++ b/game/gui/button/choice_hover_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2f5a4e7861d99677483ebfcc752c7dcda384f74c2723bc88e92983f49a812a1 +size 1116 diff --git a/game/gui/button/choice_idle_background.png b/game/gui/button/choice_idle_background.png new file mode 100644 index 0000000..af45da2 --- /dev/null +++ b/game/gui/button/choice_idle_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b425b43d0b129abc6bc4f87d81906eb73e8999ab216b69ebf72b1efac20f9bc +size 983 diff --git a/game/gui/button/hover_background.png b/game/gui/button/hover_background.png new file mode 100644 index 0000000..fe02c55 --- /dev/null +++ b/game/gui/button/hover_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6fe2aada23d9ae98c0b33dd81b0961cc68427007545bfbe61006bfff04eec3c +size 165 diff --git a/game/gui/button/idle_background.png b/game/gui/button/idle_background.png new file mode 100644 index 0000000..fe02c55 --- /dev/null +++ b/game/gui/button/idle_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6fe2aada23d9ae98c0b33dd81b0961cc68427007545bfbe61006bfff04eec3c +size 165 diff --git a/game/gui/button/quick_hover_background.png b/game/gui/button/quick_hover_background.png new file mode 100644 index 0000000..1583cbd --- /dev/null +++ b/game/gui/button/quick_hover_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a773467117091a4f8ccdc582cac54cd90a900391b320a245320934a3d3a7fd54 +size 106 diff --git a/game/gui/button/quick_idle_background.png b/game/gui/button/quick_idle_background.png new file mode 100644 index 0000000..1583cbd --- /dev/null +++ b/game/gui/button/quick_idle_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a773467117091a4f8ccdc582cac54cd90a900391b320a245320934a3d3a7fd54 +size 106 diff --git a/game/gui/button/radio_foreground.png b/game/gui/button/radio_foreground.png new file mode 100644 index 0000000..404a324 --- /dev/null +++ b/game/gui/button/radio_foreground.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b81518e827d5fc27aef7445684c2efc67e001254abd5f414e20a5aabee6f0aae +size 85 diff --git a/game/gui/button/radio_selected_foreground.png b/game/gui/button/radio_selected_foreground.png new file mode 100644 index 0000000..154fd5a --- /dev/null +++ b/game/gui/button/radio_selected_foreground.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:905c0969e2305db96b5c4c495533a92eb1199fb3d25a05e58620c8235a816413 +size 139 diff --git a/game/gui/button/slot_hover_background.png b/game/gui/button/slot_hover_background.png new file mode 100644 index 0000000..a60a86a --- /dev/null +++ b/game/gui/button/slot_hover_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32464f50aa0efaf55b8363b54e7ee1d0430820f6fa12a90e37b21ad5af22bb80 +size 1056 diff --git a/game/gui/button/slot_idle_background.png b/game/gui/button/slot_idle_background.png new file mode 100644 index 0000000..fde7e88 --- /dev/null +++ b/game/gui/button/slot_idle_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:deeaecc441a2ae0c9f803ea91d578b88d8ab8ee0cf9a73ffb22b82dfd57f9220 +size 1035 diff --git a/game/gui/frame.png b/game/gui/frame.png new file mode 100644 index 0000000..fdddd2a --- /dev/null +++ b/game/gui/frame.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:946f8b1cf38e236295718db5216193aa36beb72ee2a92e4ba8ef7b2533fa12bc +size 2222 diff --git a/game/gui/game_menu.png b/game/gui/game_menu.png new file mode 100644 index 0000000..442d563 --- /dev/null +++ b/game/gui/game_menu.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfadb8b1120a167f7fae302034d320a577848d5deb1e4f9de19dde66066cea5e +size 10582 diff --git a/game/gui/main_menu.png b/game/gui/main_menu.png new file mode 100644 index 0000000..442d563 --- /dev/null +++ b/game/gui/main_menu.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfadb8b1120a167f7fae302034d320a577848d5deb1e4f9de19dde66066cea5e +size 10582 diff --git a/game/gui/namebox.png b/game/gui/namebox.png new file mode 100644 index 0000000..58b0de3 --- /dev/null +++ b/game/gui/namebox.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b190c704a672135d73ad1b767fb53648644152bcbcaa1774705c2cbbbfbf735 +size 173 diff --git a/game/gui/notify.png b/game/gui/notify.png new file mode 100644 index 0000000..7dd1082 --- /dev/null +++ b/game/gui/notify.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f47a32b3e587de745882f06c4e1d63460053be3b6f059b37cb563fbbf554bbfa +size 599 diff --git a/game/gui/nvl.png b/game/gui/nvl.png new file mode 100644 index 0000000..2f86af8 --- /dev/null +++ b/game/gui/nvl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a457188ebef77f20d8b2b94f2b495191ec372b8c7b1b7d29736818d7bc8ec6d +size 10835 diff --git a/game/gui/overlay/confirm.png b/game/gui/overlay/confirm.png new file mode 100644 index 0000000..011c1a8 --- /dev/null +++ b/game/gui/overlay/confirm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4471e45eea510181aba4c7528e6f92535c071c4532320c3ef3d97bfaac541e5d +size 10578 diff --git a/game/gui/overlay/game_menu.png b/game/gui/overlay/game_menu.png new file mode 100644 index 0000000..5daadcd --- /dev/null +++ b/game/gui/overlay/game_menu.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caf94d8a3b51f7e0ccfc34d4a57e0b682615bd6838e8b85e312e5cdf17b6ee10 +size 10677 diff --git a/game/gui/overlay/main_menu.png b/game/gui/overlay/main_menu.png new file mode 100644 index 0000000..10edafa --- /dev/null +++ b/game/gui/overlay/main_menu.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aebe7ec27913f6d48658ddf6175b96dd78871e048d6c57671f83753a2dde260d +size 10595 diff --git a/game/gui/phone/bar/bottom.png b/game/gui/phone/bar/bottom.png new file mode 100644 index 0000000..5ee693b --- /dev/null +++ b/game/gui/phone/bar/bottom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf177fa50f3bd67bdb891004a893936092ee5691064b39cd91c70b9440f9a8ea +size 622 diff --git a/game/gui/phone/bar/left.png b/game/gui/phone/bar/left.png new file mode 100644 index 0000000..af15071 --- /dev/null +++ b/game/gui/phone/bar/left.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9208b3770ac0225be62a13cd024250e8798f67bda232f7799b4bdbfd76dc0fe3 +size 248 diff --git a/game/gui/phone/bar/right.png b/game/gui/phone/bar/right.png new file mode 100644 index 0000000..b3f2046 --- /dev/null +++ b/game/gui/phone/bar/right.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df4c246078f278730d3c61f35f629d30a7248ab7ad0e927a1080da78ec133b26 +size 247 diff --git a/game/gui/phone/bar/top.png b/game/gui/phone/bar/top.png new file mode 100644 index 0000000..c9b0979 --- /dev/null +++ b/game/gui/phone/bar/top.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef4994dc4de68284f04f0831776a73d55349007d0c1ebcf13e9d7ce396f1a9f0 +size 621 diff --git a/game/gui/phone/button/check_foreground.png b/game/gui/phone/button/check_foreground.png new file mode 100644 index 0000000..cfbbf89 --- /dev/null +++ b/game/gui/phone/button/check_foreground.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:149008c27ef124391e0f0d5b0b14067035b08ea9bd1511328ffcaf384f74c91e +size 86 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..0bd2f2d --- /dev/null +++ b/game/gui/phone/button/check_selected_foreground.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ba555cd0b2c7b51625cacc10b6a086b7f82cd8f4905e077d34c6333005f9ae6 +size 151 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..49ca280 --- /dev/null +++ b/game/gui/phone/button/choice_hover_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2f5a4e7861d99677483ebfcc752c7dcda384f74c2723bc88e92983f49a812a1 +size 1116 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..af45da2 --- /dev/null +++ b/game/gui/phone/button/choice_idle_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b425b43d0b129abc6bc4f87d81906eb73e8999ab216b69ebf72b1efac20f9bc +size 983 diff --git a/game/gui/phone/button/hover_background.png b/game/gui/phone/button/hover_background.png new file mode 100644 index 0000000..7f3d490 --- /dev/null +++ b/game/gui/phone/button/hover_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b5174eb570ba34952f928fcceb3610128ca35fa57407566e71b15921e3d8320 +size 192 diff --git a/game/gui/phone/button/idle_background.png b/game/gui/phone/button/idle_background.png new file mode 100644 index 0000000..7f3d490 --- /dev/null +++ b/game/gui/phone/button/idle_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b5174eb570ba34952f928fcceb3610128ca35fa57407566e71b15921e3d8320 +size 192 diff --git a/game/gui/phone/button/radio_foreground.png b/game/gui/phone/button/radio_foreground.png new file mode 100644 index 0000000..cfbbf89 --- /dev/null +++ b/game/gui/phone/button/radio_foreground.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:149008c27ef124391e0f0d5b0b14067035b08ea9bd1511328ffcaf384f74c91e +size 86 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..0bd2f2d --- /dev/null +++ b/game/gui/phone/button/radio_selected_foreground.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ba555cd0b2c7b51625cacc10b6a086b7f82cd8f4905e077d34c6333005f9ae6 +size 151 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..a60a86a --- /dev/null +++ b/game/gui/phone/button/slot_hover_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32464f50aa0efaf55b8363b54e7ee1d0430820f6fa12a90e37b21ad5af22bb80 +size 1056 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..fde7e88 --- /dev/null +++ b/game/gui/phone/button/slot_idle_background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:deeaecc441a2ae0c9f803ea91d578b88d8ab8ee0cf9a73ffb22b82dfd57f9220 +size 1035 diff --git a/game/gui/phone/nvl.png b/game/gui/phone/nvl.png new file mode 100644 index 0000000..7f953d9 --- /dev/null +++ b/game/gui/phone/nvl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20afd107ba0a8ce39fc31b05c6de354b0159e4d84ace0882d0f9d5e4d00afdd7 +size 10578 diff --git a/game/gui/phone/overlay/game_menu.png b/game/gui/phone/overlay/game_menu.png new file mode 100644 index 0000000..1d4f41d --- /dev/null +++ b/game/gui/phone/overlay/game_menu.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:356bae97a3595be5562ca76d46886e27420d45df59c79776e8f0aa4805ea7aeb +size 10676 diff --git a/game/gui/phone/overlay/main_menu.png b/game/gui/phone/overlay/main_menu.png new file mode 100644 index 0000000..bbad4d0 --- /dev/null +++ b/game/gui/phone/overlay/main_menu.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:693f967a9aba4ac8a73f7f4d376251c5babab3ea17901817f41ba2fb7acb769c +size 10592 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..f28dd39 --- /dev/null +++ b/game/gui/phone/scrollbar/horizontal_hover_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7539a45fdcf50996d577e57c6a30b74bad4da2d437ae90a20a56dacace390471 +size 203 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..fb36731 --- /dev/null +++ b/game/gui/phone/scrollbar/horizontal_hover_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50639d200fa0df5fc678141e4ef7763c5dc3a5856005733fff54b2a74a4c7f15 +size 205 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..28744e0 --- /dev/null +++ b/game/gui/phone/scrollbar/horizontal_idle_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:997e6171d3d4dd93cf830932d3f741925564d9586c2b5fbd388920b14550fa86 +size 204 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..2910e4b --- /dev/null +++ b/game/gui/phone/scrollbar/horizontal_idle_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edaff54d25f53371aad221fb030b3cf4c532d43e04da41ff92ab895612577ca5 +size 204 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..21dca5b --- /dev/null +++ b/game/gui/phone/scrollbar/vertical_hover_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f506e671fc6756866da61d62def9b93b6694a3404ecbf1838143b50746ba4b20 +size 586 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..571dec8 --- /dev/null +++ b/game/gui/phone/scrollbar/vertical_hover_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:608e48786822ff0a2f3fe4fda31079bf44f0522d866bfa59895013e7174d14ae +size 588 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..6e4d5e3 --- /dev/null +++ b/game/gui/phone/scrollbar/vertical_idle_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac5191f126562a5bb4f06372d3de3493b115c40f33eb46f4d7a3201a483ba42e +size 588 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..0285a10 --- /dev/null +++ b/game/gui/phone/scrollbar/vertical_idle_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36ac531299f9ba7df83ab71bbb28d62dea015ab4faf8b67447bfbe1388a60827 +size 588 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..134b92e --- /dev/null +++ b/game/gui/phone/slider/horizontal_hover_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:144e40c776cfab49bfa1e2dacc8b596ee68715a998865b1088b0ae577652c994 +size 312 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..8d942d3 --- /dev/null +++ b/game/gui/phone/slider/horizontal_hover_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e91ff3693ace8bb304808b1afe5f2133bb2d6e4fad097ad9f3e37780e3bd4d88 +size 126 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..7b083ed --- /dev/null +++ b/game/gui/phone/slider/horizontal_idle_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e4dbcb8603f86855e0e76f7e8277062f46f01f51de855e2d3ee2ff6b06bb0db +size 313 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..94397ad --- /dev/null +++ b/game/gui/phone/slider/horizontal_idle_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39ddb7b7043b826d505362b74b8832b2db3d0e258321e71d80e7f364cfce8ea5 +size 126 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..43aabca --- /dev/null +++ b/game/gui/phone/slider/vertical_hover_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e225fa5a242a6baadd23a55018a7448e347dc3f94a0ef3a55a59c0f3c0b44ace +size 684 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..e4ea200 --- /dev/null +++ b/game/gui/phone/slider/vertical_hover_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ea4b0dd1260e13aca809edd9bcbdb9f361ad5f102308e6bd4054c05b32f4bdc +size 118 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..684d425 --- /dev/null +++ b/game/gui/phone/slider/vertical_idle_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d261fe586c3148654d0e63198f2aa3a169bdd3569c517c45874a1028a72f16f9 +size 685 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..9b38d5a --- /dev/null +++ b/game/gui/phone/slider/vertical_idle_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05b2f1f6d424940469bc54632f33f01214653ddf33f560c5820a0f07c6bf3554 +size 117 diff --git a/game/gui/phone/textbox.png b/game/gui/phone/textbox.png new file mode 100644 index 0000000..8be1645 --- /dev/null +++ b/game/gui/phone/textbox.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b3f96d88079c66a33eabceb773499034490b3119f7922e32111c0a4b8ea2cae +size 3610 diff --git a/game/gui/scrollbar/horizontal_hover_bar.png b/game/gui/scrollbar/horizontal_hover_bar.png new file mode 100644 index 0000000..f28dd39 --- /dev/null +++ b/game/gui/scrollbar/horizontal_hover_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7539a45fdcf50996d577e57c6a30b74bad4da2d437ae90a20a56dacace390471 +size 203 diff --git a/game/gui/scrollbar/horizontal_hover_thumb.png b/game/gui/scrollbar/horizontal_hover_thumb.png new file mode 100644 index 0000000..fb36731 --- /dev/null +++ b/game/gui/scrollbar/horizontal_hover_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50639d200fa0df5fc678141e4ef7763c5dc3a5856005733fff54b2a74a4c7f15 +size 205 diff --git a/game/gui/scrollbar/horizontal_idle_bar.png b/game/gui/scrollbar/horizontal_idle_bar.png new file mode 100644 index 0000000..28744e0 --- /dev/null +++ b/game/gui/scrollbar/horizontal_idle_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:997e6171d3d4dd93cf830932d3f741925564d9586c2b5fbd388920b14550fa86 +size 204 diff --git a/game/gui/scrollbar/horizontal_idle_thumb.png b/game/gui/scrollbar/horizontal_idle_thumb.png new file mode 100644 index 0000000..2910e4b --- /dev/null +++ b/game/gui/scrollbar/horizontal_idle_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edaff54d25f53371aad221fb030b3cf4c532d43e04da41ff92ab895612577ca5 +size 204 diff --git a/game/gui/scrollbar/vertical_hover_bar.png b/game/gui/scrollbar/vertical_hover_bar.png new file mode 100644 index 0000000..21dca5b --- /dev/null +++ b/game/gui/scrollbar/vertical_hover_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f506e671fc6756866da61d62def9b93b6694a3404ecbf1838143b50746ba4b20 +size 586 diff --git a/game/gui/scrollbar/vertical_hover_thumb.png b/game/gui/scrollbar/vertical_hover_thumb.png new file mode 100644 index 0000000..571dec8 --- /dev/null +++ b/game/gui/scrollbar/vertical_hover_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:608e48786822ff0a2f3fe4fda31079bf44f0522d866bfa59895013e7174d14ae +size 588 diff --git a/game/gui/scrollbar/vertical_idle_bar.png b/game/gui/scrollbar/vertical_idle_bar.png new file mode 100644 index 0000000..6e4d5e3 --- /dev/null +++ b/game/gui/scrollbar/vertical_idle_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac5191f126562a5bb4f06372d3de3493b115c40f33eb46f4d7a3201a483ba42e +size 588 diff --git a/game/gui/scrollbar/vertical_idle_thumb.png b/game/gui/scrollbar/vertical_idle_thumb.png new file mode 100644 index 0000000..0285a10 --- /dev/null +++ b/game/gui/scrollbar/vertical_idle_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36ac531299f9ba7df83ab71bbb28d62dea015ab4faf8b67447bfbe1388a60827 +size 588 diff --git a/game/gui/skip.png b/game/gui/skip.png new file mode 100644 index 0000000..1161001 --- /dev/null +++ b/game/gui/skip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3caee95e3266f805d0416c49caa04c67abc655b4439e0788ce893f04dd82649d +size 339 diff --git a/game/gui/slider/horizontal_hover_bar.png b/game/gui/slider/horizontal_hover_bar.png new file mode 100644 index 0000000..cb6d59f --- /dev/null +++ b/game/gui/slider/horizontal_hover_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fe86bdcd4b06bf8bd9f6f58983415e6ad3d9cf3f339cb1de273f46553ccae3f +size 246 diff --git a/game/gui/slider/horizontal_hover_thumb.png b/game/gui/slider/horizontal_hover_thumb.png new file mode 100644 index 0000000..2d9119a --- /dev/null +++ b/game/gui/slider/horizontal_hover_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbfb4b812b49f1ce6348797c3206dd235215473bf9476c6c957bc7cd27f69a05 +size 111 diff --git a/game/gui/slider/horizontal_idle_bar.png b/game/gui/slider/horizontal_idle_bar.png new file mode 100644 index 0000000..b3f2046 --- /dev/null +++ b/game/gui/slider/horizontal_idle_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df4c246078f278730d3c61f35f629d30a7248ab7ad0e927a1080da78ec133b26 +size 247 diff --git a/game/gui/slider/horizontal_idle_thumb.png b/game/gui/slider/horizontal_idle_thumb.png new file mode 100644 index 0000000..b293d33 --- /dev/null +++ b/game/gui/slider/horizontal_idle_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7398d96f6ae82782d89903c9dbf171c55b503ee48f8a4dac059f69076e43da8 +size 111 diff --git a/game/gui/slider/vertical_hover_bar.png b/game/gui/slider/vertical_hover_bar.png new file mode 100644 index 0000000..f988b59 --- /dev/null +++ b/game/gui/slider/vertical_hover_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ea0830ae294d030f0fb4d36a86ed85e46efdd01875b393d955ef9ce8547332e +size 620 diff --git a/game/gui/slider/vertical_hover_thumb.png b/game/gui/slider/vertical_hover_thumb.png new file mode 100644 index 0000000..93644b7 --- /dev/null +++ b/game/gui/slider/vertical_hover_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bca0ba83e69e547e974a302b81a3e434a7d5d37b1ff6676e063dd5574217a6c +size 108 diff --git a/game/gui/slider/vertical_idle_bar.png b/game/gui/slider/vertical_idle_bar.png new file mode 100644 index 0000000..c9b0979 --- /dev/null +++ b/game/gui/slider/vertical_idle_bar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef4994dc4de68284f04f0831776a73d55349007d0c1ebcf13e9d7ce396f1a9f0 +size 621 diff --git a/game/gui/slider/vertical_idle_thumb.png b/game/gui/slider/vertical_idle_thumb.png new file mode 100644 index 0000000..be8a381 --- /dev/null +++ b/game/gui/slider/vertical_idle_thumb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa002d590b19f4c5f74b2ca98c22bc73da09e24bb1f2d688daa8e36d5ee67a21 +size 108 diff --git a/game/gui/textbox.png b/game/gui/textbox.png new file mode 100644 index 0000000..b4b2b5f --- /dev/null +++ b/game/gui/textbox.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fa7fc04f5d1d78dec8f3e0d92b59595b973689531142ba42ff174c0ea67108f +size 3625 diff --git a/game/gui/thoughtbubble.png b/game/gui/thoughtbubble.png new file mode 100644 index 0000000..f6d2233 --- /dev/null +++ b/game/gui/thoughtbubble.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd012edefef7819e06b1dbb380a125d34d35bc71e4f5952fcd59067f4d96869c +size 4215 diff --git a/game/gui/window_icon.png b/game/gui/window_icon.png new file mode 100644 index 0000000..8f23c15 --- /dev/null +++ b/game/gui/window_icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56b5b8fa54602f75446f4b425372a85d8ec7fe75424c059bde3cfbeca5525a6f +size 16197 diff --git a/game/libs/libs.txt b/game/libs/libs.txt new file mode 100644 index 0000000..12acf12 --- /dev/null +++ b/game/libs/libs.txt @@ -0,0 +1,6 @@ +The game/libs/ directory is meant for third-party libraries that ask to be +put in game/libs. + +When this file (game/libs/libs.txt) is present, Ren'Py will load all files +in libs before any other file in game/, and will ignore the first directory +name under game/libs when determining the order to load files. diff --git a/game/options.rpy b/game/options.rpy new file mode 100644 index 0000000..da2e945 --- /dev/null +++ b/game/options.rpy @@ -0,0 +1,211 @@ +## Данный файл содержит настройки, способные изменить вашу игру. +## +## Строки, начинающиеся с двух '#' — комментарии, и вы не должны их +## раскомментировать. Строки, начинающиеся с одной '#' — комментированный код, +## который вы можете раскомментировать, если посчитаете это нужным. + + +## Основное #################################################################### + +## Читаемое название игры. Используется при установке стандартного заголовка +## окна, показывается в интерфейсе и отчётах об ошибках. +## +## Символы "_()", окружающие название, отмечают его как пригодное для перевода. + +define config.name = _("Silence") + + +## Определяет, показывать ли заголовок, данный выше, на экране главного меню. +## Установите на False, чтобы спрятать заголовок. + +define gui.show_name = True + + +## Версия игры. + +define config.version = "1.0" + + +## Текст, помещённый в экран "Об игре". Поместите текст между тройными скобками. +## Для отделения абзацев оставляйте между ними пустую строку. + +define gui.about = _p(""" +""") + + +## Короткое название игры, используемое для исполняемых файлов и директорий при +## постройке дистрибутивов. Оно должно содержать текст формата ASCII и не должно +## содержать пробелы, двоеточия и точки с запятой. + +define build.name = "Silence" + + +## Звуки и музыка ############################################################## + +## Эти три переменные управляют, среди прочего, тем, какие микшеры показываются +## игроку по умолчанию. Установка одной из них в 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 = "Silence-1776877537" + + +## Иконка ###################################################################### +## +## Иконка, показываемая на панели задач или на dock. + +define config.window_icon = "gui/window_icon.png" + + +## Настройка Дистрибутива ###################################################### +## +## Эта секция контролирует, как Ren'Py строит дистрибутивные файлы из вашего +## проекта. + +init python: + + ## Следующие функции берут образцы файлов. Образцы файлов не учитывают + ## регистр и соответствующе зависят от директории проекта (base), с или без + ## учёта /, задающей директорию. Если обнаруживается множество одноимённых + ## файлов, то используется только первый. + ## + ## Инструкция: + ## + ## / — разделитель директорий. + ## + ## * включает в себя все символы, исключая разделитель директорий. + ## + ## ** включает в себя все символы, включая разделитель директорий. + ## + ## Например, "*.txt" берёт все файлы формата txt из директории base, "game/ + ## **.ogg" берёт все файлы ogg из директории game и всех поддиректорий, а + ## "**.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, чтобы они появлялись и в приложении, и в zip архиве. + + build.documentation('*.html') + build.documentation('*.txt') + + +## Для совершения покупок в приложении требуется лицензионный ключ Google Play. +## Его можно найти в консоли разработчика Google Play в разделе "Монетизация" > +## "Настройка монетизации" > "Лицензирование". + +# define build.google_play_key = "..." + + +## Имя пользователя и название проекта, ассоциированные с проектом на itch.io, +## разделённые дробью. + +# define build.itch_project = "renpytom/test-project" diff --git a/game/screens.rpy b/game/screens.rpy new file mode 100644 index 0000000..feac480 --- /dev/null +++ b/game/screens.rpy @@ -0,0 +1,1620 @@ +################################################################################ +## Инициализация +################################################################################ + +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.org/doc/html/screen_special.html#say + +screen say(who, what): + + 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 + + +## Делает namebox доступным для стилизации через объект 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. Это параметр запроса, +## используемый для того, чтобы дать игроку ввести в него текст. +## +## Этот экран должен создать наложение ввода с id "input", чтобы принять +## различные вводимые параметры. +## +## https://www.renpy.org/doc/html/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. Один параметр, вложения, список объектов, +## каждый с заголовком и полями действия. +## +## https://www.renpy.org/doc/html/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.text_properties("choice_button") + + +## Экран быстрого меню ######################################################### +## +## Быстрое меню показывается внутри игры, чтобы обеспечить лёгкий доступ к +## внеигровым меню. + +screen quick_menu(): + + ## Гарантирует, что оно появляется поверх других экранов. + zorder 100 + + if quick_menu: + + hbox: + style_prefix "quick" + style "quick_menu" + + 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') + + +## Данный код гарантирует, что экран быстрого меню будет показан в игре в любое +## время, если только игрок не скроет интерфейс. +init python: + config.overlay_screens.append("quick_menu") + +default quick_menu = True + +style quick_menu is hbox +style quick_button is default +style quick_button_text is button_text + +style quick_menu: + xalign 0.5 + yalign 1.0 + +style quick_button: + properties gui.button_properties("quick_button") + +style quick_button_text: + properties gui.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 и не нужна на Android и в веб- + ## версии. + 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.text_properties("navigation_button") + + +## Экран главного меню ######################################################### +## +## Используется, чтобы показать главное меню после запуска игры. +## +## https://www.renpy.org/doc/html/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, spacing=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: + spacing spacing + + transclude + + elif scroll == "vpgrid": + + vpgrid: + cols 1 + yinitial yinitial + + scrollbars "vertical" + mousewheel True + draggable True + pagekeys True + + side_yfill True + + spacing spacing + + 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 75 + 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 + + ## Этот оператор включает игровое меню внутрь этого экрана. Дочерний vbox + ## включён в порт просмотра внутри экрана игрового меню. + 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.org/doc/html/screen_special.html#save + +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}%A, %d %B %Y, %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() + key "save_page_prev" action FilePagePrevious() + + if config.has_autosave: + textbutton _("{#auto_page}А") action FilePage("auto") + + if config.has_quicksave: + textbutton _("{#quick_page}Б") action FilePage("quick") + + ## range(1, 10) задаёт диапазон значений от 1 до 9. + for page in range(1, 10): + textbutton "[page]" action FilePage(page) + + textbutton _(">") action FilePageNext() + key "save_page_next" action FilePageNext() + + if config.has_sync: + if CurrentScreenName() == "save": + textbutton _("Загрузить Sync"): + action UploadSync() + xalign 0.5 + else: + textbutton _("Скачать Sync"): + 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 + xalign 0.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.text_properties("page_button") + +style slot_button: + properties gui.button_properties("slot_button") + +style slot_button_text: + properties gui.text_properties("slot_button") + + +## Экран настроек ############################################################## +## +## Экран настроек позволяет игроку настраивать игру под себя. +## +## https://www.renpy.org/doc/html/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")) + + ## Дополнительные vbox'ы типа "radio_pref" или "check_pref" + ## могут быть добавлены сюда для добавления новых настроек. + + 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.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.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.text_properties("slider_button") + +style slider_vbox: + xsize 675 + + +## Экран истории ############################################################### +## +## Этот экран показывает игроку историю диалогов. Хотя в этом экране нет ничего +## особенного, он имеет доступ к истории диалогов, хранимом в _history_list. +## +## https://www.renpy.org/doc/html/history.html + +screen history(): + + tag menu + + ## Избегайте предсказывания этого экрана, так как он может быть очень + ## массивным. + predict False + + use game_menu(_("История"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0, spacing=gui.history_spacing): + + 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 + + ## Берёт цвет из who параметра персонажа, если он + ## установлен. + 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 _("Enter") + text _("Прохождение диалогов, активация интерфейса.") + + hbox: + label _("Пробел") + text _("Прохождение диалогов без возможности делать выбор.") + + hbox: + label _("Стрелки") + text _("Навигация по интерфейсу.") + + hbox: + label _("Esc") + text _("Вход в игровое меню.") + + hbox: + label _("Ctrl") + text _("Пропускает диалоги, пока зажат.") + + hbox: + label _("Tab") + text _("Включает режим пропуска.") + + hbox: + label _("Page Up") + text _("Откат назад по сюжету игры.") + + hbox: + label _("Page Down") + text _("Откатывает предыдущее действие вперёд.") + + hbox: + label "H" + text _("Скрывает интерфейс пользователя.") + + hbox: + label "S" + text _("Делает снимок экрана.") + + hbox: + label "V" + text _("Включает поддерживаемый {a=https://www.renpy.org/l/voicing}синтезатор речи{/a}.") + + hbox: + label "Shift+A" + text _("Открывает меню специальных возможностей.") + + +screen mouse_help(): + + hbox: + label _("Левый клик") + text _("Прохождение диалогов, активация интерфейса.") + + hbox: + label _("Клик колёсиком") + text _("Скрывает интерфейс пользователя.") + + hbox: + label _("Правый клик") + text _("Вход в игровое меню.") + + hbox: + label _("Колёсико вверх") + text _("Откат назад по сюжету игры.") + + hbox: + label _("Колёсико вниз") + text _("Откатывает предыдущее действие вперёд.") + + +screen gamepad_help(): + + hbox: + label _("Правый триггер\nA/Нижняя кнопка") + text _("Прохождение диалогов, активация интерфейса.") + + hbox: + label _("Левый Триггер\nЛевый Бампер") + text _("Откат назад по сюжету игры.") + + hbox: + label _("Правый бампер") + text _("Откатывает предыдущее действие вперёд.") + + hbox: + label _("Крестовина, Стики") + text _("Навигация по интерфейсу.") + + hbox: + label _("Старт, Гид, B/Правая кнопка") + 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.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.org/doc/html/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 + + ## Правый клик и esc, как ответ "Нет". + 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.text_properties("confirm_button") + + +## Экран индикатора пропуска ################################################### +## +## Экран индикатора пропуска появляется для того, чтобы показать, что идёт +## пропуск. +## +## https://www.renpy.org/doc/html/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: + ## Нам надо использовать шрифт, имеющий в себе символ U+25B8 (стрелку выше). + font "DejaVuSans.ttf" + + +## Экран уведомлений ########################################################### +## +## Экран уведомлений используется, чтобы показать игроку оповещение. (Например, +## когда игра автосохранилась, или был сделан скриншот) +## +## https://www.renpy.org/doc/html/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.org/doc/html/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.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" + + default ctc = None + showif ctc: + add ctc + +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 "quick_menu" + style_prefix "quick" + + 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 game_menu_viewport: + variant "small" + xsize 1305 + +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/script.rpy b/game/script.rpy new file mode 100644 index 0000000..6e00bdd --- /dev/null +++ b/game/script.rpy @@ -0,0 +1,22 @@ +# Вы можете расположить сценарий своей игры в этом файле. + +# Определение персонажей игры. +define e = Character('Эйлин', color="#c8ffc8") + +# Вместо использования оператора image можете просто +# складывать все ваши файлы изображений в папку images. +# Например, сцену bg room можно вызвать файлом "bg room.png", +# а eileen happy — "eileen happy.webp", и тогда они появятся в игре. + +# Игра начинается здесь: +label start: + + scene bg room + + show eileen happy + + e "Вы создали новую игру Ren'Py." + + e "Добавьте сюжет, изображения и музыку и отправьте её в мир!" + + return diff --git a/game/tl/None/common.rpym b/game/tl/None/common.rpym new file mode 100644 index 0000000..1a9795a --- /dev/null +++ b/game/tl/None/common.rpym @@ -0,0 +1,1535 @@ + +translate None strings: + + # renpy/common/000statements.rpy:28 + old "Click to play the video." + new "Click to play the video." + + # 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 ". Полоса настройки" + + # renpy/common/00accessibility.rpy:33 + old "selected" + new ". На данный момент это выбрано" + + # renpy/common/00accessibility.rpy:34 + old "viewport" + new "порт просмотра" + + # renpy/common/00accessibility.rpy:35 + old "horizontal scroll" + new ". горизонтальная полоса прокрутки" + + # renpy/common/00accessibility.rpy:36 + old "vertical scroll" + new ". вертикальная полоса прокрутки" + + # renpy/common/00accessibility.rpy:37 + old "activate" + new "элемент активирован" + + # renpy/common/00accessibility.rpy:38 + old "deactivate" + new "элемент деактивирован" + + # renpy/common/00accessibility.rpy:39 + old "increase" + new "больше" + + # renpy/common/00accessibility.rpy:40 + old "decrease" + new "меньше" + + # renpy/common/00accessibility.rpy:134 + old "Self-Voicing" + new "Озвучка через синтезатор речи" + + # renpy/common/00accessibility.rpy:137 + old "Self-voicing support is limited when using a touch screen." + new "Self-voicing support is limited when using a touch screen." + + # renpy/common/00accessibility.rpy:139 + old "Off" + new "Выключить" + + # renpy/common/00accessibility.rpy:143 + old "Text-to-speech" + new "Преобразование текста в речь" + + # renpy/common/00accessibility.rpy:147 + old "Clipboard" + new "Из буфера обмена" + + # renpy/common/00accessibility.rpy:151 + old "Debug" + new "Отладку" + + # renpy/common/00accessibility.rpy:155 + old "Voice Volume" + new "Громкость голоса" + + # renpy/common/00accessibility.rpy:163 + old "Reset" + new "Сбросить" + + # renpy/common/00accessibility.rpy:167 + old "Self-Voicing Volume Drop" + new "Уменьшение громкости при озвучке через синтезатор речи" + + # renpy/common/00accessibility.rpy:180 + old "Mono Audio" + new "Mono Audio" + + # renpy/common/00accessibility.rpy:182 + old "Enable" + new "Активировано" + + # renpy/common/00accessibility.rpy:186 + old "Disable" + new "Отключено" + + # renpy/common/00accessibility.rpy:198 + old "Font Override" + new "Переопределение шрифта" + + # renpy/common/00accessibility.rpy:200 + old "Default" + new "По умолчанию" + + # renpy/common/00accessibility.rpy:204 + old "DejaVu Sans" + new "DejaVu Sans" + + # renpy/common/00accessibility.rpy:208 + old "Opendyslexic" + new "Opendyslexic" + + # renpy/common/00accessibility.rpy:212 + old "High Contrast Text" + new "Высококонтрастный текст" + + # renpy/common/00accessibility.rpy:224 + old "Text Size Scaling" + new "Масштабирование размера текста" + + # renpy/common/00accessibility.rpy:235 + old "Line Spacing Scaling" + new "Масштабирование межстрочного интервала" + + # renpy/common/00accessibility.rpy:246 + old "Kerning" + new "Kerning" + + # renpy/common/00accessibility.rpy:267 + old "Accessibility Menu. Use up and down arrows to navigate, and enter to activate buttons and bars." + new "Меню специальных возможностей. Для навигации используйте стрелки вверх и вниз, а для активации кнопок и полос - клавишу Enter." + + # renpy/common/00accessibility.rpy:288 + old "Self-Voicing and Audio" + new "Self-Voicing and Audio" + + # renpy/common/00accessibility.rpy:292 + old "Text" + new "Text" + + # renpy/common/00accessibility.rpy:296 + old "Return" + new "Вернуться" + + # renpy/common/00accessibility.rpy:306 + 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/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}Января" + + # renpy/common/00action_file.rpy:47 + old "{#month}February" + new "{#month}Февраля" + + # renpy/common/00action_file.rpy:47 + old "{#month}March" + new "{#month}Марта" + + # renpy/common/00action_file.rpy:47 + old "{#month}April" + new "{#month}Апреля" + + # renpy/common/00action_file.rpy:47 + old "{#month}May" + new "{#month}Мая" + + # renpy/common/00action_file.rpy:47 + old "{#month}June" + new "{#month}Июня" + + # renpy/common/00action_file.rpy:47 + old "{#month}July" + new "{#month}Июля" + + # renpy/common/00action_file.rpy:47 + old "{#month}August" + new "{#month}Августа" + + # renpy/common/00action_file.rpy:47 + old "{#month}September" + new "{#month}Сентября" + + # renpy/common/00action_file.rpy:47 + old "{#month}October" + new "{#month}Октября" + + # renpy/common/00action_file.rpy:47 + old "{#month}November" + new "{#month}Ноября" + + # renpy/common/00action_file.rpy:47 + old "{#month}December" + new "{#month}Декабря" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Jan" + new "{#month_short}Янв" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Feb" + new "{#month_short}Фев" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Mar" + new "{#month_short}Мар" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Apr" + new "{#month_short}Апр" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}May" + new "{#month_short}Мая" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Jun" + new "{#month_short}Июн" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Jul" + new "{#month_short}Июл" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Aug" + new "{#month_short}Авг" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Sep" + new "{#month_short}Сен" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Oct" + new "{#month_short}Окт" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Nov" + new "{#month_short}Ноя" + + # renpy/common/00action_file.rpy:63 + old "{#month_short}Dec" + new "{#month_short}Дек" + + # renpy/common/00action_file.rpy:258 + old "%b %d, %H:%M" + new "%d %b, %H:%M" + + # renpy/common/00action_file.rpy:395 + old "Save slot %s: [text]" + new "Слот сохранения %s: [text]" + + # renpy/common/00action_file.rpy:481 + old "Load slot %s: [text]" + new "Слот загрузки %s: [text]" + + # renpy/common/00action_file.rpy:534 + old "Delete slot [text]" + new "Удалить слот [text]" + + # renpy/common/00action_file.rpy:613 + old "File page auto" + new "Автосохранения" + + # renpy/common/00action_file.rpy:615 + old "File page quick" + new "Быстрые сохранения" + + # renpy/common/00action_file.rpy:617 + old "File page [text]" + new "Страница сохранений [text]" + + # renpy/common/00action_file.rpy:675 + old "Page {}" + new "{} страница" + + # renpy/common/00action_file.rpy:675 + old "Automatic saves" + new "Автосохранения" + + # renpy/common/00action_file.rpy:675 + old "Quick saves" + new "Быстрые сохранения" + + # renpy/common/00action_file.rpy:816 + old "Next file page." + new "Следующая страница сохранений" + + # renpy/common/00action_file.rpy:888 + old "Previous file page." + new "Предыдущая страница сохранений" + + # renpy/common/00action_file.rpy:949 + old "Quick save complete." + new "Быстрое сохранение завершено." + + # renpy/common/00action_file.rpy:964 + old "Quick save." + new "Быстрое сохранение" + + # renpy/common/00action_file.rpy:983 + old "Quick load." + new "Быстрая загрузка" + + # renpy/common/00action_other.rpy:416 + old "Language [text]" + new "Язык [text]" + + # renpy/common/00action_other.rpy:786 + old "Open [text] directory." + new "Открыть папку [text]." + + # renpy/common/00director.rpy:712 + old "The interactive director is not enabled here." + new "Интерактивный директор недоступен." + + # renpy/common/00director.rpy:1512 + old "⬆" + new "⬆" + + # renpy/common/00director.rpy:1518 + old "⬇" + new "⬇" + + # renpy/common/00director.rpy:1582 + old "Done" + new "Принять" + + # renpy/common/00director.rpy:1592 + old "(statement)" + new "(функция)" + + # renpy/common/00director.rpy:1593 + old "(tag)" + new "(тег)" + + # renpy/common/00director.rpy:1594 + old "(attributes)" + new "(аттрибут)" + + # renpy/common/00director.rpy:1595 + old "(transform)" + new "(трансформация)" + + # renpy/common/00director.rpy:1620 + old "(transition)" + new "(переход)" + + # renpy/common/00director.rpy:1632 + old "(channel)" + new "(канал)" + + # renpy/common/00director.rpy:1633 + old "(filename)" + new "(имя файла)" + + # renpy/common/00director.rpy:1662 + old "Change" + new "Изменить" + + # renpy/common/00director.rpy:1664 + old "Add" + new "Добавить" + + # renpy/common/00director.rpy:1667 + old "Cancel" + new "Отмена" + + # renpy/common/00director.rpy:1670 + old "Remove" + new "Убрать" + + # renpy/common/00director.rpy:1705 + old "Statement:" + new "Функции:" + + # renpy/common/00director.rpy:1726 + old "Tag:" + new "Теги:" + + # renpy/common/00director.rpy:1742 + old "Attributes:" + new "Аттрибут:" + + # renpy/common/00director.rpy:1753 + old "Click to toggle attribute, right click to toggle negative attribute." + new "Щелкните, чтобы переключить атрибут, щелкните правой кнопкой мыши, чтобы переключить отрицательный атрибут." + + # renpy/common/00director.rpy:1765 + old "Transforms:" + new "Трансформации:" + + # renpy/common/00director.rpy:1776 + old "Click to set transform, right click to add to transform list." + new "Щелкните, чтобы установить преобразование, щелкните правой кнопкой мыши, чтобы добавить в список преобразований." + + # renpy/common/00director.rpy:1777 + old "Customize director.transforms to add more transforms." + new "Измените director.transforms, чтобы добавить больше трансформаций." + + # renpy/common/00director.rpy:1789 + old "Behind:" + new "Позади:" + + # renpy/common/00director.rpy:1800 + old "Click to set, right click to add to behind list." + new "Щелкните, чтобы установить, щелкните правой кнопкой мыши, чтобы добавить в список позади." + + # renpy/common/00director.rpy:1812 + old "Transition:" + new "Переходы:" + + # renpy/common/00director.rpy:1822 + old "Click to set." + new "Нажмите, чтобы установить." + + # renpy/common/00director.rpy:1823 + old "Customize director.transitions to add more transitions." + new "Измените director.transitions, чтобы добавить больше переходов." + + # renpy/common/00director.rpy:1835 + old "Channel:" + new "Каналы:" + + # renpy/common/00director.rpy:1846 + old "Customize director.audio_channels to add more channels." + new "Измените director.audio_channels, чтобы добавить больше каналов." + + # renpy/common/00director.rpy:1858 + old "Audio Filename:" + new "Имя файла:" + + # renpy/common/00gui.rpy:448 + old "Are you sure?" + new "Вы уверены?" + + # renpy/common/00gui.rpy:449 + old "Are you sure you want to delete this save?" + new "Вы уверены, что хотите удалить это сохранение?" + + # renpy/common/00gui.rpy:450 + old "Are you sure you want to overwrite your save?" + new "Вы уверены, что хотите перезаписать ваше сохранение?" + + # renpy/common/00gui.rpy:451 + old "Loading will lose unsaved progress.\nAre you sure you want to do this?" + new "Загрузка игры приведёт к потере несохранённого прогресса.\nВы уверены, что хотите это сделать?" + + # renpy/common/00gui.rpy:452 + old "Are you sure you want to quit?" + new "Вы уверены, что хотите выйти?" + + # renpy/common/00gui.rpy:453 + old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress." + new "Вы уверены, что хотите вернуться в главное меню?\nЭто приведёт к потере несохранённого прогресса." + + # renpy/common/00gui.rpy:454 + old "Are you sure you want to continue where you left off?" + new "Вы уверены, что хотите продолжить с того места, на котором остановились?" + + # renpy/common/00gui.rpy:455 + old "Are you sure you want to end the replay?" + new "Вы уверены, что хотите завершить повтор?" + + # renpy/common/00gui.rpy:456 + old "Are you sure you want to begin skipping?" + new "Вы уверены, что хотите начать пропуск?" + + # renpy/common/00gui.rpy:457 + old "Are you sure you want to skip to the next choice?" + new "Вы точно хотите пропустить всё до следующего выбора?" + + # renpy/common/00gui.rpy:458 + old "Are you sure you want to skip unseen dialogue to the next choice?" + new "Вы уверены, что хотите пропустить непрочитанные диалоги до следующего выбора?" + + # renpy/common/00gui.rpy:459 + 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:460 + 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:325 + old "Failed to save screenshot as %s." + new "Провалена попытка сохранить скриншот как %s." + + # renpy/common/00keymap.rpy:346 + old "Saved screenshot as %s." + new "Скриншот сохранён как %s." + + # renpy/common/00library.rpy:257 + old "Skip Mode" + new "Режим Пропуска" + + # renpy/common/00library.rpy:344 + 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 Lesser General Public. Полный список лицензий, включая ссылки на полный исходный код, можно найти {a=https://www.renpy.org/l/license}здесь{/a}." + + # renpy/common/00preferences.rpy:295 + old "display" + new "режим экрана" + + # renpy/common/00preferences.rpy:315 + old "transitions" + new "переходы" + + # renpy/common/00preferences.rpy:324 + old "skip transitions" + new "пропускать переходы" + + # renpy/common/00preferences.rpy:326 + old "video sprites" + new "видео-спрайты" + + # renpy/common/00preferences.rpy:335 + old "show empty window" + new "показывать пустое окно диалога" + + # renpy/common/00preferences.rpy:344 + old "text speed" + new "скорость текста" + + # renpy/common/00preferences.rpy:352 + old "joystick" + new "джойстик" + + # renpy/common/00preferences.rpy:352 + old "joystick..." + new "джойстик..." + + # renpy/common/00preferences.rpy:359 + old "skip" + new "пропускать" + + # renpy/common/00preferences.rpy:362 + old "skip unseen [text]" + new "пропускать весь [text]" + + # renpy/common/00preferences.rpy:367 + old "skip unseen text" + new "пропускать весь текст" + + # renpy/common/00preferences.rpy:369 + old "begin skipping" + new "начать пропуск" + + # renpy/common/00preferences.rpy:373 + old "after choices" + new "после выборов" + + # renpy/common/00preferences.rpy:380 + old "skip after choices" + new "пропускать после выборов" + + # renpy/common/00preferences.rpy:382 + old "auto-forward time" + new "скорость авточтения" + + # renpy/common/00preferences.rpy:396 + old "auto-forward" + new "авточтение" + + # renpy/common/00preferences.rpy:403 + old "Auto forward" + new "Авточтение" + + # renpy/common/00preferences.rpy:406 + old "auto-forward after click" + new "продолжать авточтение после клика" + + # renpy/common/00preferences.rpy:415 + old "automatic move" + new "автоматически передвигать мышь к кнопке" + + # renpy/common/00preferences.rpy:424 + old "wait for voice" + new "ждать голос" + + # renpy/common/00preferences.rpy:433 + old "voice sustain" + new "не останавливать голос" + + # renpy/common/00preferences.rpy:442 + old "self voicing" + new "озвучка через синтезатор речи" + + # renpy/common/00preferences.rpy:445 + old "self voicing enable" + new "включить авто озвучивание" + + # renpy/common/00preferences.rpy:447 + old "self voicing disable" + new "отключить авто озвучивание" + + # renpy/common/00preferences.rpy:451 + old "self voicing volume drop" + new "уменьшение громкости при озвучке через синтезатор речи" + + # renpy/common/00preferences.rpy:459 + old "clipboard voicing" + new "синтез речи из буфера обмена" + + # renpy/common/00preferences.rpy:462 + old "clipboard voicing enable" + new "включить озвучивание буфера обмена" + + # renpy/common/00preferences.rpy:464 + old "clipboard voicing disable" + new "отключить озвучивание буфера обмена" + + # renpy/common/00preferences.rpy:468 + old "debug voicing" + new "режим дебага синтеза речи" + + # renpy/common/00preferences.rpy:471 + old "debug voicing enable" + new "включить дебаг озвучивания" + + # renpy/common/00preferences.rpy:473 + old "debug voicing disable" + new "отключить дебаг озвучивания" + + # renpy/common/00preferences.rpy:477 + old "emphasize audio" + new "усилить громкость заранее заданных звуковых каналов за счёт приглушения остальных каналов" + + # renpy/common/00preferences.rpy:486 + old "rollback side" + new "сторона отката" + + # renpy/common/00preferences.rpy:496 + old "gl powersave" + new "настройка графики. Экономия энергии" + + # renpy/common/00preferences.rpy:502 + old "gl framerate" + new "настройка графики. Частота кадров" + + # renpy/common/00preferences.rpy:505 + old "gl tearing" + new "настройка графики. Разрывание кадров" + + # renpy/common/00preferences.rpy:508 + old "font transform" + new "преобразование шрифта" + + # renpy/common/00preferences.rpy:511 + old "font size" + new "размер шрифта" + + # renpy/common/00preferences.rpy:519 + old "font line spacing" + new "межстрочный интервал" + + # renpy/common/00preferences.rpy:527 + old "system cursor" + new "системный курсор" + + # renpy/common/00preferences.rpy:536 + old "renderer menu" + new "меню рендерера" + + # renpy/common/00preferences.rpy:539 + old "accessibility menu" + new "меню специальных возможностей" + + # renpy/common/00preferences.rpy:542 + old "high contrast text" + new "высококонтрастный текст" + + # renpy/common/00preferences.rpy:551 + old "audio when minimized" + new "звук при сворачивании окна" + + # renpy/common/00preferences.rpy:560 + old "audio when unfocused" + new "звук при расфокусировке" + + # renpy/common/00preferences.rpy:569 + old "web cache preload" + new "предварительная загрузка веб-кэша" + + # renpy/common/00preferences.rpy:584 + old "voice after game menu" + new "голос после меню игры" + + # renpy/common/00preferences.rpy:593 + old "restore window position" + new "восстановить положение окна" + + # renpy/common/00preferences.rpy:602 + old "mono audio" + new "mono audio" + + # renpy/common/00preferences.rpy:611 + old "font kerning" + new "font kerning" + + # renpy/common/00preferences.rpy:619 + old "reset" + new "сбросить" + + # renpy/common/00preferences.rpy:632 + old "main volume" + new "общая громкость" + + # renpy/common/00preferences.rpy:633 + old "music volume" + new "громкость музыки" + + # renpy/common/00preferences.rpy:634 + old "sound volume" + new "громкость звуков" + + # renpy/common/00preferences.rpy:635 + old "voice volume" + new "громкость голоса" + + # renpy/common/00preferences.rpy:636 + old "mute main" + new "режим без звука" + + # renpy/common/00preferences.rpy:637 + old "mute music" + new "без музыки" + + # renpy/common/00preferences.rpy:638 + old "mute sound" + new "без звуков" + + # renpy/common/00preferences.rpy:639 + old "mute voice" + new "без голоса" + + # renpy/common/00preferences.rpy:640 + old "mute all" + new "режим без звука" + + # renpy/common/00preferences.rpy:723 + old "Clipboard voicing enabled. Press 'shift+C' to disable." + new "Озвучка буфера обмена включена. Нажмите 'shift+C', чтобы отключить её." + + # renpy/common/00preferences.rpy:725 + 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:727 + old "Self-voicing enabled. Press 'v' to disable." + new "Синтезатор речи включён. Нажмите 'v', чтобы отключить его." + + # renpy/common/00speechbubble.rpy:420 + old "Speech Bubble Editor" + new "Редактор речевых пузырьков" + + # renpy/common/00speechbubble.rpy:425 + old "(hide)" + new "(скрыть)" + + # renpy/common/00speechbubble.rpy:436 + old "(clear retained bubbles)" + new "(очистить сохранившиеся пузыри)" + + # renpy/common/00sync.rpy:70 + old "Sync downloaded." + new "Синхронизация загружена." + + # renpy/common/00sync.rpy:184 + old "Could not connect to the Ren'Py Sync server." + new "Не удалось подключиться к серверу Ren'Py Sync." + + # renpy/common/00sync.rpy:186 + old "The Ren'Py Sync server timed out." + new "Сервер Ren'Py Sync завершил работу по таймеру." + + # renpy/common/00sync.rpy:188 + old "An unknown error occurred while connecting to the Ren'Py Sync server." + new "При подключении к серверу Ren'Py Sync произошла неизвестная ошибка." + + # renpy/common/00sync.rpy:204 + 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 Sync не имеет копии этой синхронизации. Идентификатор синхронизации может быть недействительным, или она могла завершиться." + + # renpy/common/00sync.rpy:305 + old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself." + new "Введите созданный вами идентификатор синхронизации.\nНикогда не вводите идентификатор синхронизации, который вы не создавали сами." + + # renpy/common/00sync.rpy:324 + old "The sync ID is not in the correct format." + new "Идентификатор синхронизации имеет неправильный формат." + + # renpy/common/00sync.rpy:344 + old "The sync could not be decrypted." + new "Синхронизация не может быть расшифрована." + + # renpy/common/00sync.rpy:367 + old "The sync belongs to a different game." + new "Синхронизация относится к другой игре." + + # renpy/common/00sync.rpy:372 + old "The sync contains a file with an invalid name." + new "Синхронизация содержит файл с недопустимым именем." + + # renpy/common/00sync.rpy:425 + 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 Sync Server{/a}.\nВы хотите продолжить?" + + # renpy/common/00sync.rpy:433 + old "Yes" + new "Да" + + # renpy/common/00sync.rpy:434 + old "No" + new "Нет" + + # renpy/common/00sync.rpy:457 + old "Enter Sync ID" + new "Введите идентификатор синхронизации" + + # renpy/common/00sync.rpy:468 + old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}." + new "Это позволит связаться с сервером {a=https://sync.renpy.org}Ren'Py Sync Server{/a}." + + # renpy/common/00sync.rpy:498 + old "Sync Success" + new "Успех синхронизации" + + # renpy/common/00sync.rpy:501 + old "The Sync ID is:" + new "Идентификатор синхронизации:" + + # renpy/common/00sync.rpy:507 + 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 "Вы можете использовать этот идентификатор для загрузки сохранения на другое устройство.\nСрок действия этой синхронизации истечет через час.\nRen'Py Sync поддерживается спонсорами {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}." + + # renpy/common/00sync.rpy:511 + old "Continue" + new "Продолжить" + + # renpy/common/00sync.rpy:536 + old "Sync Error" + new "Ошибка синхронизации" + + # renpy/common/00translation.rpy:63 + old "Translation identifier: [identifier]" + new "Translation identifier: [identifier]" + + # renpy/common/00translation.rpy:84 + old " translates [tl.filename]:[tl.linenumber]" + new " translates [tl.filename]:[tl.linenumber]" + + # renpy/common/00translation.rpy:101 + old "\n{color=#fff}Copied to clipboard.{/color}" + new "\n{color=#fff}Скопировано в буфер обмена.{/color}" + + # renpy/common/00iap.rpy:231 + old "Contacting App Store\nPlease Wait..." + new "Связываюсь с App Store\nПожалуйста, ждите..." + + # renpy/common/00updater.rpy:415 + old "No update methods found." + new "Не найдено ни одного метода обновления." + + # renpy/common/00updater.rpy:462 + old "Could not download file list: " + new "Не удалось загрузить список файлов: " + + # renpy/common/00updater.rpy:465 + old "File list digest does not match." + new "Дайджест списка файлов не совпадает." + + # renpy/common/00updater.rpy:675 + old "An error is being simulated." + new "Симулируется ошибка." + + # renpy/common/00updater.rpy:863 + old "Either this project does not support updating, or the update status file was deleted." + new "Или этот проект не поддерживает обновление, или файл статуса обновления был удалён." + + # renpy/common/00updater.rpy:877 + old "This account does not have permission to perform an update." + new "У этого аккаунта нет прав проводить обновление." + + # renpy/common/00updater.rpy:880 + old "This account does not have permission to write the update log." + new "У этого аккаунта нет прав писать лог обновления." + + # renpy/common/00updater.rpy:966 + old "Could not verify update signature." + new "Не могу верифицировать подпись обновления." + + # renpy/common/00updater.rpy:1289 + old "The update file was not downloaded." + new "Файл обновления не был загружен." + + # renpy/common/00updater.rpy:1307 + old "The update file does not have the correct digest - it may have been corrupted." + new "Файл обновления не содержит корректного дайджеста — он может быть повреждён." + + # renpy/common/00updater.rpy:1457 + old "While unpacking {}, unknown type {}." + new "При распаковке {} обнаружен неизвестный тип {}." + + # renpy/common/00updater.rpy:1928 + old "Updater" + new "Обновление" + + # renpy/common/00updater.rpy:1935 + old "An error has occurred:" + new "Возникла ошибка:" + + # renpy/common/00updater.rpy:1937 + old "Checking for updates." + new "Проверка обновлений." + + # renpy/common/00updater.rpy:1939 + old "This program is up to date." + new "Эта программа обновлена." + + # renpy/common/00updater.rpy:1941 + old "[u.version] is available. Do you want to install it?" + new "[u.version] доступна. Вы хотите её установить?" + + # renpy/common/00updater.rpy:1943 + old "Preparing to download the updates." + new "Подготовка к загрузке обновлений." + + # renpy/common/00updater.rpy:1945 + old "Downloading the updates." + new "Загрузка обновлений." + + # renpy/common/00updater.rpy:1947 + old "Unpacking the updates." + new "Распаковка обновлений." + + # renpy/common/00updater.rpy:1949 + old "Finishing up." + new "Завершаю..." + + # renpy/common/00updater.rpy:1951 + old "The updates have been installed. The program will restart." + new "Обновления установлены. Программа будет перезапущена." + + # renpy/common/00updater.rpy:1953 + old "The updates have been installed." + new "Обновления были установлены." + + # renpy/common/00updater.rpy:1955 + old "The updates were cancelled." + new "Обновления были отменены." + + # renpy/common/00updater.rpy:1970 + old "Proceed" + new "Продолжить" + + # renpy/common/00updater.rpy:1986 + old "Preparing to download the game data." + new "Подготовка к загрузке данных игры." + + # renpy/common/00updater.rpy:1988 + old "Downloading the game data." + new "Загрузка данных игры." + + # renpy/common/00updater.rpy:1990 + old "The game data has been downloaded." + new "Данные игры загружены." + + # renpy/common/00updater.rpy:1992 + old "An error occurred when trying to download game data:" + new "При попытке загрузить данные игры произошла ошибка:" + + # renpy/common/00updater.rpy:1997 + old "This game cannot be run until the game data has been downloaded." + new "Эту игру невозможно запустить до тех пор, пока не будут загружены данные игры." + + # renpy/common/00updater.rpy:2004 + old "Retry" + new "Повторить попытку" + + # renpy/common/00compat.rpy:467 + old "Fullscreen" + new "Полный" + + # renpy/common/00gallery.rpy:676 + old "Image [index] of [count] locked." + new "Изображение [index] из [count] закрыто." + + # renpy/common/00gallery.rpy:696 + old "prev" + new "пред" + + # renpy/common/00gallery.rpy:697 + old "next" + new "след" + + # renpy/common/00gallery.rpy:698 + old "slideshow" + new "слайд-шоу" + + # renpy/common/00gallery.rpy:699 + old "return" + new "вернуться" + + # renpy/common/00gltest.rpy:89 + old "Renderer" + new "Рендер" + + # renpy/common/00gltest.rpy:91 + old "Automatically Choose" + new "Выбирать Автоматически" + + # renpy/common/00gltest.rpy:96 + old "Force GL2 Renderer" + new "Принудительный GL2 рендеринг" + + # renpy/common/00gltest.rpy:101 + old "Force ANGLE2 Renderer" + new "Принудительный ANGLE2 рендеринг" + + # renpy/common/00gltest.rpy:106 + old "Force GLES2 Renderer" + new "Принудительный GLES2 рендеринг" + + # renpy/common/00gltest.rpy:110 + old "Gamepad" + new "Геймпад" + + # renpy/common/00gltest.rpy:112 + old "Enable (No Blocklist)" + new "Включить (игнорировать блоклист)" + + # renpy/common/00gltest.rpy:126 + old "Calibrate" + new "Калибровка" + + # renpy/common/00gltest.rpy:135 + old "Powersave" + new "Экономия энергии" + + # renpy/common/00gltest.rpy:145 + old "Framerate" + new "Частота кадров" + + # renpy/common/00gltest.rpy:147 + old "Screen" + new "Экранная" + + # renpy/common/00gltest.rpy:151 + old "60" + new "60" + + # renpy/common/00gltest.rpy:155 + old "30" + new "30" + + # renpy/common/00gltest.rpy:159 + old "Tearing" + new "Разрывание кадров" + + # renpy/common/00gltest.rpy:171 + old "Changes will take effect the next time this program is run." + new "Изменения вступят в силу при следующем запуске программы." + + # renpy/common/00gltest.rpy:178 + old "Quit" + new "Выход" + + # renpy/common/00gltest.rpy:207 + old "Performance Warning" + new "Предупреждение Производительности" + + # renpy/common/00gltest.rpy:212 + old "This computer is using software rendering." + new "Этот компьютер использует программный рендеринг." + + # renpy/common/00gltest.rpy:214 + old "This game requires use of GL2 that can't be initialised." + new "Эта игра требует использование GL2 который не может быть инициализирован." + + # renpy/common/00gltest.rpy:216 + old "This computer has a problem displaying graphics: [problem]." + new "У этого компьютера проблема с отображением графики: [problem]" + + # renpy/common/00gltest.rpy:220 + 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:224 + 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:229 + 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:234 + old "Continue, Show this warning again" + new "Продолжить, Показать это предупреждение снова" + + # renpy/common/00gltest.rpy:238 + old "Continue, Don't show warning again" + new "Продолжить, Не показывать это предупреждение снова." + + # renpy/common/00gltest.rpy:246 + old "Change render options" + new "Изменить настройки рендеринга" + + # renpy/common/00gamepad.rpy:33 + old "Select Gamepad to Calibrate" + new "Выберите Геймпад для Калибровки" + + # renpy/common/00gamepad.rpy:36 + old "No Gamepads Available" + new "Геймпады Не Обнаружены" + + # renpy/common/00gamepad.rpy:56 + old "Calibrating [name] ([i]/[total])" + new "Калибрую [name] ([i]/[total])" + + # renpy/common/00gamepad.rpy:60 + old "Press or move the '[control!s]' [kind]." + new "Нажмите или сдвиньте [kind] '[control!s]'" + + # renpy/common/00gamepad.rpy:70 + old "Skip (A)" + new "Пропуск (A)" + + # renpy/common/00gamepad.rpy:73 + old "Back (B)" + new "Спина (B)" + + # renpy/common/_errorhandling.rpym:758 + old "Open" + new "Журнал" + + # renpy/common/_errorhandling.rpym:760 + old "Opens the traceback.txt file in a text editor." + new "Открывает файл traceback.txt в текстовом редакторе." + + # renpy/common/_errorhandling.rpym:762 + old "Copy BBCode" + new "Скопировать как BBCode" + + # renpy/common/_errorhandling.rpym:764 + 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:766 + old "Copy Markdown" + new "Скопировать как Markdown" + + # renpy/common/_errorhandling.rpym:768 + old "Copies the traceback.txt file to the clipboard as Markdown for Discord." + new "Копирует файл traceback.txt в буфер обмена как Markdown для Дискорда." + + # renpy/common/_errorhandling.rpym:800 + old "An exception has occurred." + new "Возникло исключение." + + # renpy/common/_errorhandling.rpym:829 + old "Rollback" + new "Назад" + + # renpy/common/_errorhandling.rpym:831 + old "Attempts a roll back to a prior time, allowing you to save or choose a different choice." + new "Пытается вернуться назад, позволяя вам сохраниться или принять другой выбор." + + # renpy/common/_errorhandling.rpym:834 + old "Ignore" + new "Игнорировать" + + # renpy/common/_errorhandling.rpym:838 + old "Ignores the exception, allowing you to continue." + new "Игнорирует это исключение, позволяя вам продолжить." + + # renpy/common/_errorhandling.rpym:840 + old "Ignores the exception, allowing you to continue. This often leads to additional errors." + new "Игнорирует это исключение, позволяя вам продолжить. Зачастую это ведёт к дополнительным ошибкам." + + # renpy/common/_errorhandling.rpym:844 + old "Reload" + new "Перезагрузить" + + # renpy/common/_errorhandling.rpym:846 + old "Reloads the game from disk, saving and restoring game state if possible." + new "Перезагружает игру с диска, сохраняя и восстанавливая её состояние, если это возможно." + + # renpy/common/_errorhandling.rpym:849 + old "Console" + new "Консоль" + + # renpy/common/_errorhandling.rpym:851 + old "Opens a console to allow debugging the problem." + new "Открывает консоль, позволяющую отладить проблему." + + # renpy/common/_errorhandling.rpym:864 + old "Quits the game." + new "Выходит из игры." + + # renpy/common/_errorhandling.rpym:886 + old "Parsing the script failed." + new "Обработка сценария завершилась неудачно." + + # renpy/common/_developer/developer.rpym:39 + old "Developer Menu" + new "Меню разработчика" + + # renpy/common/_developer/developer.rpym:44 + old "Interactive Director (D)" + new "Интерактивный Директор (D)" + + # renpy/common/_developer/developer.rpym:46 + old "Reload Game (Shift+R)" + new "Перезагрузить игру (Shift+R)" + + # renpy/common/_developer/developer.rpym:48 + old "Console (Shift+O)" + new "Консоль (Shift+O)" + + # renpy/common/_developer/developer.rpym:50 + old "Variable Viewer" + new "Просмотр переменных" + + # renpy/common/_developer/developer.rpym:52 + old "Persistent Viewer" + new "Постоянный просмотрщик" + + # renpy/common/_developer/developer.rpym:54 + old "Image Location Picker" + new "Инструмент позиционирования на изображениях" + + # renpy/common/_developer/developer.rpym:56 + old "Filename List" + new "Список файлов" + + # renpy/common/_developer/developer.rpym:60 + old "Show Image Load Log (F4)" + new "Показать лог загрузки изображений (F4)" + + # renpy/common/_developer/developer.rpym:63 + old "Hide Image Load Log (F4)" + new "Скрыть лог загрузки изображений (F4)" + + # renpy/common/_developer/developer.rpym:66 + old "Image Attributes" + new "Аттрибуты изображения" + + # renpy/common/_developer/developer.rpym:70 + old "Show Translation Info" + new "Show Translation Info" + + # renpy/common/_developer/developer.rpym:73 + old "Hide Translation Info" + new "Hide Translation Info" + + # renpy/common/_developer/developer.rpym:78 + old "Speech Bubble Editor (Shift+B)" + new "Редактор речевых пузырьков (Shift+B)" + + # renpy/common/_developer/developer.rpym:82 + old "Show Filename and Line" + new "Показывать имя файла и строку" + + # renpy/common/_developer/developer.rpym:85 + old "Hide Filename and Line" + new "Скрыть имя файла и строку" + + # renpy/common/_developer/developer.rpym:141 + old "Layer [l]:" + new "Слой [l]:" + + # renpy/common/_developer/developer.rpym:144 + old " (transforms: [', '.join(transform_list)])" + new " (transforms: [', '.join(transform_list)])" + + # renpy/common/_developer/developer.rpym:148 + old " [name!q] [attributes!q] (hidden)" + new " [name!q] [attributes!q] (hidden)" + + # renpy/common/_developer/developer.rpym:152 + old " [name!q] [attributes!q]" + new " [name!q] [attributes!q]" + + # renpy/common/_developer/developer.rpym:205 + old "Nothing to inspect." + new "Переменные не заданы." + + # renpy/common/_developer/developer.rpym:216 + old "Hide deleted" + new "Скрыть удалённые" + + # renpy/common/_developer/developer.rpym:216 + old "Show deleted" + new "Показать удалённые" + + # renpy/common/_developer/developer.rpym:367 + old "Rectangle copied to clipboard." + new "Координаты прямоугольника скопированы в буфер обмена." + + # renpy/common/_developer/developer.rpym:370 + old "Position copied to clipboard." + new "Координаты позиции скопированы в буфер обмена." + + # renpy/common/_developer/developer.rpym:382 + old "Rectangle: %r" + new "Прямоугольник: %r" + + # renpy/common/_developer/developer.rpym:385 + old "Mouse position: %r" + new "Позиция мыши: %r" + + # renpy/common/_developer/developer.rpym:390 + old "Right-click or escape to quit." + new "Нажмите правую кнопку мыши или ESC чтобы выйти." + + # renpy/common/_developer/developer.rpym:440 + old "Type to filter: " + new "Текущий фильтр: " + + # renpy/common/_developer/developer.rpym:556 + old "Textures: [tex_count] ([tex_size_mb:.1f] MB)" + new "Текстур: [tex_count] ([tex_size_mb:.1f] МБ)" + + # renpy/common/_developer/developer.rpym:560 + old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)" + new "Кеш изображений: [cache_pct:.1f]% ([cache_size_mb:.1f] МБ)" + + # renpy/common/_developer/developer.rpym:570 + old "✔ " + new "✔ " + + # renpy/common/_developer/developer.rpym:573 + old "✘ " + new "✘ " + + # renpy/common/_developer/developer.rpym:578 + 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/developer.rpym:628 + old "Click to open in editor." + new "Нажмите, чтобы открыть в текстовом редакторе." + + # renpy/common/_developer/inspector.rpym:39 + old "Displayable Inspector" + new "Диспетчер объектов" + + # renpy/common/_developer/inspector.rpym:62 + old "Size" + new "Разрешение" + + # renpy/common/_developer/inspector.rpym:66 + old "Style" + new "Стиль" + + # renpy/common/_developer/inspector.rpym:72 + old "Location" + new "Местоположение" + + # renpy/common/_developer/inspector.rpym:124 + old "Inspecting Styles of [displayable_name!q]" + new "Инспектирую стили [displayable_name!q]" + + # renpy/common/_developer/inspector.rpym:141 + old "displayable:" + new "объект:" + + # renpy/common/_developer/inspector.rpym:147 + old " (no properties affect the displayable)" + new " (на объект не влияют никакие параметры)" + + # renpy/common/_developer/inspector.rpym:149 + old " (default properties omitted)" + new " (настройки по умолчанию опущены)" + + # renpy/common/_developer/inspector.rpym:187 + old "" + new "" + + # renpy/common/00console.rpy:552 + old "Press to exit console. Type help for help.\n" + new "Нажмите , чтобы выйти из консоли. Введите help для помощи.\n" + + # renpy/common/00console.rpy:556 + old "Ren'Py script enabled." + new "Ren'Py script активирован." + + # renpy/common/00console.rpy:558 + old "Ren'Py script disabled." + new "Ren'Py script деактивирован." + + # renpy/common/00console.rpy:741 + old "The console is using short representations. To disable this, type 'long', and to re-enable, type 'short'" + new "The console is using short representations. To disable this, type 'long', and to re-enable, type 'short'" + + # renpy/common/00console.rpy:813 + old "help: show this help\n help : show signature and documentation of " + new "help: покажите эту помощь\n help : показать подпись и документацию : run the statement\n" + new " <оператор renpy script>: запуск оператора\n" + + # renpy/common/00console.rpy:858 + old " : run the expression or statement" + new " <выражение или оператор python>: запустить выражение или оператор" + + # renpy/common/00console.rpy:866 + old "clear: clear the console history" + new "clear: очищает историю консоли" + + # renpy/common/00console.rpy:870 + old "exit: exit the console" + new "exit: выход из консоли" + + # renpy/common/00console.rpy:878 + old "stack: print the return stack" + new "stack: выводит стэк возврата (return stack)" + + # renpy/common/00console.rpy:900 + old "load : loads the game from slot" + new "load <слот>: загружает игру из выбранного слота" + + # renpy/common/00console.rpy:913 + old "save : saves the game in slot" + new "save <слот>: сохраняет игру в выбранный слот" + + # renpy/common/00console.rpy:924 + old "reload: reloads the game, refreshing the scripts" + new "reload: перезагружает игру, обновляет скрипты" + + # renpy/common/00console.rpy:932 + 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:969 + old "unwatch : stop watching an expression" + new "unwatch <выражение>: прекратить наблюдать за выражением" + + # renpy/common/00console.rpy:1015 + old "unwatchall: stop watching all expressions" + new "unwatchall: глобальное прекращение наблюдения" + + # renpy/common/00console.rpy:1036 + old "jump