Выделение говорящего цветом (версия 2).

Плюсы:

  1. renpy сам определяет, говорит ли персонаж в данный момент, значительно сокращается размер кода в скрипте новеллы;
  2. можно использовать уже объявленные изображения, а не только файлы спрайтов.

Недостатки:

  1. при объявлении персонажа и его спрайта нужно использовать дополнительные параметры, функции;
  2. изменяется только цвет, размеры остаются прежними.

Файл на скачивание: http://renpyfordummies.blogspot.com/2018/05/2.html?m=1

init python: # автоматическое объявление картинок из модуля 7dots.rpy (без него проект не будет работать) images_auto() window_center() # переменная для хранения имени говорящего speaking = None # степень яркости цветов, 1.0 - полноцвет blind = .35 # для выбора состояния спрайта - полноцвет/бледный def while_speaking(name, speak_d, done_d, st, at): if speaking == name: # цветной, если говорит в данный момент return speak_d, None else: # бледный, если молчит (функция из модуля 7dots.rpy) done_d = LiveBlind(speak_d, blind) return done_d, None curried_while_speaking = renpy.curry(while_speaking) # для создания динамического изображения, состояние которого зависит от переменной def WhileSpeaking(name, speaking_d): return DynamicDisplayable(curried_while_speaking(name, speaking_d, speaking_d)) # для определения имени персонажа, который в данный момент что-то говорит # имя сохраняется в переменной speaking def speaker_callback(name, event, **kwargs): global speaking if event == "show": speaking = name elif event == "end": speaking = None Speaker = renpy.curry(speaker_callback) init: # задаем имя персонажа и привязываем его к персонажу, который умеет менять цвет define b = Character(u"Мальчик", callback=Speaker("b"), color="#64f") # создаем изображение, которое привязано к созданному выше персонажу # "boy ok0" - имя объявленной картинки спрайта, эквивалентно images/boy_ok0.png для необъявленной image boy ok = WhileSpeaking("b", "boy ok0") # то же для остальных персонажей define g = Character(u"Девочка", callback=Speaker("g"), color="#f22") image girl ok = WhileSpeaking("g", "girl ok0") # обычное использование спрайтов label start: scene black with None scene bg1 show boy ok at left2 show girl ok at right2 with dissolve "Поехали." b "Я - мальчик. Я цветной, но только когда говорю." g "Я - девочка. Я тоже цветная, только когда говорю." "А пока они молчат - оба бледные, как поганки." scene black with dissolve return
RSS
Нет комментариев. Ваш будет первым!
Загрузка...

Понравилась статья?

Поддержи нас, чтобы мы создавали больше полезных ресурсов!

Случайная статья