Другие функции и переменные (Other Functions and Variables)
Мы находимся в процессе переноса документации на новый инструмент. Поскольку ещё не все страницы были перенесены, этот раздел существует для документирования новых функций, которые больше некуда было внести.
Версия 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" на английском языке.
На главную страницу | Официальная документация движка | Вернуться к началу статьи |