Меню с отсчётом времени (Timed menus)
Рецепт позволяет автоматически выбрать определенный (или секретный) пункт меню, если ты будешь слишком медлить с выбором. Эти типы меню использовались в серии игр, таких как The Walking Dead или Sakura Taisen. Рецепт также включает в себя бар, который уведомляет игрока о том, сколько времени у него осталось и может быть настроен с помощью стилей. Рекомендуется таймер типа бар, поскольку это облегчает отображение обратного отсчета, но также существует вариант с использованием числового обратного отсчета.
Во-первых, создайте экран таймера и поместите его в любое место вашего скрипта.
transform alpha_dissolve:
alpha 0.0
linear 0.5 alpha 1.0
on hide:
linear 0.5 alpha 0
# Устанавливает постепенное появление и исчезновение бара и требуется только один раз в скрипте
screen countdown:
timer 0.01 repeat True action If(time > 0, true=SetVariable('time', time - 0.01), false=[Hide('countdown'), Jump(timer_jump)])
bar value time range timer_range xalign 0.5 yalign 0.9 xmaximum 300 at alpha_dissolve # Это вертикальная черта таймера.
Затем объявите переменные таймера, используемые в блоке init:
init:
$ timer_range = 0
$ timer_jump = 0
Если вы хотите запустить таймер, объявите эти три переменные, а потом покажите screen countdown.
# time = the time the timer takes to count down to 0.
# timer_range = число привязки ко времени (только для бара)
# timer_jump = метка для перехода, когда время выйдет
label menu1:
$ time = 5
$ timer_range = 5
$ timer_jump = 'menu1_slow'
show screen countdown
menu:
"Выбор 1":
hide screen countdown
e "Ты выбрал 'Выбор 1'"
jump menu1_end
"Выбор 2":
hide screen countdown
e "Ты выбрал 'Выбор 2'"
jump menu1_end
label menu1_slow:
e "Ты ничего не выбрал."
label menu1_end:
e "Впрочем, давайте сделаем что-нибудь еще."
Ниже представлен пример более усовершенствованного использования динамического меню с отсчётом времени. Это позволяет полностью изменить меню, если время выбора выйдет. Наподобие этого:
label menu2:
$ time = 5
$ timer_range = 5
$ timer_jump = 'menu2_v2'
show screen countdown
menu:
"Срочный Выбор 1":
hide screen countdown
e "Ты быстро выбрал 'Выбор 1'"
jump menu2_end
"Срочный Выбор 2":
hide screen countdown
e "Ты быстро выбрал 'Выбор 2'"
jump menu2_end
label menu2_v2:
$ time = 5
$ timer_range = 5
$ timer_jump = 'menu2_slow'
show screen countdown
menu:
"Медленный Выбор 1":
hide screen countdown
e "Ты выбрал 'Выбор 1', но слишком медленно"
jump menu2_end
"Медленный Выбор 2":
hide screen countdown
e "Ты выбрал 'Выбор 2', но слишком медленно"
jump menu2_end
label menu2_slow:
e "Вы действительно не спешили и ничего не выбрали."
label menu2_end:
e "Впрочем, давайте сделаем что-нибудь еще."
Если вы зациклились на замене бара с широким таймером обратного отсчета, вам будет необходимо видоизменить screen countdown следующим образом:
screen countdown:
timer 1 repeat True action If(time > 0, true=SetVariable('time', time - 1), false=[Hide('countdown'), Jump(timer_jump)])
if time <= 2:
text str(time) xpos .1 ypos .1 color "#FF0000" at alpha_dissolve
else:
text str(time) xpos .1 ypos .1 at alpha_dissolve
Делает, чтобы цифры отсчитывали каждую секунду, например, 5, 4, 3, 2... Когда таймер обратного отсчета достигнет 2-х или меньше, цифра краснеет.
Источник[править | править код]
Статья "Timed menus" на английском языке
На главную страницу | Книга рецептов Энциклопедии Ren'Py | Книга рецептов Ren'Py | Вернуться к началу статьи |