История диалогов

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

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

Наконец, переменная _history_list хранит саму историю в виде списка объектов HistoryEntry. Объекты HistoryEntry содержат данные в своих полях, как определено ниже.

class HistoryEntry
kind

Тип персонажа, создавшего эту запись в истории. Ren'Py устанавливает это значение в "current" во время отображения реплики, а затем — в "adv" или "nvl".

who

Строка с именем говорящего персонажа или None, если такой строки нет.

what

Строка с текстом диалога.

who_args

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

what_args

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

window_args

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

show_args

Словарь со свойствами, которые были переданы экрану say, когда диалог был показан изначально.

image_tag

Тег изображения, присвоенный Character(), или None, если тег не был присвоен.

voice

Это объект, возвращаемый _get_voice_info(), который хранит информацию о воспроизводимом голосе.

rollback_identifier

Это идентификатор, который можно передать действию RollbackToIdentifier(), чтобы вызвать откат к строке скрипта, создавшей эту запись истории. Откат произойдет только в том случае, если местоположение все ещё находится в логе скрипта, в противном случае действие будет неактивно.

После создания HistoryEntry, он передаётся каждому из колбэков в config.history_callbacks, что позволяет коду, написанному разработчиком, добавлять новые поля.