Ввод текста

С некоторыми ограничениями Ren'Py может запрашивать у пользователя ввод небольшого количества текста. Этот запрос осуществляется функцией renpy.input(), которая возвращает введённый текст, позволяя сохранить его в переменной или обработать иным образом.

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

Функция renpy.input определяется следующим образом:

renpy.input(default='', allow=None, exclude='{}', length=None, pixel_width=None, screen='input', mask=None, copypaste=True, multiline=False, **kwargs)

Вызов этой функции открывает окно, предлагающее игроку ввести некоторый текст. Она возвращает введённый текст.

prompt

Строка, содержащая подсказку для отображения игроку.

default

Строка, задающая исходный текст, который будет редактироваться игроком.

allow

Если не None, строка, содержащая список символов, которые будут разрешены в тексте.

exclude

Если не None, если символ присутствует в этой строке, он не разрешён в тексте.

length

Если не None, должно быть целым числом, задающим максимальную длину вводимой строки.

pixel_width

Если не None, ввод ограничен этой шириной в пикселях, в шрифте, используемом для отображения текста.

screen

Имя экрана, который принимает ввод. Если не указан, используется экран input.

mask

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

copypaste

Если истинно, разрешено копирование и вставка в это поле ввода.

multiline

Если истинно, разрешено перемещение каретки на следующую строку.

Если config.disable_input равно True, эта функция возвращает только default.

Ключевые слова с префиксом show_ передаются на экран с отброшенным префиксом.

Из-за ограничений в сторонних библиотеках, на Android и веб-платформе эта функция ограничена буквенными символами.

Игры, использующие renpy.input, часто требуют дальнейшей обработки результата с помощью стандартных функций Python для работы со строками. Например, следующий код запросит у игрока его имя, удалит начальные и конечные пробелы. Если имя пустое, оно будет заменено именем по умолчанию. Наконец, оно отображается пользователю.

define pov = Character("[povname]")

python:
    povname = renpy.input("What is your name?", length=32)
    povname = povname.strip()

    if not povname:
         povname = "Pat Smith"

pov "My name is [povname]!"

Здесь длина ввода ограничена 32 символами. Важно протестировать вашу игру с длинными именами, чтобы убедиться, что эти имена не нарушают вёрстку текста. В то же время, слишком короткие поля могут помешать людям ввести предпочитаемое имя.