Пользователи · Поиск по форуму · · Вход в аккаунт · Регистрация |
Форум о визуальных новеллах Для разработчиков Ren'Py Помощь по Ren'Py (Вопрос\Ответ) |
Помощь по Ren'Py (Вопрос\Ответ) |
Katruna#1081stop_control, как я поняла, человек хочет, что бы посредине одной фразы, с наступлением какого-то этапа - перс менял позу.
т.е. не две разных фразы на разных окнах, а именно между предложениями. Мне кажется, что это как-то можно провернуть через такую штуку: Код gg "Какой-то текст. {w=0.6} Еще фраза. {w=0.6} И еще одна." {w=0.6} - делает паузу между предложениями. Но не уверенна, что в эту паузу можно прописать смену картинки.. (но попробовать никто не запрещает) Сообщение отредактировал Katruna - Понедельник, 15/Мар/2021, 17:26
|
AxelK#1082Нет так не прокатит.
Вот что хотелось бы (вымышленный код который само собой не работает) Код image girl_sprite: "girl_1.png" pause [b]1.0[/b] "girl_2.png" [b]with Dissolve (0.5)[/b] show girl_sprite with Dissolve (0.5) girl "Фраза которая произносится 3 секунды." # посреди фразы поза будет поменяна с эффектом Одна мысль мне показалась подходящей: это модифицировать DynamicImage, чтобы он по таймеру запустил функцию, а уж в функции я бы впихнул любую смену с любым эффектом. Но это тоже не работает. Ругается на контекст. То есть вот что я делал (псевдокод, просто идея) Код def show_live (st, at, delay): if st > delay: my_custom_function () return Null(0), None else: return Null(0), 0.5 def my_custom_function (): show image 2 # вторая картинка img = DynamicDisplayable(show_live(1.0)) show img # это видно не будет show image1 # это первая картинка say phrase Exception: Cannot start an interaction in the middle of an interaction, without creating a new context. |
Periwinkle#1083AxelK, попробуйте так объявить:
Код image anim girl: "images/girl.png" with dissolve pause 3 "images/girl2.png" with dissolve label start: show anim girl "текст" Сообщение отредактировал Periwinkle - Понедельник, 15/Мар/2021, 18:38
|
AxelK#1084Periwinkle, а как такой ATL обернуть в функцию?
дело в том, что girl.png и girl2.png в моем случае это довольно хитрые Composite в несколько слоев, которые еще и от переменных зависят и я не могу объявить картинку под каждый случай. Ну точнее могу, но это будет очень много лишнего текста. если сильно упростить для удобочитаемости Код def mk_char (id): return Composite( (800, 600) , (0, 0),"image%d.png" % id , (0, 0), "image%d.png" % id ) def show_char (id, _at=[], _layer = 'master', fx=dissolve): img = mk_char ( id ) renpy.show ('', at_list=_at, layer=_layer, what=img) renpy.with_statement (fx) Это для простой картинки хорошо, когда не надо менять позу. Какой бы придумать метод для программного создания картинок которые будут меняться? Ведь ATL по-моему не делается так, он только объявляется заранее? |
smollvrn#1085как экранировать круглую скобку внутри кортежа? чёт двойные не помогают
Добавлено (20.03.2021, 16:16) |
СОНЦЕ#1086AxelK, как на счет переход dissolve сымитировать в ATL?
Код image rgb: 'r' 1.0 ease .3 alpha .0 'g' ease .3 alpha 1.0 1.0 ease .3 alpha .0 'b' ease .3 alpha 1.0 или например так Код image rgbc: size (100,100) contains: 'r' 1.0 ease .6 alpha .0 contains: 'g' alpha .0 1.0 ease .6 alpha 1.0 1.0 ease .6 alpha .0 contains: 'r' alpha .0 2.0 ease .6 alpha 1.0 |
dmit#1087стандартно в питоне знак экрана \
Добавлено (22.03.2021, 22:02) Добавлено (22.03.2021, 23:10) планета FOREVER!!! Unkenbro team
|
Katruna#1088День добрый. В общем, я не понимаю, что я делаю не правильно. Как-то я уже писала про эту проблему, но она сама же как-то и исчезла..
а сейчас такое не произошло.. Ситуация такая, чаще всего данная ошибка появляется при создании нового проекта. Достаточно добавить всего 1-2 новых строчки в чистый проект и все- данная ошибка будет преследовать меня вечно. Даже если эти строчки скрыть через решетку "#" - движок все равно ругается на них. Непонятная и нездоровая дичь. Может хоть кто-то предположить отчего и почему это происходит? Сама ошибка всегда одна и та же. ![]() Ну и на всякий код который сейчас написан в проекте: Код image boom: "images/bg.png" subpixel True rotate 0 linear 5 rotate 180 # Игра начинается здесь: label start: scene bg scene boom show tree: xalign 1.0 yalign 0.1 linear 2.0 xalign 0.5 e "Вы создали новую игру Ren'Py." e "Добавьте сюжет, изображения и музыку и отправьте её в мир!" return Прикрепления:
2082397.jpg
(28.4 Kb)
Сообщение отредактировал Katruna - Пятница, 26/Мар/2021, 08:32
|
stop_control#1089Прижми все что до метки старт к левому краю. Без табуляции.
"_" image boom: Обрати внимание. «Иди пожалуйся своей мамочке»
|
СОНЦЕ#1090Katruna, у меня подобная проблема возникала из за функции автоотступа следующей строки в редакторе кода. Вроди отступает в нужное место, но делает это не пробелами, а табуляцией. RenPy же символ табуляции на дух не переносит, и выдаст ошибку как только его увидит.
Лечение: локально - в проблемной скрипте вызываем "Найти и заменить" (у меня это комбинация клавиш ctrl+h) и заменяем Код символ [ ]<-в скобках символ табуляции выглядит как большой пробел (!пока тут его нет, придется добыть символ табуляции самостоятельно например в редакторе нажать tab и скопировать тот пробел что получтится) на [ ] <- четыре обычных пробела глобально - зависит от редактора - в настройках редактора кода найти графу "отступы" и вместо "табуляция" выбрать "пробелы" Сообщение отредактировал СОНЦЕ - Пятница, 26/Мар/2021, 13:30
|
Katruna#1091СОНЦЕ, вот как.. ладно попробую..
просто странно, то ошибка есть.. то ее нет.. и почем она появляется - хз.. в некоторых проектах она прям жить не дает- в других, делаю все так же - работает ок.. UPD: В общем, умный гугл помог. Вроде отключила в программе табуляцию и заменила на 4 пробела. Надеюсь отныне не будет выползать данная проблема .з. Всем спасибо за помощь. Сообщение отредактировал Katruna - Пятница, 26/Мар/2021, 13:42
|
stop_control#1092Не знаю как реализовать фоновые шумы, наверное в виде функции....
Возможно ктото уже решал подобную задачу... Очень хочется запустить воспроизведение случайного звука из списка (звуков 5), с указанный громкостью. После проигрывания до конца сделать паузу в воспроизведение на случайное значение от 5 до 10 секунд и опять передать управление на воспроизведение звука. И какой-то флаг в виде переменной, чтобы остановить воспроизведение. И таких потоков запустить несколько от 2 до 4. Чтобы звук воспроизводился фоном, а новелла читалась не мешая. «Иди пожалуйся своей мамочке»
|
dmit#1093stop_control, посмотри http://renpyfordummies.blogspot.com/2016/05/blog-post_19.html
планета FOREVER!!! Unkenbro team
|
stop_control#1094Спасибо, но я не программист и слабо понимаю логику кода....
По моему это не совсем то что я ищу. Работающий мо моему алгоритму выглядит так: Код init python: ############################################################################ continueLooping = False def queueChanCallback(): if continueLooping: randomswamp = renpy.random.choice( ["sound/bop1.mp3","sound/bop2.mp3", "sound/bop3.mp3"] ) renpy.music.queue (randomswamp, channel="nature", loop=False, fadein=0, tight=True) #renpy.pause(1.0) renpy.music.set_queue_empty_callback(queueChanCallback, channel='nature') ############################################################################ ## Канал "nature" для фоновых звуков renpy.music.register_channel("nature", "sfx", True) # Игра начинается здесь: label start: #start music $ continueLooping = True $ queueChanCallback() "Запуск звуков" #Now lets stop the music $ continueLooping = False stop music "Остановка звуков" #start music again $ continueLooping = True $ queueChanCallback() "Новый запуск звуков" Звуки воспроизводятся постоянно и непредсказуемо разные, в этом плане меня все устраивает. Проблема в паузе. Если я использую renpy.pause(1.0) Код выдает ошибку. Более конкретный вопрос. Как мне задать паузу со сулчайно длительностью от 2 до 5 секунд, в месте где в коде стоит - renpy.pause(1.0) Сообщение отредактировал stop_control - Суббота, 27/Мар/2021, 18:56
«Иди пожалуйся своей мамочке»
|
dmit#1095не понятно зачем там пауза в коде? если это пауза в воспроизведении, то надо в очереди файлов проиграть пустоту - "<silence 3.0>"
например: play audio [ "<silence 5.0>", "boom.opus" ] # играть boom.opus начнёт через 5 сек. после вызова планета FOREVER!!! Unkenbro team
|
| |||