Compare commits

...

48 Commits

Author SHA1 Message Date
Tom Rothamel 8f0c7df619 Start the 7.2 series. 2018-10-11 17:06:39 -04:00
Tom Rothamel 41e9f86d1d Update sponsors list. 2018-10-10 00:16:46 -04:00
Tom Rothamel f3bee22ae7 Changelog last. 2018-10-08 23:02:22 -04:00
Tom Rothamel 0923ca9880 SetVariable and ToggleVariable now take fields along with variables. 2018-10-08 20:05:34 -04:00
Tom Rothamel abef9ac3f9 Automatically determine the version number to use. 2018-10-06 12:55:20 -04:00
Tom Rothamel 966adf6821 Distribute checks that checksums.txt exists, refuses to run if so. 2018-10-06 11:49:15 -04:00
Tom Rothamel 99d8a021c6 Changelog. 2018-10-06 08:32:55 -04:00
Tom Rothamel 6f379ca291 Add the new string to Android. 2018-10-06 08:20:15 -04:00
Tom Rothamel 326f8532f6 distribute: Sign by default. 2018-10-03 22:54:40 -04:00
Tom Rothamel 63a9c3943c Fix typos in changelog. 2018-10-03 22:50:08 -04:00
Tom Rothamel 8bf108be2e Update incompatible. 2018-10-02 21:11:53 -04:00
Tom Rothamel 20fa4cb41d New icon background for the_question. 2018-10-01 22:43:33 -04:00
Tom Rothamel 16c9e776b2 Fix the sense of the version test. 2018-10-01 22:42:06 -04:00
Tom Rothamel 866ee50498 Chain translates even if a module isn't loaded.
Fixes #1569.
2018-09-30 14:49:01 -04:00
Tom Rothamel 018887163f Update changelog. 2018-09-29 02:56:30 -04:00
Tom Rothamel 0ad2f6b847 Store the locations of displaybales in text.
Fixes #1582.
2018-09-28 23:23:08 -04:00
Tom Rothamel a5222719b0 window auto treats menu-with-caption differently. 2018-09-27 10:31:04 -04:00
Tom Rothamel d1f5ab37d9 Give menu-with-caption a different statement name.
This then lets us treat it differently for the purpose of window
auto.
2018-09-27 10:29:00 -04:00
Tom Rothamel 5c0ab50d22 Place displayables-in-text on every frame.
Fixes #1573.
2018-09-26 23:01:54 -04:00
Tom Rothamel f2a824e2ef Changelog android. 2018-09-26 01:36:19 -04:00
Tom Rothamel 7e30c7ee0a Restart the interaction after taking a screenshot.
Fixes #1581.
2018-09-25 02:23:34 -04:00
Tom Rothamel 31e85a14c2 Dcoument the history fix. 2018-09-24 21:27:05 -04:00
Tom Rothamel a9dfb15d14 Set motion.null properly.
Fixes #1578. This is used to transfer an animation if no frame would
otherwise have been shown - a rare case.
2018-09-23 23:45:59 -04:00
Tom Rothamel a1f0fbaa19 Give the tutorial a valid version number.
Fixes #1580. Fixes #1579.
2018-09-23 16:38:06 -04:00
Tom Rothamel 52083b2be9 Handle zero-width characters in Ren'Py for image fonts. 2018-09-22 13:33:07 -04:00
Tom Rothamel 40d481b72f Handle all of the zero-width characters in Ren'Py's freetype support. 2018-09-22 13:24:10 -04:00
Tom Rothamel 6985e14737 Make menus respect window show/hide/auto.
This addresses #1576, by keeping the window up all the time, as
it should have been.
2018-09-22 01:28:09 -04:00
Tom Rothamel 5e567f040b Do not substitute history text.
It has already been substituted, so we don't want to do it again.

Fixes #1575. Fixes #1516.
2018-09-21 01:02:21 -04:00
Tom Rothamel 6a1873be1a Expose the substitute property for label. 2018-09-20 22:45:06 -04:00
Tom Rothamel 8add50b930 Merge pull request #1568 from lee-yunseok/master
Fix a little bit in Korean comments.
2018-09-19 16:33:03 -05:00
Tom Rothamel a9c4b72bb0 Wrap error handling writes to stdout in exception handling.
At least one computer has been having problems with stdout on
windows, so we want to error handle this.
2018-09-18 20:53:52 -04:00
Tom Rothamel e52eb6fead Fix doc typo. 2018-09-18 20:44:16 -04:00
Tom Rothamel 01b37552f6 Translate the current update status. 2018-09-18 20:39:58 -04:00
Tom Rothamel ea31af9bc2 Remove russian obsolete.rpy.
It duplicates translations found in other files - something went
wrong with #1570.
2018-09-18 20:35:46 -04:00
Tom Rothamel e5a3cff41e Merge pull request #1570 from Ria-kon/master
Russian update 7.1.0
2018-09-17 16:12:27 -05:00
Ria-kon 70881c90a4 Russian update 7.0.1. 2018-09-16 23:01:01 +03:00
Tom Rothamel 607a1acc00 Add nestled-close as an option for ctc_position. 2018-09-16 12:22:14 -04:00
Tom Rothamel 53ffeed805 Allow multiple segments to be passed to CTC, internally. 2018-09-16 12:12:00 -04:00
Tom Rothamel 0ae0bf4c0d Handle the CB (contingient break) breaking class.
This is used by displayables embedded in text. The unicode standard
allows us to handle this however we want, so we break unless there
is a non-breaking-space before or after the CB. (including ZWNBSP).
2018-09-15 23:42:07 -04:00
Tom Rothamel 8f40cf2da5 Use U+FFFC to represent displayables in text.
This is the OBJECT REPLACEMENT CHARACTER, which is useful because
it creates a character of breaking class CB, which allows Ren'Py
to decide if it wants to put a break before or after the object.
2018-09-15 23:39:01 -04:00
Tom Rothamel 08dba61bd9 Add alternate click to Drag.
This seems like it would make sense for things like a Minecraft-like
crafting system.

Fixes #1567.
2018-09-14 23:17:11 -04:00
Lee Yunseok 41fce3426d Merge pull request #5 from renpy/master
Keep going to latest.
2018-09-15 08:43:53 +09:00
Lee Yunseok 057ea1ea2c Fix some comments. 2018-09-15 08:42:11 +09:00
Tom Rothamel 8baaa7654f Changelog 7.1.1. 2018-09-13 21:11:09 -04:00
Tom Rothamel 14bf26efd6 Voice fixes.
* Always compute and use the tlid.
* Handle the sustain preference before an interaction, rather
  than after it.

Fixes #1566.
2018-09-13 00:09:38 -04:00
Tom Rothamel 8ad281048b Bump version. 2018-09-12 01:21:29 -04:00
Tom Rothamel 1b169672ba Add fribidi-src to the source archive.
This should address #1562, though I'll check for the nightly to
see that the build completed.
2018-09-11 18:34:25 -04:00
Lee Yunseok cd33c95cc9 Merge pull request #4 from renpy/master
Keep going with latest.
2018-09-05 03:40:19 +09:00
42 changed files with 1282 additions and 667 deletions
+9 -2
View File
@@ -47,12 +47,13 @@ def main():
raise Exception("Not running with python optimization.")
ap = argparse.ArgumentParser()
ap.add_argument("version")
ap.add_argument("version", nargs="?")
ap.add_argument("--fast", action="store_true")
ap.add_argument("--pygame", action="store", default=None)
ap.add_argument("--no-rapt", action="store_true")
ap.add_argument("--variant", action="store")
ap.add_argument("--sign", action="store_true")
ap.add_argument("--sign", action="store_true", default=True)
ap.add_argument("--nosign", action="store_false", dest="sign")
args = ap.parse_args()
@@ -66,6 +67,9 @@ def main():
# file has changed, bump it by 1.
import renpy
if args.version is None:
args.version = ".".join(str(i) for i in renpy.version_tuple[:-1]) # @UndefinedVariable
match_version = ".".join(str(i) for i in renpy.version_tuple[:2]) # @UndefinedVariable
s = subprocess.check_output([ "git", "describe", "--tags", "--dirty", "--match", "start-" + match_version ])
@@ -103,6 +107,9 @@ def main():
if args.variant:
destination += "-" + args.variant
if os.path.exists(os.path.join(destination, "checksums.txt")):
raise Exception("The checksums.txt file exists.")
print("Version {} ({})".format(args.version, full_version))
# Perhaps autobuild.
+3 -1
View File
@@ -904,13 +904,15 @@ screen history():
label h.who:
style "history_name"
substitute False
## Take the color of the who text from the Character, if set.
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
text what:
substitute False
if not _history_list:
label _("The dialogue history is empty.")
+2 -1
View File
@@ -1,6 +1,6 @@
# This file contains strings used by RAPT, so the Ren'Py translation framework
# can find them. It's automatically generated by rapt/update_strings.py, and
# can find them. It's automatically generated by rapt/update_translations.py, and
# hence should not be changed by hand.
init python hide:
@@ -17,6 +17,7 @@ init python hide:
__("The build seems to have failed.")
__("Launching app.")
__("The build seems to have succeeded.")
__("The armeabi-v7a version works on most phones on tablets, while the x86_64 version works on the simulator and chromebooks.")
__("What is the full name of your application? This name will appear in the list of installed applications.")
__("What is the short name of your application? This name will be used in the launcher, and for application shortcuts.")
__("What is the name of the package?\n\nThis is usually of the form com.domain.program or com.domain.email.program. It may only contain ASCII letters and dots. It must contain at least one dot.")
+1
View File
@@ -367,6 +367,7 @@ init python:
build.classify_renpy("module/pysdlsound/", "source")
build.classify_renpy("module/pysdlsound/*.py", "source")
build.classify_renpy("module/pysdlsound/*.pyx", "source")
build.classify_renpy("module/fribidi-src/**", "source")
# all-platforms binary.
build.classify_renpy("lib/**/_renpysteam*", None)
+2 -2
View File
@@ -39,7 +39,7 @@ translate korean strings:
# gui.rpy:39
old "## The color used for a text button when it is selected but not focused. A button is selected if it is the current screen or preference value."
new "## 텍스트 버튼(text button)에 선택됐지만(selected) 포커스되지 않았을 때(focused) 사용됩니다. 버튼(button)은 현재 화면이거나 설정값인 경우 선택됨(selected)이 됩니다."
new "## 텍스트 버튼(text button)에 선택됐지만(selected) 포커스되지(focused) 않았을 때 사용됩니다. 버튼(button)은 현재 화면이거나 설정값인 경우 선택됨(selected)이 됩니다."
# gui.rpy:43
old "## The color used for a text button when it cannot be selected."
@@ -379,7 +379,7 @@ translate korean strings:
# gui.rpy:403
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## 이것은 휴대전화와 태블릿에서 쉽게 터지할 수 있도록 버튼들의 크기를 크게 합니다."
new "## 이것은 휴대전화와 태블릿에서 쉽게 터지할 수 있도록 빠른(Quick) 버튼들의 크기를 크게 합니다."
# gui.rpy:409
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
+243 -75
View File
@@ -153,179 +153,187 @@ translate russian strings:
old "{#month_short}Dec"
new "{#month_short}Дек"
# 00action_file.rpy:237
# 00action_file.rpy:240
old "%b %d, %H:%M"
new "%d %b, %H:%M"
# 00action_file.rpy:344
# 00action_file.rpy:353
old "Save slot %s: [text]"
new "Слот сохранения %s: [text]"
# 00action_file.rpy:417
# 00action_file.rpy:434
old "Load slot %s: [text]"
new "Слот загрузки %s: [text]"
# 00action_file.rpy:459
# 00action_file.rpy:487
old "Delete slot [text]"
new "Удалить слот [text]"
# 00action_file.rpy:539
# 00action_file.rpy:569
old "File page auto"
new "Автосохранения"
# 00action_file.rpy:541
# 00action_file.rpy:571
old "File page quick"
new "Быстрые сохранения"
# 00action_file.rpy:543
# 00action_file.rpy:573
old "File page [text]"
new "Страница сохранений [text]"
# 00action_file.rpy:733
# 00action_file.rpy:763
old "Next file page."
new "Следующая страница сохранений"
# 00action_file.rpy:797
# 00action_file.rpy:827
old "Previous file page."
new "Предыдущая страница сохранений"
# 00action_file.rpy:858
# 00action_file.rpy:888
old "Quick save complete."
new "Быстрое сохранение завершено."
# 00action_file.rpy:876
# 00action_file.rpy:906
old "Quick save."
new "Быстрое сохранение"
# 00action_file.rpy:895
# 00action_file.rpy:925
old "Quick load."
new "Быстрая загрузка"
# 00action_other.rpy:344
# 00action_other.rpy:355
old "Language [text]"
new "Язык [text]"
# 00director.rpy:703
# 00director.rpy:708
old "The interactive director is not enabled here."
new "Интерактивный директор недоступен."
# 00director.rpy:1490
# 00director.rpy:1481
old "⬆"
new "⬆"
# 00director.rpy:1487
old "⬇"
new "⬇"
# 00director.rpy:1551
old "Done"
new "Принять"
# 00director.rpy:1498
# 00director.rpy:1561
old "(statement)"
new "(функция)"
# 00director.rpy:1499
# 00director.rpy:1562
old "(tag)"
new "(тег)"
# 00director.rpy:1500
# 00director.rpy:1563
old "(attributes)"
new "(аттрибут)"
# 00director.rpy:1501
# 00director.rpy:1564
old "(transform)"
new "(трансформация)"
# 00director.rpy:1526
# 00director.rpy:1589
old "(transition)"
new "(переход)"
# 00director.rpy:1538
# 00director.rpy:1601
old "(channel)"
new "(канал)"
# 00director.rpy:1539
# 00director.rpy:1602
old "(filename)"
new "(имя файла)"
# 00director.rpy:1564
# 00director.rpy:1631
old "Change"
new "Изменить"
# 00director.rpy:1566
# 00director.rpy:1633
old "Add"
new "Добавить"
# 00director.rpy:1569
# 00director.rpy:1636
old "Cancel"
new "Отмена"
# 00director.rpy:1572
# 00director.rpy:1639
old "Remove"
new "Убрать"
# 00director.rpy:1605
# 00director.rpy:1674
old "Statement:"
new "Функции:"
# 00director.rpy:1626
# 00director.rpy:1695
old "Tag:"
new "Теги:"
# 00director.rpy:1642
# 00director.rpy:1711
old "Attributes:"
new "Аттрибут:"
# 00director.rpy:1660
# 00director.rpy:1729
old "Transforms:"
new "Трансформации:"
# 00director.rpy:1679
# 00director.rpy:1748
old "Behind:"
new "Позади:"
# 00director.rpy:1698
# 00director.rpy:1767
old "Transition:"
new "Переходы:"
# 00director.rpy:1716
# 00director.rpy:1785
old "Channel:"
new "Каналы:"
# 00director.rpy:1734
# 00director.rpy:1803
old "Audio Filename:"
new "Имя файла:"
# 00gui.rpy:368
# 00gui.rpy:370
old "Are you sure?"
new "Вы уверены?"
# 00gui.rpy:369
# 00gui.rpy:371
old "Are you sure you want to delete this save?"
new "Вы уверены, что хотите удалить это сохранение?"
# 00gui.rpy:370
# 00gui.rpy:372
old "Are you sure you want to overwrite your save?"
new "Вы уверены, что хотите перезаписать ваше сохранение?"
# 00gui.rpy:371
# 00gui.rpy:373
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "Загрузка игры приведёт к потере несохранённого прогресса.\nВы уверены, что хотите это сделать?"
# 00gui.rpy:372
# 00gui.rpy:374
old "Are you sure you want to quit?"
new "Вы уверены, что хотите выйти?"
# 00gui.rpy:373
# 00gui.rpy:375
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "Вы уверены, что хотите вернуться в главное меню?\nЭто приведёт к потере несохранённого прогресса."
# 00gui.rpy:374
# 00gui.rpy:376
old "Are you sure you want to end the replay?"
new "Вы уверены, что хотите завершить повтор?"
# 00gui.rpy:375
# 00gui.rpy:377
old "Are you sure you want to begin skipping?"
new "Вы уверены, что хотите начать пропуск?"
# 00gui.rpy:376
# 00gui.rpy:378
old "Are you sure you want to skip to the next choice?"
new "Вы точно хотите пропустить всё до следующего выбора?"
# 00gui.rpy:377
# 00gui.rpy:379
old "Are you sure you want to skip unseen dialogue to the next choice?"
new "Вы уверены, что хотите пропустить непрочитанные диалоги до следующего выбора?"
@@ -379,11 +387,11 @@ translate russian strings:
# 00library.rpy:157
old "increase"
new "больше" ### но полоса прокрутки тоже здесь!
new "больше"
# 00library.rpy:158
old "decrease"
new "меньше" ###
new "меньше"
# 00library.rpy:193
old "Skip Mode"
@@ -431,7 +439,7 @@ translate russian strings:
# 00preferences.rpy:266
old "skip unseen [text]"
new "пропускать весь [text]" ###
new "пропускать весь [text]"
# 00preferences.rpy:271
old "skip unseen text"
@@ -455,11 +463,11 @@ translate russian strings:
# 00preferences.rpy:300
old "auto-forward"
new "авточтение" ###
new "авточтение"
# 00preferences.rpy:307
old "Auto forward"
new "Авточтение" ###
new "Авточтение"
# 00preferences.rpy:310
old "auto-forward after click"
@@ -537,111 +545,271 @@ translate russian strings:
old "mute all"
new "режим без звука"
# 00preferences.rpy:498
# 00preferences.rpy:500
old "Clipboard voicing enabled. Press 'shift+C' to disable."
new "Озвучка буфера обмена включена. Нажмите 'shift+C', чтобы отключить её."
# 00preferences.rpy:500
# 00preferences.rpy:502
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
new "Синтезатор речи должен сказать \"[renpy.display.tts.last]\". Нажмите 'alt+shift+V', чтобы отключить его."
# 00preferences.rpy:502
# 00preferences.rpy:504
old "Self-voicing enabled. Press 'v' to disable."
new "Синтезатор речи включён. Нажмите 'v', чтобы отключить его."
# _compat\gamemenu.rpym:198
old "Empty Slot."
new "Пустой слот"
# _compat\gamemenu.rpym:355
old "Previous"
new "Назад"
# _compat\gamemenu.rpym:362
old "Next"
new "Далее"
# _compat\preferences.rpym:428
old "Joystick Mapping"
new "Раскладка джойстика"
# _developer\developer.rpym:38
old "Developer Menu"
new "Меню разработчика"
# _developer\developer.rpym:43
old "Interactive Director (D)"
new "Интерактивный Директор (D)"
# _developer\developer.rpym:45
old "Reload Game (Shift+R)"
new "Перезагрузить игру (Shift+R)"
# _developer\developer.rpym:47
old "Console (Shift+O)"
new "Консоль (Shift+O)"
# _developer\developer.rpym:49
old "Variable Viewer"
new "Просмотр переменных"
# _developer\developer.rpym:51
old "Image Location Picker"
new "Инструмент позиционирования на изображениях"
# _developer\developer.rpym:53
old "Filename List"
new "Список файлов"
# _developer\developer.rpym:57
old "Show Image Load Log (F4)"
new "Показать лог загрузки изображений (F4)"
# _developer\developer.rpym:60
old "Hide Image Load Log (F4)"
new "Скрыть лог загрузки изображений (F4)"
# _developer\developer.rpym:63
old "Image Attributes"
new "Аттрибуты изображения"
# _developer\developer.rpym:90
old "[name] [attributes] (hidden)"
new "[name] [attributes] (hidden)"
# _developer\developer.rpym:94
old "[name] [attributes]"
new "[name] [attributes]"
# _developer\developer.rpym:137
old "Nothing to inspect."
new "Переменные не заданы."
# _developer\developer.rpym:265
old "Return to the developer menu"
new "Вернуться в меню разработчика"
# _developer\developer.rpym:425
old "Rectangle: %r"
new "Прямоугольник: %r"
# _developer\developer.rpym:430
old "Mouse position: %r"
new "Позиция мыши: %r"
# _developer\developer.rpym:435
old "Right-click or escape to quit."
new "Нажмите правую кнопку мыши или ESC чтобы выйти."
# _developer\developer.rpym:467
old "Rectangle copied to clipboard."
new "Координаты прямоугольника скопированы в буфер обмена."
# _developer\developer.rpym:470
old "Position copied to clipboard."
new "Координаты позиции скопированы в буфер обмена."
# _developer\developer.rpym:489
old "Type to filter: "
new "Текущий фильтр: "
# _developer\developer.rpym:617
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
new "Текстур: [tex_count] ([tex_size_mb:.1f] МБ)"
# _developer\developer.rpym:621
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
new "Кеш изображений: [cache_pct:.1f]% ([cache_size_mb:.1f] МБ)"
# _developer\developer.rpym:631
old "✔ "
new "✔ "
# _developer\developer.rpym:634
old "✘ "
new "✘ "
# _developer\developer.rpym:639
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}"
# _developer\inspector.rpym:38
old "Displayable Inspector"
new "Диспетчер объектов"
# _developer\inspector.rpym:61
old "Size"
new "Разрешение"
# _developer\inspector.rpym:65
old "Style"
new "Стиль"
# _developer\inspector.rpym:71
old "Location"
new "Местоположение"
# _developer\inspector.rpym:122
old "Inspecting Styles of [displayable_name!q]"
new "Инспектирую стили [displayable_name!q]"
# _developer\inspector.rpym:139
old "displayable:"
new "объект:"
# _developer\inspector.rpym:145
old " (no properties affect the displayable)"
new " (на объект не влияют никакие параметры)"
# _developer\inspector.rpym:147
old " (default properties omitted)"
new " (настройки по умолчанию опущены)"
# _developer\inspector.rpym:185
old "<repr() failed>"
new "<repr() провален>"
# _layout\classic_load_save.rpym:170
old "a"
new "а"
# _layout\classic_load_save.rpym:179
old "q"
new "б"
# 00iap.rpy:217
old "Contacting App Store\nPlease Wait..."
new "Связываюсь с App Store\nПожалуйста, ждите..."
# 00updater.rpy:372
# 00updater.rpy:375
old "The Ren'Py Updater is not supported on mobile devices."
new "Ren'Py Updater не поддерживается на мобильных устройствах."
# 00updater.rpy:491
# 00updater.rpy:494
old "An error is being simulated."
new "Симулируется ошибка."
# 00updater.rpy:672
# 00updater.rpy:678
old "Either this project does not support updating, or the update status file was deleted."
new "Или этот проект не поддерживает обновление, или файл статуса обновления был удалён."
# 00updater.rpy:686
# 00updater.rpy:692
old "This account does not have permission to perform an update."
new "У этого аккаунта нет прав проводить обновление."
# 00updater.rpy:689
# 00updater.rpy:695
old "This account does not have permission to write the update log."
new "У этого аккаунта нет прав писать лог обновления."
# 00updater.rpy:716
# 00updater.rpy:722
old "Could not verify update signature."
new "Не могу верифицировать подпись обновления."
# 00updater.rpy:991
# 00updater.rpy:997
old "The update file was not downloaded."
new "Файл обновления не был загружен."
# 00updater.rpy:1009
# 00updater.rpy:1015
old "The update file does not have the correct digest - it may have been corrupted."
new "Файл обновления не содержит корректного дайджеста — он может быть повреждён."
# 00updater.rpy:1065
# 00updater.rpy:1071
old "While unpacking {}, unknown type {}."
new "При распаковке {} обнаружен неизвестный тип {}."
# 00updater.rpy:1412
# 00updater.rpy:1439
old "Updater"
new "Обновление"
# 00updater.rpy:1423
# 00updater.rpy:1450
old "This program is up to date."
new "Эта программа обновлена."
# 00updater.rpy:1425
# 00updater.rpy:1452
old "[u.version] is available. Do you want to install it?"
new "[u.version] доступна. Вы хотите её установить?"
# 00updater.rpy:1427
# 00updater.rpy:1454
old "Preparing to download the updates."
new "Подготовка к загрузке обновлений."
# 00updater.rpy:1429
# 00updater.rpy:1456
old "Downloading the updates."
new "Загрузка обновлений."
# 00updater.rpy:1431
# 00updater.rpy:1458
old "Unpacking the updates."
new "Распаковка обновлений."
# 00updater.rpy:1435
# 00updater.rpy:1462
old "The updates have been installed. The program will restart."
new "Обновления установлены. Программа будет перезапущена."
# 00updater.rpy:1437
# 00updater.rpy:1464
old "The updates have been installed."
new "Обновления были установлены."
# 00updater.rpy:1439
# 00updater.rpy:1466
old "The updates were cancelled."
new "Обновления были отменены."
# 00gallery.rpy:573
# 00gallery.rpy:585
old "Image [index] of [count] locked."
new "Изображение [index] из [count] закрыто."
# 00gallery.rpy:593
# 00gallery.rpy:605
old "prev"
new "пред"
# 00gallery.rpy:594
# 00gallery.rpy:606
old "next"
new "след"
# 00gallery.rpy:595
# 00gallery.rpy:607
old "slideshow"
new "слайд-шоу"
# 00gallery.rpy:596
# 00gallery.rpy:608
old "return"
new "вернуться"
-124
View File
@@ -1,130 +1,6 @@
translate russian strings:
# _developer/developer.rpym:38
old "Developer Menu"
new "Меню разработчика"
# _developer/developer.rpym:43
old "Interactive Director (D)"
new "Интерактивный Директор (D)"
# _developer/developer.rpym:45
old "Reload Game (Shift+R)"
new "Перезагрузить игру (Shift+R)"
# _developer/developer.rpym:47
old "Console (Shift+O)"
new "Консоль (Shift+O)"
# _developer/developer.rpym:49
old "Variable Viewer"
new "Просмотр переменных"
# _developer/developer.rpym:51
old "Image Location Picker"
new "Инструмент позиционирования на изображениях"
# _developer/developer.rpym:53
old "Filename List"
new "Список файлов"
# _developer/developer.rpym:57
old "Show Image Load Log (F4)"
new "Показать лог загрузки изображений (F4)"
# _developer/developer.rpym:60
old "Hide Image Load Log (F4)"
new "Скрыть лог загрузки изображений (F4)"
# _developer/developer.rpym:95
old "Nothing to inspect."
new "Переменные не заданы."
# _developer/developer.rpym:223
old "Return to the developer menu"
new "Вернуться в меню разработчика"
# _developer/developer.rpym:383
old "Rectangle: %r"
new "Прямоугольник: %r"
# _developer/developer.rpym:388
old "Mouse position: %r"
new "Позиция мыши: %r"
# _developer/developer.rpym:393
old "Right-click or escape to quit."
new "Нажмите правую кнопку мыши или ESC чтобы выйти."
# _developer/developer.rpym:425
old "Rectangle copied to clipboard."
new "Координаты прямоугольника скопированы в буфер обмена."
# _developer/developer.rpym:428
old "Position copied to clipboard."
new "Координаты позиции скопированы в буфер обмена."
# _developer/developer.rpym:447
old "Type to filter: "
new "Текущий фильтр: "
# _developer/developer.rpym:575
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
new "Текстур: [tex_count] ([tex_size_mb:.1f] МБ)"
# _developer/developer.rpym:579
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
new "Кеш изображений: [cache_pct:.1f]% ([cache_size_mb:.1f] МБ)"
# _developer/developer.rpym:589
old "✔ "
new "✔ "
# _developer/developer.rpym:592
old "✘ "
new "✘ "
# _developer/developer.rpym:597
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}"
# _developer/inspector.rpym:38
old "Displayable Inspector"
new "Диспетчер объектов"
# _developer/inspector.rpym:61
old "Size"
new "Разрешение"
# _developer/inspector.rpym:65
old "Style"
new "Стиль"
# _developer/inspector.rpym:71
old "Location"
new "Местоположение"
# _developer/inspector.rpym:122
old "Inspecting Styles of [displayable_name!q]"
new "Инспектирую стили [displayable_name!q]"
# _developer/inspector.rpym:139
old "displayable:"
new "объект:"
# _developer/inspector.rpym:145
old " (no properties affect the displayable)"
new " (на объект не влияют никакие параметры)"
# _developer/inspector.rpym:147
old " (default properties omitted)"
new " (настройки по умолчанию опущены)"
# _developer/inspector.rpym:185
old "<repr() failed>"
new "<repr() провален>"
# 00console.rpy:255
old "Press <esc> to exit console. Type help for help.\n"
new "Нажмите <esc>, чтобы выйти из консоли. Введите help для помощи.\n"
+18 -18
View File
@@ -141,75 +141,75 @@ translate russian strings:
old "Back (B)"
new "Back (B)"
# _errorhandling.rpym:528
# _errorhandling.rpym:529
old "Open"
new "Журнал"
# _errorhandling.rpym:530
# _errorhandling.rpym:531
old "Opens the traceback.txt file in a text editor."
new "Открывает файл traceback.txt в текстовом редакторе."
# _errorhandling.rpym:532
# _errorhandling.rpym:533
old "Copy"
new "Копировать"
# _errorhandling.rpym:534
# _errorhandling.rpym:535
old "Copies the traceback.txt file to the clipboard."
new "Копирует файл traceback.txt в буфер обмена."
# _errorhandling.rpym:561
# _errorhandling.rpym:562
old "An exception has occurred."
new "Возникло исключение."
# _errorhandling.rpym:581
# _errorhandling.rpym:582
old "Rollback"
new "Назад"
# _errorhandling.rpym:583
# _errorhandling.rpym:584
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "Пытается вернуться назад, позволяя вам сохраниться или принять другой выбор."
# _errorhandling.rpym:586
# _errorhandling.rpym:587
old "Ignore"
new "Игнорировать"
# _errorhandling.rpym:590
# _errorhandling.rpym:591
old "Ignores the exception, allowing you to continue."
new "Игнорирует это исключение, позволяя вам продолжить."
# _errorhandling.rpym:592
# _errorhandling.rpym:593
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "Игнорирует это исключение, позволяя вам продолжить. Зачастую это ведёт к дополнительным ошибкам."
# _errorhandling.rpym:596
# _errorhandling.rpym:597
old "Reload"
new "Перезагрузить"
# _errorhandling.rpym:598
# _errorhandling.rpym:599
old "Reloads the game from disk, saving and restoring game state if possible."
new "Перезагружает игру с диска, сохраняя и восстанавливая её состояние, если это возможно."
# _errorhandling.rpym:601
# _errorhandling.rpym:602
old "Console"
new "Консоль"
# _errorhandling.rpym:603
# _errorhandling.rpym:604
old "Opens a console to allow debugging the problem."
new "Открывает консоль, позволяющую отладить проблему."
# _errorhandling.rpym:613
# _errorhandling.rpym:614
old "Quits the game."
new "Выходит из игры."
# _errorhandling.rpym:637
# _errorhandling.rpym:638
old "Parsing the script failed."
new "Обработка сценария завершилась неудачно."
# _errorhandling.rpym:663
# _errorhandling.rpym:664
old "Opens the errors.txt file in a text editor."
new "Открывает файл errors.txt в текстовом редакторе."
# _errorhandling.rpym:667
# _errorhandling.rpym:668
old "Copies the errors.txt file to the clipboard."
new "Копирует файл errors.txt в буфер обмена."
+53 -53
View File
@@ -221,215 +221,215 @@ translate russian strings:
old "## The save slot button."
new "## Кнопка слота сохранения."
# gui.rpy:231
# gui.rpy:233
old "## The width and height of thumbnails used by the save slots."
new "## Ширина и высота миниатюры, используемой слотом сохранения."
# gui.rpy:235
# gui.rpy:237
old "## The number of columns and rows in the grid of save slots."
new "## Количество колонок и рядов в таблице слотов."
# gui.rpy:240
# gui.rpy:242
old "## Positioning and Spacing"
new "## Позиционирование и Интервалы"
# gui.rpy:242
# gui.rpy:244
old "## These variables control the positioning and spacing of various user interface elements."
new "## Эти переменные контролируют позиционирование и интервалы различных элементов пользовательского интерфейса."
# gui.rpy:245
# gui.rpy:247
old "## The position of the left side of the navigation buttons, relative to the left side of the screen."
new "## Местоположение левого края навигационных кнопок по отношению к левому краю экрана."
# gui.rpy:249
# gui.rpy:251
old "## The vertical position of the skip indicator."
new "## Вертикальная позиция индикатора пропуска."
# gui.rpy:252
# gui.rpy:254
old "## The vertical position of the notify screen."
new "## Вертикальная позиция экрана уведомлений."
# gui.rpy:255
# gui.rpy:257
old "## The spacing between menu choices."
new "## Интервал между выборами в меню."
# gui.rpy:258
# gui.rpy:260
old "## Buttons in the navigation section of the main and game menus."
new "## Кнопки в секции навигации главного и игрового меню."
# gui.rpy:261
# gui.rpy:263
old "## Controls the amount of spacing between preferences."
new "## Контролирует интервал между настройками."
# gui.rpy:264
# gui.rpy:266
old "## Controls the amount of spacing between preference buttons."
new "## Контролирует интервал между кнопками настройки."
# gui.rpy:267
# gui.rpy:269
old "## The spacing between file page buttons."
new "## Интервал между кнопками страниц."
# gui.rpy:270
# gui.rpy:272
old "## The spacing between file slots."
new "## Интервал между слотами."
# gui.rpy:273
# gui.rpy:275
old "## The position of the main menu text."
new "## Позиция текста главного меню."
# gui.rpy:277
# gui.rpy:279
old "## Frames"
new "## Рамки"
# gui.rpy:279
# gui.rpy:281
old "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
new "## Эти переменные контролируют вид рамок, содержащих компоненты пользовательского интерфейса, когда наложения или окна не представлены."
# gui.rpy:282
# gui.rpy:284
old "## Generic frames."
new "## Генерируем рамки."
# gui.rpy:285
# gui.rpy:287
old "## The frame that is used as part of the confirm screen."
new "## Рамки, используемые в частях экрана подтверждения."
# gui.rpy:288
# gui.rpy:290
old "## The frame that is used as part of the skip screen."
new "## Рамки, используемые в частях экрана пропуска."
# gui.rpy:291
# gui.rpy:293
old "## The frame that is used as part of the notify screen."
new "## Рамки, используемые в частях экрана уведомлений."
# gui.rpy:294
# gui.rpy:296
old "## Should frame backgrounds be tiled?"
new "## Должны ли фоны рамок моститься?"
# gui.rpy:298
# gui.rpy:300
old "## Bars, Scrollbars, and Sliders"
new "## Панели, Полосы прокрутки и Ползунки"
# gui.rpy:300
# gui.rpy:302
old "## These control the look and size of bars, scrollbars, and sliders."
new "## Эти настройки контролируют вид и размер панелей, полос прокрутки и ползунков."
# gui.rpy:302
# gui.rpy:304
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written screens."
new "## Стандартный GUI использует только ползунки и вертикальные полосы прокрутки. Все остальные полосы используются только в новосозданных экранах."
# gui.rpy:305
# gui.rpy:307
old "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
new "## Высота горизонтальных панелей, полос прокрутки и ползунков. Ширина вертикальных панелей, полос прокрутки и ползунков."
# gui.rpy:311
# gui.rpy:313
old "## True if bar images should be tiled. False if they should be linearly scaled."
new "## True, если изображения панелей должны моститься. False, если они должны быть линейно масштабированы."
# gui.rpy:316
# gui.rpy:318
old "## Horizontal borders."
new "## Горизонтальные границы."
# gui.rpy:321
# gui.rpy:323
old "## Vertical borders."
new "## Вертикальные границы."
# gui.rpy:326
# gui.rpy:328
old "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
new "## Что делать с непрокручиваемыми полосами прокрутки в интерфейсе. \"hide\" прячет их, а None их показывает."
# gui.rpy:331
# gui.rpy:333
old "## History"
new "## История"
# gui.rpy:333
# gui.rpy:335
old "## The history screen displays dialogue that the player has already dismissed."
new "## Экран истории показывает диалог, который игрок уже прошёл."
# gui.rpy:335
# gui.rpy:337
old "## The number of blocks of dialogue history Ren'Py will keep."
new "## Количество диалоговых блоков истории, которые Ren'Py будет хранить."
# gui.rpy:338
# gui.rpy:340
old "## The height of a history screen entry, or None to make the height variable at the cost of performance."
new "## Высота доступных записей на экране истории, или None, чтобы задать высоту в зависимости от производительности."
# gui.rpy:342
# gui.rpy:344
old "## The position, width, and alignment of the label giving the name of the speaking character."
new "## Местоположение, ширина и выравнивание заголовка, показывающего имя говорящего персонажа."
# gui.rpy:349
# gui.rpy:351
old "## The position, width, and alignment of the dialogue text."
new "## Местоположение, ширина и выравнивание диалогового текста."
# gui.rpy:356
# gui.rpy:358
old "## NVL-Mode"
new "## Режим NVL"
# gui.rpy:358
# gui.rpy:360
old "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
new "## Экран режима NVL показывает диалог NVL персонажей."
# gui.rpy:360
# gui.rpy:362
old "## The borders of the background of the NVL-mode background window."
new "## Границы фона окна NVL."
# gui.rpy:363
# gui.rpy:365
old "## The maximum number of NVL-mode entries Ren'Py will display. When more entries than this are to be show, the oldest entry will be removed."
new "## Максимальное число показываемых строк в режиме NVL. Когда количество строчек начинает превышать это значение, старые строчки очищаются."
# gui.rpy:367
# gui.rpy:369
old "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
new "## Высота доступных строчек в режиме NVL. Установите на None, чтобы строчки динамически регулировали свою высоту."
# gui.rpy:371
# gui.rpy:373
old "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
new "## Интервал между строчками в режиме NVL, если gui.nvl_height имеет значение None, а также между строчками и меню режима NVL."
# gui.rpy:388
# gui.rpy:390
old "## The position, width, and alignment of nvl_thought text (the text said by the nvl_narrator character.)"
new "## Местоположение, ширина и выравнивание текста nvl_thought (текст от лица персонажа nvl_narrator)."
# gui.rpy:395
# gui.rpy:397
old "## The position of nvl menu_buttons."
new "## Местоположение кнопок меню NVL."
# gui.rpy:399
# gui.rpy:401
old "## Localization"
new "## Локализация"
# gui.rpy:401
# gui.rpy:403
old "## This controls where a line break is permitted. The default is suitable for most languages. A list of available values can be found at https://www.renpy.org/doc/html/style_properties.html#style-property-language"
new "## Эта настройка контролирует доступ к разрыву линий. Стандартная настройка подходит для большинства языков. Список доступных значений можно найти на https://www.renpy.org/doc/html/style_properties.html#style-property-language"
# gui.rpy:409
# gui.rpy:411
old "## Mobile devices"
new "## Мобильные устройства"
# gui.rpy:414
# gui.rpy:416
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## Этот параметр увеличивает размер быстрых кнопок, чтобы сделать их доступнее для нажатия на планшетах и телефонах."
# gui.rpy:420
# gui.rpy:422
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
new "## Это изменяет размеры и интервалы различных элементов GUI, чтобы убедиться, что они будут лучше видны на телефонах."
# gui.rpy:424
# gui.rpy:426
old "## Font sizes."
new "## Размеры шрифтов."
# gui.rpy:432
# gui.rpy:434
old "## Adjust the location of the textbox."
new "## Регулирует местоположение текстового окна."
# gui.rpy:438
# gui.rpy:440
old "## Change the size and spacing of various things."
new "## Изменяет размеры и интервалы различных объектов."
# gui.rpy:451
# gui.rpy:453
old "## File button layout."
new "## Местоположение кнопок слотов."
# gui.rpy:455
# gui.rpy:457
old "## NVL-mode."
new "## Режим NVL."
+380 -145
View File
@@ -34,8 +34,8 @@ translate russian strings:
new "Чтобы построить Android-пакет, пожалуйста, загрузите RAPT, разархивируйте его и поместить в директорию Ren'Py. Затем перезагрузите лаунчер Ren'Py."
# android.rpy:31
old "An x86 Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
new "Чтобы построить Android-пакеты на Windows требуется 32-разрядный инструментарий разработки Java. JDK отличен от JRE, и возможно, у вас есть Java без JDK.\n\nПожалуйста, {a=httpу://www.oracle.com/technetwork/java/javase/downloads/index.html}загрузите и установите JDK{/a}, и перезапустите лаунчер Ren'Py."
old "A Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
new "Чтобы построить Android-пакеты на Windows требуется инструментарий разработки Java 8. JDK отличен от JRE, и возможно, у вас есть Java без JDK.\n\nПожалуйста, {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}загрузите и установите JDK{/a}, и перезапустите лаунчер Ren'Py."
# android.rpy:32
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
@@ -90,112 +90,344 @@ translate russian strings:
new "Собирает Android-пакет, устанавливает его на Android-устройстве, подключённом к компьютеру, а затем запускает приложение на устройстве."
# android.rpy:48
old "Connects to an Android device running ADB in TCP/IP mode."
new "Присоединение к Android-устройству с запущенным Android Debug Bridge в режиме TCP/IP."
# android.rpy:49
old "Disconnects from an Android device running ADB in TCP/IP mode."
new "Отсоединение от Android-устройства с запущенным Android Debug Bridge в режиме TCP/IP."
old "Retrieves the log from the Android device and writes it to a file."
new "Берёт лог с Андроид-устройства и пишет его в файл."
# android.rpy:50
old "Retrieves the log from the Android device and writes it to a file."
new "Берёт лог с Android-устройства и пишет его в файл."
old "Selects the Debug build, which can be accessed through Android Studio. Changing between debug and release builds requires an uninstall from your device."
new "Выбор сборки Отладки, доступной для Android Studio. Смена режимов между отладкой и релизом требует предварительного удаления приложения с вашего устройства."
# android.rpy:244
# android.rpy:51
old "Selects the Release build, which can be uploaded to stores. Changing between debug and release builds requires an uninstall from your device."
new "Выбор сборки Релиза, которую можно загружать в магазины приложений. Смена режимов между отладкой и релизом требует предварительного удаления приложения с вашего устройства."
# android.rpy:245
old "Copying Android files to distributions directory."
new "Копирую файлы Android в директорию дистрибутивов."
# android.rpy:308
# android.rpy:313
old "Android: [project.current.display_name!q]"
new "Android: [project.current.display_name!q]"
# android.rpy:328
# android.rpy:333
old "Emulation:"
new "Эмуляция:"
# android.rpy:337
# android.rpy:342
old "Phone"
new "Телефон"
# android.rpy:341
# android.rpy:346
old "Tablet"
new "Планшет"
# android.rpy:345
# android.rpy:350
old "Television"
new "Телевизор"
# android.rpy:357
# android.rpy:362
old "Build:"
new "Собрать:"
# android.rpy:365
# android.rpy:373
old "Debug"
new "Отладку"
# android.rpy:377
old "Release"
new "Релиз"
# android.rpy:384
old "Install SDK & Create Keys"
new "Установить SDK и создать ключи"
# android.rpy:369
# android.rpy:388
old "Configure"
new "Настроить"
# android.rpy:373
# android.rpy:392
old "Build Package"
new "Собрать Пакет"
# android.rpy:377
# android.rpy:396
old "Build & Install"
new "Собрать и Установить"
# android.rpy:381
# android.rpy:400
old "Build, Install & Launch"
new "Собрать, Установить и Запустить"
# android.rpy:392
# android.rpy:411
old "Other:"
new "Другое:"
# android.rpy:400
old "Remote ADB Connect"
new "Удалённое Соединение с ADB"
# android.rpy:404
old "Remote ADB Disconnect"
new "Удалённое Отсоединение от ADB"
# android.rpy:408
# android.rpy:419
old "Logcat"
new "Logcat"
# android.rpy:441
# android.rpy:452
old "Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"
new "Перед тем как собирать приложения Android, вам нужно загрузить RAPT, инструмент Ren'Py для сбора пакетов Android. Хотите загрузить RAPT сейчас?"
new "Перед упаковкой приложений Android вам нужно загрузить RAPT, инструмент упаковки Ren'Py Android. Желаете загрузить RAPT сейчас?"
# android.rpy:500
old "Remote ADB Address"
new "Удалённый адрес ADB"
# android.rpy:500
old "Please enter the IP address and port number to connect to, in the form \"192.168.1.143:5555\". Consult your device's documentation to determine if it supports remote ADB, and if so, the address and port to use."
new "Пожалуйста, введите IP-адрес и номер порта, чтобы соединиться с устройством, по форме \"192.168.1.143:5555\". Ознакомьтесь с документацией своего устройства, чтобы определить поддерживает ли оно удалённый ADB, и если так, адрес и порт для использования."
# android.rpy:512
old "Invalid remote ADB address"
new "Неверный адрес удалённого ADB"
# android.rpy:512
old "The address must contain one exactly one ':'."
new "Адрес должен содержать один, только один ':'."
# android.rpy:516
old "The host may not contain whitespace."
new "Хост не может содержать пробелы."
# android.rpy:522
old "The port must be a number."
new "Порт должен содержать только цифры."
# android.rpy:548
# android.rpy:505
old "Retrieving logcat information from device."
new "Извлекаю информацию logcat из устройства."
new "Извлекаю информацию logcat с устройства."
# androidstrings.rpy:7
old "{} is not a directory."
new "{} - не папка."
# androidstrings.rpy:8
old "{} does not contain a Ren'Py game."
new "{} не содержит игру Ren'Py."
# androidstrings.rpy:9
old "Run configure before attempting to build the app."
new "Запуск настройки перед попыткой постройки приложения."
# androidstrings.rpy:10
old "Google Play support is enabled, but build.google_play_key is not defined."
new "Поддержка Google Play включена, однако переменная build.google_play_key не определена."
# androidstrings.rpy:11
old "Updating project."
new "Обновляю проект"
# androidstrings.rpy:12
old "Creating assets directory."
new "Создаю директорию ресурсов"
# androidstrings.rpy:13
old "Creating expansion file."
new "Создаю файл-расширение"
# androidstrings.rpy:14
old "Packaging internal data."
new "Пакую внутренние данные"
# androidstrings.rpy:15
old "I'm using Gradle to build the package."
new "Использую Gradle для сборки пакета"
# androidstrings.rpy:16
old "Uploading expansion file."
new "Загружаю файл-расширение"
# androidstrings.rpy:17
old "The build seems to have failed."
new "Ой, ошибка со сборкой приключилась..."
# androidstrings.rpy:18
old "Launching app."
new "Запускаю приложение"
# androidstrings.rpy:19
old "The build seems to have succeeded."
new "Кажется, сборка прошла успешно!"
# androidstrings.rpy:20
old "What is the full name of your application? This name will appear in the list of installed applications."
new "Каким будет полное имя вашего приложения? Это имя будет представлено в списке установленных приложений."
# androidstrings.rpy:21
old "What is the short name of your application? This name will be used in the launcher, and for application shortcuts."
new "Каким будет короткое имя вашего приложения? Это имя будет использоваться в лаунчере, а также ярлыках приложения."
# androidstrings.rpy:22
old "What is the name of the package?\n\nThis is usually of the form com.domain.program or com.domain.email.program. It may only contain ASCII letters and dots. It must contain at least one dot."
new "Каким будет имя собранного пакета?\n\nОбычно оно имеет форму com.domain.program или com.domain.email.program. Имя может содержать только символы ASCII и точки. Также оно должно содержать хотя бы одну точку."
# androidstrings.rpy:23
old "The package name may not be empty."
new "Имя пакета не может быть пустым."
# androidstrings.rpy:24
old "The package name may not contain spaces."
new "В имени пакета не должно быть пробелов."
# androidstrings.rpy:25
old "The package name must contain at least one dot."
new "Имя пакета должно содержать как минимум одну точку."
# androidstrings.rpy:26
old "The package name may not contain two dots in a row, or begin or end with a dot."
new "Имя пакета не должно содержать две и более точек подряд, или начинаться и заканчиваться с точки."
# androidstrings.rpy:27
old "Each part of the package name must start with a letter, and contain only letters, numbers, and underscores."
new "Каждая часть имя пакета должна начинаться с буквы и содержать только английские буквы, цифры и подчёркивания."
# androidstrings.rpy:28
old "{} is a Java keyword, and can't be used as part of a package name."
new "{} - оператор Java, его нельзя использовать в имени пакета."
# androidstrings.rpy:29
old "What is the application's version?\n\nThis should be the human-readable version that you would present to a person. It must contain only numbers and dots."
new "Какой будет версия приложения?\n\nВерсия приложения представлена для человека и независима от config.version. Она может содержать только цифры и точки."
# androidstrings.rpy:30
old "The version number must contain only numbers and dots."
new "Номер версии должен содержать только цифры и точки."
# androidstrings.rpy:31
old "What is the version code?\n\nThis must be a positive integer number, and the value should increase between versions."
new "Каким будет код версии?\n\nЭто должно быть положительное целое число, и его значение должно увеличиваться с каждой версией."
# androidstrings.rpy:32
old "The numeric version must contain only numbers."
new "Целое версии должно содержать только цифры."
# androidstrings.rpy:33
old "How would you like your application to be displayed?"
new "В какой ориентации экрана вы хотите отображать ваше приложение?"
# androidstrings.rpy:34
old "In landscape orientation."
new "В альбомном виде."
# androidstrings.rpy:35
old "In portrait orientation."
new "В портретном виде."
# androidstrings.rpy:36
old "In the user's preferred orientation."
new "По желанию пользователя."
# androidstrings.rpy:37
old "Which app store would you like to support in-app purchasing through?"
new "Через какой магазин приложений вы желаете поддерживать микротранзакции внутри приложения?"
# androidstrings.rpy:38
old "Google Play."
new "Google Play."
# androidstrings.rpy:39
old "Amazon App Store."
new "Магазин приложений Amazon."
# androidstrings.rpy:40
old "Both, in one app."
new "Оба, в одном приложении."
# androidstrings.rpy:41
old "Neither."
new "Отключить."
# androidstrings.rpy:42
old "Would you like to create an expansion APK?"
new "Желаете создать пакет в формате APK+кэш?"
# androidstrings.rpy:43
old "No. Size limit of 100 MB on Google Play, but can be distributed through other stores and sideloaded."
new "Нет. Ограничение по размеру в Google Play - 100 МБ, но может распространяться через другие магазины или локально."
# androidstrings.rpy:44
old "Yes. 2 GB size limit, but won't work outside of Google Play. (Read the documentation to get this to work.)"
new "Да. Ограничение в 2 ГБ, но не будет работать вне среды Google Play. (Ознакомьтесь с {a=https://renpy.org/doc/html/android.html?highlight=apk#google-play-expansion-apks}документацией{/a})"
# androidstrings.rpy:45
old "Do you want to allow the app to access the Internet?"
new "Желаете разрешить вашему приложению доступ в Интернет?"
# androidstrings.rpy:46
old "Do you want to automatically update the generated project?"
new "Желаете автоматически обновлять сгенерированный проект?"
# androidstrings.rpy:47
old "Yes. This is the best choice for most projects."
new "Да. Это лучшее решение для большинства проектов."
# androidstrings.rpy:48
old "No. This may require manual updates when Ren'Py or the project configuration changes."
new "Нет. Это решение может потребовать ручных обновлений при изменении Ren'Py или конфигурации проекта."
# androidstrings.rpy:49
old "Unknown configuration variable: {}"
new "Неизвестная конфигурационная переменная: {}"
# androidstrings.rpy:50
old "I'm compiling a short test program, to see if you have a working JDK on your system."
new "Сейчас я компилирую небольшую тестовую программу, чтобы убедиться, что в вашей системе есть работающий JDK."
# androidstrings.rpy:51
old "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Without a working JDK, I can't continue."
new "Я не смогла воспользоваться javac для компиляции тестового файла. Если у вас не установлен Инструментарий Разработки Java, пожалуйста, загрузите его с:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nJDK отличается от JRE, так что есть вероятность, что у вас установлена Java без JDK. Без функционирующего JDK я не могу продолжить."
# androidstrings.rpy:52
old "The version of Java on your computer does not appear to be JDK 8, which is the only version supported by the Android SDK. If you need to install JDK 8, you can download it from:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nYou can also set the JAVA_HOME environment variabe to use a different version of Java."
new "Судя по всему, версия Java на вашем компьютере - не JDK 8, единственная версия, поддерживаемая Android SDK. Если вам нужно установить JDK 8, вы можете скачать его с:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nТакже вы можете изменить переменную окружения JAVA_HOME, чтобы воспользоваться другой версией Java."
# androidstrings.rpy:53
old "The JDK is present and working. Good!"
new "JDK найден и работает. Отлично!"
# androidstrings.rpy:54
old "The Android SDK has already been unpacked."
new "Android SDK уже распакован."
# androidstrings.rpy:55
old "Do you accept the Android SDK Terms and Conditions?"
new "Вы принимаете условияя и положения пользования Android SDK?"
# androidstrings.rpy:56
old "I'm downloading the Android SDK. This might take a while."
new "Загружаю Android SDK. Это может занять некоторое время."
# androidstrings.rpy:57
old "I'm extracting the Android SDK."
new "Извлекаю Android SDK."
# androidstrings.rpy:58
old "I've finished unpacking the Android SDK."
new "Извлечение Android SDK завершено."
# androidstrings.rpy:59
old "I'm about to download and install the required Android packages. This might take a while."
new "Начинаю загрузку и установку необходимых пакетов Android. Это может занять время."
# androidstrings.rpy:60
old "I was unable to accept the Android licenses."
new "Внимание, не удалось принять соглашения Android!"
# androidstrings.rpy:61
old "I was unable to install the required Android packages."
new "Установка необходимых пакетов Android не удалась!"
# androidstrings.rpy:62
old "I've finished installing the required Android packages."
new "Заканчиваю установку необходимых пакетов Android."
# androidstrings.rpy:63
old "You set the keystore yourself, so I'll assume it's how you want it."
new "Вы сами установили хранилище ключей, так что посмею предположить, что оно настроено так, как вы хотите."
# androidstrings.rpy:64
old "You've already created an Android keystore, so I won't create a new one for you."
new "Вы уже создали хранилище ключей Android, так что я не буду создавать для вас новое."
# androidstrings.rpy:65
old "I can create an application signing key for you. Signing an application with this key allows it to be placed in the Android Market and other app stores.\n\nDo you want to create a key?"
new "Я могу создать для вас ключ для подписи приложения. Подпись приложения этим ключом позволит разместить его в Android Market и других магазинах приложений.\n\nХотите создать ключ?"
# androidstrings.rpy:66
old "I will create the key in the android.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\n\\You also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of android.keystore, and keep it in a safe place?"
new "Я создам ключ в файле android.keystore.\n\nВам нужно сохранить этот файл. Если вы его потеряете, то не сможете обновлять ваше приложение. n.\n\n\\Также вам нужно держать ваш ключ в безопасность. Если злоумышленникам удастся получить его, они потенциально могут создать вредоносную версию приложения и красть данные ваших пользователей.\n\nБудете ли вы хранить android.keystore и держать его в надёжном месте?"
# androidstrings.rpy:67
old "Please enter your name or the name of your organization."
new "Пожалуйста, введите ваше имя или имя вашей организации."
# androidstrings.rpy:68
old "Could not create android.keystore. Is keytool in your path?"
new "Не могу создать android.keystore. Хранилище ключей расположено в вашем пути файлов?"
# androidstrings.rpy:69
old "I've finished creating android.keystore. Please back it up, and keep it in a safe place."
new "Создание android.keystore завершено. Пожалуйста, сохраните его и держите в надёжном месте."
# androidstrings.rpy:70
old "It looks like you're ready to start packaging games."
new "Похоже, вы готовы собирать игры!"
# choose_directory.rpy:87
old "Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."
@@ -569,75 +801,75 @@ translate russian strings:
old "Please click on the color scheme you wish to use, then click Continue. These colors can be changed and customized later."
new "Пожалуйста, кликните на цветовую схему, которую вы хотите использовать, а затем кликните Продолжить. Эти цвета можно изменить позже."
# gui7.rpy:310
# gui7.rpy:311
old "{b}Warning{/b}\nContinuing will overwrite customized bar, button, save slot, scrollbar, and slider images.\n\nWhat would you like to do?"
new "{b}Внимание{/b}\nПродолжив, вы перепишете настроенные полосы, кнопки, слоты сохранения, полосы прокрутки и ползунки.\n\nЧто вы хотите сделать?"
# gui7.rpy:310
# gui7.rpy:311
old "Choose new colors, then regenerate image files."
new "Выбрать новые цвета, затем воссоздать файлы изображений."
# gui7.rpy:310
# gui7.rpy:311
old "Regenerate the image files using the colors in gui.rpy."
new "Воссоздать файлы изображений используя цвета из gui.rpy."
# gui7.rpy:330
# gui7.rpy:331
old "PROJECT NAME"
new "ИМЯ ПРОЕКТА"
# gui7.rpy:330
# gui7.rpy:331
old "Please enter the name of your project:"
new "Пожалуйста, введите имя проекта:"
# gui7.rpy:338
# gui7.rpy:339
old "The project name may not be empty."
new "Имя проекта не должно быть пустым."
# gui7.rpy:343
# gui7.rpy:344
old "[project_name!q] already exists. Please choose a different project name."
new "[project_name!q] уже существует. Выберите другое имя проекта."
# gui7.rpy:346
# gui7.rpy:347
old "[project_dir!q] already exists. Please choose a different project name."
new "[project_dir!q] уже существует. Выберите другое имя проекта."
# gui7.rpy:357
# gui7.rpy:358
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
new "Какое разрешение будет использовать ваш проект? Хотя Ren'Py может масштабировать окно, это будет целевой размер окна, по отношению к которому будут вырисовываться ресурсы, и на котором они будут наиболее чёткие.\n\nСтандартный 1280x720 — резонный компромисс."
# gui7.rpy:357
# gui7.rpy:358
old "Custom. The GUI is optimized for a 16:9 aspect ratio."
new "Своё. GUI оптимизирован под соотношение сторон 16:9."
# gui7.rpy:372
# gui7.rpy:373
old "WIDTH"
new "ШИРИНА"
# gui7.rpy:372
# gui7.rpy:373
old "Please enter the width of your game, in pixels."
new "Пожалуйста, введите ширину вашей игры в пикселях."
# gui7.rpy:377
# gui7.rpy:378
old "The width must be a number."
new "Ширина должна быть цифрой."
# gui7.rpy:379
# gui7.rpy:380
old "HEIGHT"
new "ВЫСОТА"
# gui7.rpy:379
# gui7.rpy:380
old "Please enter the height of your game, in pixels."
new "Пожалуйста, введите высоту вашей игры в пикселях."
# gui7.rpy:384
# gui7.rpy:385
old "The height must be a number."
new "Высота должна быть цифрой."
# gui7.rpy:426
# gui7.rpy:427
old "Creating the new project..."
new "Создаю новый проект..."
# gui7.rpy:428
# gui7.rpy:429
old "Updating the project..."
new "Обновляю проект..."
@@ -821,7 +1053,7 @@ translate russian strings:
old "Please {a=https://itch.io/game/new}create your project{/a}, then add a line like \n{vspace=5}define build.itch_project = \"user-name/game-name\"\n{vspace=5} to options.rpy."
new "Пожалуйста, {a=https://itch.io/game/new}создайте ваш проект{/a}, затем добавьте строку типа\n{vspace=5}define build.itch_project = \"user-name/game-name\"\n{vspace=5} в options.rpy."
# mobilebuild.rpy:109
# mobilebuild.rpy:110
old "{a=%s}%s{/a}"
new "{a=%s}%s{/a}"
@@ -829,7 +1061,7 @@ translate russian strings:
old "Navigate: [project.current.display_name!q]"
new "Навигация: [project.current.display_name!q]"
# navigation.rpy:177
# navigation.rpy:178
old "Order: "
new "Порядок: "
@@ -933,91 +1165,87 @@ translate russian strings:
old "Please select a template to use for your new project. The template sets the default font and the user interface language. If your language is not supported, choose 'english'."
new "Пожалуйста, выберите образец, на котором основывать ваш проект. Образец задаёт шрифт и язык по умолчанию для интерфейса. Если ваш язык не поддерживается, выберите 'english'."
# preferences.rpy:72
# preferences.rpy:73
old "Launcher Preferences"
new "Настройки лаунчера"
# preferences.rpy:93
# preferences.rpy:94
old "Projects Directory:"
new "Папка проектов:"
# preferences.rpy:100
# preferences.rpy:101
old "[persistent.projects_directory!q]"
new "[persistent.projects_directory!q]"
# preferences.rpy:102
# preferences.rpy:103
old "Projects directory: [text]"
new "Папка проектов: [text]"
# preferences.rpy:104
# preferences.rpy:105
old "Not Set"
new "Не задано"
# preferences.rpy:119
# preferences.rpy:120
old "Text Editor:"
new "Текстовый редактор:"
# preferences.rpy:125
# preferences.rpy:126
old "Text editor: [text]"
new "Текстовый редактор: [text]"
# preferences.rpy:141
old "Update Channel:"
new "Канал обновлений:"
# preferences.rpy:161
# preferences.rpy:145
old "Navigation Options:"
new "Опции навигации:"
# preferences.rpy:165
# preferences.rpy:149
old "Include private names"
new "Включать приватные имена"
# preferences.rpy:166
# preferences.rpy:150
old "Include library names"
new "Включать имена библиотек"
# preferences.rpy:176
# preferences.rpy:160
old "Launcher Options:"
new "Опции лаунчера:"
# preferences.rpy:180
# preferences.rpy:164
old "Hardware rendering"
new "Аппаратный рендеринг"
# preferences.rpy:181
# preferences.rpy:165
old "Show edit file section"
new "Показывать секцию редактирования"
# preferences.rpy:182
# preferences.rpy:166
old "Large fonts"
new "Большие шрифты"
# preferences.rpy:185
# preferences.rpy:169
old "Console output"
new "Вывод на консоль"
# preferences.rpy:187
# preferences.rpy:173
old "Force new tutorial"
new "Новое обучение"
# preferences.rpy:189
# preferences.rpy:177
old "Legacy options"
new "Включить старые темы"
# preferences.rpy:192
# preferences.rpy:180
old "Show templates"
new "Показывать образцы"
# preferences.rpy:194
# preferences.rpy:182
old "Sponsor message"
new "Сообщение спонсорам"
# preferences.rpy:214
# preferences.rpy:202
old "Open launcher project"
new "Открыть проект лаунчера"
# preferences.rpy:228
# preferences.rpy:216
old "Language:"
new "Язык:"
@@ -1037,35 +1265,35 @@ translate russian strings:
old "Have you backed up your projects recently?"
new "Давно сохраняли свои проекты?"
# project.rpy:280
# project.rpy:281
old "Launching the project failed."
new "Запуск проекта провален."
# project.rpy:280
# project.rpy:281
old "Please ensure that your project launches normally before running this command."
new "Пожалуйста, убедитесь, что ваш проект нормально запускается перед использованием этой команды."
# project.rpy:296
# project.rpy:297
old "Ren'Py is scanning the project..."
new "Ren'Py сканирует проект..."
# project.rpy:725
# project.rpy:729
old "Launching"
new "Запускаю"
# project.rpy:759
# project.rpy:763
old "PROJECTS DIRECTORY"
new "ДИРЕКТОРИЯ ПРОЕКТОВ"
# project.rpy:759
# project.rpy:763
old "Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
new "Пожалуйста, выберите директорию проектов, используя выборщик директорий.\n{b}Он мог появиться позади этого окна.{/b}"
# project.rpy:759
# project.rpy:763
old "This launcher will scan for projects in this directory, will create new projects in this directory, and will place built projects into this directory."
new "Лаунчер будет искать проекты в этой директории, создавать новые проекты в этой директории, и размещать построенные проекты в этой директории."
# project.rpy:764
# project.rpy:768
old "Ren'Py has set the projects directory to:"
new "Ren'Py установила директорию проектов на:"
@@ -1173,95 +1401,102 @@ translate russian strings:
old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[persistent.dialogue_format] in the base directory."
new "Ren'Py завершила извлечение диалога. Извлечённый диалог можно найти в файле dialogue.[persistent.dialogue_format] в директории проекта."
# updater.rpy:75
old "Select Update Channel"
new "Выберите канал обновлений"
# updater.rpy:86
old "The update channel controls the version of Ren'Py the updater will download. Please select an update channel:"
new "Канал обновлений выбирает, какую версию Ren'Py скачает программа для обновления. Выберите канал:"
# updater.rpy:91
old "Release"
new "Релиз"
# updater.rpy:97
# updater.rpy:63
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
new "{b}Рекомендуется.{/b} Эта версия Ren'Py должна использоваться для всех новых игр."
# updater.rpy:102
# updater.rpy:65
old "Prerelease"
new "Пререлиз"
# updater.rpy:108
# updater.rpy:66
old "A preview of the next version of Ren'Py that can be used for testing and taking advantage of new features, but not for final releases of games."
new "Публичный анонс следующей версии Ren'Py, который можно использовать для тестирования, в том числе новых возможностей Ren'Py, но не для финальных релизов игр."
# updater.rpy:114
# updater.rpy:68
old "Experimental"
new "Экспериментальный"
# updater.rpy:120
# updater.rpy:69
old "Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer."
new "Экспериментальные версии Ren'Py. Не выбирайте этот канал, если вас не просил об этом разработчик Ren'Py."
# updater.rpy:126
# updater.rpy:71
old "Nightly"
new "Ночной"
# updater.rpy:132
# updater.rpy:72
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
new "Развитие Ren'Py на краю горизонта событий. Здесь можно найти новейшие возможности Ren'Py или всё может просто не запуститься."
# updater.rpy:152
# updater.rpy:90
old "Select Update Channel"
new "Выберите канал обновлений"
# updater.rpy:101
old "The update channel controls the version of Ren'Py the updater will download."
new "Канал обновлений отвечает за версию Ren'Py, скачиваемую через обновление."
# updater.rpy:110
old "• This version is installed and up-to-date."
new "• На данный момент установлена эта версия."
# updater.rpy:118
old "%B %d, %Y"
new "%B %d, %Y"
# updater.rpy:140
old "An error has occured:"
new "Возникла ошибка:"
# updater.rpy:154
# updater.rpy:142
old "Checking for updates."
new "Проверка обновлений."
# updater.rpy:156
# updater.rpy:144
old "Ren'Py is up to date."
new "Ren'Py обновлена."
# updater.rpy:158
# updater.rpy:146
old "[u.version] is now available. Do you want to install it?"
new "[u.version] доступна. Вы хотите её установить?"
# updater.rpy:160
# updater.rpy:148
old "Preparing to download the update."
new "Подготовка к обновлению."
# updater.rpy:162
# updater.rpy:150
old "Downloading the update."
new "Загрузка обновления."
# updater.rpy:164
# updater.rpy:152
old "Unpacking the update."
new "Распаковка обновления."
# updater.rpy:166
# updater.rpy:154
old "Finishing up."
new "Завершаю..."
# updater.rpy:168
# updater.rpy:156
old "The update has been installed. Ren'Py will restart."
new "Обновление было установлено. Ren'Py будет перезапущена."
# updater.rpy:170
# updater.rpy:158
old "The update has been installed."
new "Обновление было установлено."
# updater.rpy:172
# updater.rpy:160
old "The update was cancelled."
new "Обновление было отменено."
# updater.rpy:189
# updater.rpy:177
old "Ren'Py Update"
new "Обновление Ren'Py"
# updater.rpy:195
# updater.rpy:183
old "Proceed"
new "Продолжить"
# updater.rpy:188
old "Fetching the list of update channels"
new "Запрашиваю список каналов обновления"
-27
View File
@@ -1,27 +0,0 @@
translate russian strings:
# _layout/classic_joystick_preferences.rpym:94
old "Joystick Mapping"
new "Раскладка джойстика"
# _layout/classic_load_save.rpym:138
old "Empty Slot."
new "Пустой слот"
# _layout/classic_load_save.rpym:170
old "a"
new "а"
# _layout/classic_load_save.rpym:179
old "q"
new "б"
# _compat/gamemenu.rpym:355
old "Previous"
new "Назад"
# _compat/gamemenu.rpym:362
old "Next"
new "Далее"
+2 -2
View File
@@ -205,7 +205,7 @@ translate russian strings:
old "## Reserve space for the navigation section."
new "## Резервирует пространство для навигации."
# screens.rpy:471
# screens.rpy:473
old "Return"
new "Вернуться"
@@ -297,7 +297,7 @@ translate russian strings:
old "{#auto_page}A"
new "{#auto_page}А"
# screens.rpy:667
# screens.rpy:669
old "{#quick_page}Q"
new "{#quick_page}Б"
+1 -1
View File
@@ -117,7 +117,7 @@ screen update_channel(channels):
$ date = _strftime(__("%B %d, %Y"), time.localtime(c["timestamp"]))
text "[date] • [c[pretty_version]] [current]" style "l_small_text"
text "[date] • [c[pretty_version]] [current!t]" style "l_small_text"
add HALF_SPACER
+2 -2
View File
@@ -41,12 +41,12 @@ except ImportError:
vc_version = 0
# The tuple giving the version number.
version_tuple = (7, 1, 0, vc_version)
version_tuple = (7, 2, 0, vc_version)
# The name of this version.
version_name = "On the road again."
# A string giving the version number only (7.0.1.123).
# A string giving the version number only (8.0.1.123).
version_only = ".".join(str(i) for i in version_tuple)
# A verbose string giving the version.
+13 -2
View File
@@ -1486,14 +1486,21 @@ class Menu(Node):
'items',
'set',
'with_',
'has_caption',
]
def __init__(self, loc, items, set, with_): # @ReservedAssignment
def __new__(cls, *args, **kwargs):
self = Node.__new__(cls)
self.has_caption = False
return self
def __init__(self, loc, items, set, with_, has_caption): # @ReservedAssignment
super(Menu, self).__init__(loc)
self.items = items
self.set = set
self.with_ = with_
self.has_caption = has_caption
def diff_info(self):
return (Menu,)
@@ -1525,7 +1532,11 @@ class Menu(Node):
def execute(self):
next_node(self.next)
statement_name("menu")
if self.has_caption:
statement_name("menu-with-caption")
else:
statement_name("menu")
choices = [ ]
narration = [ ]
+9 -3
View File
@@ -540,8 +540,12 @@ def display_say(
if not isinstance(what_text, renpy.text.text.Text): # @UndefinedVariable
raise Exception("The say screen (or show_function) must return a Text object.")
if what_ctc and ctc_position == "nestled":
what_text.set_ctc(what_ctc)
if what_ctc:
if ctc_position == "nestled":
what_text.set_ctc(what_ctc)
elif ctc_position == "nestled-close":
what_text.set_ctc([ u"\ufeff", what_ctc])
# Update the properties of the what_text widget.
what_text.start = start
@@ -1268,7 +1272,9 @@ def Character(name=NotSet, kind=None, **properties):
`ctc_position`
Controls the location of the click-to-continue indicator. If
``"nestled"``, the indicator is displayed as part of the text
being shown, immediately after the last character. If ``"fixed"``,
being shown, immediately after the last character. ``"nestled-close"`` is
similar, except a break is not allowed between the text and the CTC
indicator. If ``"fixed"``,
the indicator is added to the screen, and its position is
controlled by the position style properties.
+2 -2
View File
@@ -29,10 +29,10 @@ init -1200 python:
config.window = None
# A list of statements that cause the window to be auto-shown.
config.window_auto_show = [ "say" ]
config.window_auto_show = [ "say", "menu-with-caption" ]
# A list of statements that cause the window to be auto-hidden.
config.window_auto_hide = [ "scene", "call screen" ]
config.window_auto_hide = [ "scene", "call screen", "menu" ]
_window_auto = False
+61 -19
View File
@@ -24,10 +24,36 @@ init -1600 python:
##########################################################################
# Functions that set variables or fields.
__FieldNotFound = object()
def __get_field(obj, name, kind):
if not name:
return obj
rv = obj
for i in name.split("."):
rv = getattr(rv, i, __FieldNotFound)
if rv is __FieldNotFound:
raise NameError("The {} {} does not exist.".format(kind, name))
return rv
def __set_field(obj, name, value, kind):
fields, _, attr = name.rpartition(".")
try:
obj = __get_field(obj, fields, kind)
setattr(obj, attr, value)
except:
raise NameError("The {} {} does not exist.".format(kind, name))
@renpy.pure
class SetField(Action, FieldEquality):
"""
:doc: data_action
:args: (object, field, value)
Causes the a field on an object to be set to a given value.
`object` is the object, `field` is a string giving the name of the
@@ -37,27 +63,34 @@ init -1600 python:
identity_fields = [ "object" ]
equality_fields = [ "field", "value" ]
def __init__(self, object, field, value):
kind = "field"
def __init__(self, object, field, value, kind="field"):
self.object = object
self.field = field
self.value = value
self.kind = kind
def __call__(self):
setattr(self.object, self.field, self.value)
__set_field(self.object, self.field, self.value, self.kind)
renpy.restart_interaction()
def get_selected(self):
return getattr(self.object, self.field) == self.value
return __get_field(self.object, self.field, self.kind) == self.value
@renpy.pure
def SetVariable(name, value):
"""
:doc: data_action
:doc: data_action
Causes the variable with `name` to be set to `value`.
"""
Causes the variable with `name` to be set to `value`.
return SetField(store, name, value)
The `name` argument must be a string, and can be a simple name like "strength", or
one with dots separating the variable from fields, like "hero.strength"
or "persistent.show_cutscenes".
"""
return SetField(store, name, value, kind="variable")
@renpy.pure
class SetDict(Action, FieldEquality):
@@ -129,6 +162,7 @@ init -1600 python:
class ToggleField(Action, FieldEquality):
"""
:doc: data_action
:args: (object, field, true_value=None, false_value=None)
Toggles `field` on `object`. Toggling means to invert the boolean
value of that field when the action is performed.
@@ -142,14 +176,17 @@ init -1600 python:
identity_fields = [ "object"]
equality_fields = [ "field", "true_value", "false_value" ]
def __init__(self, object, field, true_value=None, false_value=None):
kind = "field"
def __init__(self, object, field, true_value=None, false_value=None, kind="field"):
self.object = object
self.field = field
self.true_value = true_value
self.false_value = false_value
self.kind = kind
def __call__(self):
value = getattr(self.object, self.field)
value = __get_field(self.object, self.field, self.kind)
if self.true_value is not None:
value = (value == self.true_value)
@@ -162,11 +199,11 @@ init -1600 python:
else:
value = self.false_value
setattr(self.object, self.field, value)
__set_field(self.object, self.field, value, self.kind)
renpy.restart_interaction()
def get_selected(self):
rv = getattr(self.object, self.field)
rv = __get_field(self.object, self.field, self.kind)
if self.true_value is not None:
rv = (rv == self.true_value)
@@ -177,17 +214,22 @@ init -1600 python:
@renpy.pure
def ToggleVariable(variable, true_value=None, false_value=None):
"""
:doc: data_action
:doc: data_action
Toggles `variable`.
Toggles `variable`.
`true_value`
If not None, then this is the true value we use.
`false_value`
If not None, then this is the false value we use.
"""
The `variable` argument must be a string, and can be a simple name like "strength", or
one with dots separating the variable from fields, like "hero.strength"
or "persistent.show_cutscenes".
return ToggleField(store, variable, true_value=true_value, false_value=false_value)
`true_value`
If not None, then this is the true value we use.
`false_value`
If not None, then this is the false value we use.
"""
return ToggleField(store, variable, true_value=true_value, false_value=false_value, kind="variable")
@renpy.pure
+1
View File
@@ -883,6 +883,7 @@ init -1500 python:
def __call__(self):
renpy.take_screenshot()
renpy.restart_interaction()
@renpy.pure
def QuickSave(message=_("Quick save complete."), newest=False):
+5
View File
@@ -175,6 +175,11 @@ init -1900 python:
config.reject_relative = False
config.say_attributes_use_side_image = False
if version <= (7, 1, 0):
config.menu_showed_window = True
config.window_auto_show = [ "say" ]
config.window_auto_hide = [ "scene", "call screen" ]
# The version of Ren'Py this script is intended for, or
# None if it's intended for the current version.
config.script_version = None
+8 -4
View File
@@ -330,7 +330,7 @@ init -1500 python:
break
self.tlid = tlid
self.tlid = renpy.game.context().translate_identifier
if self.filename:
self.sustain = False
@@ -416,7 +416,14 @@ init -1500 python hide:
renpy.sound.stop(channel="voice")
return
if _preferences.voice_sustain and not _voice.sustain:
_voice.sustain = "preference"
if _voice.play:
_voice.sustain = False
vi = VoiceInfo()
if not _voice.sustain:
_voice.info = vi
@@ -452,9 +459,6 @@ init -1500 python hide:
_voice.sustain = False
_voice.tag = None
if _preferences.voice_sustain and not _voice.sustain:
_voice.sustain = "preference"
config.start_interact_callbacks.append(voice_interact)
config.fast_skipping_callbacks.append(voice_interact)
config.say_sustain_callbacks.append(voice_sustain)
+3
View File
@@ -903,6 +903,9 @@ side_image_prefix_tag = 'side'
# Do the say attributes of a hidden side image use the side image tag?
say_attributes_use_side_image = True
# Does the menu statement show a window by itself, when there is no caption?
menu_showed_window = False
del os
del collections
+42
View File
@@ -138,6 +138,12 @@ class Drag(renpy.display.core.Displayable, renpy.python.RevertableObject):
and clicked. If the callback returns a value other than None,
that value is returned as the result of the interaction.
`alternate`
An action that is run when the Drag is right-clicked (on the
desktop) or long-pressed without moving (on mobile). It may
be necessary to increase :var:`config.longpress_duration` if
this triggers to early on mobile platforms.
`drag_handle`
A (x, y, width, height) tuple, giving the position of the drag
handle within the child. In this tuple, integers are considered
@@ -179,6 +185,10 @@ class Drag(renpy.display.core.Displayable, renpy.python.RevertableObject):
old_position = None
drag_offscreen = False
activated = None
alternate = None
# The time a click started, or None if a click is not in progress.
click_time = None
def __init__(self,
d=None,
@@ -197,6 +207,7 @@ class Drag(renpy.display.core.Displayable, renpy.python.RevertableObject):
drag_offscreen=False,
mouse_drop=False,
activated=None,
alternate=None,
style="drag",
**properties):
@@ -214,6 +225,7 @@ class Drag(renpy.display.core.Displayable, renpy.python.RevertableObject):
self.hovered = hovered
self.unhovered = unhovered
self.activated = activated
self.alternate = alternate
self.drag_offscreen = drag_offscreen
# if mouse_drop_check is True (default False), the drop will not
# use default major overlap between droppables but instead
@@ -294,6 +306,7 @@ class Drag(renpy.display.core.Displayable, renpy.python.RevertableObject):
self.drag_moved = replaces.drag_moved
self.last_drop = replaces.last_drop
self.mouse_drop = replaces.mouse_drop
self.click_time = replaces.click_time
if d is not None:
self.add(d)
@@ -526,6 +539,10 @@ class Drag(renpy.display.core.Displayable, renpy.python.RevertableObject):
grabbed = (renpy.display.focus.get_grab() is self)
if (self.alternate is not None) and renpy.display.touch and map_event(ev, "drag_activate"):
self.click_time = st
renpy.game.interface.timeout(renpy.config.longpress_duration)
if grabbed:
joined_offsets = self.drag_joined(self)
joined = [ i[0] for i in joined_offsets ]
@@ -559,9 +576,30 @@ class Drag(renpy.display.core.Displayable, renpy.python.RevertableObject):
grabbed = True
elif (self.alternate is not None) and map_event(ev, "button_alternate"):
rv = run(self.alternate)
if rv is not None:
return rv
raise renpy.display.core.IgnoreEvent()
if ((self.alternate is not None) and
renpy.display.touch and
(self.click_time is not None) and
((st - self.click_time) > renpy.config.longpress_duration)):
self.click_time = None
rv = run(self.alternate)
if rv is not None:
return rv
# Handle clicking on droppables.
if not grabbed:
if self.clicked is not None and map_event(ev, "drag_deactivate"):
self.click_time = None
rv = run(self.clicked)
if rv is not None:
return rv
@@ -577,6 +615,7 @@ class Drag(renpy.display.core.Displayable, renpy.python.RevertableObject):
if not self.drag_moved and (self.start_x != par_x or self.start_y != par_y):
self.drag_moved = True
self.click_time = None
# We may not be in the drag_joined group.
self.set_style_prefix("idle_", True)
@@ -633,6 +672,9 @@ class Drag(renpy.display.core.Displayable, renpy.python.RevertableObject):
self.last_drop = drop
if map_event(ev, 'drag_deactivate'):
self.click_time = None
renpy.display.focus.set_grab(None)
if drop is not None:
+1
View File
@@ -40,6 +40,7 @@ def get_null():
if null is None:
null = renpy.display.layout.Null()
renpy.display.motion.null = null
return null
+7 -4
View File
@@ -207,10 +207,13 @@ def report_exception(e, editor=True):
print(safe_utf8(e), file=full)
# Write to stdout/stderr.
sys.stdout.write("\n")
sys.stdout.write(full.getvalue())
sys.stdout.write("\n")
sys.stdout.write(simple.getvalue())
try:
sys.stdout.write("\n")
sys.stdout.write(full.getvalue())
sys.stdout.write("\n")
sys.stdout.write(simple.getvalue())
except:
pass
print(file=full)
try:
+2 -1
View File
@@ -1068,7 +1068,8 @@ def display_menu(items,
choice_chosen_button_style=choice_chosen_button_style,
**kwargs)
renpy.exports.shown_window()
if renpy.config.menu_showed_window:
renpy.exports.shown_window()
# Log the chosen choice.
for label, val in items:
+7 -3
View File
@@ -1574,7 +1574,7 @@ def parse_menu(stmtl, loc):
if has_say:
rv.append(ast.Say(loc, say_who, say_what, None, interact=False))
rv.append(ast.Menu(loc, items, set, with_))
rv.append(ast.Menu(loc, items, set, with_, has_say or has_caption))
return rv
@@ -2769,11 +2769,15 @@ def report_parse_errors():
except:
pass
print()
print(file=f)
print(i)
print(i, file=f)
try:
print()
print(i)
except:
pass
print(file=f)
print("Ren'Py Version:", renpy.version, file=f)
print(time.ctime(), file=f)
+2
View File
@@ -273,6 +273,8 @@ class Script(object):
self.initcode = [ (prio, code) for prio, index, code in initcode ]
self.translator.chain_translates()
def load_module(self, name):
files = [ (fn, dir) for fn, dir in self.module_files if fn == name ] # @ReservedAssignment
+2
View File
@@ -211,6 +211,7 @@ add(text_text_properties)
DisplayableParser("label", renpy.ui._label, "label", 0, scope=True)
Positional("label")
Keyword("text_style")
Keyword("substitute")
add(window_properties)
add(text_position_properties)
add(text_text_properties)
@@ -467,6 +468,7 @@ Keyword("hovered")
Keyword("unhovered")
Keyword("focus_mask")
Keyword("mouse_drop")
Keyword("alternate")
Style("child")
DisplayableParser("draggroup", renpy.display.dragdrop.DragGroup, None, many, replaces=True)
+34 -5
View File
@@ -38,6 +38,25 @@ WHITE = (255, 255, 255, 255)
BLACK = (0, 0, 0, 255)
def is_zerowidth(char):
if char == 0x200b: # Zero-width space.
return True
if char == 0x200c: # Zero-width non-joiner.
return True
if char == 0x200d: # Zero-width joiner.
return True
if char == 0x2060: # Word joiner.
return True
if char == 0xfeff: # Zero width non-breaking space.
return True
return False
class ImageFont(object):
# ImageFonts are expected to have the following fields defined by
@@ -69,12 +88,18 @@ class ImageFont(object):
g.ascent = self.baseline
g.line_spacing = self.height
width = self.width.get(c, None)
if width is None:
raise Exception("Character {0!r} not found in image-based font.".format(c))
if is_zerowidth(g.character):
g.width = self.width[c]
g.advance = self.advance[c]
width = self.width.get(c, None)
if width is None:
raise Exception("Character {0!r} not found in image-based font.".format(c))
g.width = self.width[c]
g.advance = self.advance[c]
else:
g.width = 0
g.advance = 0
rv.append(g)
@@ -94,6 +119,10 @@ class ImageFont(object):
return
for g in glyphs:
if not g.width:
continue
c = unichr(g.character)
cxo, cyo = self.offsets[c]
+24 -7
View File
@@ -64,6 +64,24 @@ def init():
if error:
raise FreetypeError(error)
cdef bint is_zerowidth(unsigned int char):
if char == 0x200b: # Zero-width space.
return True
if char == 0x200c: # Zero-width non-joiner.
return True
if char == 0x200d: # Zero-width joiner.
return True
if char == 0x2060: # Word joiner.
return True
if char == 0xfeff: # Zero width non-breaking space.
return True
return False
cdef unsigned long io_func(FT_Stream stream, unsigned long offset, unsigned char *buffer, unsigned long count):
"""
Seeks to offset, and then reads count bytes from the stream into buffer.
@@ -491,12 +509,7 @@ cdef class FTFont:
gl.character = c
gl.ascent = self.ascent
if c == 0x200B:
gl.width = 0
else:
gl.width = cache.width
gl.width = cache.width
gl.line_spacing = self.lineskip
if i < len_s - 1:
@@ -519,6 +532,10 @@ cdef class FTFont:
else:
gl.advance = cache.advance
if is_zerowidth(gl.character):
gl.width = 0
gl.advance = 0
rv.append(gl)
return rv
@@ -623,7 +640,7 @@ cdef class FTFont:
if glyph.split == SPLIT_INSTEAD:
continue
if glyph.character == 0x200b:
if glyph.width == 0:
continue
x = <int> (glyph.x + xo)
+26 -14
View File
@@ -391,7 +391,7 @@ class DisplayableSegment(object):
w = layout.scale_int(self.width)
h = layout.scale_int(self.height)
glyph.character = 0
glyph.character = 0xfffc
glyph.ascent = 0
glyph.line_spacing = h
glyph.advance = w
@@ -407,14 +407,7 @@ class DisplayableSegment(object):
if di.displayable_blits is not None:
xo, yo = renpy.display.core.place(
glyph.width,
glyph.ascent,
glyph.width,
glyph.line_spacing,
self.d.get_placement())
di.displayable_blits.append((self.d, glyph.x + xo, glyph.y + yo, glyph.time))
di.displayable_blits.append((self.d, glyph.x, glyph.y, glyph.width, glyph.ascent, glyph.line_spacing, glyph.time))
def assign_times(self, gt, glyphs):
if self.cps != 0:
@@ -1420,6 +1413,9 @@ class Text(renpy.display.core.Displayable):
self._duplicatable = self.slow
# The list of displayables and their offsets.
self.displayable_offsets = [ ]
def _duplicate(self, args):
if self._duplicatable:
rv = self._copy(args)
@@ -1560,7 +1556,10 @@ class Text(renpy.display.core.Displayable):
text_split.append(mid_string)
if self.ctc is not None:
text_split.append(self.ctc)
if isinstance(self.ctc, list):
text_split.extend(self.ctc)
else:
text_split.append(self.ctc)
if end_string:
text_split.append(end_string)
@@ -1757,8 +1756,8 @@ class Text(renpy.display.core.Displayable):
self.call_slow_done(st)
self.slow = False
for d, xo, yo, _ in layout.displayable_blits:
rv = d.event(ev, x - xo - layout.xoffset, y - yo - layout.yoffset, st)
for d, xo, yo in self.displayable_offsets:
rv = d.event(ev, x - xo, y - yo, st)
if rv is not None:
return rv
@@ -1948,16 +1947,29 @@ class Text(renpy.display.core.Displayable):
# Blit displayables.
if layout.displayable_blits:
self.displayable_offsets = [ ]
drend = renpy.display.render.Render(w, h)
drend.forward = layout.reverse
drend.reverse = layout.forward
for d, xo, yo, t in layout.displayable_blits:
for d, x, y, width, ascent, line_spacing, t in layout.displayable_blits:
if self.slow and t > st:
continue
drend.absolute_blit(renders[d], (xo + layout.xoffset, yo + layout.yoffset))
xo, yo = renpy.display.core.place(
width,
ascent,
width,
line_spacing,
d.get_placement())
xo = x + xo + layout.xoffset
yo = y + yo + layout.yoffset
drend.absolute_blit(renders[d], (xo, yo))
self.displayable_offsets.append((d, xo, yo))
rv.blit(drend, (0, 0))
+17 -1
View File
@@ -243,7 +243,7 @@ def annotate_unicode(list glyphs, bint no_ideographs, int cjk):
new_type = BC_AL
# Normalize the class by turning various groups into AL.
if (new_type >= BC_PITCH and new_type != BC_SP):
if (new_type >= BC_PITCH and new_type != BC_SP and new_type != BC_CB):
new_type = BC_AL
if tailor_type != BC_XX:
@@ -260,6 +260,22 @@ def annotate_unicode(list glyphs, bint no_ideographs, int cjk):
g.split = SPLIT_NONE
continue
if new_type == BC_CB:
if old_type == BC_WJ or old_type == BC_GL:
g.split = SPLIT_NONE
else:
g.split = SPLIT_BEFORE
continue
if old_type == BC_CB:
if new_type == BC_WJ or new_type == BC_GL:
g.split = SPLIT_NONE
else:
g.split = SPLIT_BEFORE
continue
# Figure out the type of break opportunity we have here.
# ^ Prohibited break.
# % Indirect break.
+112
View File
@@ -2,6 +2,118 @@
Full Changelog
==============
.. _renpy-7.1.1:
.. _history-7.1.1:
History Fix
-----------
This release fixes an issue with Ren'Py's history screen. The problem occurred
when a line of dialogue contained a quoted square bracket, so something like::
"I [[think] I'm having a problem."
When this occurs, the string "I [think] I'm having a problem." is added to
the history. Ren'Py would then display that in history, substitute the
``think`` variable, and crash.
This is fixed by adding ``substitute False`` to the history screen. This
is done to new projects, but for existing ones you'll need to make the fix
yourself. Here's the new history screen::
screen history():
tag menu
## Avoid predicting this screen, as it can be very large.
predict False
use game_menu(_("History"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0):
style_prefix "history"
for h in _history_list:
window:
## This lays things out properly if history_height is None.
has fixed:
yfit True
if h.who:
label h.who:
style "history_name"
substitute False
## Take the color of the who text from the Character, if set.
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 _("The dialogue history is empty.")
The new lines are the ones with ``substitute False`` on them. You'll want to make
this change to your history screen to prevent his problem from happening.
Android Improvements
--------------------
Ren'Py now sets the amount of memory used by the Android build tool to
the Google-set default of 1536 megabytes. To change this, edit
rapt/project/gradle.properties. To make sure you're capable of building
larger games, please make sure your computer has a 64-bit version of Java 8.
Ren'Py explicitly tells Android to pass the enter key to an input.
Ren'Py now crops and sizes the icon correctly for versions of Android below
Android 8 (Oreo).
Ren'Py gives a different numeric version number to the x86_64 apk. This will
allow both x86_64 and armeabi-v7a builds to be uploaded to Google Play and
other stores, rather than having to first created one build and then the other,
manually changing the version numbers between.
Other Improvements
------------------
Ren'Py now handles the (lack of) drawing of zero width characters itself, preventing
such characters from appearing as squares in text if the font does not support
the zero width character.
Ren'Py supports the use of non-breaking space and zero-width non-breaking space
characters to prevent images in text from being wrapped.
Ren'Py supports the a new "nestled-close" value for the `ctc_position` parameter
of :func:`Character`. This value prevents there from being a break between the
click-to-continue indicator and the other lines.
Drags (in drag-and-drop) now support alternate clicks. (Right clicks on desktop
and long-clicks on touch platforms.)
Fixes
-----
The :func:`SetVariable` and :func:`ToggleVariable` functions have been extended
to accept namespaces and fields. So it's now possible to have actions like
``SetVariable("hero.strength", hero.strength + 1)`` or
``ToggleVariable("persistent.alternate_perspective")``.
Automatic management of the dialogue window (as enabled by the ``window auto``
statement) now considers if an in-game menu has a dialogue or caption associated
with it, and handles that appropriately.
The source code to the embedded version of fribidi that Ren'Py is expected
to build with is now included in the -source archive.
There have been a number of fixes to the voice sustain preference to make
it work better with history and the voice replay action.
.. _renpy-7.1:
7.1
+2 -2
View File
@@ -776,12 +776,12 @@ Occasionally Used
platform specific, and so this should be set in a platform-specific
manner. (It may make sense to change this in translations, as well.)
.. var:: config.window_auto_hide = [ 'scene', 'call screen' ]
.. var:: config.window_auto_hide = [ 'scene', 'call screen', 'menu' ]
A list of statements that cause ``window auto`` to hide the empty
dialogue window.
.. var:: config.window_auto_show = [ 'say' ]
.. var:: config.window_auto_show = [ 'say', 'menu-with-caption' ]
A list of statements that cause ``window auto`` to show the empty
dialogue window.
+2 -1
View File
@@ -232,7 +232,8 @@ non-dialogue interactions.
before statements listed in :var:`config.window_auto_show` by default,
say statements. The window is hidden before statements listed in
:var:`config.window_auto_hide` by default, ``scene`` and ``call screen``
statements. (Only statements are considered, not statement equivalent
statements, and ``menu`` statements without a caption.
(Only statements are considered, not statement equivalent
functions.)
The ``window auto`` statement uses :var:`config.window_show_transition`
+23
View File
@@ -13,8 +13,31 @@ Incompatible changes to the GUI are documented at :ref:`gui-changes`, as
such changes only take effect when the GUI is regenerated.
.. _incompatible-7.1.1:
7.1.1
-----
Ren'Py's window auto function will now determine if dialogue or a caption
is associated with a menu statement, and will attempt to hide or show the
dialogue window as appropriate. A "Force Recompile" is necessary to include
the information that enables this feature. While it should work with older
games, this can be disabled and the old behavior restored with::
define config.menu_showed_window = True
define config.window_auto_show = [ "say" ]
define config.window_auto_hide = [ "scene", "call screen" ]
While not technically an incompatible change, there is a recommend change
to the history screen. Please see :ref:`the changelog entry <history-7.1.1>`
for details of how to update your game.
.. _incompatible-7.1:
7.1
---
When an image is not being show, say-with-attributes now resolves a side
image, rather than just using the attributes given. To disable this, add::
+152 -143
View File
@@ -1,178 +1,187 @@
<ul class='sponsors'>
<li> __skwrl__ (6.99.14.37.1)
<li> Adia Alderson (6.99.137.1)
<li> Aleema (6.99.137.1)
<li> <a href="http://alexdodge.net/" rel="nofollow">Alex Dodge</a> (6.99.147.1)
<li> <a href="https://rabidb.com/" rel="nofollow">AlexSSZ</a> (6.99.137.1)
<li> <a href="https://alic-szecsei.com" rel="nofollow">Alic Szecsei</a> (6.99.14.37.1)
<li> Anne Camlin (7.07.1)
<li> __skwrl__ (6.99.14.37.1.1)
<li> Adia Alderson (6.99.137.1.1)
<li> Aleema (6.99.137.1.1)
<li> <a href="http://alexdodge.net/" rel="nofollow">Alex Dodge</a> (6.99.147.1.1)
<li> <a href="https://rabidb.com/" rel="nofollow">AlexSSZ</a> (6.99.137.1.1)
<li> <a href="https://alic-szecsei.com" rel="nofollow">Alic Szecsei</a> (6.99.14.37.1.1)
<li> Anne Camlin (7.07.1.1)
<li> <a href="https://lemmasoft.renai.us/forums/viewtopic.php?f=51&t=34131" rel="nofollow">AR09FQF-AQ09FRF</a> (6.99.14.17.0)
<li> Asatiir (6.99.137.0)
<li> <a href="https://www.atwistedspirit.com/" rel="nofollow">ATwistedSpirit</a> (7.1)
<li> <a href="https://www.atwistedspirit.com/" rel="nofollow">ATwistedSpirit</a> (7.17.1.1)
<li> <a href="https://patchworkprincess.moe/" rel="nofollow">Azura (Vanessa Parker)</a> (7.07.1)
<li> <a href="https://www.youtube.com/channel/UC3Xm0sk-rRCtD-yVp64WPWQ" rel="nofollow">BadGamer</a> (6.99.14.37.1)
<li> <a href="https://www.youtube.com/channel/UC3Xm0sk-rRCtD-yVp64WPWQ" rel="nofollow">BadGamer</a> (6.99.14.37.1.1)
<li> Belfort and Bastion (6.99.137.1)
<li> Biotikos Development (6.99.137.1)
<li> Biotikos Development (6.99.137.1.1)
<li> Bob (6.99.137.0)
<li> <a href="https://bobcgames.tumblr.com" rel="nofollow">Bob Conway</a> (6.99.14.17.1)
<li> Bob Reus (7.1)
<li> Booom313's tinker corner (6.99.147.1)
<li> Boreas Bear (6.99.137.1)
<li> <a href="http://boyslaughplus.moe" rel="nofollow">Boys Laugh +</a> (6.99.137.1)
<li> Bradley Todd Whitesell (6.99.14.27.1)
<li> <a href="https://bobcgames.tumblr.com" rel="nofollow">Bob Conway</a> (6.99.14.17.1.1)
<li> Bob Reus (7.17.1.1)
<li> Booom313's tinker corner (6.99.147.1.1)
<li> Boreas Bear (6.99.137.1.1)
<li> <a href="http://boyslaughplus.moe" rel="nofollow">Boys Laugh +</a> (6.99.137.1.1)
<li> Brett Douglas (6.99.146.99.14.3)
<li> Brimney (6.99.137.1)
<li> <a href="https://www.renpy.org/agegate?url=https://www.brunimultimedia.com" rel="nofollow">Bruni Multimedia</a> (6.99.147.1)
<li> Brimney (6.99.137.1.1)
<li> <a href="https://www.renpy.org/agegate?url=https://www.brunimultimedia.com" rel="nofollow">Bruni Multimedia</a> (6.99.147.1.1)
<li> <a href="http://www.bura.cl" rel="nofollow">BURA</a> (6.99.13)
<li> Cameron Woodard (6.99.14.37.1)
<li> Cara Hillstock (6.99.137.1)
<li> <a href="https://www.celebrityhunter.com.br" rel="nofollow">Celebrity Hunter</a> (7.1)
<li> Charlene Gilbert (6.99.137.1)
<li> <a href="http://charliethegoldfish.com" rel="nofollow">Charlie Francis Cassidy</a> (6.99.137.1)
<li> Chekhov's Ghost (7.1)
<li> Cherry Kiss Games (6.99.14.17.1)
<li> Chrysoula Tzavelas (6.99.137.1)
<li> <a href="https://cloverfirefly.itch.io" rel="nofollow">cloverfirefly</a> (6.99.137.1)
<li> CobraPL (7.1)
<li> <a href="https://www.renpy.org/agegate?url=https://obscurasoft.com/" rel="nofollow">Coming Out On Top</a> (6.99.137.1)
<li> <a href="http://www.computerart.club/" rel="nofollow">computerart.club</a> (6.99.147.1)
<li> Crazy Cactus (6.99.14.37.1)
<li> <a href="https://www.renpy.org/agegate?url=http://cricketbat.me" rel="nofollow">cricketbat_</a> (7.07.1)
<li> Cameron Woodard (6.99.14.37.1.1)
<li> Cara Hillstock (6.99.137.1.1)
<li> <a href="https://www.celebrityhunter.com.br" rel="nofollow">Celebrity Hunter</a> (7.17.1.1)
<li> Charlene Gilbert (6.99.137.1.1)
<li> <a href="http://charliethegoldfish.com" rel="nofollow">Charlie Francis Cassidy</a> (6.99.137.1.1)
<li> Chekhov's Ghost (7.17.1.1)
<li> Cherry Kiss Games (6.99.14.17.1.1)
<li> Chrysoula Tzavelas (6.99.137.1.1)
<li> <a href="https://cloverfirefly.itch.io" rel="nofollow">cloverfirefly</a> (6.99.137.1.1)
<li> CobaltCore (7.1.1)
<li> CobraPL (7.17.1.1)
<li> <a href="https://www.renpy.org/agegate?url=https://obscurasoft.com/" rel="nofollow">Coming Out On Top</a> (6.99.137.1.1)
<li> <a href="http://www.computerart.club/" rel="nofollow">computerart.club</a> (6.99.147.1.1)
<li> CookieNomNom (7.1.1)
<li> Crazy Cactus (6.99.14.37.1.1)
<li> <a href="https://www.renpy.org/agegate?url=http://cricketbat.me" rel="nofollow">cricketbat_</a> (7.07.1.1)
<li> <a href="http://cultofape.com" rel="nofollow">CultOfApe</a> (6.99.147.0)
<li> Culture4Jam (6.99.137.1)
<li> Daniel Burns (7.1)
<li> Culture4Jam (6.99.137.1.1)
<li> Daniel Burns (7.17.1.1)
<li> <a href="http://dark-aii.net" rel="nofollow">Dark-Aii</a> (6.99.14.16.99.14.3)
<li> <a href="http://www.darksirengames.com" rel="nofollow">DarkSirenGames</a> (6.99.137.1)
<li> Darryl Taylor (7.07.1)
<li> David Koster (6.99.147.1)
<li> David Yingling (6.99.14.17.1)
<li> Dee (7.1)
<li> Denny Cheng (6.99.14.27.1)
<li> <a href="http://coriginate.com" rel="nofollow">Ds110</a> (6.99.137.1)
<li> E. William Brown (6.99.137.1)
<li> <a href="https://www.youtube.com/c/ElaineDoesCoding" rel="nofollow">ElaineDoesCoding</a> (7.07.1)
<li> eric chi hung ng (7.07.1)
<li> Euan 'Xolf' Robertson (6.99.137.1)
<li> <a href="http://www.darksirengames.com" rel="nofollow">DarkSirenGames</a> (6.99.137.1.1)
<li> Darryl Taylor (7.07.1.1)
<li> David Koster (6.99.147.1.1)
<li> David Yingling (6.99.14.17.1.1)
<li> Dee (7.17.1.1)
<li> Denny Cheng (6.99.14.27.1.1)
<li> Dharker Studios Ltd (6.99.136.99.14, 7.1.1)
<li> <a href="http://coriginate.com" rel="nofollow">Ds110</a> (6.99.137.1.1)
<li> DuoDevelopers (7.1.1)
<li> E. William Brown (6.99.137.1.1)
<li> <a href="https://twitter.com/WC_EchoFrost" rel="nofollow">EchoFrost (Watercress)</a> (6.99.14.27.1.1)
<li> <a href="https://www.youtube.com/c/ElaineDoesCoding" rel="nofollow">ElaineDoesCoding</a> (7.07.1.1)
<li> eric chi hung ng (7.07.1.1)
<li> Euan 'Xolf' Robertson (6.99.137.1.1)
<li> Eve Hallows (6.99.136.99.14)
<li> Exiscoming (6.99.147.1)
<li> <a href="https://moonlitworks.com/" rel="nofollow">Eyzi</a> (7.07.1)
<li> Fuseblower (7.07.1)
<li> <a href="http://store.steampowered.com/app/560250/Galaxy_Girls/" rel="nofollow">Galaxy Girls</a> (6.99.136.99.14)
<li> George (7.1)
<li> <a href="http://www.gtbono.com" rel="nofollow">Giovanni Tempobono</a> (7.1)
<li> <a href="https://goldengamebarn.com/" rel="nofollow">Golden Game Barn</a> (6.99.137.1)
<li> <a href="https://twitter.com/goodtalesvn" rel="nofollow">Good Tales</a> (7.1)
<li> Great Chicken Studio (6.99.147.1)
<li> Grimiku (7.07.1)
<li> Gunso (6.99.137.1)
<li> <a href="http://hanb.jp" rel="nofollow">HanbitGaram (MOEWORK Entertainment)</a> (7.1)
<li> Exiscoming (6.99.147.1.1)
<li> <a href="https://moonlitworks.com/" rel="nofollow">Eyzi</a> (7.07.1.1)
<li> Fuseblower (7.07.1.1)
<li> George (7.17.1.1)
<li> <a href="http://www.gtbono.com" rel="nofollow">Giovanni Tempobono</a> (7.17.1.1)
<li> <a href="https://goldengamebarn.com/" rel="nofollow">Golden Game Barn</a> (6.99.137.1.1)
<li> <a href="https://twitter.com/goodtalesvn" rel="nofollow">Good Tales</a> (7.17.1.1)
<li> Great Chicken Studio (6.99.147.1.1)
<li> Grimiku (7.07.1.1)
<li> Gunso (6.99.137.1.1)
<li> HAG Productions (7.1.1)
<li> <a href="http://hanb.jp" rel="nofollow">HanbitGaram (MOEWORK Entertainment)</a> (7.17.1.1)
<li> Happimochi (6.99.136.99.14)
<li> HopesGaming (7.1.1)
<li> <a href="https://ijemin.com" rel="nofollow">I_Jemin</a> (6.99.137.0)
<li> <a href="https://irredeemable.net/" rel="nofollow">Irredeemable Games</a> (6.99.147.1)
<li> J. C. Holder (6.99.137.1)
<li> <a href="https://irredeemable.net/" rel="nofollow">Irredeemable Games</a> (6.99.147.1.1)
<li> J. C. Holder (6.99.137.1.1)
<li> James Tyner (6.99.137.1)
<li> JeongPyo Lee (6.99.137.1)
<li> Joanna B (6.99.137.1)
<li> JoeBanks (7.1)
<li> jonnymelabo (6.99.137.1)
<li> JeongPyo Lee (6.99.137.1.1)
<li> Joanna B (6.99.137.1.1)
<li> JoeBanks (7.17.1.1)
<li> Jonas Kyratzes (7.1.1)
<li> jonnymelabo (6.99.137.1.1)
<li> Josh Kaplan (6.99.136.99.14.2)
<li> K. Starbuck (6.99.136.99.14)
<li> Kayde Initials (6.99.137.1)
<li> <a href="http://kexboy.com" rel="nofollow">KEXBOY</a> (6.99.137.1)
<li> Kikai Digital (7.07.1)
<li> <a href="http://www.gamesbykinmoku.com" rel="nofollow">Kinmoku</a> (6.99.137.1)
<li> <a href="http://krsm94.web.fc2.com/" rel="nofollow">Klast Halc (crAsm)</a> (6.99.14.27.1)
<li> Kosmos Games (6.99.147.1)
<li> <a href="https://de.koubaibu.tech/" rel="nofollow">Koubaibu Technology Group</a> (7.1)
<li> lain105/EckoMars (6.99.137.1)
<li> LateWhiteRabbit (6.99.147.1)
<li> <a href="https://lernakow.itch.io" rel="nofollow">Lernakow</a> (6.99.14.37.1)
<li> LewdKitty (7.07.1)
<li> <a href="https://www.renpy.org/agegate?url=https://www.lewdlab.com/" rel="nofollow">Lewdlab</a> (6.99.14.17.1)
<li> <a href="https://lemmasoft.renai.us/forums/viewtopic.php?f=66&t=48011&p=482643" rel="nofollow">Lezalith</a> (7.1)
<li> Lictor (6.99.14.27.1)
<li> Little Napoleon (7.1)
<li> <a href="http://trash.moe/" rel="nofollow">Lore</a> (6.99.137.1)
<li> Luke Jackson (6.99.137.1)
<li> <a href="http://luscious-spirit-studios.tumblr.com/" rel="nofollow">Luscious Spirit Studios</a> (6.99.137.1)
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/Luxee" rel="nofollow">Luxee</a> (6.99.14.37.1)
<li> Maeve Bandruid (6.99.137.1)
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/manitu" rel="nofollow">MANITU Games CO.</a> (6.99.137.1)
<li> <a href="https://manorstories.fr" rel="nofollow">ManorStories</a> (6.99.147.1)
<li> <a href="http://www.marionettecode.com/" rel="nofollow">Marionette</a> (6.99.147.1)
<li> Kampmichi (7.1.1)
<li> Kayde Initials (6.99.137.1.1)
<li> <a href="http://kexboy.com" rel="nofollow">KEXBOY</a> (6.99.137.1.1)
<li> Kikai Digital (7.07.1.1)
<li> <a href="http://www.gamesbykinmoku.com" rel="nofollow">Kinmoku</a> (6.99.137.1.1)
<li> <a href="http://krsm94.web.fc2.com/" rel="nofollow">Klast Halc (crAsm)</a> (6.99.14.27.1.1)
<li> Kosmos Games (6.99.147.1.1)
<li> <a href="https://de.koubaibu.tech/" rel="nofollow">Koubaibu Technology Group</a> (7.17.1.1)
<li> lain105/EckoMars (6.99.137.1.1)
<li> LateWhiteRabbit (6.99.147.1.1)
<li> <a href="https://lernakow.itch.io" rel="nofollow">Lernakow</a> (6.99.14.37.1.1)
<li> LewdKitty (7.07.1.1)
<li> <a href="https://www.renpy.org/agegate?url=https://www.lewdlab.com/" rel="nofollow">Lewdlab</a> (6.99.14.17.1.1)
<li> <a href="https://lemmasoft.renai.us/forums/viewtopic.php?f=66&t=48011&p=482643" rel="nofollow">Lezalith</a> (7.17.1.1)
<li> Lictor (6.99.14.27.1.1)
<li> Little Napoleon (7.17.1.1)
<li> <a href="http://trash.moe/" rel="nofollow">Lore</a> (6.99.137.1.1)
<li> Luke Jackson (6.99.137.1.1)
<li> <a href="http://luscious-spirit-studios.tumblr.com/" rel="nofollow">Luscious Spirit Studios</a> (6.99.137.1.1)
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/Luxee" rel="nofollow">Luxee</a> (6.99.14.37.1.1)
<li> Maeve Bandruid (6.99.137.1.1)
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/manitu" rel="nofollow">MANITU Games CO.</a> (6.99.137.1.1)
<li> <a href="https://manorstories.fr" rel="nofollow">ManorStories</a> (6.99.147.1.1)
<li> <a href="http://www.marionettecode.com/" rel="nofollow">Marionette</a> (6.99.147.1.1)
<li> MAW.3D.Art (6.99.13)
<li> Max J Sher (6.99.137.1)
<li> MCatter Dev (7.1)
<li> <a href="https://meagantrott.com" rel="nofollow">Meagan Trott</a> (6.99.137.1)
<li> <a href="http://metasepia.icecavern.net" rel="nofollow">Metasepia Games</a> (6.99.137.1)
<li> <a href="http://www.meyaoi.com" rel="nofollow">Meyaoi Games</a> (6.99.136.99.14, 6.99.14.37.1)
<li> Meyvol (6.99.14.17.1)
<li> Michaela Laws (6.99.137.1)
<li> Max J Sher (6.99.137.1.1)
<li> MCatter Dev (7.17.1.1)
<li> <a href="https://meagantrott.com" rel="nofollow">Meagan Trott</a> (6.99.137.1.1)
<li> <a href="http://metasepia.icecavern.net" rel="nofollow">Metasepia Games</a> (6.99.137.1.1)
<li> <a href="http://www.meyaoi.com" rel="nofollow">Meyaoi Games</a> (6.99.136.99.14, 6.99.14.37.1.1)
<li> Meyvol (6.99.14.17.1.1)
<li> Michael Simon (7.1.1)
<li> Michaela Laws (6.99.137.1.1)
<li> <a href="http://www.milkteestudios.com" rel="nofollow">Milktee Studios</a> (7.07.1)
<li> Miss Skizzors (7.07.1)
<li> <a href="https://mrvaldez.ph/" rel="nofollow">MrValdez</a> (7.07.1)
<li> Miss Skizzors (7.07.1.1)
<li> Montse Latre (7.1.1)
<li> <a href="https://mrvaldez.ph/" rel="nofollow">MrValdez</a> (7.07.1.1)
<li> <a href="https://ms45.itch.io" rel="nofollow">Ms .45</a> (6.99.13)
<li> nasredin (6.99.14.37.1)
<li> Natalie Van Sistine (7.07.1)
<li> <a href="https://cafe.naver.com/vmo.cafe" rel="nofollow">Naver cafe VMO</a> (7.1)
<li> nasredin (6.99.14.37.1.1)
<li> Natalie Van Sistine (7.07.1.1)
<li> <a href="https://cafe.naver.com/vmo.cafe" rel="nofollow">Naver cafe VMO</a> (7.17.1.1)
<li> <a href="http://cafe.naver.com/vmo" rel="nofollow">NaverCafe VMO</a> (6.99.137.1)
<li> Neigan (7.0)
<li> Nicholas Swenson (6.99.147.1)
<li> <a href="https://www.patreon.com/nikraria" rel="nofollow">nikraria</a> (6.99.137.1)
<li> Nova Alamak (6.99.14.37.1)
<li> Nicholas Swenson (6.99.147.1.1)
<li> <a href="https://www.patreon.com/nikraria" rel="nofollow">nikraria</a> (6.99.137.1.1)
<li> Nova Alamak (6.99.14.37.1.1)
<li> <a href="http://devety.com" rel="nofollow">Oleksii olety Kyrylchuk</a> (6.99.14.16.99.14.2)
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/palantogames" rel="nofollow">Palanto Games</a> (7.07.1)
<li> Panthera Morag (6.99.137.1)
<li> Patchwork Princess (7.1)
<li> Patricia (6.99.137.1)
<li> <a href="http://peachpattch.com/" rel="nofollow">peachpattch</a> (6.99.147.1)
<li> philat (6.99.14.17.1)
<li> plasterbrain (6.99.137.1)
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/palantogames" rel="nofollow">Palanto Games</a> (7.07.1.1)
<li> Panthera Morag (6.99.137.1.1)
<li> Patchwork Princess (7.17.1.1)
<li> Patricia (6.99.137.1.1)
<li> <a href="http://peachpattch.com/" rel="nofollow">peachpattch</a> (6.99.147.1.1)
<li> philat (6.99.14.17.1.1)
<li> plasterbrain (6.99.137.1.1)
<li> Ploppertje (6.99.136.99.14.3)
<li> Podge (6.99.137.1)
<li> Podge (6.99.137.1.1)
<li> Puriwit Sesupaponphong (6.99.13)
<li> Puriwit Sesupaponphong (6.99.137.1)
<li> Pólyí Konrád (7.1)
<li> <a href="http://www.cottoncandycyanide.com/" rel="nofollow">Quantum Suicide</a> (7.1)
<li> <a href="http://razzartvisual.com/" rel="nofollow">Razz</a> (6.99.137.1)
<li> Pólyí Konrád (7.17.1.1)
<li> <a href="http://www.cottoncandycyanide.com/" rel="nofollow">Quantum Suicide</a> (7.17.1.1)
<li> <a href="http://razzartvisual.com/" rel="nofollow">Razz</a> (6.99.137.1.1)
<li> <a href="https://twitter.com/ragnarhomsar" rel="nofollow">Realga</a> (7.07.1)
<li> René Dudfield (6.99.137.1)
<li> Richard (6.99.147.1)
<li> <a href="http://impqueen.com/" rel="nofollow">Rinmaru</a> (6.99.137.1)
<li> Rizia Praja (6.99.14.17.1)
<li> René Dudfield (6.99.137.1.1)
<li> Richard (6.99.147.1.1)
<li> <a href="http://impqueen.com/" rel="nofollow">Rinmaru</a> (6.99.137.1.1)
<li> Rizia Praja (6.99.14.17.1.1)
<li> Robyn Rosenfeld (7.1)
<li> <a href="http://sunkoiwish.com/" rel="nofollow">Royce A Xaiyeon</a> (6.99.137.1)
<li> Ryan Balgos (6.99.147.1)
<li> <a href="http://sunkoiwish.com/" rel="nofollow">Royce A Xaiyeon</a> (6.99.137.1.1)
<li> Ryan Balgos (6.99.147.1.1)
<li> Ryan Whited (6.99.147.1)
<li> <a href="https://saiffyros.wordpress.com/" rel="nofollow">Saiffyros</a> (6.99.147.1)
<li> Sam Yang (6.99.137.1)
<li> Simply Aria (6.99.147.1)
<li> <a href="http://sleepyagents.co.uk" rel="nofollow">Sleepy Agents</a> (6.99.137.1)
<li> Snowlocke (7.07.1)
<li> <a href="https://saiffyros.wordpress.com/" rel="nofollow">Saiffyros</a> (6.99.147.1.1)
<li> Sam Yang (6.99.137.1.1)
<li> Simply Aria (6.99.147.1.1)
<li> <a href="http://sleepyagents.co.uk" rel="nofollow">Sleepy Agents</a> (6.99.137.1.1)
<li> Snowlocke (7.07.1.1)
<li> <a href="http://store.steampowered.com/app/570350/Sorry_Entschuldigung__A_Psychological_Horror_Visual_Novel/" rel="nofollow">Sorry. (Entschuldigung)</a> (6.99.14.27.1)
<li> Spyros Panagiotopoulos (6.99.147.1)
<li> Steamlynx (6.99.14.17.1)
<li> Stefan Gagne (6.99.137.1)
<li> <a href="https://www.renpy.org/agegate?url=http://www.patreon.com/errilhl" rel="nofollow">Studio Errilhl</a> (6.99.14.37.1)
<li> Taosym (6.99.137.1)
<li> Teofilo Hurtado (6.99.147.1)
<li> Thomas Charlie (6.99.137.1)
<li> Timothy Landreth (6.99.137.1)
<li> Timothy Young (6.99.14.17.1)
<li> TJ Huckabee (6.99.137.1)
<li> Steamlynx (6.99.14.17.1.1)
<li> Stefan Gagne (6.99.137.1.1)
<li> <a href="https://www.renpy.org/agegate?url=http://www.patreon.com/errilhl" rel="nofollow">Studio Errilhl</a> (6.99.14.37.1.1)
<li> Taosym (6.99.137.1.1)
<li> Teofilo Hurtado (6.99.147.1.1)
<li> Thomas Charlie (6.99.137.1.1)
<li> Timothy Landreth (6.99.137.1.1)
<li> Timothy Young (6.99.14.17.1.1)
<li> TJ Huckabee (6.99.137.1.1)
<li> ToastCrust (6.99.136.99.14)
<li> Tobias Wüthrich (6.99.136.99.14.3)
<li> <a href="http://tremmigames.tk/" rel="nofollow">tremmiGames</a> (7.07.1)
<li> trooper6 (6.99.137.1)
<li> <a href="https://www.youtube.com/tryinmorning" rel="nofollow">tryinmorning</a> (6.99.137.1)
<li> <a href="https://studiomugenjohncel.wordpress.com/" rel="nofollow">Uncle Mugen (Mugenjohncel</a> (6.99.14.27.1)
<li> <a href="http://www.visualsaga.com/" rel="nofollow">Visual Saga</a> (6.99.137.1)
<li> <a href="http://tremmigames.tk/" rel="nofollow">tremmiGames</a> (7.07.1.1)
<li> trooper6 (6.99.137.1.1)
<li> <a href="https://www.youtube.com/tryinmorning" rel="nofollow">tryinmorning</a> (6.99.137.1.1)
<li> <a href="https://studiomugenjohncel.wordpress.com/" rel="nofollow">Uncle Mugen (Mugenjohncel</a> (6.99.14.27.1.1)
<li> <a href="http://www.visualsaga.com/" rel="nofollow">Visual Saga</a> (6.99.137.1.1)
<li> Vollschauer (6.99.136.99.14)
<li> <a href="http://vxlloyd.com" rel="nofollow">VX Lloyd</a> (6.99.14.37.0)
<li> Wayne Wollesen (6.99.14.37.1)
<li> <a href="https://www.facebook.com/weeabooriot" rel="nofollow">Weeabooriot Cosplay</a> (6.99.137.1)
<li> <a href="https://arcaniinteractive.com/" rel="nofollow">William Lucht</a> (7.07.1)
<li> William Tumeo (6.99.137.1)
<li> <a href="http://winterwolves.com/ambersmagicshop.htm" rel="nofollow">Winter Wolves</a> (6.99.137.1)
<li> <a href="http://astralore.com/" rel="nofollow">Yakmala!</a> (6.99.137.1)
<li> Wayne Wollesen (6.99.14.37.1.1)
<li> <a href="https://www.facebook.com/weeabooriot" rel="nofollow">Weeabooriot Cosplay</a> (6.99.137.1.1)
<li> <a href="https://arcaniinteractive.com/" rel="nofollow">William Lucht</a> (7.07.1.1)
<li> William Tumeo (6.99.137.1.1)
<li> <a href="http://winterwolves.com/ambersmagicshop.htm" rel="nofollow">Winter Wolves</a> (6.99.137.1.1)
<li> <a href="http://astralore.com/" rel="nofollow">Yakmala!</a> (6.99.137.1.1)
</ul>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 346 KiB

+4 -1
View File
@@ -960,13 +960,16 @@ screen history():
label h.who:
style "history_name"
substitute False
## Take the color of the who text from the Character, if
## set.
if "color" in h.who_args:
text_color h.who_args["color"]
text h.what
$ what = renpy.filter_text_tags(h.what, allow=gui.history_allow_tags)
text what:
substitute False
if not _history_list:
label _("The dialogue history is empty.")
+1 -1
View File
@@ -24,7 +24,7 @@ define gui.show_name = False
## The version of the game.
define config.version = renpy.version_string
define build.version = renpy.version_only
## Text that is placed on the game's about screen. To insert a blank line
## between paragraphs, write \n\n.
+4 -1
View File
@@ -937,13 +937,16 @@ screen history():
label h.who:
style "history_name"
substitute False
## Take the color of the who text from the Character, if
## set.
if "color" in h.who_args:
text_color h.who_args["color"]
text h.what
$ what = renpy.filter_text_tags(h.what, allow=gui.history_allow_tags)
text what:
substitute False
if not _history_list:
label _("The dialogue history is empty.")