Говорящий персонаж цветной, увеличен на 5%, молчащий в данный момент собеседник уменьшается до 100% и обесцвечивается. Как бы теряет фокус. Сделано с помощью матрицы насыщенности.
init: # на сколько увеличивать $ zo = 1.05 # за какое время $ t_delay = .25 # перемещение и изменение размера transform t_on(xa=.5, z=zo, delay=t_delay): align (xa, 1.0) zoom 1.00001 anchor (.5, 1.0) easein delay zoom z transform t_off(xa=.5, z=zo, delay=t_delay): align (xa, 1.0) zoom z anchor (.5, 1.0) easeout delay zoom 1.00001 init python: # высветление def show_on(char, xa=.5, z=zo, delay=t_delay): renpy.show(char, at_list=[t_on(xa, z, delay)]) # затемнение def show_off(char, xa=.5, z=zo, delay=t_delay): renpy.show(char, what=im.MatrixColor(char + ".png", im.matrix.saturation(.15)), at_list=[t_off(xa, z, delay)]) # убрать персонажа/персонажей с экрана def hide_char(*args): for i in args: renpy.hide(i) label start: scene bg1 "Встретились два остолопа." # пошел диалог $ show_on("boy", .33) # цветной и увеличенный тот, кто говорит $ show_off("girl", .66) # молчащего красим в серый т уменьшаем до нормальной величины "Остолоп" "...А я говорю такой: «Оппа!»" $ show_off("boy", .33) $ show_on("girl", .66) "Остолопка" "Иди-ка поешь укропа." $ show_on("boy", .33) $ show_off("girl", .66) "Остолоп" "Ты кого назвала укропом!" $ show_on("girl", .66, zo, 1.0) "«Тяжело говорить с остолопом...»" $ hide_char("boy", "girl") with dissolve pause return
Спасибо, как раз искал что-то подобное. Соединил немного твоего кода с вот этим:https://www.renpy.org/wiki/renpy/doc/cookbook/Blink_And_Lip_Flap
ОтветитьУдалитьВышло прикольно
init python:
speaking = None
def while_speaking(name, speak_d, done_d, st, at):
if speaking == name:
return speak_d, None
else:
return done_d, None
curried_while_speaking = renpy.curry(while_speaking)
def WhileSpeaking(name, speaking_d):
done_d = im.MatrixColor(speaking_d,im.matrix.saturation(.4))
return DynamicDisplayable(curried_while_speaking(name, speaking_d, done_d))
def speaker_callback(name, event, **kwargs):
global speaking
if event == "show":
speaking = name
elif event == "slow_done":
speaking = None
elif event == "end":
speaking = None
speaker = renpy.curry(speaker_callback)
init:
define ph = Character("Пахом", callback=speaker("ph"))
image ph normal = WhileSpeaking("ph", "images/pahom.png")
label start:
show ph normal
"тишина"
ph"азазазаза"
"молчит"
ph"лоооооооооооол"
return
отлично!
Удалитьочень жаль, но оно больше не работает. Говорит, Speaker не определен
УдалитьНичерта не работает
ОтветитьУдалитьнастоятельно рекомендую проверить конфигурацию рук, они должны крепиться к верхней оконечности торса и не носить дугообразный характер - это обязательное требование для программистов
Удалитьебать
УдалитьЕбать вы пидор, СЭР! Мало того что не можете создать автоматическую версию приближения - отдаления спрайта. А создаете кусок дерьма, который требует постоянного вызова двух бесполезных функций, в которых постоянно приходится следить какой персонаж оффнут, а какой нет , еще и блядь координаты им прописывать лол.
УдалитьПриближение - отдаление должно быть привязано к персонажу и работать автоматически у нормального программиста.
По этому пройдите нахуй, тупая вы тварь! =)
Оба примера работают проблемы в синтаксисе(нужное количество отступов, ренпай к ним чувствителен). Большинство людей ищущих примеры на ренпай, и близко не программисты.
ОтветитьУдалитьinit python:
speaking = None
def while_speaking(name, speak_d, done_d, st, at):
if speaking == name:
return speak_d, None
else:
return done_d, None
curried_while_speaking = renpy.curry(while_speaking)
def WhileSpeaking(name, speaking_d):
done_d = im.MatrixColor(speaking_d,im.matrix.saturation(.4))
return DynamicDisplayable(curried_while_speaking(name, speaking_d, done_d))
def speaker_callback(name, event, **kwargs):
global speaking
if event == "show":
speaking = name
elif event == "slow_done":
speaking = None
elif event == "end":
speaking = None
speaker = renpy.curry(speaker_callback)
init:
define ph = Character("Пахом", callback=speaker("ph"))
image ph normal = WhileSpeaking("ph", "images/boy.png")
label start:
show ph normal
"тишина"
ph"азазазаза"
"молчит"
ph"лоооооооооооол"
return
Сорри сообщение удаляет пробелы в начале строчки потому пример не получилось кинуть((((
ОтветитьУдалить