Другие функции и переменные (Other Functions and Variables)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

Мы находимся в процессе переноса документации на новый инструмент. Поскольку ещё не все страницы были перенесены, этот раздел существует для документирования новых функций, которые больше некуда было внести.


Версия Ren'Py (Ren'Py Version)[править | править код]

renpy.version(tuple=False)

Если tuple принимает значение False, возвращает строку, содержащую "Ren'Py", за которой следует текущая версия Ren'Py.
Если tuple принимает значение True, возвращает кортеж, в котором каждый компонент версии представлен как целое число.


renpy.version_string

Номер версии Ren'Py в виде строки вида "Ren'Py 1.2.3.456".


renpy.version_only

Номер версии Ren'Py без префикса Ren'Py. Строка вида "1.2.3.456".


renpy.version_tuple

Номер версии Ren'Py, как кортеж вида (1, 2, 3, 456).


renpy.version_name

Удобное для восприятия имя версии в форме "Пример версии".


renpy.license

Строка с текстом лицензии, которая должна быть включена в экран «Об игре».

Определение платформы (Platform Detection)[править | править код]

Ren'Py включает в себя ряд переменных, которые устанавливаются в зависимости от платформы, на которой он работает.


renpy.windows

Принимает значение True при работе на Windows.


renpy.macintosh

Принимает значение True при работе на macOS.


renpy.linux

Принимает значение True при работе на Linux или других POSIX-подобных операционных системах.


renpy.android

Принимает значение True при работе на Android.


renpy.ios

Принимает значение True при работе на iOS.


renpy.emscripten

Принимает значение True при запуске в браузере.


renpy.mobile

Принимает значение True при работе на Android или iOS или в браузере.


Они устанавливаются только при работе на реальных устройствах, а не при запуске в эмуляторах. Они больше предназначены для использования на конкретных платформах языка Python. Для вида дисплея используйте варианты экрана.

Профилирование памяти (Memory Profiling)[править | править код]

renpy.diff_memory(update=True)

Профилирует объекты, поверхность и текстурную память, используемую Ren'Py и игрой. Записывает в memory.txt и stdout разницу в использовании памяти с момента последнего вызова этой функции с update=True.
Учёт ведется по именам в хранилище и в реализации Ren'Py, из которой доступна память. Если объект доступен из нескольких имён, ему присваивается имя, из которого он наиболее доступен.
Поскольку она должна сканировать всю память, используемую Ren'Py, выполнение этой функции может занять много времени.


renpy.profile_memory(fraction=1.0, minimum=0)

Профилирует объект, поверхность и текстурную память, используемую Ren'Py и игрой. Записывает отчёт о использовании памяти в файл memory.txt и stdout.
Учёт ведется по именам в хранилище и в реализации Ren'Py, из которой доступна память. Если объект доступен из нескольких имён, ему присваивается имя, из которого он наиболее доступен.
fraction
Доля от общего объема использования памяти для отображения. 1.0 покажет всё использование памяти, .9 покажет основные 90%.
minimum
Если на имя приходится меньше, чем minimum байтов памяти, оно не будет напечатано.
Поскольку она должна сканировать всю память, используемую Ren'Py, выполнение этой функции может занять много времени.


renpy.profile_rollback()

Профилирует память, используемую системой отката. Записывает в memory.txt и stdout память, используемую системой отката. При этом делается попытка учесть память отката, используемую различными переменными хранилища, а также внутренними аспектами системы отката.

Контексты (Contexts)[править | править код]

renpy.context()

Возвращает объект, который является уникальным для текущего контекста. Объект копируется при вводе нового контекста, но изменения в копии не изменяют оригинал.
Объект сохраняется и участвует в откате.


renpy.context_nesting_level()

Возвращает уровень вложенности текущего контекста. Его значение равно 0 для самого удалённого от центра контекста (контекст, который сохраняется, загружается и откатывается), и не равен нулю в других контекстах, таких как контекст меню и воспроизведения.

renpy.random[править | править код]

Этот объект является генератором случайных чисел, который реализует интерфейс генерации случайных чисел в Python.

Случайность может быть получена путём вызова различных методов, которые предоставляет этот объект. Полный список приведен в документации по Python, но наиболее полезными являются:

renpy.random.random()

Возвращает следующее случайное число с плавающей точкой в диапазоне (0.0, 1.0).

renpy.random.randint(a, b)

Возвращает случайное целое число, такое что a <= N <= b.

renpy.random.choice(seq)

Возвращает случайный элемент из непустой последовательности seq.

renpy.random.shuffle(seq)

Перемешивает элементы последовательности seq на месте. Это не возвращает список, но изменяет существующий.
В отличие от стандартного генератора случайных чисел в Python, этот объект взаимодействует с откатом, генерируя одни и те же числа независимо от того, сколько раз мы выполняем откат. Следует использовать вместо стандартного модуля Python random.
# Возвращает случайное число с плавающей точкой от 0 до 1
$ randfloat = renpy.random.random()

# Возвращает случайное целое число от 1 до 20
$ d20roll = renpy.random.randint(1, 20)

# Возвращает случайный элемент из списка
$ randfruit = renpy.random.choice(['apple', 'orange', 'plum'])

renpy.random.Random(seed=None)

Возвращает новый объект генератора случайных чисел отдельно от основного с заданным значением, если оно указано.

... (SDL)[править | править код]

Прочие (Miscellaneous)[править | править код]

renpy.add_layer(layer, above=None, below=None, menu_clear=True)

Добавляет новый слой на экран. Если слой уже существует, эта функция ничего не делает.
Один из behind или above должен быть задан.
layer
Строка, задающая имя нового слоя для добавления.
above
Если принимает значение не None, строка, задающая имя слоя, над которым будет расположен новый слой.
below
Если принимает значение не None, строка, задающая имя слоя, под которым будет размещён новый слой.
menu_clear
Если принимает значение True, этот слой будет очищен при входе в контекст игрового меню и восстановлен при выходе из него.


renpy.add_python_directory(path)

Добавляет path в список путей поиска модулей и пакетов Python. Путь должен быть строкой относительно директории игры. Должна быть вызвана перед оператором import.


renpy.call_stack_depth()

Возвращает глубину стека вызовов текущего контекста – количество вызовов, которые были выполнены без возврата или извлечения из стека вызовов.


renpy.choice_for_skipping()

Сообщает Ren'Py, что скоро появится выбор. В настоящее время имеет два эффекта:
  • Если Ren'Py пропускает, а параметр «Пропуск после выборов» установлен для остановки пропуска, пропуск прекращается.
  • Запускается автоматическое сохранение.


renpy.clear_game_runtime()

Сбрасывает счетчик времени выполнения игры.


renpy.clear_keymap_cache()

Очищает кэш раскладки клавиатуры. Это позволяет изменениям в config.keymap вступать в силу без перезапуска Ren'Py.


renpy.context_dynamic(*vars)

Может быть задано одним или несколькими именами переменных в качестве аргументов. Это делает переменные динамически привязанными к текущему контексту. Переменные будут сброшены к их исходному значению, когда вызов вернётся.
Пример вызова:
$ renpy.context_dynamic("x", "y", "z")


renpy.count_dialogue_blocks()

Возвращает количество блоков диалога на языке оригинала игры.


renpy.count_newly_seen_dialogue_blocks()

Возвращает количество блоков диалога, которые пользователь увидел впервые в течение этого сеанса.


renpy.count_seen_dialogue_blocks()

Возвращает количество блоков диалога, которые пользователь видел в любом прохождении текущей игры.


renpy.display_notify(message)

Реализация renpy.notify() по умолчанию.


renpy.dynamic(*vars)

Может быть задано одним или несколькими именами переменных в качестве аргументов. Это делает переменные динамически привязанными к текущему вызову. Переменные будут сброшены к их исходному значению, когда вызов вернётся.
Пример вызова:
$ renpy.dynamic("x", "y", "z")


renpy.focus_coordinates()

Пытается найти координаты текущего сфокусированного отображаемого объекта. Если это возможно, она вернёт их в виде кортежа (x, y, w, h). Если нет, она вернёт кортеж (None, None, None, None).


renpy.force_autosave(take_screenshot=False, block=False)

Вызывает фоновое автосохранение.
take_screenshot
Если принимает значение True, будет сделан новый скриншот. Если принимает значение False, будет использоваться существующий скриншот.
block
Если принимает значение True, блокирует до завершения автосохранения.


renpy.force_full_redraw()

Принудительное перерисовывает экран. Вызовите это после использования Pygame, чтобы перерисовать экран напрямую.


renpy.free_memory()

Пытается освободить часть памяти. Полезно перед запуском мини-игры на основе Renpygame.


renpy.full_restart(transition=False, label='_invoke_main_menu', target='_main_menu')

Вызывает перезагрузку Ren'Py, возвращая пользователя в главное меню.
transition
Если задан, переход должен выполняться или значение None, чтобы не запускать переход. Значение False использует config.end_game_transition.


renpy.get_adjustment(bar_value)

С учетом bar_value, BarValue, возвращает ui.adjustment(), если использует. Корректировка имеет следующие атрибуты:
value
Текущее значение панелей.
range
Текущий диапазон панелей.


renpy.get_autoreload()

Получает флаг автозагрузки.


renpy.get_game_runtime()

Возвращает счетчик времени выполнения игры.
Счетчик времени выполнения игры подсчитывает количество секунд, прошедших в ожидании ввода данных пользователем в основном контексте. Не учитывается время, проведенное в основном или игровом меню.


renpy.get_image_load_log(age=None)

Генератор, который выдаёт журнал активности загрузки изображений. Для последних 100 загрузок изображений возвращает:
  • Время загрузки изображения (в секундах с начала отсчёта).
  • Имя файла изображения, которое было загружено.
  • Логическое значение, которое принимает значение True, если изображение было предварительно загружено, и значение False, если игра остановилась, чтобы загрузить его.
Записи упорядочены от самых новых до самых старых.
age
Если принимает значение не None, включаются только те изображения, которые были загружены за последние несколько age секунд.
Журнал загрузки изображений сохраняется, только если config.developer = True.


renpy.get_mouse_pos()

Возвращает кортеж (x, y), указывающий местоположение указателя мыши или текущее местоположение касания. Если устройство не поддерживает мышь и в данный момент к нему не прикасаются, то x и y являются числами, но не имеют значения.


renpy.get_physical_size()

Возвращает размер физического окна.


renpy.get_refresh_rate(precision=5)

Возвращает частоту обновления текущего экрана в виде числа кадров с плавающей точкой в секунду.
precision
Исходные данные, которые получает Ren'Py – количество кадров в секунду, округленное в меньшую сторону. Это означает, что монитор, работающий со скоростью 59.95 кадров в секунду, будет отображаться со скоростью 59 кадров в секунду. Аргумент precision снижает точность этого считывания, так что единственные допустимые показания являются кратными точности.
Поскольку все частоты кадров монитора, как правило, кратны 5 (25, 30, 60, 75 и 120), это, вероятно, повысит точность. Установка precision на 1 отключает эту функцию.


renpy.get_renderer_info()

Возвращает словарь, содержащий информацию о рендере, который Ren'Py использует в данный момент. Словарь имеет один необходимый ключ:
"renderer"
Один из "gl" или "sw", соответствующих OpenGL и аппаратным средствами рендеринга, соответственно.
"resizable"
Принимает значение True только в том случае, если размер окна можно изменить.
"additive"
Принимает значение True только в том случае, если рендерер поддерживает аддитивное смешивание.
Кроме того, могут существовать другие ключи, специфичные для рендера. Словарь должен рассматриваться как неизменный. Его следует вызывать только после запуска дисплея (то есть после завершения фазы инициализации).


renpy.get_say_attributes()

Получает атрибуты, связанные с текущим оператором say, или значение None, если с этим оператором не связаны никакие атрибуты.
Это допустимо только при выполнении или прогнозировании оператора say.


renpy.get_side_image(prefix_tag, image_tag=None, not_showing=True, layer=None)

Пытается найти изображение, которое будет отображаться как боковое изображение.
Начинается с определения набора атрибутов изображения. Если задан image_tag, он получает атрибуты изображения из тега. Иначе он получает их от текущего отображаемого персонажа.
Затем он ищет изображение с тегом prefix_tag и этими атрибутами и возвращает его, если оно существует.
Если not_showing принимает значение True, возвращает только боковое изображение, только если изображение, из которого взяты атрибуты, не отображается на экране.
Если layer принимает значение None, используется слой по умолчанию для текущего отображаемого тега.


renpy.get_skipping()

Возвращает значение slow, если Ren'Py пропускает, fast, если Ren'Py быстро пропускает, и None, если оно не пропускается.


renpy.get_transition(layer=None)

Получает переход для layer или всей сцены, если layer принимает значение None. Возвращает переход, который стоит в очереди для выполнения во время следующего взаимодействия, или принимает значение None, если такого перехода не существует.


renpy.iconify()

Сворачивает окно игры в иконку на панели задач.


renpy.invoke_in_thread((fn, *args, **kwargs)

Вызывает функцию fn в фоновом потоке, передавая ей предоставленные аргументы и именованные аргументы. Перезапускает взаимодействие после возврата потока.
Функция создает фоновый поток, который будет автоматически остановлен при завершении работы Ren'Py.


renpy.is_init_phase()

Возвращает значение True, если Ren'Py в данный момент выполняет код инициализации, иначе значение False.


renpy.is_seen(ever=True)

Возвращает значение True, если текущая строка была замечена игроком.
Если ever принимает значение True, проверяем, видел ли игрок когда-нибудь эту строку. Если принимает значение False, проверяем, была ли строка замечена в текущем прохождении игры.


renpy.is_skipping()

Возвращает значение True, если Ren'Py в данный момент пропускает (в быстром или медленном режиме пропуска), иначе значение False.


renpy.is_start_interact()

Возвращает значение True, если restart_interaction не вызвано во время текущего взаимодействия. Это можно использовать, чтобы определить, было ли взаимодействие только начато или было перезапущено.


renpy.language_tailor(chars, cls)

Можно использовать для переопределения класса разрыва строки символа. Например, класс переноса строки для символа может быть установлен в значение ID, чтобы рассматривать его как иероглиф, который допускает разрывы до и после этого символа.
chars
Строка, содержащая каждый из символов для соответствующей корректировки.
cls
Строка, задающая класс символов. Должен быть один из классов, определенных в таблице 1 «UAX #14: Алгоритм разрыва строки Unicode».


renpy.load_module(name, **kwargs)

Загружает модуль Ren'Py с именем name. Модуль Ren'Py состоит из скрипта Ren'py, который загружается в обычное пространство имен (store), содержащееся в файле с именем name.rpym или name.rpymc. Если файл с расширением .rpym существует и новее соответствующего файла с расширением .rpymc, он загружается и создаётся новый файл с расширением .rpymc.
Все блоки инициализации (и другой код фазы инициализации) в модуле выполняются до возврата этой функции. Если имя модуля не удается найти или оно неоднозначно, возникает ошибка.
Загрузка модуля может происходить только из блока init.


renpy.load_string(s, filename='<string>')

Загружает s как скрипт Ren'Py, который можно вызвать.
Возвращает имя первого оператора в s.
filename – имя файла, из которого будут создаваться операторы в строке.


renpy.maximum_framerate(t)

Приводить к тому, что Ren'Py выводит на экран максимальную частоту кадров в течение t секунд. Если t принимает значение None, отменяется запрос максимальной частоты кадров.


renpy.munge(name, filename=None)

Необратимое name, которое должно начинаться с __.
filename
Имя файла, в которое будет вставлено это имя. Если принимает значение None, имя объединяется с именем файла, содержащим вызов этой функции.


renpy.not_infinite_loop(delay)

Сбрасывает таймер выявления бесконечного цикла на delay секунд.


renpy.notify(message)

Приводит к тому, что Ren'Py отображает message с помощью экрана уведомлений. По умолчанию это приведёт к тому, что сообщение будет растворено, отображено в течение двух секунд и снова растворено.
Полезно для действий, которые в ином случае не дали бы обратную связь, например скриншоты или быстрые сохранения.
Одновременно отображается только одно уведомление. Если отображается второе уведомление, то первое уведомление заменяется.
Эта функция просто вызывает config.notify, позволяя заменить её реализацию назначением новой функции для этой переменной.


renpy.pause(delay=None, hard=False)

Приводит к тому, что Ren'Py делает паузу. Возвращает значение True, если игрок нажал кнопку, чтобы завершить паузу, или значение False, если пауза истекла или была пропущена.
delay
Если задан, количество секунд, на которые Ren'Py должен сделать паузу.
hard
Должно быть задано в качестве именованного аргумента. Когда принимает значение True, Ren'Py может помешать игроку нажать кнопку, чтобы прервать паузу. Если игрок включает пропуск, то жесткая пауза будет пропущена. Могут быть и другие обстоятельства, когда жесткая пауза заканчивается рано или мешает Ren'Py работать должным образом, они не будут рассматриваться как ошибки.
Вообще, использование жестких пауз – грубо. Когда игрок нажимает клавишу, чтобы продвинуть игру,это явный запрос – он хочет, чтобы игра продвинулась. Отменить этот запрос – значит предположить, что вы понимаете, чего хочет игрок больше, чем он сам.
Вызов renpy.pause гарантирует, что всё, что находится на экране, будет отображаться по крайней мере в течение одного кадра и, следовательно, будет показано игроку.
tl; dr – не используйте renpy.pause с hard=True.


renpy.pop_call()

Извлекает текущий вызов из стека вызовов, не возвращаясь к данному месту.
Можно использовать, если вызываемая метка решает не возвращаться к своему вызывающему объекту.


renpy.queue_event(name, up=False, **kwargs)

Помещает в очередь событие с заданным именем. name должно быть одним из имён событий в config.keymap или списком таких имен.
up
Должно быть значение False, когда событие начинается (например, при нажатии кнопки клавиатуры). Должно принимать значение True, когда событие заканчивается (когда кнопка отпущена.)
Событие помещается в очередь во время вызова этой функции.
Этот метод является потокобезопасным. Эта функция не будет работать для замены одного события другим – изменит порядок событий. Вместо этого используйте config.keymap.


renpy.quit(relaunch=False, status=0, save=False)

Приводит к тому, что Ren'Py полностью завершиться.
relaunch
Если принимает значение True, Ren'Py запустит свою вторую копию перед выходом.
status
Код состояния Ren'Py вернется в операционную систему. Обычно 0 – успех, а положительные целые числа – провал.
save
Если принимает значение True, игра сохраняется в _quit_slot до завершения Ren'Py.


renpy.quit_event()

Запускает событие выхода, как если бы игрок нажал кнопку выхода в окне Chrome.


renpy.reload_script()

Приводит к тому, что Ren'Py сохраняет игру, перезагружает скрипт, а затем загружает сохранение.


renpy.reset_physical_size()

Пытается установить размер физического окна согласно указанным значениям в renpy.config. То есть, screen_width и screen_height. Имеет побочный эффект при выводе экрана из полноэкранного режима.


renpy.restart_interaction()

Перезапускает текущее взаимодействие. Среди прочего, отображает изображения, добавленные к сцене, повторно оценивает экраны и запускает любые переходы в очереди.
Делает что-либо только тогда, когда вызывается из взаимодействия (например, из действия). Вне взаимодействия эта функция не действует.


renpy.screenshot(filename)

Сохраняет скриншот в filename.
Возвращает значение True, если снимок экрана был успешно сохранен, и значение False, если сохранение по какой-то причине не удалось.


renpy.scry()

Возвращает объект scry для текущего оператора.
Объект scry сообщает Ren'Py о вещах, которые должны быть истинными в будущем текущего оператора. Прямо сейчас объект scry имеет одно поле:
nvl_clear
Если принимает значение True, оператор nvl clear выполнится перед следующим взаимодействием.


renpy.set_autoreload(autoreload)

Устанавливает флаг автозагрузки, который определяет, будет ли игра автоматически перезагружаться после изменения файла. Автозагрузка не будет полностью включена, пока игра не будет перезагружена с помощью renpy.utter_restart().


renpy.set_mouse_pos(x, y, duration=0)

Переместит указатель мыши в местоположение, заданное аргументами x и y. Если на устройстве нет указателя мыши, ничего не делает.
duration
Время, необходимое для выполнения перемещения, в секундах. В течение этого времени мышь может не реагировать.


renpy.set_physical_size(size)

Пытается установить размер физического окна в заданный size. Имеет побочный эффект при выводе экрана из полноэкранного режима.


renpy.shown_window()

Вызовите это, чтобы указать, что окно было показано. Это взаимодействует с оператором window show, который показывает пустое окно всякий раз, когда эта функция не была вызвана во время взаимодействия.


renpy.split_properties(properties, *prefixes)

Разделяет properties на несколько словарей, по одному на пprefix. Эта функция поочередно проверяет каждый ключ в свойствах на соответствие каждому префиксу. Когда префикс совпадает, префикс удаляется из ключа, и полученный ключ сопоставляется со значением в соответствующем словаре.
Если префикс не совпадает, создаётся исключение. Пустая строка, "", можно использовать в качестве последнего префикса для создания универсального словаря.
Например, это разделяет свойства, начинающиеся с текста, от тех, у которых нет:
text_properties, button_properties = renpy.split_properties(properties, "text_", "")


renpy.substitute(s, scope=None, translate=True)

Применяет перевод и форматирование нового стиля к строке s.
scope
Если принимает значение не None, область, которая используется при форматировании, в дополнение к хранилищу по умолчанию.
translate
Определяет, происходит ли перевод.
Возвращает переведенную и отформатированную строку.


renpy.transition(trans, layer=None, always=False)

Устанавливает переход, который будет использоваться во время следующего взаимодействия.
layer
Слой, к которому применяется переход. Если принимает значение None, переход применяется ко всей сцене.
always
Если принимает значение False, учитывает предпочтение перехода. Если принимает значение True, переход всегда выполняется.


renpy.vibrate(duration)

Вызывает вибрацию устройства в течение duration секунд. В настоящее время это поддерживается только на Android.


layout.yesno_screen(message, yes=None, no=None)

Приводит к отображению экрана запроса «Да/Нет» с заданным сообщением. Экран будет скрыт, когда игрок нажмёт да или нет.
message
Сообщение, которое будет отображаться.
yes
Действие, которое запускается, когда игрок выбирает «Да».
no
Действие, которое запускается, когда игрок выбирает «Нет».

Источник[править | править код]

Статья "Other Functions and Variables" на английском языке.


На главную страницу Официальная документация движка Вернуться к началу статьи