Создание музыкальной комнаты (MusicRoom)
Музыкальная комната

Музыка в новеллах является одним из важнейших составляющих уникальной атмосферы. И в качестве небольшого бонуса, иногда добавляют так называемую «Музыкальную комнату». В неё обычно добавляют песни, которые есть в самой игре. Но часто делают их априори закрытыми. Как только какая-то песня впервые заиграет в игре, она автоматически откроется в музыкальной комнате, если она туда добавлена.

Принцип создания музыкальный комнат примерно тот же, что и принцип создания комнат галереи.

Рассмотрим пример создания одной комнаты, с восемью добавленными в неё музыкальными композициями.

Для создания комнаты, нам необходимо:
1. Музыкальные композиции
2. Фон для комнаты.

Для начала, создадим новый скрипт для нашей комнаты. Этого делать не обязательно, но всё же, так удобней.
1.Находясь в редакторе выбрать в верхнем меню вкладку File (Файл)
2.Нажать на:
2.1. Для Editra - New Tab (Ctrl + N)
2.2. Для jEdit - Создать (N)
2.3. Для блокнота - Создать (Ctrl + N)
P.S. Лучше сразу сохраним скрипт, пусть и пустой, назвав его как вам угодно, не забыв приписать расширения для скриптов Ren'Py. К примеру, у меня это - musicrm.rpy.

Создаём объект класса MusicRoom
Код
init python:
    m = MusicRoom(fadeout = 1.0)
# я назвал просто -m-, вы же можете называть иначе, только не забыть изменить это и ниже
# fadeout - 1.0 - при переключение песен, будет срабатывать эффект затухания звука в течении секунды.

    m.add("music/m1.mp3",always_unlocked=True)  
# регистрируем первую песню.  
## "music/m1.mp3" - расположение самой песни
### always_unlocked - при значении true, будет всегда открыта, даже если не проигрывалась непосредственно в игре.

    m.add("music/m2.mp3")  
# регистрируем остальные песни, она априори будут закрыты, пока не начнут проигрываться в вн.
    m.add("music/m3.mp3")
    m.add("music/m4.mp3")
    m.add("music/m5.mp3")
    m.add("music/m6.mp3")
    m.add("music/m7.mp3")
    m.add("music/m8.mp3")
# И так, в music room добавлено 8 песен. Теперь приступим к созданию самой комнаты.

screen msc_rm:  
#...msc_rm - название вызываемой комнаты.

    tag menu  
# Заменяем нашу комнату главным меню, чтобы можно было вернутся в него.  
## Если не работает, заменить на «tag main_menu»

    add "galer/back_mr.png"  
# Добавляем фоновое изображение.

# Сейчас создадим кнопки проигрывания, для каждой песни, свою. Я буду применять textbutton.

    textbutton "Yourenigma - My Little Nocturne;" action m.Play("music/m1.mp3") xalign 0.5 yalign 0.2 xminimum 570
# "Yourenigma - My Little Nocturne" - название, выводимое на кнопке.
# action m.Play("music/m1.mp3") - по нажатии проигрывать m1.mp3.
# xalign 0.5 yalign 0.2 - расположение по координатам X, Y.
# xminimum 570 - установление минимальной ширины кнопки - 570 пикселей.

    textbutton "Daniel Ingram – I've Got to Find a Way" action m.Play("music/m2.mp3") xalign 0.5 yalign 0.25 xminimum 570
    textbutton "Daniel Ingram – Find a Pet" action m.Play("music/m3.mp3") xalign 0.5 yalign 0.3 xminimum 570
    textbutton "MandoPony – I'll Be Waiting" action m.Play("music/m4.mp3") xalign 0.5 yalign 0.35 xminimum 570
    textbutton "Daniel Ingram – What My Cutie Mark is Telling Me" action m.Play("music/m5.mp3") xalign 0.5 yalign 0.4 xminimum 570
    textbutton "Michelle Creber – Here Comes the Sun" action m.Play("music/m6.mp3") xalign 0.5 yalign 0.45 xminimum 570
    textbutton "Daniel Ingram – Raise This Barn" action m.Play("music/m7.mp3") xalign 0.5 yalign 0.5 xminimum 570
    textbutton "Daniel Ingram – My Little Pony theme song." action m.Play("music/m8.mp3") xalign 0.5 yalign 0.55 xminimum 570

#Добавим кнопки управления
    textbutton "Следующая ->" action m.Next() xalign 0.99 yalign 0.94 xmaximum 300  
#....По нажатию будет проигрываться предыдущая песня из списка.

    textbutton "<-Предыдущая" action m.Previous() xalign 0.99 yalign 0.99 xmaximum 300
#....По нажатию будет проигрываться следующая песня из списка.

    textbutton "Стоп" action Stop("music") xalign 0.7 yalign 0.99  
#....Останавливает проигрывающую песню.

    label _("Громкость") xalign 0.4 yalign 0.95  
#Создаём надпись "Громкость"
    bar value Preference("music volume") xalign 0.45 yalign 0.99 xmaximum 180
#Добавляем ползунок регулировки громкости музыки.

    textbutton "Главное меню" action ShowMenu("main_menu") xalign 0.01 yalign 0.99  
#Кнопка, для возвращения, обратно в главное меню.

#Ниже строки, которые можно и не добавлять. Опционально.  

    on "replace" action m.Play("music/m1.mp3")
#Проигрывать песню m1.mp3, при входе в музыкальную комнату.

    on "replaced" action Play("music", "music/main_menu.mp3")  
#Проигрывание музыки после выхода из комнаты. Можно указать музыку главного меню.

P.S.S. При создании своих комнат, не забывайте регистрировать песни в музыкальную комнату (m.add).


Теперь можно добавить кнопку в главное меню, для перехода в музыкальную комнату.

Нужно открыть screens.rpy, и опустится до screen main_menu
Если у вас меню с кнопками добавить строку:
Код
textbutton _("Музыка") action ShowMenu("msc_rm")

"Музыка" - надпись на кнопке
action ShowMenu("msc_rm") - по клику на кнопку, переходить в комнату msc_rm

Если же меню с ImageMap, тогда
Код
hotspot (0, 0, 0, 0) action ShowMenu("msc_rm")

Ввести координаты вашей горячей точки и вписать название вашей комнаты - msc_rm.

Для разблокирования песен в Музыкальной комнате ничего в коде прописывать не надо. Песни автоматически разблокируются, после начала проигрывания в самой вн.

Но если же, вы хотите очистить список уже прослушанных песен, зайди в лаунчер, выберите проект и нажмите на
"Очистить постоянные данные"



Скачать musicrm.rpy без комментариев.

©Программист Celestial Novels

Автор материала: Sota
Материал от пользователя сайта.



Ren'Py 08.10.14 4073 Sota ренпай, RenPy, music room, мануал, ren'py, музыка, музыкальная комната, комната, music_room 4.5/8

Комментарии (7):
0
1 natalyshka93   (13.10.15 09:32)
14038
Решила сделать музыкальную комнату по данному гайду и столкнулась с такой проблемой: песни после воспроизведения в ВН не становятся доступными в списке (кнопка с композицией не активна). Разумеется, все мелодии добавлены методом "m.add" и для каждой сделана кнопочка, были даже очищены постоянные данные, но вот что-то не работает... Я сделала мьюзик рум не отдельным файлом, а прописала все это дело в screens.rpy. smile_32 Даже не знаю в чем причина... Подскажите, что не так?

0
2 PlayerKiller   (16.10.15 10:22)
9604
init python:
m = MusicRoom(fadeout = 1.0)
m.add("music/m1.mp3",always_unlocked=True)
m.add("music/m2.mp3")
#m.add("music/m3.mp3")
#m.add("music/m4.mp3")
#m.add("music/m5.mp3")
#m.add("music/m6.mp3")
#m.add("music/m7.mp3")
#m.add("music/m8.mp3")

screen msc_rm:

#tag main_menu
tag menu

add "твой_bg.png"

textbutton "Название песни" action m.Play("music/m1.mp3") xalign 0.5 yalign 0.2 xminimum 300
textbutton "Музыка 2" action m.Play("music/m2.mp3") xalign 0.5 yalign 0.25 xminimum 300
#textbutton "Музыка 3" action m.Play("music/m3.mp3") xalign 0.5 yalign 0.3 xminimum 300
#textbutton "Музыка 423123" action m.Play("music/m4.mp3") xalign 0.5 yalign 0.35 xminimum 300
#textbutton "Музыка 5213123" action m.Play("music/m5.mp3") xalign 0.5 yalign 0.4 xminimum 300
#textbutton "Музыка 6231312321" action m.Play("music/m6.mp3") xalign 0.5 yalign 0.45 xminimum 300
#textbutton "Музыка 7" action m.Play("music/m7.mp3") xalign 0.5 yalign 0.5 xminimum 300
#textbutton "Музыка 8" action m.Play("music/m8.mp3") xalign 0.5 yalign 0.55 xminimum 300

textbutton "Следующая ->" action m.Next() xalign 0.99 yalign 0.94 xmaximum 300
textbutton "<-Предыдущая" action m.Previous() xalign 0.99 yalign 0.99 xmaximum 300
textbutton "Стоп" action Stop("music") xalign 0.7 yalign 0.99
label _("Громкость") xalign 0.4 yalign 0.95
bar value Preference("music volume") xalign 0.45 yalign 0.99 xmaximum 180
textbutton "Главное меню" action ShowMenu("main_menu") xalign 0.01 yalign 0.99

#on "replace" action m.Play("music/Evanescence-My_Heart_Is_Broken_Rock_Mix.mp3")
#on "replaced" action Play("music", "music/main_menu.mp3") #Проигрывание музыки после выхода из комнаты. Можно указать музыку главного меню.

Вот всё робит вродь)

0
3 natalyshka93   (16.10.15 15:09)
14038
У меня все прописано абсолютно так же... Я отсюда код и копировала, подставила свои значения, только песни автоматически не раблочиваются в менюшке... cry

0
4 natalyshka93   (16.10.15 15:28)
14038
Но если каждой присвоить атрибут "always_unlocked = True", то все воспроизводится! wow

0
5 ХЭльРас   (24.01.16 05:54)
3376
Вроде как всё правильно сделала, а муз. комната рябит от ошибок. Возможно, надо исправить ещё что-то в "screens.rpy"?

0
6 levvsev   (08.06.16 14:00)
32779
Тоже не работает. Ошибок куча

0
7 kitty_meow-   (19.07.16 23:52)
35498
сделала комнату, пишет: "'ADVCharacter' object has no attribute 'Play'"
что делать?( cry

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]